From 0a1cf8aa3e46d90ae0fd9a4e4e334a74d19a9cbe Mon Sep 17 00:00:00 2001 From: "wangmingyong@163.com" Date: Thu, 17 Sep 2026 16:41:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A8=E6=A0=BC=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../high-frequency/components/FreqPane.vue | 512 ++++++++++++++++++ .../efcode/trend/high-frequency/index.vue | 361 +----------- .../components/StatPane.vue | 6 +- .../efcode/trend/key-enterprise/index.vue | 169 +++++- .../components/SituationPane.vue | 333 ++++++++++++ .../efcode/trend/situation-trend/index.vue | 94 +--- .../trend-behavior/components/TrendPane.vue | 339 ++++++++++++ .../efcode/trend/trend-behavior/index.vue | 93 +--- 8 files changed, 1406 insertions(+), 501 deletions(-) create mode 100644 zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/high-frequency/components/FreqPane.vue create mode 100644 zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/situation-trend/components/SituationPane.vue create mode 100644 zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/trend-behavior/components/TrendPane.vue diff --git a/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/high-frequency/components/FreqPane.vue b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/high-frequency/components/FreqPane.vue new file mode 100644 index 00000000..cd84076c --- /dev/null +++ b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/high-frequency/components/FreqPane.vue @@ -0,0 +1,512 @@ + + + + + diff --git a/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/high-frequency/index.vue b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/high-frequency/index.vue index 8c9f9493..fe4f1e86 100644 --- a/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/high-frequency/index.vue +++ b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/high-frequency/index.vue @@ -1,355 +1,38 @@ diff --git a/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/inspection-registration/components/StatPane.vue b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/inspection-registration/components/StatPane.vue index b899a1cb..e990e105 100644 --- a/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/inspection-registration/components/StatPane.vue +++ b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/inspection-registration/components/StatPane.vue @@ -27,10 +27,10 @@ const queryParams = reactive({ // 时段类型:week=周度 month=月度 quarter=季度 year=年度 const periodType = ref('month'); const periodOptions = [ - { label: '周度', value: 'week' }, + // { label: '周度', value: 'week' }, { label: '月度', value: 'month' }, - { label: '季度', value: 'quarter' }, - { label: '年度', value: 'year' } + // { label: '季度', value: 'quarter' }, + // { label: '年度', value: 'year' } ]; const periodDate = ref('2026-09'); diff --git a/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/key-enterprise/index.vue b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/key-enterprise/index.vue index 67440a8d..20b058c6 100644 --- a/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/key-enterprise/index.vue +++ b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/key-enterprise/index.vue @@ -21,10 +21,10 @@ const queryParams = reactive({ // 时段类型:week=周度 month=月度 quarter=季度 year=年度 const periodType = ref('month'); const periodOptions = [ - { label: '周度', value: 'week' }, + // { label: '周度', value: 'week' }, { label: '月度', value: 'month' }, - { label: '季度', value: 'quarter' }, - { label: '年度', value: 'year' } + // { label: '季度', value: 'quarter' }, + // { label: '年度', value: 'year' } ]; const periodDate = ref('2026-09'); @@ -133,9 +133,89 @@ const handleExport = () => { // TODO: 接入导出接口后实现文件下载 }; -/** 查看详情 */ -const handleDetail = (_row: EnterpriseRow) => { - // TODO: 待详情页面创建后放开路由跳转 +// ======================== 详情弹窗 ======================== +interface EnforcementDetailRow { + id: number; + enforcementTime: string; + bureauDeptName: string; + categoryText: string; + lawEnforcer: string; + itemText: string; +} + +const detailDialogVisible = ref(false); +const detailEnterprise = ref(null); +const detailLoading = ref(false); +const detailTableData = ref([]); +const detailTotal = ref(0); +const detailPage = ref(1); +const detailPageSize = ref(20); + +/** 获取详情 mock 数据 */ +const buildDetailMockRows = (enterprise: EnterpriseRow, periodDate: string): EnforcementDetailRow[] => { + const rows: EnforcementDetailRow[] = []; + const enforcerPool = ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九', '吴十']; + const bureauPool = [ + `${enterprise.areaName}市场监督管理局`, + `${enterprise.areaName}市场监管局${enterprise.streetName}监管所` + ]; + const categoryPool = ['行政检查', '行政处罚', '专项整治', '日常监管']; + const itemPool = ['特种设备安全检查', '产品质量抽查', '计量器具检定', '食品安全监督抽检', '药品经营许可检查']; + + const count = enterprise.enforcementCount ?? 5; + for (let i = 1; i <= Math.min(count, 8); i++) { + const hour = String(8 + (i % 11)).padStart(2, '0'); + const minute = String((i * 17) % 60).padStart(2, '0'); + rows.push({ + id: i, + enforcementTime: `${periodDate}-${String(i % 28 + 1).padStart(2, '0')} ${hour}:${minute}:00`, + bureauDeptName: bureauPool[i % bureauPool.length], + categoryText: categoryPool[i % categoryPool.length], + lawEnforcer: enforcerPool[i % enforcerPool.length], + itemText: itemPool[i % itemPool.length] + }); + } + return rows; +}; + +const getDetailList = async () => { + detailLoading.value = true; + try { + if (!detailEnterprise.value) return; + // TODO: 接入真实接口后替换为接口返回数据 + // const res = await listKeyEnterpriseDetail({ + // enterpriseId: detailEnterprise.value.id, + // enterpriseName: detailEnterprise.value.enterpriseName, + // periodType: periodType.value, + // periodDate: periodDate.value, + // pageNum: detailPage.value, + // pageSize: detailPageSize.value + // }); + detailTableData.value = buildDetailMockRows(detailEnterprise.value, periodDate.value); + detailTotal.value = detailEnterprise.value.enforcementCount ?? 0; + } finally { + detailLoading.value = false; + } +}; + +/** 查看详情 — 打开弹窗并加载当前时段的执法明细 */ +const handleDetail = (row: EnterpriseRow) => { + if (!row.enterpriseName) return; + detailEnterprise.value = row; + detailPage.value = 1; + detailDialogVisible.value = true; + getDetailList(); +}; + +const handleDetailSizeChange = (size: number) => { + detailPageSize.value = size; + detailPage.value = 1; + getDetailList(); +}; + +const handleDetailPageChange = (page: number) => { + detailPage.value = page; + getDetailList(); }; /** 多选 */ @@ -169,8 +249,10 @@ onUnmounted(() => { diff --git a/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/situation-trend/components/SituationPane.vue b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/situation-trend/components/SituationPane.vue new file mode 100644 index 00000000..0b048b8b --- /dev/null +++ b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/situation-trend/components/SituationPane.vue @@ -0,0 +1,333 @@ + + + + + diff --git a/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/situation-trend/index.vue b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/situation-trend/index.vue index 5d482684..f181906f 100644 --- a/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/situation-trend/index.vue +++ b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/situation-trend/index.vue @@ -1,83 +1,28 @@ @@ -85,4 +30,9 @@ const handleReset = () => { .app-container { padding: 16px; } + +/* 卡片式页签(与 inspection-registration / high-frequency / trend-behavior 保持一致) */ +:deep(.el-tabs--border-card) { + box-shadow: none; +} diff --git a/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/trend-behavior/components/TrendPane.vue b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/trend-behavior/components/TrendPane.vue new file mode 100644 index 00000000..0653989d --- /dev/null +++ b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/trend-behavior/components/TrendPane.vue @@ -0,0 +1,339 @@ + + + + + diff --git a/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/trend-behavior/index.vue b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/trend-behavior/index.vue index 9121e062..56ac4772 100644 --- a/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/trend-behavior/index.vue +++ b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/trend/trend-behavior/index.vue @@ -1,82 +1,28 @@ @@ -84,4 +30,9 @@ const handleReset = () => { .app-container { padding: 16px; } + +/* 卡片式页签(与 inspection-registration、high-frequency 页保持一致) */ +:deep(.el-tabs--border-card) { + box-shadow: none; +}