Browse Source

页面bug修改

master
chenrui 3 years ago
parent
commit
3b7eb99c96
  1. 2
      src/api/enforce.js
  2. 23
      src/util/util.js
  3. 27
      src/views/administrative/appointment.vue
  4. 33
      src/views/administrative/appointmentList.vue
  5. 6
      src/views/administrative/userFilter.vue
  6. 136
      src/views/common/analyse.vue
  7. 13
      src/views/enforce/earlyWarning.vue
  8. 25
      src/views/enforce/enforceNotice.vue
  9. 2
      src/views/enforce/enforcementPlan.vue
  10. 53
      src/views/enforce/enforcementPlanAdd.vue
  11. 14
      src/views/enforce/enterpriseBaseInfo.vue
  12. 50
      src/views/enforce/enterpriseScanPreview.vue
  13. 10
      src/views/enforce/enterpriseWarningInfo.vue
  14. 57
      src/views/enforce/historyCheck.vue
  15. 27
      src/views/enforce/sign.vue
  16. 6
      src/views/enforce/userFilter.vue
  17. 2
      src/views/enforceHome.vue
  18. 69
      src/views/enterprise/caseFilter.vue
  19. 9
      src/views/enterprise/complaint.vue
  20. 10
      src/views/enterprise/enterpriseInspectionDetail.vue
  21. 35
      src/views/enterprise/enterpriseInspectionList.vue
  22. 75
      src/views/enterprise/qrCode.vue
  23. 9
      src/views/enterprise/qrCodeHistory.vue
  24. 6
      src/views/enterprise/registrationDetail.vue
  25. 58
      src/views/enterprise/registrationList.vue

2
src/api/enforce.js

