diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/index.js b/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/index.js
index 9d89b03c..bb44fd8f 100644
--- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/index.js
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/index.js
@@ -72,6 +72,12 @@ export const queryEnforcementNoticeList = (params, success, error) => _post(base
// 执法预告列表
export const getLawNoticeList = (params, success, error) => _post(baseUrl + "/enforcement/queryList", params, success, error);
+// 执法评价列表
+export const queryEvaluateList = (params, success, error) => _get("/app-ent/evaluate/queryEvaluateList", params, success, error);
+
+// 执法评价详情
+export const queryEvaluateDetail = (params, success, error) => _get("/app-ent/evaluate/queryDetailById", params, success, error);
+
export const queryUsersByPage = (params, success, error) => _get(baseUrl + "/system/queryUsersByPage", params, success, error);
// 获取部门列表
@@ -98,6 +104,8 @@ export const getNoticeInfoList = (params, success, error) => _get(baseUrl + "/no
export const getCarouselBannerList = (params, success, error) => _get(baseUrl + "/carouselBanner/list", params, success, error);
+export const getCarouselBannerDetail = (params, success, error) => _get(baseUrl + "/carouselBanner/getInfo", params, success, error);
+
// endregion
// region 统计分析模块
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/router/enforcement-app/enf-main-router.js b/zdxt-web-client/zdxt-efcode-enforcement-app/src/router/enforcement-app/enf-main-router.js
index f63cf206..61992f0e 100644
--- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/router/enforcement-app/enf-main-router.js
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/router/enforcement-app/enf-main-router.js
@@ -26,6 +26,15 @@ const routes = [
isKeepAlive: false,
},
},
+ // 执法端首页-banner详情
+ {
+ path: "/enforcement/bannerDetail",
+ name: "bannerDetail",
+ component: () => import("@/views/enforcement/home/bannerDetail.vue"),
+ meta: {
+ isKeepAlive: false,
+ },
+ },
// 执法端扫码入企
{
path: "/enforcement/scanEntQRCode",
@@ -73,7 +82,7 @@ const routes = [
},
// 执法端-通知列表(tabbar)
{
- path: "/enforcement/enforcementNoticeList",
+ path: "/enforcement/enforcementNoticeList",
name: "enforcementNoticeList",
component: () => import("@/views/enforcement/enforce/enforcementNoticeList.vue"),
meta: {
@@ -89,6 +98,24 @@ const routes = [
isKeepAlive: false,
},
},
+ // 执法端-计划通知列表
+ {
+ path: "/enforcement/planNoticeList",
+ name: "planNoticeList",
+ component: () => import("@/views/enforcement/message/planNoticeList.vue"),
+ meta: {
+ isKeepAlive: false,
+ },
+ },
+ // 执法端-执法评价列表
+ {
+ path: "/enforcement/enforcementEvaluateList",
+ name: "enforcementEvaluateList",
+ component: () => import("@/views/enforcement/message/enforcementEvaluateList.vue"),
+ meta: {
+ isKeepAlive: false,
+ },
+ },
// 执法端-我的(tabbar)
{
path: "/enforcement/my",
@@ -116,6 +143,12 @@ const routes = [
isKeepAlive: false,
},
},
+ // pdf预览
+ {
+ path: "/pdfPngPreview",
+ name: "pdfPngPreview",
+ component: () => import("@/views/common/pdfPngPreview.vue"),
+ },
// 执法端-计划编辑(新增/编辑)
{
path: "/enforcement/plan/edit",
@@ -244,4 +277,4 @@ const routes = [
},
];
-export {routes};
+export { routes };
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/common/pdfPngPreview.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/common/pdfPngPreview.vue
new file mode 100644
index 00000000..f05a9908
--- /dev/null
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/common/pdfPngPreview.vue
@@ -0,0 +1,43 @@
+
+
+
![]()
+
+
+
+
+
\ No newline at end of file
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementEvaluateDetail.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementEvaluateDetail.vue
index 63d8aede..ef9c820b 100644
--- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementEvaluateDetail.vue
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementEvaluateDetail.vue
@@ -73,7 +73,7 @@
-
+
委托行政机关
{{ detail.entrustDeptName }}
@@ -149,7 +149,7 @@
其他问题
+ :disabled="readonly" />
@@ -172,11 +172,6 @@
-
-
-
@@ -200,6 +195,7 @@ import {
getEvaluateDetail,
getEnforcementRegistrationDetailById,
submitEvaluate,
+ queryEvaluateDetail,
} from '@/api/enforcement';
import { loadDict, getDictText } from '@/util/dictUtil';
import { baseUrl } from '@/config/env';
@@ -209,8 +205,15 @@ const router = useRouter();
const route = useRoute();
const id = route.query.id;
-// 只读标识:hasEvaluate=1 已评价只能查看,0/空 为待评价可提交
-const readonly = computed(() => String(route.query.hasEvaluate) === '1');
+// 只读标识:hasEvaluate=1 已评价只能查看,0 为待评价可提交,默认为已评价(只读)
+const readonly = computed(() => {
+ const hasEvaluate = route.query.hasEvaluate;
+ // 如果没有 hasEvaluate 参数,默认为已评价(只读)
+ if (hasEvaluate === undefined || hasEvaluate === null || hasEvaluate === '') return true;
+ return String(hasEvaluate) === '1';
+});
+// 是否从执法评价列表跳转(通过 from 参数判断)
+const fromEvaluateList = computed(() => route.query.from === 'evaluateList');
// 已评价返回的评价信息对象(后端 enterpriseEvaluateInfoVo)
const evaluateInfo = ref(null);
// 评价卡片是否显示:待评价始终显示;已评价仅当 enterpriseEvaluateInfoVo 有数据时显示
@@ -295,8 +298,26 @@ const parseEnforcers = (data) => {
};
// 获取执法详情
+// 从执法评价列表跳转时的详情加载
+const fetchEvaluateDetail = () => {
+ queryEvaluateDetail({ id }, (res) => {
+ if (res.code === 200) {
+ const data = res.data;
+ detail.value = data.enforcementRegistrationVo || {};
+ // 保存企业评价信息
+ evaluateInfo.value = data.enterpriseEvaluateInfoVo || data.evaluateInfo || null;
+ // 已评价:将后端评价数据回填到表单供只读展示
+ if (evaluateInfo.value) fillEvaluateFormFromInfo(evaluateInfo.value);
+ } else {
+ showToast(res.msg || '评价详情加载失败');
+ }
+ }, () => {
+ showToast('评价详情加载失败');
+ });
+};
+
+// 从行政执法列表跳转时的详情加载
const fetchRegistrationDetail = () => {
- if (!id) return;
getEnforcementRegistrationDetailById({ id }, (res) => {
const data = res.data;
detail.value = data.regResults[0]
@@ -310,6 +331,15 @@ const fetchRegistrationDetail = () => {
});
};
+// 根据来源选择加载方式
+const fetchDetail = () => {
+ if (fromEvaluateList.value) {
+ fetchEvaluateDetail();
+ } else {
+ fetchRegistrationDetail();
+ }
+};
+
// 将后端 enterpriseEvaluateInfoVo 回填到表单/问题列表
const fillEvaluateFormFromInfo = (info) => {
evaluateForm.value = {
@@ -327,7 +357,7 @@ const fillEvaluateFormFromInfo = (info) => {
};
onMounted(() => {
- fetchRegistrationDetail();
+ fetchDetail();
});
// ========== 评分文字映射 ==========
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/bannerDetail.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/bannerDetail.vue
new file mode 100644
index 00000000..2a9ba122
--- /dev/null
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/bannerDetail.vue
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+
+
+
{{ detail.title }}
+
+
+
+ {{ detail.source }}
+ {{ detail.time }}
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
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 c714c562..7fa21c79 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
@@ -23,7 +23,7 @@
-
![]()
+
@@ -90,6 +90,7 @@ import { ref, computed, onMounted } from 'vue';
import { useRouter } from 'vue-router';
import FooterBar from '@/components/FooterBar.vue';
import { getNoticeInfoList, getCarouselBannerList } from '@/api/enforcement/index';
+import { baseUrl } from '@/config/env';
const router = useRouter();
@@ -161,6 +162,19 @@ const toStatisticsAnalysis = () => {
});
};
+/**
+ * 跳转banner详情页面
+ * @param {Object} item banner项
+ */
+const toBannerDetail = (item) => {
+ router.push({
+ path: '/enforcement/bannerDetail',
+ query: {
+ id: item.id
+ },
+ });
+};
+
// ========== 页面挂载 ==========
onMounted(() => {
fetchNoticeList();
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/enforcementEvaluateList.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/enforcementEvaluateList.vue
new file mode 100644
index 00000000..c574be7d
--- /dev/null
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/enforcementEvaluateList.vue
@@ -0,0 +1,289 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 执法时间:{{ item.enforcementTime }}
+
+
+
+
{{ item.title || item.checkItemText || '执法检查' }}
+
+
+
+
+ 执法单位
+ {{ item.lawEnforcement || item.bureauDeptName }}
+
+
+
+ 企业名称
+ {{ item.enterpriseName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/messageCenter.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/messageCenter.vue
index 6a57feae..e3e82cb9 100644
--- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/messageCenter.vue
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/messageCenter.vue
@@ -137,11 +137,27 @@ const initMessageList = () => {
{
id: 1,
title: '普法服务',
- desc: '最新一条普法信息标题',
+ desc: '普法服务信息',
time: '2026-04-15 10:07',
icon: 'law',
iconBg: 'icon-blue',
unreadCount: messageStats.value.pffwCount,
+ },{
+ id: 2,
+ title: '计划通知',
+ desc: '计划通知信息',
+ time: '2026-04-15 10:07',
+ icon: 'law',
+ iconBg: 'icon-blue',
+ unreadCount: messageStats.value.jhtzcount,
+ },{
+ id: 3,
+ title: '执法评价',
+ desc: '执法评价信息',
+ time: '2026-04-15 10:07',
+ icon: 'law',
+ iconBg: 'icon-blue',
+ unreadCount: messageStats.value.zfpjcount,
},
];
};
@@ -262,6 +278,16 @@ const onMessageClick = (item) => {
router.push({
path: '/enforcement/lawServiceList',
});
+ } else if (item.title === '计划通知') {
+ sessionStorage.setItem('messageReturnTab', '0');
+ router.push({
+ path: '/enforcement/planNoticeList',
+ });
+ } else if (item.title === '执法评价') {
+ sessionStorage.setItem('messageReturnTab', '0');
+ router.push({
+ path: '/enforcement/enforcementEvaluateList',
+ });
} else {
showToast(`点击了:${item.title}`);
}
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/planNoticeList.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/planNoticeList.vue
new file mode 100644
index 00000000..7cc39247
--- /dev/null
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/planNoticeList.vue
@@ -0,0 +1,297 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 执法单位:
+ {{ item.bureauDeptName || item.lawEnforcement }}
+
+
+ 执法区域:
+ {{ item.unitCheck }}
+
+
+ 发布时间:
+ {{ item.checkTime }}
+
+
+ 附件:
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/program/components/ProgramCreate.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/program/components/ProgramCreate.vue
index 7623872b..1496bb64 100644
--- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/program/components/ProgramCreate.vue
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/program/components/ProgramCreate.vue
@@ -59,7 +59,8 @@
:rules="[{ required: true, message: '请输入执法区域' }]" />
-
(仅限PDF文档,5MB以下)
+
+
(仅限PDF文档,5MB以下)
模板下载
{
+ // 检查附件是否上传(必填)
+ if (!data.fileListObj || data.fileListObj.length === 0) {
+ showToast('请上传PDF格式附件(5MB以下)');
+ return;
+ }
data.showIsPublish = true;
}
@@ -235,7 +241,44 @@ const onFailed = (errorInfo) => {
};
const downloadFile = () => {
- showToast('模板下载功能开发中');
+ // var url = 'http://127.0.0.1:85/profile//EnforcementInspectionPlanTemplate.xlsx';
+ var url = 'http://jdm.szssfj.cn/jdmApi/profile//EnforcementInspectionPlanTemplate.xlsx';
+ // var url = 'http://10.132.108.3:85/profile//EnforcementInspectionPlanTemplate.xlsx';
+ // window.location.href = url;
+ window.open(url);
+ // console.log(url);
+ // szyptGetToken(param, success => {
+ // let resMsg = success.data;
+ // console.log(resMsg);
+ // wx.config({
+ // // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+ // debug: false,
+ // // 必填,公众号的唯一标识
+ // appId: resMsg.corpid,
+ // // 必填,生成签名的时间戳
+ // timestamp: resMsg.timestamp,
+ // // 必填,生成签名的随机串
+ // nonceStr: resMsg.nonceStr,
+ // // 必填,签名,见附录1
+ // signature: resMsg.signature,
+ // // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
+ // jsApiList: ["scanQRCode"],
+ // });
+ // wx.ready(() => {
+ // //微信扫一扫请求操作
+ // wx.downloadImage({
+ // serverId: '', // 需要下载的图片的服务器端ID,由uploadImage接口获得
+ // isShowProgressTips: 1, // 默认为1,显示进度提示
+ // success: function (res) {
+ // var localId = res.localId; // 返回图片下载后的本地ID
+ // }
+ // });
+ // });
+ // wx.error((res) => {
+ // console.log("获取失败");
+ // });
+ // }, error => {
+ // });
}
const uploadFiles = (file) => {
@@ -271,18 +314,18 @@ const onOversize = () => {
onMounted(() => {
submitData.planName = "行政执法计划";
nameObj.planName = '行政执法计划';
-
+
// 从缓存获取用户信息
submitData.userId = commonStore.userId || "";
submitData.deptId = commonStore.deptId || "";
-
+
// 从缓存获取执法单位信息
submitData.enforcementDepartment = commonStore.bureauUnitName || "";
submitData.enforcementDepartmentId = commonStore.bureauUnitId || "";
submitData.bureauDeptName = commonStore.bureauUnitName || "";
submitData.bureauDeptId = commonStore.bureauUnitId || "";
nameObj.bureauDept = commonStore.bureauUnitName || '';
-
+
currentDate();
});
@@ -373,6 +416,10 @@ const dateQuarterOnConfirm = ({ selectedOptions }) => {
color: #323233;
position: relative;
+ .file-required {
+ color: red;
+ }
+
label {
font-weight: 500;
margin-right: 8px;
@@ -473,15 +520,16 @@ const dateQuarterOnConfirm = ({ selectedOptions }) => {
.popcont {
width: 65%;
- background: linear-gradient(180deg, #b0dff7 0%, #f2f7fa 40%, #f2f7fa 50%, #ffffff 100%);
+ background: linear-gradient(180deg, #b0dff7 0%, #f2f7fa 40%, #f2f7fa 50%, #ffffff 100%);
border-radius: 12px;
padding: 24px;
.van-cell-group-title {
display: flex;
- justify-content: center;
- padding-left: 10px;
- :deep(.van-radio__label){
+ justify-content: center;
+ padding-left: 10px;
+
+ :deep(.van-radio__label) {
font-size: 14px;
font-weight: 500;
}
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/program/components/ProgramQuery.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/program/components/ProgramQuery.vue
index 3878c294..e6013b40 100644
--- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/program/components/ProgramQuery.vue
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/program/components/ProgramQuery.vue
@@ -1,15 +1,8 @@
-
+
搜索
@@ -54,17 +47,24 @@
{{ item.planName }}
-
{{ item.enforcementDepartment }}
+
{{ item.enforcementDepartment
+ }}
+
-
{{ item.enforcementArea }}
+
{{ item.enforcementArea
+ }}
@@ -82,172 +82,181 @@