diff --git a/doc/部署说明/部署过程描述.md b/doc/部署说明/部署过程描述.md index 5daf1497..0381c882 100644 --- a/doc/部署说明/部署过程描述.md +++ b/doc/部署说明/部署过程描述.md @@ -38,7 +38,7 @@ Nginx 是源码编译安装的,安装在 `/usr/local/nginx/`,可执行文件 * 备份数据库 * 备份1期库(排除市监表) ```bash - mysqldump -h 10.134.89.36 -P 15144 -u zfjd -p'szsf@zfjd' --default-character-set=utf8mb4 --single-transaction --triggers --events --ignore-table=zfjd.sszt_jbxx110497_new --ignore-table=zfjd.sszt_jbxx110497 zfjd > /efcode20/dbv1/zfjd_2026_07_21_ex_sszt_jbxx_utf8.sql + mysqldump -h 10.134.89.36 -P 15144 -u zfjd -p'szsf@zfjd' --default-character-set=utf8mb4 --single-transaction --triggers --events --ignore-table=zfjd.sszt_jbxx110497_new --ignore-table=zfjd.sszt_jbxx110497 zfjd > /efcode20/dbv1/zfjd_2026_08_05_ex_sszt_jbxx_utf8.sql ``` * 单独备份市监表 ```bash @@ -85,18 +85,21 @@ Nginx 是源码编译安装的,安装在 `/usr/local/nginx/`,可执行文件 * 备份2期库 * 查询字符集 mysql -h 10.134.89.36 -P 15144 -u zfjd -p'szsf@zfjd' --default-character-set=utf8mb4 zfjd_ef20_prod -e "SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='zfjd_ef20_1';" + mysql -h 10.134.89.36 -P 15144 -u zfjd -p'szsf@zfjd' --default-character-set=utf8mb4 zfjd_ef20_prod -e "SHOW CREATE TABLE zdxt_file\G" + mysql -h 10.134.89.36 -P 15144 -u zfjd -p'szsf@zfjd' --default-character-set=utf8mb4 zfjd_ef20_prod -e "select * from zdxt_file where org_code is not null;" + mysql -h 10.134.89.36 -P 15144 -u zfjd -p'szsf@zfjd' zfjd -e "ALTER TABLE zdxt_file MODIFY COLUMN org_code varchar(100) NULL COMMENT '机构编号';" mysql -h 10.134.89.36 -P 15144 -u zfjd -p'szsf@zfjd' -e "select count(*) from zfjd.sszt_jbxx110497_new" - * 备份1期库(排除市监表) + * 备份2期库(排除市监表) ```bash mysqldump -h 10.134.89.36 -P 15144 -u zfjd -p'szsf@zfjd' --default-character-set=utf8mb4 --single-transaction --triggers --events --ignore-table=zfjd_ef20_1.sszt_jbxx110497_new --ignore-table=zfjd_ef20_1.sszt_jbxx110497 zfjd_ef20_1 > /efcode20/dbv2/zfjd_ef20_1_2026_06_20_utf8.sql - mysqldump -h 10.134.89.36 -P 15144 -u zfjd -p'szsf@zfjd' --default-character-set=utf8mb4 --single-transaction --triggers --events zfjd_ef20_prod > /efcode20/dbv2/zfjd_ef20_prod_2026_07_30_utf8.sql + mysqldump -h 10.134.89.36 -P 15144 -u zfjd -p'szsf@zfjd' --default-character-set=utf8mb4 --single-transaction --triggers --events zfjd_ef20_prod > /efcode20/dbv2/zfjd_ef20_prod_2026_08_05_utf8.sql ``` * 单独备份市监表 ```bash mysqldump -h 10.134.89.36 -P 15144 -u zfjd -p'szsf@zfjd' --default-character-set=utf8mb4 --single-transaction --triggers --events zfjd_ef20_1 sszt_jbxx110497_new > /efcode20/dbv2/zfjd_ef20_1_2026_06_20_utf8_sszt_jbxx110497_new.sql ``` * 压缩备份文件 - zip -e -P 'xj.sdeweqwew222qwe.12345' /efcode20/dbv2/zfjd_ef20_prod_2026_07_30.zip /efcode20/dbv2/zfjd_ef20_prod_2026_07_30_utf8.sql + zip -e -P 'xj.sdeweqwew222qwe.12345' /efcode20/dbv2/zfjd_ef20_prod_2026_08_05_utf8.zip /efcode20/dbv2/zfjd_ef20_prod_2026_08_05_utf8.sql * 导入2期库 ``` mysql -h 10.134.89.36 -P 15144 -u zfjd -p'szsf@zfjd' --default-character-set=utf8mb4 zfjd_ef20_prod < /efcode20/dbv2/zfjd_ef20_1_2026_07_21_utf8.sql diff --git a/ng/1/nginx.conf b/ng/1/nginx.conf index ccc4c645..be76b8a3 100644 --- a/ng/1/nginx.conf +++ b/ng/1/nginx.conf @@ -24,6 +24,9 @@ http { include mime.types; default_type application/octet-stream; + # 允许带下划线_的header + underscores_in_headers on; + #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; @@ -39,13 +42,52 @@ http { #gzip on; server { listen 12004; + location / { + proxy_pass http://10.76.108.1:85; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + location /efcode20-sup-web/ { proxy_pass http://10.76.108.15:12004/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } + + # 民生述求跳转 + location /mssq_proxy/ { + proxy_pass http://10.224.158.101:8182/proxy/; + + # 保留原始请求头 + proxy_pass_request_headers on; + proxy_pass_request_body on; + # 关键:不要伪造 Host + proxy_set_header Host $proxy_host; + # 保留客户端信息 + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + # token / session 常用 + proxy_set_header Authorization $http_authorization; + proxy_set_header Cookie $http_cookie; + # 保持长连接行为 + proxy_http_version 1.1; + # 如果接口有响应跳转地址,自动改回来 + proxy_redirect off; + } + + # 政务微信跳转 + location /zwwx_proxy/ { + proxy_pass https://zwwx-hlht.sz.gov.cn:30443/; + + # 保持长连接行为 + proxy_http_version 1.1; + } + } + server { listen 80; @@ -58,8 +100,14 @@ http { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } + } + location /efcode20-sup-web/ { + proxy_pass http://10.76.108.15:12004/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html diff --git a/script/sql/zfjd-refactoring-v1/其他/njy/njy.sql b/script/sql/zfjd-refactoring-v1/其他/njy/njy.sql index 77260d67..411b2691 100644 --- a/script/sql/zfjd-refactoring-v1/其他/njy/njy.sql +++ b/script/sql/zfjd-refactoring-v1/其他/njy/njy.sql @@ -13,3 +13,6 @@ ALTER TABLE siq_msg_info ADD error_msg varchar(500) NULL COMMENT '错误信息'; ALTER TABLE efcode_cp_task ADD is_read INT DEFAULT 0 NULL COMMENT '是否已读 0:未读 1:已读'; ALTER TABLE efcode_cp_reserve ADD is_read INT DEFAULT 0 NULL COMMENT '预约是否已读 0:未读 1:已读'; ALTER TABLE efcode_cp_notice ADD is_read INT DEFAULT 0 NULL COMMENT '预告是否已读 0:未读 1:已读'; + + +ALTER TABLE enterprise_information MODIFY COLUMN enterprise_tel varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '企业联系电话'; diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCpPlanController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCpPlanController.java index 39ed6fad..dfd74ee4 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCpPlanController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCpPlanController.java @@ -80,7 +80,8 @@ public class AppEnfCpPlanController extends EfcodeCpPlanController { */ @GetMapping("/reserve/check/{targetPlanId}") public R checkCanReserve(@PathVariable String targetPlanId) { - return cpReserveService.checkCanReserve(targetPlanId); + cpReserveService.checkCanReserve(targetPlanId); + return R.ok(); } /** diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/NonEnforcementRegistration.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/NonEnforcementRegistration.java index 51e826f0..700d33e6 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/NonEnforcementRegistration.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/NonEnforcementRegistration.java @@ -16,9 +16,9 @@ import java.io.Serial; * @date 2026-05-19 */ @Data -@EqualsAndHashCode(callSuper = true) +@EqualsAndHashCode(callSuper = false) @TableName("non_enforcement_registration") -public class NonEnforcementRegistration extends BaseEntity { +public class NonEnforcementRegistration { @Serial private static final long serialVersionUID = 1L; @@ -184,5 +184,7 @@ public class NonEnforcementRegistration extends BaseEntity { */ private String reason; + private String createBy; + } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/NonEnforcementRegistrationVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/NonEnforcementRegistrationVo.java index f823ece5..ffdfef88 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/NonEnforcementRegistrationVo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/NonEnforcementRegistrationVo.java @@ -233,4 +233,5 @@ public class NonEnforcementRegistrationVo implements Serializable { */ private String area; + private String createBy; } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpSettingService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpSettingService.java index b8a74a54..c8bbe708 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpSettingService.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpSettingService.java @@ -59,7 +59,7 @@ public interface IEfcodeCpSettingService { /** * 默认值:下阶段计划提交最晚时间 */ - int DEFAULT_SUBMIT_DEADLINE = 26; + int DEFAULT_SUBMIT_DEADLINE = 25; /** * 默认值:系统自动推荐匹配开始时间(号) diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeServiceImpl.java index fdef12fa..2bfe616c 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeServiceImpl.java @@ -2,9 +2,12 @@ package com.zdxt.enforcementcode.service.impl; import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.zdxt.enforcementcode.common.commonenum.MsgSourceTypeEnum; +import com.zdxt.enforcementcode.domain.EnterpriseInformation; import com.zdxt.enforcementcode.domain.bean.EnforcementEducationServices; import com.zdxt.enforcementcode.domain.bo.thirdparty.YuGaoMsgParamBo; +import com.zdxt.enforcementcode.mapper.EnterpriseInformationMapper; import com.zdxt.enforcementcode.service.ISysMessageViewLogService; import com.zdxt.enforcementcode.service.thirdparty.ISIQService; import org.dromara.common.core.utils.MapstructUtils; @@ -47,6 +50,7 @@ public class EfcodeCpNoticeServiceImpl implements IEfcodeCpNoticeService { private final EfcodeCpNoticeMessageMapper noticeMessageMapper; private final ISysMessageViewLogService sysMessageViewLogService; private final ISIQService siqService; + private final EnterpriseInformationMapper enterpriseInformationMapper; /** * 查询行政执法检查计划-预告 */ @@ -143,6 +147,11 @@ public class EfcodeCpNoticeServiceImpl implements IEfcodeCpNoticeService { getSendYuGaoMsg(entity); } + //同步更新企业电话 + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("enterprise_number",entity.getEnterpriseNumber()); + updateWrapper.set("enterprise_tel",entity.getContactPhone()); + enterpriseInformationMapper.update(updateWrapper); return "操作成功"; } @@ -186,6 +195,12 @@ public class EfcodeCpNoticeServiceImpl implements IEfcodeCpNoticeService { if (update.getStatus() != null && update.getStatus() == 1L) { generateSystemMessage(update); } + + //同步更新企业电话 + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("enterprise_number",bo.getEnterpriseNumber()); + updateWrapper.set("enterprise_tel",bo.getContactPhone()); + enterpriseInformationMapper.update(updateWrapper); return "操作成功"; } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeVirtualUnitMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeVirtualUnitMapper.xml index 600a3128..51bc46b6 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeVirtualUnitMapper.xml +++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeVirtualUnitMapper.xml @@ -26,7 +26,7 @@ FROM sys_user u LEFT JOIN sys_dept d ON u.dept_id = d.dept_id - WHERE u.del_flag = '0' and d.dept_id != 405 + WHERE u.del_flag = '0' and d.dept_id != 405 and u.user_name != 'admin' AND (u.dept_id = #{sysDeptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE t.del_flag = '0' AND FIND_IN_SET(#{sysDeptId}, t.ancestors) diff --git a/zdxt-web-client/zdxt-admin-plus-ui/src/store/modules/permission.ts b/zdxt-web-client/zdxt-admin-plus-ui/src/store/modules/permission.ts index 3663b57b..b3b6badf 100644 --- a/zdxt-web-client/zdxt-admin-plus-ui/src/store/modules/permission.ts +++ b/zdxt-web-client/zdxt-admin-plus-ui/src/store/modules/permission.ts @@ -28,7 +28,7 @@ export interface SystemCodeOption { export const CATCH_ALL_ROUTE_NAME = 'CatchAll404'; //http://10.132.108.3:85/loginByUserId export const systemCodeOptions: SystemCodeOption[] = [ - { label: '首页', value: 'planindex', icon: 'HomeFilled', iframeUrl: 'http://10.132.108.3:85/loginByUserId' }, + { label: '首页', value: 'planindex', icon: 'HomeFilled', iframeUrl: 'Same-origin/loginByUserId' }, { label: '执法监督码', value: 'supervisionCode', icon: 'Document' }, { label: '后台管理', value: 'authService', icon: 'Setting' } ]; @@ -39,13 +39,18 @@ export const usePermissionStore = defineStore('permission', () => { */ const buildIframeUrl = (baseUrl: string): string => { if (!baseUrl) return ''; + // 当配置了 Same-origin 占位符时,替换为浏览器当前的 origin(协议+主机+端口) + let resolvedUrl = baseUrl; + if (baseUrl.includes('Same-origin')) { + resolvedUrl = baseUrl.replace('Same-origin', window.location.origin); + } const userStore = useUserStore(); const params = new URLSearchParams(); if (userStore.v1SystemCredential) { params.set('v1_system_credential', userStore.v1SystemCredential); } - const separator = baseUrl.includes('?') ? '&' : '?'; - return baseUrl + separator + params.toString(); + const separator = resolvedUrl.includes('?') ? '&' : '?'; + return resolvedUrl + separator + params.toString(); }; const routes = ref([]); 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 5c825c63..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 @@ -49,7 +49,7 @@
{{ person.userName }}
-
执法证件号:{{ person.lawEnforcerIdCard ?? person.lawEnforcerPhone }}
+
执法证件号:{{ person.lawCertificateNum || person.phonenumber || person.mobileNumber }}
@@ -298,11 +298,14 @@ 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, })) + 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..7cdbcf29 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 }}
@@ -64,9 +64,11 @@
+ { .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 +476,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 +561,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 +585,7 @@ const onAfterReadImage = (file) => { :deep(.van-field__label) { font-size: 14px; - color: #333; + color: #000; } } @@ -624,11 +634,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 +649,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..a404d346 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 }}
@@ -248,7 +249,11 @@ const handleClose = () => { flex-direction: column; } } - +.enterprise-qr .qr-image { + width: 100%; + height: 100%; + object-fit: cover; +} .enterprise-name { font-size: 16px; color: #333; diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/NonEnforcementInfoSection.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/NonEnforcementInfoSection.vue index 0d89c3b2..b12c0850 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/NonEnforcementInfoSection.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/NonEnforcementInfoSection.vue @@ -59,9 +59,11 @@
+
{{ person.userName }}
-
执法证件号:{{ person.mobileNumber }}
+
执法证件号:{{ person.lawCertificateNum || person.phonenumber || person.mobileNumber }}
@@ -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.mobileNumber || person.id || '' + id: person.lawCertificateNum || person.mobileNumber || '', + userId: person.userId || '', }); localPersonPopup.value = false; }; 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/util/util.js b/zdxt-web-client/zdxt-efcode-enforcement-app/src/util/util.js index 27aee9ca..d3a5b602 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 @@ -122,9 +122,17 @@ const formatTime = (dateStr) => { const y = d.getFullYear(); const m = String(d.getMonth() + 1).padStart(2, '0'); const day = String(d.getDate()).padStart(2, '0'); - const h = String(d.getHours()).padStart(2, '0'); - const min = String(d.getMinutes()).padStart(2, '0'); - return `${y}-${m}-${day} ${h}:${min}:00`; + const h = d.getHours(); + const min = d.getMinutes(); + const sec = d.getSeconds(); + // 时分秒全为0时只展示日期 + if (h === 0 && min === 0 && sec === 0) { + return `${y}-${m}-${day}`; + } + const hh = String(h).padStart(2, '0'); + const mm = String(min).padStart(2, '0'); + const ss = String(sec).padStart(2, '0'); + return `${y}-${m}-${day} ${hh}:${mm}:${ss}`; }; /** @@ -182,4 +190,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/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/enforce/enforcementRegister.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementRegister.vue index 7f4fb42d..ff29cfaa 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 @@
--> - + @@ -16,6 +16,7 @@ { + return !isScanMode.value; +}); + +// 是否可以选择原因(仅手动搜索企业可选择,补录模式显示但不可选择) const canSelectReason = computed(() => { return !isSignMode.value && !isScanMode.value; }); @@ -156,13 +164,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; }); @@ -441,29 +456,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 +737,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 || ''; diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enterpriseScanPreview.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enterpriseScanPreview.vue index bdbed21b..2be4b439 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enterpriseScanPreview.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enterpriseScanPreview.vue @@ -23,9 +23,9 @@
{{ enterpriseData.enterpriseName }}