@ -54,3 +54,5 @@ export const queryEnforcementRegistrationById = (id, success, error) =>_get("/co
export const getAttr = (id, success, error) => _get("/code/registration/queryFiles/" + id,null,success,error);
//查询统计分析数据
export const queryStatisticalData = (params, success, error) => _get("/statistical/statisticalData",params,success,error)

23
src/util/util.js

@ -70,4 +70,25 @@ const isElementHidden = (ele = "", cloneEl = "", cssStyles = []) => {
return differ;
};
export { setGoodsNum, isObject, comparisonObject, isElementHidden };
const formattedTimeYYYYmmdd = (dateTime) =>{
const date = new Date(dateTime);
const year = date.getFullYear();
const month = ("0" + (date.getMonth() + 1)).slice(-2);
const day = ("0" + date.getDate()).slice(-2);
const hour = ("0" + date.getHours()).slice(-2);
const minute = ("0" + date.getMinutes()).slice(-2);
const second = ("0" + date.getSeconds()).slice(-2);
return `${year}-${month}-${day}`;
}
const formattedTime = (dateTime) =>{
const date = new Date(dateTime);
const year = date.getFullYear();
const month = ("0" + (date.getMonth() + 1)).slice(-2);
const day = ("0" + date.getDate()).slice(-2);
const hour = ("0" + date.getHours()).slice(-2);
const minute = ("0" + date.getMinutes()).slice(-2);
const second = ("0" + date.getSeconds()).slice(-2);
return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
}
export { setGoodsNum, isObject, comparisonObject, isElementHidden ,formattedTimeYYYYmmdd,formattedTime};

27
src/views/administrative/appointment.vue

@ -63,12 +63,12 @@
:rules="[{ required: true, message: '必填项' }]"
/>
<van-field
v-model="submitData.lawEnforcer"
v-model="submitData.lawEnforcerText"
readonly
label="执法人员"
/>
<van-field
v-model="submitData.lawEnforcerTwo"
v-model="submitData.lawEnforcerTextTwo"
readonly
label="执法人员"
@click="showPopup"
@ -139,7 +139,7 @@ import { queryLinkage, queryLinkageDictByValueAndParentId } from "../../api/link
import {uploadFile} from "../../util/fileUpload";
//用户筛选弹窗
import UserPopup from './userFilter.vue';
const { useMy, useCommon, useShopCard } = $globalStore;
const { useCommon } = $globalStore;
const router = useRouter();
let queryaddressId = ref("");
@ -161,6 +161,8 @@ const submitData = reactive({
lawEnforcementCode:"",
/** 企业名称 */
enterpriseName:"",
/**统一社会信用代码 */
enterpriseNumber:"",
/** 企业ID */
enterpriseId:"",
/** 企业联系人 */
@ -179,12 +181,16 @@ const submitData = reactive({
lawEnforcementId:"",
/** 执法人员 */
lawEnforcer:"",
lawCertificateNum:"",
lawEnforcerText: "",
/** 执法人员ID */
lawEnforcerId:"",
/** 执法人员2 */
lawEnforcerTwo:"",
lawCertificateNumTwo:"",
lawEnforcerTextTwo: "",
/** 执法人员2ID */
lawEnforcerIdTwo:"",
lawEnforcerTwoId:"",
/** 备注 */
remark:"",
})
@ -213,8 +219,10 @@ const closePopup = () =>{
data.popupVisible = false;
}
const reciveVisible = (item) =>{
submitData.lawEnforcerTwo = item.userName;
submitData.lawEnforcerIdTwo = item.userId;
submitData.lawEnforcerTwo = item.userName
submitData.lawCertificateNumTwo = item.lawCertificateNum;
submitData.lawEnforcerTwoId = item.userId;
submitData.lawEnforcerTextTwo = submitData.lawEnforcerTwo +" "+ submitData.lawCertificateNumTwo
}
/* 检查要求 start */
@ -302,8 +310,10 @@ onMounted(() =>{
//查询当前登录人员信息
queryUserInfo({},success =>{
console.log(success.data)
submitData.lawEnforcer = success.data.userName
submitData.lawEnforcerId = success.data.userId
submitData.lawEnforcer = success.data.userName;
submitData.lawCertificateNum = success.data.lawCertificateNum
submitData.lawEnforcerText = submitData.lawEnforcer +" "+ submitData.lawCertificateNum
submitData.lawEnforcerId = success.data.userId;
submitData.lawEnforcement = success.data.dept.deptName;
submitData.lawEnforcementId = success.data.dept.deptId;
},error=>{});
@ -330,6 +340,7 @@ const reciveData = (item) =>{
submitData.enterpriseName = item.enterpriseName;
submitData.linkTel = item.enterpriseTel;
submitData.linkMan = item.legalPerson;
submitData.enterpriseNumber = item.enterpriseNumber;
}
</script>
<script>

33
src/views/administrative/appointmentList.vue

@ -43,7 +43,7 @@
<van-swipe-cell class="swipe_cell">
<div class="card_box" @click="toDetailView(item.id)">
<div class="card_box_span">
<p>执法时间:{{ item.checkTime }}
<p>执法时间:{{ formattedTimeYYYYmmdd(item.checkTime) }}
<!-- <span class="card_box_action">-->
<!-- <van-button @click="toComplaintView(item.id,item.lawEnforcementIncident)" type="primary" size="mini">投诉</van-button>-->
<!-- </span>-->
@ -54,9 +54,9 @@
<div class="card_box_span">
<p style="font-size: 16px;font-weight: bold;">{{ item.checkItem }}</p>
</div>
<div class="card_box_span">
<!-- <div class="card_box_span">
<p><span class="card_box_label">登记编号:</span> {{ item.lawEnforcementCode }}</p>
</div>
</div> -->
<div class="card_box_span">
<p><span class="card_box_label">执法部门:</span> {{ item.lawEnforcement }}</p>
</div>
@ -84,7 +84,8 @@
import {queryEnterpriseLawEnforcementList} from '../../api/administrative';
import { setGoodsNum } from "@/util/util";
import {getDict} from "../../api/Home";
import {queryLinkage, queryLinkageById, queryLinkageDictByValueAndParentId} from "../../api/linkage";
import {queryLinkage, queryLinkageById, queryLinkageDictByValueAndParentId} from "@/api/linkage";
import {formattedTimeYYYYmmdd} from "@/util/util";
const { useCommon, useShopCard } = $globalStore;
const router = useRouter();
@ -104,8 +105,9 @@
dateType: null,
//是否投诉
isComplaint: null,
//企业统一信用码
enterpriseNumber: ref(useCommon.enterpriseNumber),
//企业统一信用码 ref(useCommon.enterpriseNumber)
enterpriseNumber: "",
lawEnforcerId: ref(useCommon.userId),
//日期搜索
searchDate: ref(),
});
@ -125,8 +127,8 @@
// 设置初始值为当前时间
onMounted(() => {
// getCard();
searchParam.enterpriseNumber = useCommon.enterpriseNumber;
// searchParam.enterpriseNumber = useCommon.enterpriseNumber;
searchParam.lawEnforcerId = useCommon.userId;
// 查询检查要求字典信息
// getDict({"dictType": "checkRequire"}, success => {
// for(var i=0; i<success.data.length; i++) {
@ -320,6 +322,21 @@
}
});
}
const setLinkageItem = (id) => {
queryLinkageById({"id": id}, success => {
submitData.checkItem = success.title
},error=>{});
}
const formattedTime = (dateTime) =>{
const date = new Date(dateTime);
const year = date.getFullYear();
const month = ("0" + (date.getMonth() + 1)).slice(-2);
const day = ("0" + date.getDate()).slice(-2);
const hour = ("0" + date.getHours()).slice(-2);
const minute = ("0" + date.getMinutes()).slice(-2);
const second = ("0" + date.getSeconds()).slice(-2);
return `${year}-${month}-${day}`;
}
</script>
<style lang="less" scoped>

6
src/views/administrative/userFilter.vue

@ -17,9 +17,9 @@
<div class="search-result">
<div class="case-item" v-for="(item, index) in dataList" :key="index" @click="selectData(item)">
<div class="case-title">{{ item.userName }}</div>
<div class="case-depart">{{ item.phonenumber }}</div>
<div class="case-time">{{ item.lawCertificateNum }}</div>
<div class="case-title">姓名:{{ item.userName }}</div>
<div class="case-depart">电话:{{ item.phonenumber }}</div>
<div class="case-time">执法证件号:{{ item.lawCertificateNum }}</div>
</div>
</div>
</div>

136
src/views/common/analyse.vue

@ -13,8 +13,8 @@
<div class="warp_body">
<div class="countbox">
<span class="count-tit">本月执法</span>
<span class="count-tot"><b>356</b>件</span>
<span class="count-com"><i>投诉:</i><b>24</b>件</span>
<span class="count-tot"><b>{{ data.allTotal }}</b>件</span>
<span class="count-com"><i>投诉:</i><b>{{ data.complaintCount }}</b>件</span>
</div>
<div class="analybox">
@ -24,15 +24,15 @@
</div>
<div class="analybox">
<div class="title">执法人员</div>
<div id="echartLineUser" class="chartbox"></div>
</div>
<div class="analybox">
<div class="title">案件数量</div>
</div>
<div id="echarCount" class="chartbox"></div>
</div>
<div class="analybox">
<div class="title">企业类型</div>
<div id="echartLineCompany" class="chartbox"></div>
</div>
</div>
@ -43,6 +43,7 @@
<script setup name="addressEdit">
import util from "@/util/area";
import {queryStatisticalData} from '@/api/enforce';
import * as echarts from 'echarts';
const { useMy } = $globalStore
@ -54,6 +55,8 @@ const data = reactive({
areaList: util.areaList,
addressInfo: {},
areaColumns: ["请选择", "请选择", "请选择"],
allTotal: 0,
complaintCount: 0
});
// 返回
@ -74,21 +77,8 @@ const onDelete = () => {
// 修改详细地址
const onChangeDetail = () => {};
// 获取编辑地址数据
const getEditdata = async (addressId) => {
const res = await useMy.getAddressedit({ addressId: addressId });
if (res.code === 20000) {
data.addressInfo = res?.data;
data.areaColumns = [res?.data?.province, res?.data?.city, res?.data?.area];
}
};
watchEffect(() => {
if (route?.query?.addressId) {
queryaddressId = route?.query?.addressId;
}
});
const echartInit = () =>{
var myChart = echarts.init(document.getElementById('echartRing'));
const echartInit = (data,targetId) =>{
var myChart = echarts.init(document.getElementById(targetId));
// 指定图表的配置项和数据
let option = {
tooltip: {
@ -112,13 +102,7 @@ const echartInit = () =>{
fontWeight: 'bold'
}
},
data: [
{ value: 1048, name: '生态环境检查' },
{ value: 735, name: '卫生健康检查' },
{ value: 580, name: '商务领域检查' },
{ value: 484, name: '财务领域检查' },
{ value: 300, name: '水务领域检查' }
],
data: data,
color: ['#0038bb','#0047eb','#1c60ff','#3f78ff','#6592ff','#8aadff'],
}
]
@ -127,9 +111,9 @@ const echartInit = () =>{
myChart.setOption(option);
};
const initSchedule = (dataAll) =>{
const initSchedule = (dataAll,targetId) =>{
let _this = this;
var myChartLine = echarts.init(document.getElementById('echartLine'));
var myChartLine = echarts.init(document.getElementById(targetId));
let myColor = ['#3C83FF']
var option = {
grid: { // 直角坐标系内绘图网格
@ -306,10 +290,12 @@ const initSchedule = (dataAll) =>{
myChartLine.setOption(option, true);
};
const initData = () => {
var dataX = ['生态环境检查', '卫生健康检查', '商务领域检查', '财务领域检查', '水务领域检查']
var dataY = ['30', '20', '15', '25', '10'];
var dataPercent = ['30', '20', '15', '25', '10'];
const initData = (dataX,dataY,dataPercent,targetId) => {
// var dataX = ['生态环境检查', '卫生健康检查', '商务领域检查', '财务领域检查', '水务领域检查']
// var dataY = ['30', '20', '15', '25', '10'];
// var dataPercent = ['30', '20', '15', '25', '10'];
var dataSum = new Array(dataX.length).fill(100);
var data = {
dataX: dataX,
@ -317,19 +303,85 @@ const initData = () => {
dataSum: dataSum,
dataPercent: dataPercent,
}
initSchedule(data);
initSchedule(data,targetId);
};
onMounted(() => {
// route?.query?.addressId && getEditdata(route?.query?.addressId);
nextTick(() => {
echartInit();
initData();
// if (!route?.query?.addressId) {
// data.addressInfo = {};
// }
queryStatisticalData(null,success =>{
var arrData = [];
var arrCompanyData = [];
var countTotal= 0;
var userTotal= 0;
//执法类别参数
var dataX = [];
var dataY = [];
var dataPercent = [];
//执法人员
var userDataX = [];
var userDataY = [];
var userDataPercent = [];
//本月案件数量
var arrCountData = [];
console.log(success.data.item)
success.data.item.forEach(res =>{
countTotal += res.total;
})
success.data.lawEnforcer.forEach(res =>{
userTotal += res.total;
})
success.data.item.forEach(res =>{
console.log(res)
arrData.push({
"name": res.lawEnforcementItem,
"value": res.total
})
dataX.push(res.lawEnforcementItem);
dataY.push(res.total);
dataPercent.push((res.total / countTotal * 100).toFixed(2));
})
success.data.lawEnforcer.forEach(res =>{
console.log(res)
userDataX.push(res.lawEnforcer);
userDataY.push(res.total);
userDataPercent.push((res.total / userTotal * 100).toFixed(2));
})
success.data.enterpriseType.forEach(res =>{
console.log(res)
arrCompanyData.push({
"name": res.dictLabel,
"value": res.total
})
})
data.allTotal = success.data.mouth.total;
data.complaintCount = success.data.mouth.complaintCount;
arrCountData.push({
"name": "本月执法数量",
"value": data.allTotal
})
arrCountData.push({
"name": "本月执法投诉数量",
"value": data.complaintCount
})
nextTick(() => {
echartInit(arrData,'echartRing');
//执法类别统计
initData(dataX,dataY,dataPercent,"echartLine");
//执法人员
initData(userDataX,userDataY,userDataPercent,"echartLineUser");
//企业类型统计
echartInit(arrCompanyData,'echartLineCompany');
//本月案件数量
echartInit(arrCountData,'echarCount');
});
},error =>{})
});
</script>

13
src/views/enforce/earlyWarning.vue

@ -28,7 +28,7 @@
<!-- 中间 -->
<div class="shop-center">
<lodding-card :isLodding="isLodding">
<refresh-list v-model:freshMap="freshMap" :classMap="classMap" @refresh="onRefresh" @onLoad="onLoad"
<refresh-list v-model:freshMap="freshMap" @refresh="onRefresh" @onLoad="onLoad"
:resetScroll="resetScroll" class="refresh_box">
<div class="refresh_content" v-if="data?.dataList.length">
<div class="goods_box" v-for="(item, index) in data?.dataList" :key="index">
@ -42,18 +42,18 @@
<!-- <van-divider :style="{ color: '#1989fa', borderColor: '#1989fa',padding: '0 5px' }" />-->
<div style="border-color: aqua; border: 2px;" class="van-hairline--bottom"></div>
<div class="card_box_span" style="padding-left: 1%;">
<van-icon v-if="item.level==1" name="warning" color="red" size="30" style="margin-top: 2%;" />
<van-icon v-else-if="item.level==2" name="warning" color="orange" size="30" style="margin-top: 2%;" />
<van-icon v-else-if="item.level==3" name="warning" color="#fed200" size="30" style="margin-top: 2%;" />
<van-icon v-if="item.warningLevel==1" name="warning" color="red" size="30" style="margin-top: 2%;" />
<van-icon v-else-if="item.warningLevel==2" name="warning" color="#ed6a0c" size="30" style="margin-top: 2%;" />
<van-icon v-else-if="item.warningLevel==3" name="warning" color="#fed200" size="30" style="margin-top: 2%;" />
<van-icon v-else name="info" size="30" color="#fed200" style="margin-top: 2%;" />
<p style="padding-left: 15px; font-size: 16px;font-weight: bold;">{{ item.enterpriseName }}</p>
</div>
<div class="card_box_span">
<p style="padding-left: 30px;"><span class="card_box_label">预警原因:</span> 本月对其行政检查{{ item.num }}次</p>
<p style="padding-left: 30px;"><span class="card_box_label">预警原因:</span> {{ item.warningCause }}</p>
</div>
<div class="card_box_span">
<p style="padding-left: 30px;"><span class="card_box_label">预警级别:</span>
{{ item.level==1?"Ⅰ级 (特别严重)":item.level==2?"Ⅱ级 (严重)": item.level==3?"Ⅲ级 (较重)": "Ⅳ (一般)"}}
{{ item.warningLevel==1?"Ⅰ级 (特别严重)":item.warningLevel==2?"Ⅱ级 (严重)": item.warningLevel==3?"Ⅲ级 (较重)": "Ⅳ (一般)"}}
</p>
</div>
</div>
@ -121,6 +121,7 @@
});
const queryList = () =>{
queryEarlyWarning(searchParam,success =>{
console.log(success.data);
data.dataList = success.data;
},error =>{

25
src/views/enforce/enforceNotice.vue

@ -31,7 +31,7 @@
<div class="item-cont">
<span class="item-title">{{ item.enforcementDepartment }}</span>
<span class="item-time">{{ item.createTime }}</span>
<div class="item-text">{{ item.fileObject.fileName }}</div>
<div class="item-text" @click="toPdfView(item.fileObject.fileUrl)"><a style="color: green; ">{{ item.fileObject.fileName }}</a></div>
</div>
</div>
@ -122,17 +122,6 @@ const onClickButton = () =>{
console.log(searchParam.searchText)
queryList();
}
const toPdfView = (url) =>{
console.log(url)
router.push(
{
path: "/pdfView",
query: {
url: url
}
});
}
onActivated(() => {
});
@ -239,6 +228,16 @@ const searchComplaint = (val) =>{
queryList();
}
const toPdfView = (url) =>{
console.log(url)
router.push(
{
path: "/pdfView",
query: {
url: url
}
});
}
</script>
<style lang="less" scoped>
@ -377,7 +376,7 @@ const searchComplaint = (val) =>{
.item-title, .item-text {
float: left;
width: calc(100% - 2.0rem);
width: calc(100% - 3.0rem);
height: 0.75rem;
font-size: 0.4rem;
font-weight: 600;

2
src/views/enforce/enforcementPlan.vue

@ -68,7 +68,7 @@
<p><span class="card_box_label">执法部门:</span> {{ item.enforcementDepartment }}</p>
</div>
<div class="card_box_span">
<p><span class="card_box_label">执法计划:</span> {{ item.fileObject.fileName }}</p>
<p><span class="card_box_label">执法计划:</span> <a style="color: green;">{{ item.fileObject.fileName }}</a></p>
</div>
<!-- <div class="card_box_span">
<p><span class="card_box_label">执法计划:</span> {{ item.fileObject.fileName }}</p>

53
src/views/enforce/enforcementPlanAdd.vue

@ -47,7 +47,7 @@
required
:rules="[{ required: true, message: '请选择执法部门'}]"
/>
<van-field
<!-- <van-field
v-model="submitData.enforcementTime"
label="执法时间"
placeholder="请选择"
@ -57,7 +57,7 @@
required
:rules="[{ required: true, message: '请选择执法时间'}]"
@click="selectEnforcementTime"
/>
/> -->
<van-popup v-model:show="data.showPicker" position="bottom">
<van-date-picker
title="选择日期"
@ -136,6 +136,8 @@ const submitData = reactive({
enforcementTime:"",
//执法区域
enforcementArea:"",
//是否发布年度执法计划
isPublish:0,
//后台保存图片列表
fileList:[],
//vant组件上传照片列表
@ -151,10 +153,10 @@ const goBack = () => {
const submit = () =>{
showConfirmDialog({
title: '标题',
message: '如果解决方法是丑陋的,那就肯定还有更好的解决方法,只是还没有发现而已。',
title: '公布执法计划',
message: '对外公布本部门年度执法计划',
}).then(() => {
showSuccessToast('保存成功');
submitData.isPublish = 1
addEnforcementInspectionProgram(submitData,success =>{
console.log(success)
//跳转企业二维码地址
@ -166,7 +168,21 @@ const submit = () =>{
},error=>{
console.log("保存失败")
})
}).catch(() => {});
}).catch(() => {
showSuccessToast('保存成功');
submitData.isPublish = 0
addEnforcementInspectionProgram(submitData,success =>{
console.log(success)
//跳转企业二维码地址
if(success.success){
console.log("保存成功");
showSuccessToast('保存成功');
goBack();
}
},error=>{
console.log("保存失败")
})
});
}
//消息提醒
@ -298,17 +314,17 @@ const onEnforcementTimeConfirm = (value)=> {
background-color: #f4f4f4;
}
/* vant4的 Toast 和 Popup 样式冲突,会导致 Toast 变成白底 */
.van-popup.van-toast{
background: var(--van-toast-background) !important;
box-sizing: content-box !important;
/* 下面3条css,影响不大 */
transition: all var(--van-duration-fast) !important;
width: var(--van-toast-default-width) !important;
max-width: var(--van-toast-max-width) !important;
}
.van-popup.van-toast .van-toast__icon{
font-size: var(--van-toast-icon-size) !important;
}
// .van-popup.van-toast{
// background: var(--van-toast-background) !important;
// box-sizing: content-box !important;
// /* 下面3条css,影响不大 */
// transition: all var(--van-duration-fast) !important;
// width: var(--van-toast-default-width) !important;
// max-width: var(--van-toast-max-width) !important;
// }
// .van-popup.van-toast .van-toast__icon{
// font-size: var(--van-toast-icon-size) !important;
// }
.file-upload{
height: 165px;
position: relative;
@ -354,4 +370,7 @@ const onEnforcementTimeConfirm = (value)=> {
border: 0.02667rem solid #1367fe;
text-align: center;
}
:root {
--van-dialog-width: 600px;
}
</style>

14
src/views/enforce/enterpriseBaseInfo.vue

@ -13,38 +13,50 @@
<van-field
v-model="data.enterpriseInfo.enterpriseName"
label="企业名称:"
readonly
/>
<van-field
v-model="data.enterpriseInfo.enterpriseNumber"
label="统一社会信用代码:"
readonly
/>
<van-field
v-model="data.enterpriseInfo.enterpriseType"
label="企业类型:"
readonly
/>
<van-field
v-model="data.enterpriseInfo.enterpriseAddress"
label="企业地址:"
readonly
/>
<van-field
v-model="data.enterpriseInfo.legalPerson"
label="法人代表:"
readonly
/>
<van-field
v-model="data.enterpriseInfo.registeredCapital"
label="注册资本(元):"
readonly
/>
<van-field
v-model="data.enterpriseInfo.establishmentTime"
label="成立日期:"
readonly
/>
<van-field
v-model="data.enterpriseInfo.operatingTerm"
label="营业期限:"
readonly
/>
<van-field
v-model="data.enterpriseInfo.businessScope"
label="经营范围:"
readonly
type="textarea"
autosize
rows="1"
/>
@ -73,7 +85,7 @@
<p><span class="card_box_label">执法部门:</span> {{ item.lawEnforcement }}</p>
</div>
<div class="card_box_span">
<p><span class="card_box_label">执法人员:</span> {{ item.lawEnforcer }}</p>
<p><span class="card_box_label">执法人员:</span> {{ item.lawEnforcer }} , {{ item.lawEnforcerTwo }}</p>
</div>
<div class="card_box_span">
<p><span class="card_box_label">备注:</span> {{ item.remark }}</p>

50
src/views/enforce/enterpriseScanPreview.vue

@ -18,9 +18,10 @@
<van-tab title="企业画像">
<enterpriseBaseInfo></enterpriseBaseInfo>
</van-tab>
<van-tab title="企业预警">
<enterpriseWarningInfo></enterpriseWarningInfo>
</van-tab>
<van-tab title="企业预警" class="header-box" />
<enterpriseWarningInfo></enterpriseWarningInfo>
</van-tabs>
</div>
@ -39,14 +40,16 @@ import enterpriseWarningInfo from './enterpriseWarningInfo.vue'
import { Tab, Tabs } from 'vant';
const { useCommon } = $globalStore;
const router = useRouter();
//路由参数
const route = useRoute();
let freshMap = reactive({
refreshLoad: false, // 是否刷新
listLoading: false, // 是否加载中
listFinished: false, // 是否加载完成标识
});
const data = reactive({
enterpriseNumber:"a7cbb677c11e4dffa810b4ad3abedc09$eb020e1a24a8a19a0bdc07b191aa9ce7",
// enterpriseNumber:route?.query?.enterpriseNumber,
// enterpriseNumber:"a7cbb677c11e4dffa810b4ad3abedc09$eb020e1a24a8a19a0bdc07b191aa9ce7",
enterpriseNumber:route?.query?.enterpriseNumber,
warningInfo:{},
searchParam:{}
});
@ -171,6 +174,8 @@ const goBack = () => {
color: #4aa1f9;
background: url("../../assets/images/tab_bg.png") no-repeat;
background-size: 100% 100%;
animation: test 1000ms infinite;
-webkit-animation: test 1000ms infinite;
}
/deep/ .van-tab:nth-child(2).van-tab--active {
@ -199,5 +204,40 @@ const goBack = () => {
padding-top: 0.45rem;
box-sizing: border-box;
}
@keyframes test {
from {
opacity: 1.0;
}
50% {
opacity: 0.4;
}
to {
opacity: 1.0;
}
}
@-webkit-keyframes test {
from {
opacity: 1.0;
}
50% {
opacity: 0.4;
}
to {
opacity: 1.0;
}
}
.father-box {
position: relative;
}
.header-box {
color: #fff;
padding: 10px;
font-size: 15px;
height: 300px;
background-color: rgba(146, 139, 139, .8);
animation: test 1000ms infinite;
-webkit-animation: test 1000ms infinite;
}
</style>

10
src/views/enforce/enterpriseWarningInfo.vue

@ -37,18 +37,18 @@
<!-- <van-divider :style="{ color: '#1989fa', borderColor: '#1989fa',padding: '0 5px' }" />-->
<div style="border-color: aqua; border: 2px;" class="van-hairline--bottom"></div>
<div class="card_box_span" style="padding-left: 1%;">
<van-icon v-if="item.level==1" name="warning" color="red" size="30" style="margin-top: 2%;" />
<van-icon v-else-if="item.level==2" name="warning" color="orange" size="30" style="margin-top: 2%;" />
<van-icon v-else-if="item.level==3" name="warning" color="#fed200" size="30" style="margin-top: 2%;" />
<van-icon v-if="item.warningLevel==1" name="warning" color="red" size="30" style="margin-top: 2%;" />
<van-icon v-else-if="item.warningLevel==2" name="warning" color="#ed6a0c" size="30" style="margin-top: 2%;" />
<van-icon v-else-if="item.warningLevel==3" name="warning" color="#fed200" size="30" style="margin-top: 2%;" />
<van-icon v-else name="info" size="30" color="#fed200" style="margin-top: 2%;" />
<p style="padding-left: 15px; font-size: 16px;font-weight: bold;">{{ item.enterpriseName }}</p>
</div>
<div class="card_box_span">
<p style="padding-left: 30px;"><span class="card_box_label">预警原因:</span> 本月对其行政检查{{ item.num }}次</p>
<p style="padding-left: 30px;"><span class="card_box_label">预警原因:</span> {{ item.warningCause }}</p>
</div>
<div class="card_box_span">
<p style="padding-left: 30px;"><span class="card_box_label">预警级别:</span>
{{ item.level==1?"Ⅰ级 (特别严重)":item.level==2?"Ⅱ级 (严重)": item.level==3?"Ⅲ级 (较重)": "Ⅳ (一般)"}}
{{ item.warningLevel==1?"Ⅰ级 (特别严重)":item.warningLevel==2?"Ⅱ级 (严重)": item.warningLevel==3?"Ⅲ级 (较重)": "Ⅳ (一般)"}}
</p>
</div>
</div>

57
src/views/enforce/historyCheck.vue

@ -3,7 +3,7 @@
<div class="shop app_content">
<!-- 导航栏 -->
<div class="header_body">
<header-nav :slefBack="true" @goBack="goBack" :titelText="`行政检查信息查询`"/>
<header-nav :slefBack="true" @goBack="goBack" :titelText="`历史检查信息`"/>
</div>
<van-search v-model="searchParam.searchValue" show-action placeholder="执法事项/部门/人员" @search="onSearch">
<template #action>
@ -19,7 +19,7 @@
<div class="search-button-date">
<span class="date-select" @click="selectDate">{{ data.dateSearch }}</span>
<div style="border-color: black;" class="van-hairline--bottom"></div>
<!-- <van-button class="search-button" type="primary" size="mini">统计分析</van-button>-->
<!-- <van-button class="search-button" type="primary" size="mini">统计分析</van-button> -->
<van-popup v-model:show="data.showDatePicker" position="bottom">
<van-date-picker
title="选择日期"
@ -58,7 +58,7 @@
<p><span class="card_box_label">执法部门:</span> {{ item.lawEnforcement }}</p>
</div>
<div class="card_box_span">
<p><span class="card_box_label">执法人员:</span> {{ item.lawEnforcer }} , {{ item.lawEnforcerTwo }}</p>
<p><span class="card_box_label">执法人员:</span> {{ item.lawEnforcer }},{{ item.lawEnforcerTwo }}</p>
</div>
<div class="card_box_span">
<p><span class="card_box_label">备注:</span> {{ item.remark }}</p>
@ -81,8 +81,8 @@
<script setup name="registrationList">
import { showToast } from "vant";
import {queryRegistrationList} from '../../api/enforce';
import { setGoodsNum } from "@/util/util";
import {queryRegistrationList,getAttr} from '../../api/enforce';
import {queryLinkage, queryLinkageById, queryLinkageDictByValueAndParentId} from "@/api/linkage";
const { useCommon, useShopCard } = $globalStore;
const router = useRouter();
@ -101,8 +101,7 @@
//是否投诉
isComplaint: null,
//企业统一信用码
// enterpriseNumber: ref(useCommon.enterpriseNumber),
lawEnforcerId: ref(useCommon.userId),
enterpriseNumber: ref(useCommon.enterpriseNumber),
//日期搜索
dateSearch: ref(),
});
@ -116,19 +115,47 @@
minDate: new Date(2020, 0, 1),
maxDate: new Date(2125, 5, 1),
columnsType :['year', 'month'],
ga_columns: [],
});
// 设置初始值为当前时间
onMounted(() => {
// getCard();
// searchParam.enterpriseNumber = useCommon.enterpriseNumber;
searchParam.lawEnforcerId = useCommon.userId;
queryList();
searchParam.enterpriseNumber = useCommon.enterpriseNumber;
data.dateSearch = nowDate(new Date());
queryLinkageDictByValueAndParentId({"value": "check_item", "parentId": "100"}, success => {
getLinkageByParentIdToItem(success.id)
},error=>{});
});
const getLinkageByParentIdToItem = (parentId) => {
// 查询检查要求字典信息
queryLinkage({"parentId": parentId}, success => {
for(var i=0; i<success.length; i++) {
data.ga_columns.push({ text: success[i].title, value: success[i].id, id: success[i].id })
}
queryList();
},error=>{});
}
const queryList = () =>{
console.log(data.ga_columns)
queryRegistrationList(searchParam,success =>{
data.dataList = success.data;
for (var i=0; i<success.data.length; i++) {
// var itemTxt = success.data[i].lawEnforcementItem;
// console.log(itemTxt);
// for (var j=0; j<data.ga_columns.length; j++) {
// if (itemTxt == data.ga_columns[j].value) {
// success.data[i].lawEnforcementItem = data.ga_columns[j].text;
// break;
// }
// }
setLinkageItem(success.data[i].lawEnforcementItem,success.data[i]);
}
},error =>{
})
@ -222,7 +249,7 @@
// } else {
// isLodding.value = false;
// }
queryList();
// queryList();
isLodding.value = false;
});
@ -284,6 +311,12 @@ const toDetailView = (id) =>{
}
});
}
const setLinkageItem = (id,item) => {
queryLinkageById({"id": id}, success => {
item.lawEnforcementItem = success.title
data.dataList.push(item);
},error=>{});
}
</script>
<style lang="less" scoped>

27
src/views/enforce/sign.vue

@ -35,6 +35,12 @@
right-icon="add-o"
@click="showPopup2"
/>
<van-field
v-model="submitData.enforcementTime"
label="执法时间"
readonly
placeholder="请选择"
/>
<van-field
v-model="data.lawEnforcementItemText"
required
@ -42,6 +48,9 @@
:rules="[{ required: true, message: '必填项' }]"
placeholder="必填 执法事项"
@click="data.showItem = true"
type="textarea"
rows="1"
autosize
/>
<van-field v-model="submitData.lawEnforcementItem" v-show="false" />
<van-field
@ -52,6 +61,9 @@
:rules="[{ required: true, message: '必填项' }]"
placeholder="必填 执法依据"
@click="data.showGA = true"
type="textarea"
rows="1"
autosize
/>
<van-field v-model="submitData.lawEnforcementBasis" v-show="false" />
<van-field
@ -147,6 +159,7 @@ import {addEnforcementRegistration,queryUserInfo} from '../../api/enforce'
import {getEnterpriseInformation} from '../../api/enterprise'
import { reactive, ref } from "vue";
import {uploadFile} from "../../util/fileUpload";
import {formattedTime} from "@/util/util";
//用户筛选弹窗
import Popup from './userFilter.vue';
import {getDict} from "../../api/Home";
@ -161,8 +174,8 @@ let queryaddressId = ref("");
const data = reactive({
showLawEnforcerFlag:false,
currentPage: 1,
good:"#13c11a",
bad:"#ff0000",
good:"",
bad:"",
popupVisible: false,
popupContent: '',
@ -203,6 +216,8 @@ const submitData = reactive({
enterpriseName:"",
//统一信用码
enterpriseNumber:"",
//执法时间
enforcementTime:"",
//后台保存图片列表
fileList:[],
//vant组件上传照片列表
@ -270,7 +285,7 @@ onMounted(() =>{
//查询执法部门信息
queryUserInfo({},success =>{
if (null != success.data) {
submitData.lawEnforcer = success.data.userName
submitData.lawEnforcer = success.data.userName + " " + success.data.lawCertificateNum
submitData.lawEnforcerId = success.data.userId
submitData.lawEnforcement = success.data.dept.deptName;
submitData.lawEnforcementId = success.data.dept.deptId;
@ -280,6 +295,8 @@ onMounted(() =>{
})
getLinkageByValueAndParentId("law_item", "100");
//初始化时间
submitData.enforcementTime = formattedTime(new Date());
})
// 返回
@ -357,11 +374,11 @@ const closePopup = () =>{
data.popupVisible2 = false;
}
const reciveData = (item) =>{
submitData.lawEnforcerTwo = item.userName;
submitData.lawEnforcerTwo = item.userName + " "+item.lawCertificateNum;
submitData.lawEnforcerIdTwo = item.userId;
}
const reciveData2 = (item) =>{
submitData.subsidiaryer = item.userName;
submitData.subsidiaryer = item.userName + " " + item.lawCertificateNum;
submitData.subsidiaryerId = item.userId;
}

6
src/views/enforce/userFilter.vue

@ -17,9 +17,9 @@
<div class="search-result">
<div class="case-item" v-for="(item, index) in dataList" :key="index" @click="selectData(item)">
<div class="case-title">{{ item.userName }}</div>
<div class="case-depart">{{ item.phonenumber }}</div>
<div class="case-time">{{ item.lawCertificateNum }}</div>
<div class="case-title">姓名:{{ item.userName }}</div>
<div class="case-depart">电话:{{ item.phonenumber }}</div>
<div class="case-time">执法证件号:{{ item.lawCertificateNum }}</div>
</div>
</div>
</div>

2
src/views/enforceHome.vue

@ -238,7 +238,7 @@ onMounted(() => {
}
.noticbox {
top: 38%;
top: 33%;
right: 0;
padding: 0 0.2rem;
width: 1.9rem;

69
src/views/enterprise/caseFilter.vue

@ -11,10 +11,10 @@
<div class="subsearch">
<input class="searchbox" placeholder="请输入关键字搜索" name="keyword" id="" onclick="">
</div>
<div class="subtitle">快捷筛选</div>
<!-- <div class="subtitle">快捷筛选</div>
<div class="quick-item">
<span class="seled">1天内</span> <span>7天内</span> <span>14天内</span> <span>30天内</span>
</div>
</div> -->
<div class="subtitle">执法信息</div>
<van-cell-group>
<van-field
@ -99,9 +99,10 @@
<div class="search-result">
<div class="case-item" v-for="(item, index) in dataList" :key="index" @click="selectData(item)">
<div class="case-title">{{ item.lawEnforcementItem }}</div>
<div class="case-depart">{{ item.lawEnforcement }}</div>
<div class="case-time">{{ item.enforcementTime }}</div>
<div class="case-title">执法事项:{{ item.lawEnforcementItem }}</div>
<div class="case-depart">执法部门:{{ item.lawEnforcement }}</div>
<div class="case-depart">执法人员:{{ item.lawEnforcer }} ,{{ item.lawEnforcerTwo }}</div>
<div class="case-time">执法时间:{{ item.createTime }}</div>
</div>
</div>
</div>
@ -111,6 +112,7 @@
<script>
import { ref } from 'vue'
import {queryRegistrationList} from '../../api/enterprise'
import {queryLinkageDictByValueAndParentId,queryLinkage,queryLinkageById} from '@/api/linkage'
const { useCommon } = $globalStore
export default {
props: {
@ -145,9 +147,7 @@ export default {
},
showPicker: false,
columns: [{ text: '对施工单位进场施工情况的检查', value: 'Hangzhou' },
{ text: '对生产经营场所和员工宿舍出口、疏散通道情况的检查', value: 'Ningbo' },
{ text: '对用人单位依法应当与劳动者订立无固定期限劳动合同情况的检查', value: 'Wenzhou' }],
columns: [],
date:{
beginTime:ref(),
endTime:ref(),
@ -158,11 +158,13 @@ export default {
showBeginDatePicker:false,
showEndDatePicker:false,
},
dataList:[]
dataList:[],
lawEnforcementItemList:[],
}
},
created(){
this.queryList()
this.getLinkageByValueAndParentId("law_item", "100");
},
methods: {
@ -172,6 +174,14 @@ export default {
queryList(){
console.log(ref(useCommon.enterpriseNumber))
queryRegistrationList(this.searchParam,success=>{
success.data.forEach(res =>{
this.lawEnforcementItemList.forEach(r =>{
console.log(r);
if(res.lawEnforcementItem == r.id){
res.lawEnforcementItem = r.title
}
})
})
this.dataList = success.data
},error =>{
@ -215,7 +225,44 @@ export default {
console.log(selectedOptions.selectedOptions[0].value);
this.searchParam.lawEnforcementItem = selectedOptions.selectedOptions[0].value;
this.searchParam.lawEnforcementItemText = selectedOptions.selectedOptions[0].text;
}
},
getLinkageByValueAndParentId (value, parentId){
// 查询检查要求字典信息
queryLinkageDictByValueAndParentId({"value":value, "parentId": parentId}, success => {
this.getLinkageByParentIdToItem(success.id)
},error=>{});
},
getLinkageByParentIdToItem (parentId) {
// 查询检查要求字典信息
queryLinkage({"parentId": parentId}, success => {
this.lawEnforcementItemList = success;
for(var i=0; i<success.length; i++) {
this.columns.push({ text: success[i].title, value: success[i].id, id: success[i].id })
// if (i==0) {
// this.searchParam.lawEnforcementItemText = success[i].title;
// this.searchParam.lawEnforcementItem = success[i].id;
// this.getLinkageByParentIdToGA(success[i].id);
// }
}
this.queryList();
},error=>{});
},
getLinkageByParentIdToGA (parentId) {
// 查询检查要求字典信息
data.ga_columns = [];
queryLinkage({"parentId": parentId}, success => {
for(var i=0; i<success.length; i++) {
data.ga_columns.push({ text: success[i].title, value: success[i].id, id: success[i].id })
if (i==0) {
data.lawEnforcementBasisText = success[i].title;
submitData.lawEnforcementBasis = success[i].id;
}
}
},error=>{});
}
}
}

9
src/views/enterprise/complaint.vue

@ -225,8 +225,13 @@ onMounted(() => {
console.log(success);
success.data.forEach(res =>{
console.log(res)
var obj = { text: res.dictLabel, value: res.dictValue };
data.columns.push(obj)
var obj = null;
if(res.dictValue != 3){
obj = { text: res.dictLabel, value: res.dictValue };
}
if(obj != null){
data.columns.push(obj)
}
})
},error =>{

10
src/views/enterprise/enterpriseInspectionDetail.vue

@ -44,6 +44,9 @@
required
label="检查事项"
:rules="[{ required: true, message: '必填项' }]"
type="textarea"
rows="1"
autosize
readonly
/>
<van-field
@ -51,6 +54,9 @@
required
label="检查要求"
:rules="[{ required: true, message: '必填项' }]"
type="textarea"
rows="1"
autosize
readonly
/>
<van-field
@ -109,6 +115,7 @@ import {getEnterpriseLawEnforcement} from '../../api/administrative'
import { reactive, ref } from "vue";
import {getDict} from "../../api/Home";
import {queryLinkageById} from "../../api/linkage";
import {formattedTimeYYYYmmdd} from "@/util/util";
const router = useRouter();
const route = useRoute();
@ -195,7 +202,8 @@ onMounted(() =>{
submitData.enterpriseName = success.data.enterpriseName;
submitData.linkMan = success.data.linkMan;
submitData.linkTel = success.data.linkTel;
submitData.checkTime = success.data.checkTime;
submitData.checkTime = formattedTimeYYYYmmdd(success.data.checkTime);
submitData.remark = success.data.remark;
setLinkageItem(submitData.checkItem);

35
src/views/enterprise/enterpriseInspectionList.vue

@ -38,7 +38,7 @@
<div class="search-button-date">
<span class="date-select" @click="selectDate">{{ data.dateSearch }}</span>
<div style="border-color: black;" class="van-hairline--bottom"></div>
<!-- <van-button class="search-button" type="primary" size="mini">统计分析</van-button>-->
<!-- <van-button class="search-button" type="primary" size="mini">统计分析</van-button> -->
<van-popup v-model:show="data.showDatePicker" position="bottom">
<van-date-picker
title="选择日期"
@ -62,7 +62,7 @@
<van-swipe-cell class="swipe_cell">
<div class="card_box" @click="toDetailView(item.id)">
<div class="card_box_span">
<p>执法时间:{{ item.createTime }} <span class="card_box_action">
<p>执法时间:{{ formattedTimeYYYYmmdd(item.checkTime) }} <span class="card_box_action">
<!-- <van-button @click="toComplaintView(item.id,item.lawEnforcementIncident)" type="primary" size="mini">投诉</van-button> -->
</span></p>
</div>
@ -72,9 +72,9 @@
<p style="font-size: 16px;font-weight: bold;">{{ item.checkItem }}</p>
</div>
<div class="card_box_span">
<!-- <div class="card_box_span">
<p><span class="card_box_label">登记编号:</span> {{ item.lawEnforcementCode }}</p>
</div>
</div> -->
<div class="card_box_span">
<p><span class="card_box_label">执法部门:</span> {{ item.lawEnforcement }}</p>
</div>
@ -100,7 +100,8 @@
<script setup name="registrationList">
import { showToast } from "vant";
import {queryEnforcementList} from '../../api/enterprise';
import { setGoodsNum } from "@/util/util";
import { formattedTimeYYYYmmdd } from "@/util/util";
import {queryLinkage, queryLinkageById, queryLinkageDictByValueAndParentId} from "@/api/linkage";
const { useCommon, useShopCard } = $globalStore;
const router = useRouter();
@ -139,6 +140,7 @@ const data = reactive({
maxDate: new Date(2125, 5, 1),
columnsType :['year', 'month'],
showTop:false,
ga_columns: [],
});
// 设置初始值为当前时间
@ -147,18 +149,39 @@ onMounted(() => {
// getCard();
searchParam.enterpriseNumber = useCommon.enterpriseNumber;
console.log(useCommon.enterpriseNumber)
queryList();
// queryList();
queryLinkageDictByValueAndParentId({"value": "check_item", "parentId": "100"}, success => {
getLinkageByParentIdToItem(success.id)
},error=>{});
data.dateSearch = nowDate(new Date());
});
const queryList = () =>{
queryEnforcementList(searchParam,success =>{
console.log(success)
for (var i=0; i<success.data.length; i++) {
var itemTxt = success.data[i].checkItem;
for (var j=0; j<data.ga_columns.length; j++) {
if (itemTxt == data.ga_columns[j].value) {
success.data[i].checkItem = data.ga_columns[j].text;
break;
}
}
}
data.dataList = success.data;
},error =>{
})
}
const getLinkageByParentIdToItem = (parentId) => {
// 查询检查要求字典信息
queryLinkage({"parentId": parentId}, success => {
for(var i=0; i<success.length; i++) {
data.ga_columns.push({ text: success[i].title, value: success[i].id, id: success[i].id })
}
queryList();
},error=>{});
}
const onSearch = (val) => {
queryRegistrationList(
{

75
src/views/enterprise/qrCode.vue

@ -25,8 +25,8 @@
<span class="qr_code_text">扫一扫上面的二维码,获取企业执法信息</span>
</div>
<van-action-bar>
<van-action-bar-button text="下载二维码" @click="download(data.qrCodeUrl)" />
<van-action-bar-button text="二维码管理" />
<van-action-bar-button color="#be99ff" text="下载二维码" @click="download(data.qrCodeUrl)" />
<van-action-bar-button color="#be99ff" text="二维码管理" @click="toHisrotyView()" />
</van-action-bar>
</div>
</div>
@ -89,12 +89,81 @@ const download = (url) =>{
backgroundColor: null, // 背景色, 转换图片可能会有白色底色,不要的话就null
}).then((canvas) => {
const link = document.createElement("a"); // 创建一个超链接对象实例
link.download = "http://139.186.135.156:85/profile//2024/03/27/d2f57b93fd86d266c462a315349c13f8.jpg"; // 设置要下载的图片的名称
link.download = "d2f57b93fd86d266c462a315349c13f8.jpg"; // 设置要下载的图片的名称
link.href = canvas.toDataURL(); // 将图片的URL设置到超链接的href中
link.click(); // 触发超链接的点击事件
});
}
const download2 = (url) => {
// url为图片地址(上传到后台,拿到链接)
// 创建下载任务
plus.nativeUI.showWaiting('加载中...')
var dtask = plus.downloader.createDownload(url, {}, function(d, status) {
// 下载完成
if (status == 200) {
console.log('下载成功,文件保存在' + d.filename)
plus.gallery.save(
d.filename,
function() {
//保存到相册方法
plus.nativeUI.closeWaiting()
// Toast('已保存到手机相册') //vant框架记得引入
},
function() {
plus.nativeUI.closeWaiting()
// Toast('保存失败,请重试!')
}
)
} else {
// Toast('保存失败,请重试!')
}
})
dtask.start()
}
/** @params
filename: 文件名称
fileurl: 文件路径
*/
const realDown = (url) => {
const filename = 123;
const fileurl = url;
let ua = navigator.userAgent.toLowerCase()
if (ua.includes("mac")) {
//iOS 将文件url转换为文件流 在下载
downloadFun (
fileurl +
"?response-content-type=application/octet-stream",
filename,
)
} else {
//android 直接用插件的方法下载即可
download(fileurl,filename)
}
}
// 创建a标签 实现下载
const downloadFun = async (blobFile, fileName) => {
let blob = new Blob([blobFile], {
type: "image/jpeg",
})
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName)
} else {
let link = document.createElement("a")
link.href = window.URL.createObjectURL(blob)
link.download = fileName
link.click()
window.URL.revokeObjectURL(link.href) //释放内存
}
}
const toHisrotyView = () =>{
router.push({ path: "/qrCodeHistory" });
}
</script>
<style lang="less" scoped>
.address_edit {

9
src/views/enterprise/qrCodeHistory.vue

@ -3,7 +3,10 @@
<div class="shop app_content">
<!-- 导航栏 -->
<div class="header_body">
<header-nav :leftArrow="false" titelText="二维码管理"></header-nav>
<header-nav
:slefBack="true"
@goBack="goBack"
titelText="二维码管理"></header-nav>
</div>
<van-search
v-model="searchParam.searchValue"
@ -85,9 +88,9 @@
</div>
<!-- 底部 -->
<div class="shop_footer_body">
<!-- <div class="shop_footer_body">
<footer-nav></footer-nav>
</div>
</div> -->
</div>
</template>

6
src/views/enterprise/registrationDetail.vue

@ -42,6 +42,9 @@
:rules="[{ required: true, message: '必填项' }]"
placeholder="必填 执法事项"
readonly
type="textarea"
rows="1"
autosize
/>
<van-field
v-model="submitData.lawEnforcementBasis"
@ -50,6 +53,9 @@
:rules="[{ required: true, message: '必填项' }]"
placeholder="必填 执法依据"
readonly
type="textarea"
rows="1"
autosize
/>
<van-field
v-model="submitData.reslut"

58
src/views/enterprise/registrationList.vue

@ -52,29 +52,32 @@
<div class="refresh_content" v-if="data?.dataList.length">
<div class="goods_box" v-for="(item, index) in data?.dataList" :key="index">
<van-swipe-cell class="swipe_cell">
<div class="card_box" @click="toDetailView(item.id)">
<div class="card_box">
<div class="card_box_span">
<p>执法时间:{{ item.createTime }} <span class="card_box_action">
<van-button @click="toComplaintView(item.id,item.lawEnforcementItem)" type="primary" size="mini">投诉</van-button>
</span></p>
</div>
<!-- <van-divider :style="{ color: '#1989fa', borderColor: '#1989fa',padding: '0 5px' }" /> -->
<div style="border-color: aqua; border: 2px;" class="van-hairline--bottom"></div>
<div class="card_box_span">
<p style="font-size: 16px;font-weight: bold;">{{ item.lawEnforcementItem }}</p>
</div>
<div class="card_box_span">
<p><span class="card_box_label">执法部门:</span> {{ item.lawEnforcement }}</p>
</div>
<div class="card_box_span">
<p><span class="card_box_label">执法人员:</span> {{ item.lawEnforcer }},{{ item.lawEnforcerTwo }}</p>
</div>
<div class="card_box_span">
<p><span class="card_box_label">企业名称:</span> {{ item.enterpriseName }}</p>
</div>
<div class="card_box_span">
<p><span class="card_box_label">备注:</span> {{ item.remark }}</p>
<div style="border-color: aqua; border: 2px;" class="van-hairline--bottom"></div>
<div @click="toDetailView(item.id)">
<div class="card_box_span">
<p style="font-size: 16px;font-weight: bold;">{{ item.lawEnforcementItem }}</p>
</div>
<div class="card_box_span">
<p><span class="card_box_label">执法部门:</span> {{ item.lawEnforcement }}</p>
</div>
<div class="card_box_span">
<p><span class="card_box_label">执法人员:</span> {{ item.lawEnforcer }},{{ item.lawEnforcerTwo }}</p>
</div>
<div class="card_box_span">
<p><span class="card_box_label">企业名称:</span> {{ item.enterpriseName }}</p>
</div>
<div class="card_box_span">
<p><span class="card_box_label">备注:</span> {{ item.remark }}</p>
</div>
</div>
</div>
</van-swipe-cell>
@ -94,6 +97,7 @@
<script setup name="registrationList">
import {queryRegistrationList} from '../../api/enterprise';
import {queryLinkage, queryLinkageById, queryLinkageDictByValueAndParentId} from "@/api/linkage";
import { setGoodsNum } from "@/util/util";
const { useCommon, useShopCard } = $globalStore;
@ -129,6 +133,7 @@ const data = reactive({
minDate: new Date(2020, 0, 1),
maxDate: new Date(2125, 5, 1),
columnsType :['year', 'month'],
ga_columns: [],
});
// 设置初始值为当前时间
@ -137,9 +142,21 @@ onMounted(() => {
// getCard();
searchParam.enterpriseNumber = useCommon.enterpriseNumber;
console.log(useCommon.enterpriseNumber)
queryList();
// queryList();
data.dateSearch = nowDate(new Date());
queryLinkageDictByValueAndParentId({"value": "check_item", "parentId": "100"}, success => {
getLinkageByParentIdToItem(success.id)
},error=>{});
});
const getLinkageByParentIdToItem = (parentId) => {
// 查询检查要求字典信息
queryLinkage({"parentId": parentId}, success => {
for(var i=0; i<success.length; i++) {
data.ga_columns.push({ text: success[i].title, value: success[i].id, id: success[i].id })
}
queryList();
},error=>{});
}
const queryList = () =>{
queryRegistrationList(searchParam,success =>{
console.log(success)
@ -148,7 +165,11 @@ const queryList = () =>{
})
}
const setLinkageItem = (id,item) => {
queryLinkageById({"id": id}, success => {
item.lawEnforcementItem = success.title
},error=>{});
}
const onSearch = (val) => {
queryRegistrationList(
{
@ -195,6 +216,7 @@ const toDetailView = (id) =>{
path: "/registrationDetail",
query: {
id: id,
isShowScan: true
}
});
}

Loading…
Cancel
Save