From 0a034f25219d258771f48291665e70875f92b65a Mon Sep 17 00:00:00 2001 From: "wangmingyong@163.com" Date: Fri, 7 Aug 2026 11:12:29 +0800 Subject: [PATCH 01/17] =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=8A=A0=E6=89=A7?= =?UTF-8?q?=E6=B3=95=E8=AF=81=E4=BB=B6=E5=8F=B7=EF=BC=8Cbug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enforcement/nos/RegisterPopups.vue | 5 +- .../register/EnforcementInfoSection.vue | 36 ++- .../register/EnterpriseInfoSection.vue | 5 + .../register/EnterpriseSelector.vue | 3 +- .../enforcement/register/RegisterPopups.vue | 2 +- .../src/store/Common.js | 8 +- .../enforce/enforcementNoticeList.vue | 15 +- .../enforcement/home/enforcementHome.vue | 1 + .../src/views/enforcement/loginByPassword.vue | 1 + .../my/notice/cp_notice_detail.vue | 286 ++++++++---------- .../enforcement/my/notice/cp_notice_edit.vue | 2 +- .../enforcement/my/plan/cp_plan_edit.vue | 2 +- 12 files changed, 191 insertions(+), 175 deletions(-) diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/nos/RegisterPopups.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/nos/RegisterPopups.vue index 5c825c63..2f6bc8f8 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/nos/RegisterPopups.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/nos/RegisterPopups.vue @@ -49,7 +49,7 @@
{{ person.userName }}
-
执法证件号:{{ person.lawEnforcerIdCard ?? person.lawEnforcerPhone }}
+
执法证件号:{{ person.lawCertificateNum || person.phonenumber || person.mobileNumber }}
@@ -302,7 +302,10 @@ const loadPersonList = () => { lawEnforcerId: item.userId, lawEnforcerName: item.userName, lawEnforcerPhone: item.phonenumber, + lawCertificateNum: item.lawCertificateNum, + mobileNumber: item.mobileNumber, })) + console.log(data) const total = res.total || res.count || 0 if (personPageNum.value === 1) { diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue index 4fc4fa11..b75604e9 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue @@ -15,7 +15,7 @@
*执法人员
- {{ defaultPerson?.name }} {{ defaultPerson?.phonenumber }} + {{ defaultPerson?.name }} {{ defaultPerson?.lawCertificateNum || defaultPerson?.phonenumber }}
@@ -396,14 +396,16 @@ const onAfterReadImage = (file) => { .required-mark { color: #ee0a24; - font-size: 0.32rem; - margin-right: 0.08rem; + font-size: 15px; font-weight: bold; + position: absolute; + left: -4px; + top: 2px; } .form-label { font-size: 14px; - color: #333; + color: #000; flex: none; width: 2.4rem; font-weight: 500; @@ -467,12 +469,10 @@ const onAfterReadImage = (file) => { } .basis-container { - margin-bottom: 0.12rem; - margin-left: 6px; } .basis-row { - padding: 0.24rem 0.32rem; + padding: 0.26rem 0.42667rem; } .basis-wrapper { @@ -554,7 +554,10 @@ const onAfterReadImage = (file) => { justify-content: flex-end; color: #000; } - + :deep(.van-field__label) { + font-size: 14px; + color: #000; + } :deep(.van-checkbox__label) { font-size: 14px; color: #333; @@ -575,7 +578,7 @@ const onAfterReadImage = (file) => { :deep(.van-field__label) { font-size: 14px; - color: #333; + color: #000; } } @@ -624,11 +627,11 @@ const onAfterReadImage = (file) => { } .file-upload-row { - padding: 0px 20px 20px 20px; + padding: 0px 20px 20px 16px; .file-upload-label { font-size: 14px; - color: #333; + color: #000; margin-bottom: 0.16rem; } } @@ -639,4 +642,15 @@ const onAfterReadImage = (file) => { border-radius: 0.1rem; } } +.entrusted-options{ + :deep(.van-field__label){ + width:100px; + color: #000; + } +} +:deep(.van-field__label--required:before){ + position: absolute; + left: 8px; + top: 10px; +} diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnterpriseInfoSection.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnterpriseInfoSection.vue index 291fa14e..38d2a975 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnterpriseInfoSection.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnterpriseInfoSection.vue @@ -87,4 +87,9 @@ const handleClick = () => { color: #000; } +:deep(.van-field__label--required:before){ + position: absolute; + left: 8px; + top: 10px; +} \ No newline at end of file diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnterpriseSelector.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnterpriseSelector.vue index 068b36d4..e58cd063 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnterpriseSelector.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnterpriseSelector.vue @@ -17,7 +17,8 @@
- + +
{{ item.enterpriseName }}
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/RegisterPopups.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/RegisterPopups.vue index 20e26966..3ca0108f 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/RegisterPopups.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/RegisterPopups.vue @@ -58,7 +58,7 @@
{{ person.userName }}
-
执法证件号:{{ person.mobileNumber }}
+
执法证件号:{{ person.lawCertificateNum || person.phonenumber || person.mobileNumber }}
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/store/Common.js b/zdxt-web-client/zdxt-efcode-enforcement-app/src/store/Common.js index 5e727ed2..6c1e98a4 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/store/Common.js +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/store/Common.js @@ -36,6 +36,8 @@ export default defineStore('useCommon', { firstLoad: true, // 是否执法人员 hasLaw: false, + // 执法证件号 + lawCertificateNum: "", }), getters: {}, actions: { @@ -115,6 +117,10 @@ export default defineStore('useCommon', { SET_HAS_LAW(data){ this.hasLaw = data; }, + //设置执法证件号 + SET_LAW_CERTIFICATE_NUM(data){ + this.lawCertificateNum = data; + }, // 获取多语言数据 /*async getLang(params) { let url = $globalRequestUrl({ @@ -157,6 +163,6 @@ export default defineStore('useCommon', { }, persist: { storage: sessionStorage, - pick: ['token', 'userId', 'userName', 'nickName', 'enterpriseNumber', 'enterpriseName', 'enterpriseId', 'phonenumber', 'deptId', 'deptName', 'organId', 'organName', 'bureauUnitId', 'bureauUnitName', 'hasLaw'], + pick: ['token', 'userId', 'userName', 'nickName', 'enterpriseNumber', 'enterpriseName', 'enterpriseId', 'phonenumber', 'deptId', 'deptName', 'organId', 'organName', 'bureauUnitId', 'bureauUnitName', 'hasLaw', 'lawCertificateNum'], }, }); diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementNoticeList.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementNoticeList.vue index aae3a9da..a873d2a8 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementNoticeList.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementNoticeList.vue @@ -22,7 +22,7 @@ -
+
执法时间: {{ item.enforceDate }} @@ -34,7 +34,7 @@
@@ -164,6 +164,16 @@ const onFeedback = (item) => { }); }; +// ========== 查看预告详情 ========== +const onViewDetail = (item) => { + router.push({ + path: '/enforcement/notice/detail', + query: { + id: item.id, + } + }); +}; + // ========== 页面挂载加载数据 ========== onMounted(() => { fetchList(); @@ -211,6 +221,7 @@ onMounted(() => { padding: 0.3rem 0.35rem; margin-bottom: 0.27rem; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); + cursor: pointer; } .card-row { diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/enforcementHome.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/enforcementHome.vue index 13345c3e..1326666b 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/enforcementHome.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/enforcementHome.vue @@ -233,6 +233,7 @@ onMounted(() => { useCommon.SET_BUREAU_UNIT_ID(success.data.bureauUnitId); useCommon.SET_BUREAU_UNIT_NAME(success.data.bureauUnitName || ""); useCommon.SET_HAS_LAW(success.data.lawOfficer || ""); + useCommon.SET_LAW_CERTIFICATE_NUM(success.data.lawCertificateNum || ""); isLoading.value = false; fetchNoticeList(); fetchBannerList(); diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByPassword.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByPassword.vue index 83f9735e..984077a4 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByPassword.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByPassword.vue @@ -135,6 +135,7 @@ const doLogin = (secretName, secretKey) => { useCommon.SET_BUREAU_UNIT_ID(response.data.bureauUnitId); useCommon.SET_BUREAU_UNIT_NAME(response.data.bureauUnitName || ""); useCommon.SET_HAS_LAW(response.data.lawOfficer || ""); + useCommon.SET_LAW_CERTIFICATE_NUM(response.data.lawCertificateNum || ""); useCommon.SET_IS_FIRST_LOAD(false); console.log("bureauUnitName", response.data.bureauUnitName); console.log("enforcement login success", useCommon.userId); diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_detail.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_detail.vue index f5389777..caa42442 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_detail.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_detail.vue @@ -1,76 +1,80 @@ @@ -102,6 +106,17 @@ const formatDate = (dateStr) => { const onBack = () => { router.back(); }; +const goFeedback = () => { + const id = route.query.id; + router.push({ + path: '/enforcement/notice/message', + query: { + id: id, + readonly: 0 + } + }); +}; + onMounted(() => { const id = route.query.id; if (!id) { @@ -134,28 +149,13 @@ onMounted(() => { flex-direction: column; height: 100%; background: #fbfdff; - overflow: hidden; } -:deep(.van-nav-bar) { - background: #347bc3; - flex-shrink: 0; - - .van-nav-bar__title { - color: #fff; - font-size: 18px; - font-weight: 600; - } - - .van-icon { - color: #fff; - } -} - -.content { +.content-area { flex: 1; overflow-y: auto; - padding: 12px; + padding: 0.27rem; + padding-bottom: 1.8rem; } .loading-wrap { @@ -167,127 +167,101 @@ onMounted(() => { font-size: 14px; } -.form-card { +/* ===== 信息卡片 ===== */ +.info-card { background: #fff; - border-radius: 14px; - padding: 16px; - margin-bottom: 12px; - box-shadow: 0 4px 14px rgba(44, 116, 190, 0.08); + border-radius: 4px; + padding: 0.3rem 0.35rem; + margin-bottom: 0.27rem; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); } -.card-header { +.card-title { + font-size: 0.4rem; + font-weight: bold; + color: #333; + margin-bottom: 0.25rem; + padding-bottom: 0.15rem; + border-bottom: 1px solid #f0f0f0; display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 12px; -} - -.status-tag { - font-size: 12px; - font-weight: 500; - padding: 3px 10px; - border-radius: 10px; -} - -.status-0 { - background: #f0f0f0; - color: #666; -} - -.status-1 { - background: #e6f7ff; - color: #1890ff; -} - -.status-2 { - background: #fff2e8; - color: #fa8c16; -} - -.status-3 { - background: #f6ffed; - color: #52c41a; -} - -.card-date { - font-size: 12px; - color: #999; -} - -.notice-title { - font-size: 16px; - font-weight: 700; - color: #111; - line-height: 1.5; - margin-bottom: 14px; + align-items: baseline; } .info-row { display: flex; align-items: flex-start; - margin-bottom: 8px; - font-size: 14px; - line-height: 1.5; - - &:last-child { - margin-bottom: 0; + font-size: 0.32rem; + line-height: 1.8; + padding: 6px 0px; + + .info-label { + color: #333; + margin-right: 18px; + font-size: 14px; + width: 70px; + flex-shrink: 0; + } + .info-value { + color: #999; + flex: 1; + word-break: break-all; + font-size: 14px; } } -.label { - width: 80px; - flex-shrink: 0; - color: #333; - font-weight: 500; -} - -.value { - flex: 1; - color: #8a8a8a; +.content-text { + color: #555; + line-height: 1.6; word-break: break-all; + white-space: pre-wrap; } -.section-title { - font-size: 15px; - font-weight: 600; - color: #333; - margin-bottom: 10px; - padding-bottom: 8px; - border-bottom: 1px solid #f0f0f0; -} - -.person-list { +/* ===== 执法人员 ===== */ +.enforcer-list { display: flex; flex-direction: column; gap: 8px; + padding: 6px 0px; } -.person-line { +.enforcer-item { display: flex; align-items: center; font-size: 14px; color: #666; gap: 12px; - .person-name { + .enforcer-name { font-weight: 500; + color: #999; } - .person-phone { + .enforcer-phone { color: #999; } } +.detail_content{ + height: 100px; +} -.empty-text { - font-size: 14px; - color: #ccc; +/* ===== 底部反馈按钮 ===== */ +.footer-bar { + position: fixed; + bottom: 0; + left: 0; + right: 0; + padding: 0.2rem 0.4rem; + padding-bottom: calc(0.2rem + env(safe-area-inset-bottom)); + background: #fff; + box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.05); + z-index: 10; } -.content-text { - font-size: 14px; - color: #555; - line-height: 1.6; - word-break: break-all; - white-space: pre-wrap; +.feedback-btn { + background: #2b7de9; + border: none; + border-radius: 0.3rem; + font-size: 0.34rem; + height: 0.88rem; } diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue index 40aafb48..19a2c211 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue @@ -232,7 +232,7 @@ >
{{ user.fullname || user.userName }}
- {{ user.mobileNumber }} + {{ user.lawCertificateNum || user.phonenumber || user.mobileNumber }}
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue index 11ad4308..e19e4217 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue @@ -194,7 +194,7 @@ >
{{ user.fullname || user.userName }}
- {{ user.mobileNumber }} + {{ user.lawCertificateNum || user.phonenumber || user.mobileNumber }}
From 3c018241935263f2c802ce839ee489488bd4e05b Mon Sep 17 00:00:00 2001 From: "wangmingyong@163.com" Date: Fri, 7 Aug 2026 11:41:11 +0800 Subject: [PATCH 02/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enforcement/register/RegisterPopups.vue | 2 +- .../src/util/util.js | 15 +++- .../enforce/enforcementRegister.vue | 74 ++++++++++++------- 3 files changed, 64 insertions(+), 27 deletions(-) diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/RegisterPopups.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/RegisterPopups.vue index 3ca0108f..885153ab 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/RegisterPopups.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/RegisterPopups.vue @@ -283,7 +283,7 @@ const handleSelectPerson = (person) => { // 转换字段名称,将接口返回的 userName 转换为 name,phonenumber 转换为 id emit('selectPerson', { name: person.userName || person.name || '', - id: person.mobileNumber || person.id || '' + id: person.lawCertificateNum || person.mobileNumber || '' }); localPersonPopup.value = false; }; diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/util/util.js b/zdxt-web-client/zdxt-efcode-enforcement-app/src/util/util.js index 27aee9ca..d490124c 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/util/util.js +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/util/util.js @@ -182,4 +182,17 @@ const formatEnforcer = (item) => { return enforcers; }; -export { setGoodsNum, isObject, comparisonObject, isElementHidden, formattedTimeYYYYmmdd, formattedTime, getDeviceType, formattedDate, formatEnforcer, formatTime }; +/** + * 电话号码脱敏处理 + * 保留前3位和后4位,中间用 4 个 * 替换 + * @param {string|number} phone 原始电话号码 + * @returns {string} 脱敏后的电话号码,如 138****5678 + */ +const maskPhone = (phone) => { + if (!phone) return ''; + const str = String(phone); + if (str.length < 7) return str; + return str.substring(0, 3) + '****' + str.substring(str.length - 4); +}; + +export { setGoodsNum, isObject, comparisonObject, isElementHidden, formattedTimeYYYYmmdd, formattedTime, getDeviceType, formattedDate, formatEnforcer, formatTime, maskPhone }; diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementRegister.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementRegister.vue index 7f4fb42d..bc268723 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementRegister.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementRegister.vue @@ -7,7 +7,7 @@
--> - + @@ -54,6 +54,7 @@ import { ref, reactive, computed, onMounted } from 'vue'; import { useRouter, useRoute } from 'vue-router'; import { showConfirmDialog, showSuccessToast, showToast } from 'vant'; import { loadDict } from '@/util/dictUtil'; +import { maskPhone } from '@/util/util'; import { saveEnfRegistration, submitEnfRegistration, addNonRegistration, getEnforcementRegistrationDetailById, getSystemConfig } from '@/api/enforcement/index'; import EnterpriseInfoSection from '@/components/enforcement/register/EnterpriseInfoSection.vue'; import EnforcementInfoSection from '@/components/enforcement/register/EnforcementInfoSection.vue'; @@ -156,13 +157,20 @@ const selectedPersonsList = computed(() => { const list = []; // 添加默认执法人员 if (enforcementPersons.value[0]) { - list.push({ id: enforcementPersons.value[0].id, name: enforcementPersons.value[0].name, userId: enforcementPersons.value[0].userId }); + list.push( + { + id: enforcementPersons.value[0].id, + name: enforcementPersons.value[0].name, + userId: enforcementPersons.value[0].userId || '', + phone: maskPhone(enforcementPersons.value[0].phonenumber || ''), + lawCertificateNum: enforcementPersons.value[0].lawCertificateNum || '' + }); } // 添加额外执法人员 additionalPersons.value.forEach(p => { if (p.id || p.name) { - list.push({ id: p.id, name: p.name, userId: p.userId }); - } + list.push({ id: p.id, name: p.name, userId: p.userId || '', lawCertificateNum: p.lawCertificateNum || '' }); + } }); return list; }); @@ -186,6 +194,7 @@ const handleOpenPersonPicker = (index) => { // 选择人员 const handleSelectPerson = (person) => { + console.log(person); if (currentEditIndex.value === -1) { // 新增人员 additionalPersons.value.push({ name: person.name, id: person.id, phonenumber: person.id }); @@ -441,29 +450,41 @@ const getCurrentDateTime = () => { }; // 保存 +const formRef = ref(); const handleSave = () => { - showConfirmDialog({ - title: '确认保存', - message: '确认保存吗?', - width: '80%', - }).then(() => { - const payload = buildSubmitPayload(); - saveEnfRegistration(payload, (res) => { - if (res.code === 200 || res.code === 0) { - showSuccessToast('保存成功'); - sessionStorage.removeItem('enterpriseScanData'); - sessionStorage.removeItem('outOfCityEnterprise'); - sessionStorage.removeItem('scanReason'); - router.replace('/enforcement/enforcementList'); - } else { - showToast(res.msg || '保存失败'); - } - }, (err) => { - console.error('保存接口失败', err); - showToast('保存失败'); + // 验证执法人员数量 + const totalPersons = enforcementPersons.value.length + additionalPersons.value.length; + if (totalPersons < 2) { + showToast('人员至少需要2人'); + return; + } + // 验证表单必填项 + formRef.value?.validate().then(() => { + showConfirmDialog({ + title: '确认保存', + message: '确认保存吗?', + width: '80%', + }).then(() => { + const payload = buildSubmitPayload(); + saveEnfRegistration(payload, (res) => { + if (res.code === 200 || res.code === 0) { + showSuccessToast('保存成功'); + sessionStorage.removeItem('enterpriseScanData'); + sessionStorage.removeItem('outOfCityEnterprise'); + sessionStorage.removeItem('scanReason'); + router.replace('/enforcement/enforcementList'); + } else { + showToast(res.msg || '保存失败'); + } + }, (err) => { + console.error('保存接口失败', err); + showToast('保存失败'); + }); + }).catch(() => { + // 用户取消 }); }).catch(() => { - // 用户取消 + showToast('请完善必填信息'); }); }; @@ -710,8 +731,11 @@ onMounted(() => { let useCommon = JSON.parse(useCommonStr);; const name = useCommon.userName || ''; const phonenumber = useCommon.phonenumber || ''; + const lawCertificateNum = useCommon.lawCertificateNum || ''; if (name || phonenumber) { - enforcementPersons.value = [{ name, phonenumber, userId: useCommon.userId || '' }]; + enforcementPersons.value = [ + { name, phonenumber: maskPhone(phonenumber || ''), userId:useCommon.userId || '',lawCertificateNum } + ]; } formData.enforcementUnit = useCommon.bureauUnitName || ''; From 1750be952bb3d1b5864b6c56ac0836961f562848 Mon Sep 17 00:00:00 2001 From: "wangmingyong@163.com" Date: Fri, 7 Aug 2026 14:41:29 +0800 Subject: [PATCH 03/17] =?UTF-8?q?=E7=99=BB=E8=AE=B0=E6=89=A7=E6=B3=95?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E7=9A=84=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enforcement/register/RegisterPopups.vue | 13 +++++++++++-- .../enforcement/enforce/enforcementRegister.vue | 1 - 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/RegisterPopups.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/RegisterPopups.vue index 885153ab..931eec6b 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/RegisterPopups.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/RegisterPopups.vue @@ -242,7 +242,15 @@ const loadPersonList = () => { console.log(params); getBureauUnitUsers(params, (res) => { if (res.code === 200 || res.code === 0) { - const data = res.data || res.rows || []; + let data = res.data || res.rows || []; + // 前端过滤:移除已选择的人员 + const selectedIds = props.selectedPersons.map(p => p.lawCertificateNum || p.userId || p.id).filter(Boolean); + if (selectedIds.length > 0) { + data = data.filter(item => { + const id = item.lawCertificateNum || item.mobileNumber || item.userId || item.id || ''; + return !selectedIds.includes(id); + }); + } const total = res.total || res.count || 0; if (personPageNum.value === 1) { personList.value = data; @@ -283,7 +291,8 @@ const handleSelectPerson = (person) => { // 转换字段名称,将接口返回的 userName 转换为 name,phonenumber 转换为 id emit('selectPerson', { name: person.userName || person.name || '', - id: person.lawCertificateNum || person.mobileNumber || '' + id: person.lawCertificateNum || person.mobileNumber || '', + userId: person.userId || '', }); localPersonPopup.value = false; }; diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementRegister.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementRegister.vue index bc268723..17e942a3 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementRegister.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementRegister.vue @@ -194,7 +194,6 @@ const handleOpenPersonPicker = (index) => { // 选择人员 const handleSelectPerson = (person) => { - console.log(person); if (currentEditIndex.value === -1) { // 新增人员 additionalPersons.value.push({ name: person.name, id: person.id, phonenumber: person.id }); From 4527af280400711d1dc8007bb76436db02b35a6f Mon Sep 17 00:00:00 2001 From: "wangmingyong@163.com" Date: Fri, 7 Aug 2026 15:54:56 +0800 Subject: [PATCH 04/17] =?UTF-8?q?=E9=9D=9E=E7=8E=B0=E5=9C=BA=E6=89=A7?= =?UTF-8?q?=E6=B3=95=E7=9A=84=E4=BA=BA=E5=91=98=E6=89=A7=E6=B3=95=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enforcement/nos/EnforcementInfoSection.vue | 4 ++-- .../components/enforcement/nos/RegisterPopups.vue | 4 ++-- .../src/views/enforcement/nos/nosAdd.vue | 15 +++++++++------ .../src/views/enforcement/nos/nosDetail.vue | 2 +- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/nos/EnforcementInfoSection.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/nos/EnforcementInfoSection.vue index 6b949499..7cf60be6 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/nos/EnforcementInfoSection.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/nos/EnforcementInfoSection.vue @@ -17,11 +17,11 @@
*{{ formData.taskTypeId == 1 ? '执法人员' : '参与人员' }}
- {{ defaultPerson?.lawEnforcerName }} {{ defaultPerson?.lawEnforcerIdCard ?? defaultPerson?.lawEnforcerPhone }} + {{ defaultPerson?.lawEnforcerName }} {{ defaultPerson?.lawEnforcerIdCard || defaultPerson?.lawEnforcerPhone }}
- {{ person.lawEnforcerName || "请选择" }} {{ person.lawEnforcerIdCard ?? person.lawEnforcerPhone }} + {{ person.lawEnforcerName || "请选择" }} {{ person.lawEnforcerIdCard || person.lawEnforcerPhone }}
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/nos/RegisterPopups.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/nos/RegisterPopups.vue index 2f6bc8f8..78bfc918 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/nos/RegisterPopups.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/nos/RegisterPopups.vue @@ -298,10 +298,10 @@ const loadPersonList = () => { userId: item.userId, userName: item.userName, phonenumber: item.phonenumber, - lawEnforcerIdCard: item.mobileNumber, + lawEnforcerIdCard: item.lawCertificateNum, lawEnforcerId: item.userId, lawEnforcerName: item.userName, - lawEnforcerPhone: item.phonenumber, + lawEnforcerPhone: item.mobileNumber, lawCertificateNum: item.lawCertificateNum, mobileNumber: item.mobileNumber, })) diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/nos/nosAdd.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/nos/nosAdd.vue index f0c96e57..dddc4a5a 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/nos/nosAdd.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/nos/nosAdd.vue @@ -75,7 +75,7 @@ import RegisterPopups from '@/components/enforcement/nos/RegisterPopups.vue'; import AttachmentTaskSource from '@/components/enforcement/nos/AttachmentTaskSource.vue'; import { nosAddApi, nosTaskSourceListApi } from '@/api/nos/index'; import { toFullFileUrl, toRelativeFilePath } from '@/util/fileUrl'; - +import { maskPhone } from '@/util/util'; const router = useRouter(); const route = useRoute(); @@ -110,9 +110,9 @@ const formData = reactive({ const lawEnforcer = ref([ { lawEnforcerName: $globalStore.useCommon.userName, - lawEnforcerPhone: $globalStore.useCommon.phonenumber, + lawEnforcerPhone: maskPhone($globalStore.useCommon.phonenumber), lawEnforcerId: $globalStore.useCommon.userId, - lawEnforcerIdCard: null + lawEnforcerIdCard: $globalStore.useCommon.lawCertificateNum, } ]); @@ -390,14 +390,16 @@ const handleSelectPerson = (person) => { lawEnforcerName: person.lawEnforcerName, lawEnforcerId: person.lawEnforcerId, lawEnforcerPhone: person.lawEnforcerPhone, - lawEnforcerIdCard: person.lawEnforcerIdCard + lawEnforcerIdCard: person.lawEnforcerIdCard, + lawCertificateNum: person.lawCertificateNum || '' }); } else { additionalLawEnforcers.value[currentEditIndex.value] = { lawEnforcerName: person.lawEnforcerName, lawEnforcerId: person.lawEnforcerId, lawEnforcerPhone: person.lawEnforcerPhone, - lawEnforcerIdCard: person.lawEnforcerIdCard + lawEnforcerIdCard: person.lawEnforcerIdCard, + lawCertificateNum: person.lawCertificateNum || '' }; } showPopups.person = false; @@ -497,7 +499,8 @@ const buildLawEnforcerList = () => { lawEnforcerId: item.lawEnforcerId, lawEnforcerName: item.lawEnforcerName, lawEnforcerPhone: item.lawEnforcerPhone, - lawEnforcerIdCard: item.lawEnforcerIdCard + lawEnforcerIdCard: item.lawEnforcerIdCard, + lawCertificateNum: item.lawCertificateNum || '' })); return list; }; diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/nos/nosDetail.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/nos/nosDetail.vue index 6d25fd90..fbcafbe7 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/nos/nosDetail.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/nos/nosDetail.vue @@ -90,7 +90,7 @@ const applyDetailData = (data) => { })), taskSource: data.taskSourceName || '', enforcementUnit: data.lawEnforcementAgency || '', - enforcementPerson: (data.lawEnforcer || []).map((e) => `${e.lawEnforcerName || ''} ${e.lawEnforcerPhone || ''}`.trim()).filter(Boolean), + enforcementPerson: (data.lawEnforcer || []).map((e) => `${e.lawEnforcerName || ''} ${e.lawEnforcerIdCard || e.lawEnforcerPhone || ''}`.trim()).filter(Boolean), enforcementPersonNames: (data.lawEnforcer || []).map((e) => e.lawEnforcerName || '').filter(Boolean), enterpriseName: data.enterpriseName || '', enterpriseNumber: data.usciCode || '', From 117225ba20412705ababc6d3d5fc713c98627b3d Mon Sep 17 00:00:00 2001 From: "wangmingyong@163.com" Date: Fri, 7 Aug 2026 16:23:12 +0800 Subject: [PATCH 05/17] =?UTF-8?q?=E9=A2=84=E5=91=8A=E5=92=8C=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E6=89=A7=E6=B3=95=E8=AF=81=E4=BB=B6=E5=8F=B7=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enforcement/my/notice/cp_notice_edit.vue | 22 ++++++++++++++----- .../enforcement/my/plan/cp_plan_edit.vue | 8 +++---- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue index 19a2c211..0a61dbdc 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue @@ -62,7 +62,7 @@ {{ person.name }} {{ person.phone }} { const bindCurrentUserAsDefaultPerson = () => { const name = useCommon.nickName || useCommon.userName || ''; - const phone = useCommon.phonenumber || ''; + const phone = useCommon.lawCertificateNum || maskPhone(useCommon.phonenumber) || ''; const id = useCommon.userId || ''; if (!name && !id) return; personList.value = [{ id, name, phone, code: '' }]; @@ -534,7 +534,13 @@ const triggerPersonSearch = (keyword) => { if (seq !== personSearchSeq) return; personSearching.value = false; if (res && res.code === 200 && Array.isArray(res.rows)) { - personSearchResult.value = res.rows; + let rows = res.rows; + // 过滤掉已选择的执法人员 + if (personList.value.length > 0) { + const selectedIds = personList.value.map(p => String(p.id || '')).filter(Boolean); + rows = rows.filter(item => !selectedIds.includes(String(item.userId || ''))); + } + personSearchResult.value = rows; } else { personSearchResult.value = []; } @@ -552,17 +558,23 @@ const onSelectPerson = (user) => { const exists = personList.value.some(p => String(p.id || '') === uid); if (exists) { showToast('该人员已添加'); return; } if (personList.value.length >= maxPersonNum) { showToast(`最多只能添加 ${maxPersonNum} 名执法人员`); return; } - personList.value.push({ id: uid, name: user.fullname || user.userName || '', phone: user.mobileNumber || '', code: '' }); + personList.value.push({ id: uid, name: user.fullname || user.userName || '', phone: user.lawCertificateNum || maskPhone(user.mobileNumber) || '', code: '' }); syncPersonData(); showPersonPicker.value = false; }; const removePerson = (index) => { + const person = personList.value[index]; + if (person && person.id === useCommon.userId) { + showToast('本人不可移除'); + return; + } personList.value.splice(index, 1); syncPersonData(); }; const syncPersonData = () => { + console.log(personList.value); form.value.enforceUserNames = personList.value.map(p => p.name).join(','); form.value.enforceUserIds = personList.value.map(p => p.id || '').join(','); form.value.enforceUserTels = personList.value.map(p => p.phone || '').join(','); diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue index e19e4217..afacfe72 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue @@ -101,7 +101,7 @@ {{ person.name }} {{ person.phone }} { // 默认绑定当前登录用户为执法人员 const bindCurrentUserAsDefaultPerson = () => { const name = useCommon.nickName || useCommon.userName || ''; - const phone = useCommon.phonenumber || ''; + const phone = useCommon.lawCertificateNum || maskPhone(useCommon.phonenumber) || ''; const id = useCommon.userId || ''; if (!name && !id) return; personList.value = [{ id, name, phone, code: '' }]; @@ -642,7 +642,7 @@ const onSelectPerson = (user) => { personList.value.push({ id: uid, name: user.fullname || user.userName || '', - phone: user.mobileNumber || '', + phone: user.lawCertificateNum || maskPhone(user.mobileNumber) || '', code: '', }); syncPersonData(); From 7059edd39ee5f2d3bae61d2f1704900825281244 Mon Sep 17 00:00:00 2001 From: "wangmingyong@163.com" Date: Fri, 7 Aug 2026 17:07:35 +0800 Subject: [PATCH 06/17] =?UTF-8?q?bug=20=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../my/notice/cp_notice_detail.vue | 26 +------- .../src/api/enterprise/planNotice.js | 2 +- .../router/enterprise-app/ent-main-router.js | 8 +++ .../enforcement/enforcementEvaluateDetail.vue | 60 ++++++++++++++----- .../enforcementRegistrationList.vue | 24 +++++++- .../enterprise/message/messageCenter.vue | 6 +- 6 files changed, 81 insertions(+), 45 deletions(-) diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_detail.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_detail.vue index caa42442..1b8482d2 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_detail.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_detail.vue @@ -6,27 +6,7 @@  加载中...