diff --git a/zdxt-web-client/zdxt-admin-plus-ui/.env.development b/zdxt-web-client/zdxt-admin-plus-ui/.env.development
index 4778c907..fe7fe9fc 100644
--- a/zdxt-web-client/zdxt-admin-plus-ui/.env.development
+++ b/zdxt-web-client/zdxt-admin-plus-ui/.env.development
@@ -1,5 +1,5 @@
# 页面标题
-VITE_APP_TITLE = zdxt-Vue-Plus多租户管理系统
+VITE_APP_TITLE = 执法监督码•执法监督
VITE_APP_LOGO_TITLE = 执法监督码•执法监督
# 开发环境配置
@@ -7,13 +7,13 @@ VITE_APP_ENV = 'development'
# 开发环境
VITE_APP_BASE_API = '/dev-api'
-
+# VITE_APP_BASE_API = '/efcode20-sup-web/prod-api'
# API 代理目标地址
VITE_APP_PROXY_TARGET = 'http://localhost:8080'
# 应用访问路径 例如使用前缀 /admin/
-VITE_APP_CONTEXT_PATH = '/efcode20-sup-web/'
-
+# VITE_APP_CONTEXT_PATH = '/efcode20-sup-web/'
+VITE_APP_CONTEXT_PATH = '/zfjdm/'
# 监控地址
VITE_APP_MONITOR_ADMIN = 'http://localhost:9090/admin/applications'
diff --git a/zdxt-web-client/zdxt-admin-plus-ui/.env.development-wmy-cust b/zdxt-web-client/zdxt-admin-plus-ui/.env.development-wmy-cust
index 907f5c22..8f6a8406 100644
--- a/zdxt-web-client/zdxt-admin-plus-ui/.env.development-wmy-cust
+++ b/zdxt-web-client/zdxt-admin-plus-ui/.env.development-wmy-cust
@@ -15,7 +15,9 @@ VITE_APP_ENV = 'development'
VITE_APP_BASE_API = '/efcode20-sup-web/prod-api'
# 应用访问路径 例如使用前缀 /admin/
-VITE_APP_CONTEXT_PATH = '/efcode20-sup-web/'
+# VITE_APP_CONTEXT_PATH = '/efcode20-sup-web/'
+VITE_APP_CONTEXT_PATH = '/zfjdm/'
+
# 监控地址
VITE_APP_MONITOR_ADMIN = 'http://localhost:9090/admin/applications'
@@ -23,7 +25,7 @@ VITE_APP_MONITOR_ADMIN = 'http://localhost:9090/admin/applications'
# SnailJob 控制台地址
VITE_APP_SNAILJOB_ADMIN = 'http://localhost:8800/snail-job'
-VITE_APP_PORT = 12004
+VITE_APP_PORT = 12003
# 接口加密功能开关(如需关闭 后端也必须对应关闭)
VITE_APP_ENCRYPT = true
diff --git a/zdxt-web-client/zdxt-admin-plus-ui/.env.production b/zdxt-web-client/zdxt-admin-plus-ui/.env.production
index 67776ff3..8616668f 100644
--- a/zdxt-web-client/zdxt-admin-plus-ui/.env.production
+++ b/zdxt-web-client/zdxt-admin-plus-ui/.env.production
@@ -6,7 +6,8 @@ VITE_APP_LOGO_TITLE = 执法监督码•执法监督
VITE_APP_ENV = 'production'
# 应用访问路径 例如使用前缀 /admin/
-VITE_APP_CONTEXT_PATH = '/efcode20-sup-web/'
+# VITE_APP_CONTEXT_PATH = '/efcode20-sup-web/'
+VITE_APP_CONTEXT_PATH = '/zfjdm/'
# 监控地址
VITE_APP_MONITOR_ADMIN = '/admin/applications'
@@ -16,6 +17,7 @@ VITE_APP_SNAILJOB_ADMIN = '/snail-job'
# 生产环境
VITE_APP_BASE_API = '/efcode20-sup-web/prod-api'
+# VITE_APP_BASE_API = '/zfjdm/prod-api'
# 是否在打包时开启压缩,支持 gzip 和 brotli
VITE_BUILD_COMPRESS = gzip
diff --git a/zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/district-direct/index.vue b/zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/district-direct/index.vue
index a0771132..f4b0e972 100644
--- a/zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/district-direct/index.vue
+++ b/zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/district-direct/index.vue
@@ -3,7 +3,7 @@
-
-
+
-
+
@@ -202,7 +202,7 @@ const detailTab = ref(0);
const deptList = ref<(SysDeptVo & { deptId: string | number | null })[]>([]);
const selectedDeptId = ref
(null);
const selectedSubDeptId = ref(null);
-const selectedForDetail = ref(null);
+const selectedForDetail = ref<(SysDeptVo & { deptId: string | number | null }) | null>(null);
const deptName = ref('各区');
const detailDistrictName = ref('');
const districtDetailList = ref([]);
@@ -231,6 +231,22 @@ function isSelected(dept: SysDeptVo & { deptId: string | number | null }) {
return String(dept.deptId) === String(selectedDeptId.value) || (dept.deptId === null && selectedDeptId.value === null);
}
+/** 旧项目:点击下拉菜单时关闭所有其他面板 */
+function toggleDeptPanel() {
+ deptPanelOpen.value = !deptPanelOpen.value;
+ if (deptPanelOpen.value) {
+ datePickerOpen.value = false;
+ }
+}
+
+function toggleDatePicker() {
+ datePickerOpen.value = !datePickerOpen.value;
+ if (datePickerOpen.value) {
+ deptPanelOpen.value = false;
+ detailPanelOpen.value = false;
+ }
+}
+
function getParams() {
const bureauDeptId = selectedSubDeptId.value ?? selectedDeptId.value;
return { beginTime: dateRange.value?.[0], endTime: dateRange.value?.[1], zone: 2, bureauDeptId };
@@ -248,21 +264,30 @@ async function loadDepts() {
if (datas.length >= 11) {
list.push({ deptId: null, deptName: '各区' });
changeDept(null, '各区');
+ // 旧项目:初始化时预加载弹出面板数据
+ selectedForDetail.value = { deptId: null, deptName: '各区' };
+ detailDistrictName.value = '各区';
+ loadStreetAndDistrict(null);
} else if (datas.length === 0) {
list.push({ deptId: -1, deptName: '无权限' });
changeDept(-1, '无权限');
} else if (datas.length > 0) {
changeDept(datas[0].deptId, datas[0].deptName);
+ // 旧项目:初始化时预加载弹出面板数据
+ selectedForDetail.value = datas[0] as SysDeptVo & { deptId: string | number };
+ detailDistrictName.value = datas[0].deptName;
+ loadStreetAndDistrict(datas[0].deptId);
}
deptList.value = [...list, ...datas];
}
function onDeptClick(dept: SysDeptVo & { deptId: string | number | null }) {
- if (dept.deptId === null || dept.deptId === -1) {
+ if (dept.deptId === -1) {
changeDept(dept.deptId, dept.deptName);
detailPanelOpen.value = false;
return;
}
+ // 旧项目:无论点击哪个区(包括"各区"),都会显示弹出面板
selectedForDetail.value = dept;
detailDistrictName.value = dept.deptName;
detailPanelOpen.value = true;
@@ -272,22 +297,31 @@ function onDeptClick(dept: SysDeptVo & { deptId: string | number | null }) {
}
function selectSubDept(item: SysDeptVo) {
- selectedSubDeptId.value = selectedSubDeptId.value === item.deptId ? null : item.deptId;
+ if (selectedSubDeptId.value === item.deptId) {
+ // 取消选中,恢复为区级名称
+ selectedSubDeptId.value = null;
+ deptName.value = detailDistrictName.value;
+ } else {
+ // 选中子单位,更新下拉按钮显示子单位名称(旧项目 changeArea type=2 的行为)
+ selectedSubDeptId.value = item.deptId;
+ deptName.value = item.deptName;
+ }
refreshAll();
}
function changeDept(id: string | number | null, name: string) {
selectedDeptId.value = id;
deptName.value = name;
- deptPanelOpen.value = false;
+ // 旧项目:下拉菜单保持打开,弹出面板显示在右侧,这里不需要关闭下拉菜单
+ // deptPanelOpen.value = false;
refreshAll();
}
-async function loadStreetAndDistrict(deptId: string | number) {
+async function loadStreetAndDistrict(deptId: string | number | null) {
const res = await safeLoad(() => queryStreetAndDistrict({ zoneList: [3, 4], deptId }));
const list = unwrapData(res) || [];
- districtDetailList.value = list.filter((d) => d.zone === 3);
- streetDetailList.value = list.filter((d) => d.zone === 4);
+ districtDetailList.value = list.filter((d) => String(d.zone) === '3');
+ streetDetailList.value = list.filter((d) => String(d.zone) === '4');
}
function initChart(key: string, el?: HTMLElement) {
diff --git a/zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/styles/analysis-layout.css b/zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/styles/analysis-layout.css
index 8b264c0d..94e34c39 100644
--- a/zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/styles/analysis-layout.css
+++ b/zdxt-web-client/zdxt-admin-plus-ui/src/views/supervision/statistical/styles/analysis-layout.css
@@ -7,10 +7,8 @@
.statistical-analysis .wrap_all {
height: 100%;
-}
-
-/* 仅各区页 popbox 需要定位参照,勿加在全市直 select_item 上(会导致 fold_cont 高度按 28px 计算) */
-.statistical-analysis .select_item--anchor {
+ /* 关键:让 .fold_cont 和 .popbox 的绝对定位相对于全屏容器,
+ 这样 popbox 的 width:60%/height:70% 才是相对于整个页面,而不是小容器 */
position: relative;
}
@@ -26,6 +24,11 @@
display: block;
}
+/* .tabcont 原 CSS 默认 display:none,用 v-if 切换渲染时加此 class 显式显示 */
+.statistical-analysis .tabcont.tabcont--shown {
+ display: block;
+}
+
.statistical-analysis .el-date-editor {
margin-left: 8px;
}