From 549849b47948aac8b808b935bbb23da3253d2c6e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=89=88=E5=85=86=E5=A2=9E?= <你的邮箱@example.com>
Date: Tue, 7 Jul 2026 13:48:20 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A1=AB=E6=8A=A5=E9=A1=B5=E9=9D=A2=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9=EF=BC=8C=E6=B2=BF=E7=A8=8B=E9=85=8D=E7=BD=AE=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9=EF=BC=8C=E6=B7=BB=E5=8A=A0=E9=A2=84=E8=AD=A6=E5=92=8C?=
=?UTF-8?q?=E6=8E=A8=E9=80=81=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
frontend-sjtb/.env.development | 2 +-
frontend/.env.development | 7 +-
frontend/src/api/select/index.ts | 10 +-
.../api/system/map/ConfigManagement/index.ts | 26 +-
frontend/src/api/zzfl/index.ts | 6 +-
frontend/src/utils/request.ts | 3 +
.../ConfigManagement/ConfigManagementForm.vue | 784 ++++++++++++++++++
.../ConfigManagementSearch.vue | 75 ++
.../components/ConfigManagement/index.vue | 228 +++++
.../RulesManagement/LayerManagementForm.vue | 260 ++++++
.../RulesManagement/LayerManagementSearch.vue | 69 ++
.../components/RulesManagement/index.vue | 358 ++++++++
.../src/views/system/alertRules/index.vue | 89 ++
.../ConfigManagement/ConfigManagementForm.vue | 154 ++--
.../ConfigManagementSearch.vue | 46 +-
.../map/components/ConfigManagement/index.vue | 107 ++-
.../components/LegendData/LegendDataForm.vue | 20 +-
.../map/components/LegendData/index.vue | 9 +
.../ConfigManagement/ConfigManagementForm.vue | 784 ++++++++++++++++++
.../ConfigManagementSearch.vue | 75 ++
.../components/ConfigManagement/index.vue | 228 +++++
.../HistoryManagement/LayerManagementForm.vue | 260 ++++++
.../LayerManagementSearch.vue | 69 ++
.../components/HistoryManagement/index.vue | 358 ++++++++
.../src/views/system/pushManagement/index.vue | 89 ++
25 files changed, 4006 insertions(+), 110 deletions(-)
create mode 100644 frontend/src/views/system/alertRules/components/ConfigManagement/ConfigManagementForm.vue
create mode 100644 frontend/src/views/system/alertRules/components/ConfigManagement/ConfigManagementSearch.vue
create mode 100644 frontend/src/views/system/alertRules/components/ConfigManagement/index.vue
create mode 100644 frontend/src/views/system/alertRules/components/RulesManagement/LayerManagementForm.vue
create mode 100644 frontend/src/views/system/alertRules/components/RulesManagement/LayerManagementSearch.vue
create mode 100644 frontend/src/views/system/alertRules/components/RulesManagement/index.vue
create mode 100644 frontend/src/views/system/alertRules/index.vue
create mode 100644 frontend/src/views/system/pushManagement/components/ConfigManagement/ConfigManagementForm.vue
create mode 100644 frontend/src/views/system/pushManagement/components/ConfigManagement/ConfigManagementSearch.vue
create mode 100644 frontend/src/views/system/pushManagement/components/ConfigManagement/index.vue
create mode 100644 frontend/src/views/system/pushManagement/components/HistoryManagement/LayerManagementForm.vue
create mode 100644 frontend/src/views/system/pushManagement/components/HistoryManagement/LayerManagementSearch.vue
create mode 100644 frontend/src/views/system/pushManagement/components/HistoryManagement/index.vue
create mode 100644 frontend/src/views/system/pushManagement/index.vue
diff --git a/frontend-sjtb/.env.development b/frontend-sjtb/.env.development
index 6f8bd729..083fa926 100644
--- a/frontend-sjtb/.env.development
+++ b/frontend-sjtb/.env.development
@@ -7,7 +7,7 @@ VITE_APP_TITLE = '水电水利建设项目全过程环境管理信息平台'
VITE_APP_PORT = 3000
VITE_APP_BASE_API = '/dev-api'
# 本地环境
-VITE_APP_BASE_URL = 'http://10.84.121.127:8093'
+VITE_APP_BASE_URL = 'http://10.84.111.235:8093'
# 测试环境
# VITE_APP_BASE_URL = 'http://172.16.21.142:8093'
# VITE_APP_BASE_URL = 'http://172.16.21.142:8096'
diff --git a/frontend/.env.development b/frontend/.env.development
index 699b8b22..27f26cbe 100644
--- a/frontend/.env.development
+++ b/frontend/.env.development
@@ -12,12 +12,9 @@ VITE_APP_BASE_API = '/dev-api'
# VITE_APP_BASE_URL = 'http://172.16.21.142:8093'
# VITE_APP_BASE_URL = 'http://172.16.21.142:8096'
# 汤伟
-VITE_APP_BASE_URL = 'http://10.84.121.127:8093'
+# VITE_APP_BASE_URL = 'http://10.84.111.235:8093'
# 李林
-# VITE_APP_BASE_URL = 'http://10.84.121.43:8093'
-# VITE_APP_BASE_URL = 'http://192.168.1.162:8093'
-# 李林
-# VITE_APP_BASE_URL = 'http://10.84.121.43:8093'
+VITE_APP_BASE_URL = 'http://10.84.111.25:8093'
# 测试环境线上10.84.121.122:
VITE_APP_TEST_ONLINE_URL = 'https://211.99.26.225:12122'
diff --git a/frontend/src/api/select/index.ts b/frontend/src/api/select/index.ts
index 647e773e..d322e8e1 100644
--- a/frontend/src/api/select/index.ts
+++ b/frontend/src/api/select/index.ts
@@ -1,5 +1,5 @@
import request from '@/utils/request';
-//水电基地数据获取
+//水电基地数据获取
export function wbsbGetKendoList(data: any) {
return request({
url: '/env/hydrobase/wbsb/GetKendoList',
@@ -106,3 +106,11 @@ export function uploadFile(data: any) {
headers: { 'Content-Type': 'multipart/form-data' }
});
}
+// 所在位置下拉列表
+export function getAddvcdDropdownByRvcd(params: any) {
+ return request({
+ url: '/base/msalongb/noAuth/GetKendoList',
+ method: 'post',
+ params
+ });
+}
diff --git a/frontend/src/api/system/map/ConfigManagement/index.ts b/frontend/src/api/system/map/ConfigManagement/index.ts
index d9549aed..bed99f3b 100644
--- a/frontend/src/api/system/map/ConfigManagement/index.ts
+++ b/frontend/src/api/system/map/ConfigManagement/index.ts
@@ -3,7 +3,7 @@ import request from '@/utils/request';
// 获取所有沿程配置数据
export function getAllConfigTree(data: any) {
return request({
- url: '/api/dec-lygk-base-server/base/msalongb/GetKendoList',
+ url: '/base/msalongb/GetKendoList',
method: 'post',
data: data
});
@@ -11,7 +11,7 @@ export function getAllConfigTree(data: any) {
// 保存沿程配置
export function saveBaseWbsb(data: any) {
return request({
- url: '/api/dec-lygk-base-server/base/wbsb/addOrUpdate',
+ url: '/base/msalongb/save',
method: 'post',
data: data
});
@@ -19,8 +19,24 @@ export function saveBaseWbsb(data: any) {
// 删除沿程配置
export function deleteBaseWbsb(data: any) {
return request({
- url: '/api/dec-lygk-base-server/base/wbsb/delete',
- method: 'get',
- params: data
+ url: '/base/msalongb/delete',
+ method: 'post',
+ data
+ });
+}
+// 保存沿程配置子节点
+export function saveBaseWbsbChild(data: any) {
+ return request({
+ url: '/base/msalongb/save',
+ method: 'post',
+ data: data
+ });
+}
+
+export function saveBaseWbsbChildDetail(data: any) {
+ return request({
+ url: '/base/msalongdetb/save',
+ method: 'post',
+ data: data
});
}
diff --git a/frontend/src/api/zzfl/index.ts b/frontend/src/api/zzfl/index.ts
index 426de90f..dcf647e0 100644
--- a/frontend/src/api/zzfl/index.ts
+++ b/frontend/src/api/zzfl/index.ts
@@ -26,7 +26,7 @@ export function overviewGetOverviewSecond(data: any) {
data
});
}
-//增殖站介绍 /api/dec-lygk-base-server/base/msstbprpt/GetKendoList
+//增殖站介绍
export function msstbprptGetKendoList(data: any) {
return request({
url: '/fb/msstbprpt/GetKendoList',
@@ -34,7 +34,7 @@ export function msstbprptGetKendoList(data: any) {
data
});
}
-// 增殖站运行数据统计
+// 增殖站运行数据统计
export function qgcgetFbStaticsData(data: any) {
return request({
url: '/fb/station/qgc/getFbStaticsData',
@@ -73,4 +73,4 @@ export function msfbrdmGetKendoListCust(data: any) {
method: 'post',
data
});
-}
\ No newline at end of file
+}
diff --git a/frontend/src/utils/request.ts b/frontend/src/utils/request.ts
index 7c79d240..0f9323c2 100644
--- a/frontend/src/utils/request.ts
+++ b/frontend/src/utils/request.ts
@@ -56,6 +56,9 @@ service.interceptors.response.use(
if (status === 200) {
if (response.data.code == 401) {
message.error(response.data.msg || '请求失败');
+ setTimeout(() => {
+ router.push('/login');
+ }, 1000);
return;
} else if (response.data.code == 1) {
message.error(response.data.msg);
diff --git a/frontend/src/views/system/alertRules/components/ConfigManagement/ConfigManagementForm.vue b/frontend/src/views/system/alertRules/components/ConfigManagement/ConfigManagementForm.vue
new file mode 100644
index 00000000..4835ade9
--- /dev/null
+++ b/frontend/src/views/system/alertRules/components/ConfigManagement/ConfigManagementForm.vue
@@ -0,0 +1,784 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.stnm }}
+
+
+
+ 保存
+
+
+
+
+
+
+ 新增一级节点
+
+
+
+
+
+
+
+
+
+ {{ item.stnm }}
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
{{ getNodeTitle(dataRef) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.stnm }}
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/views/system/alertRules/components/ConfigManagement/ConfigManagementSearch.vue b/frontend/src/views/system/alertRules/components/ConfigManagement/ConfigManagementSearch.vue
new file mode 100644
index 00000000..c10b93c8
--- /dev/null
+++ b/frontend/src/views/system/alertRules/components/ConfigManagement/ConfigManagementSearch.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
diff --git a/frontend/src/views/system/alertRules/components/ConfigManagement/index.vue b/frontend/src/views/system/alertRules/components/ConfigManagement/index.vue
new file mode 100644
index 00000000..6170d007
--- /dev/null
+++ b/frontend/src/views/system/alertRules/components/ConfigManagement/index.vue
@@ -0,0 +1,228 @@
+
+
+
+ 预警配置管理
+
+
+
+
+
+
+
diff --git a/frontend/src/views/system/alertRules/components/RulesManagement/LayerManagementForm.vue b/frontend/src/views/system/alertRules/components/RulesManagement/LayerManagementForm.vue
new file mode 100644
index 00000000..caa405e3
--- /dev/null
+++ b/frontend/src/views/system/alertRules/components/RulesManagement/LayerManagementForm.vue
@@ -0,0 +1,260 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/views/system/alertRules/components/RulesManagement/LayerManagementSearch.vue b/frontend/src/views/system/alertRules/components/RulesManagement/LayerManagementSearch.vue
new file mode 100644
index 00000000..40cb5033
--- /dev/null
+++ b/frontend/src/views/system/alertRules/components/RulesManagement/LayerManagementSearch.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/frontend/src/views/system/alertRules/components/RulesManagement/index.vue b/frontend/src/views/system/alertRules/components/RulesManagement/index.vue
new file mode 100644
index 00000000..9484aa57
--- /dev/null
+++ b/frontend/src/views/system/alertRules/components/RulesManagement/index.vue
@@ -0,0 +1,358 @@
+
+
+
+ 预警规则
+
+
+
+
+
+
+
diff --git a/frontend/src/views/system/alertRules/index.vue b/frontend/src/views/system/alertRules/index.vue
new file mode 100644
index 00000000..15401494
--- /dev/null
+++ b/frontend/src/views/system/alertRules/index.vue
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
diff --git a/frontend/src/views/system/map/components/ConfigManagement/ConfigManagementForm.vue b/frontend/src/views/system/map/components/ConfigManagement/ConfigManagementForm.vue
index 4835ade9..90b7d48a 100644
--- a/frontend/src/views/system/map/components/ConfigManagement/ConfigManagementForm.vue
+++ b/frontend/src/views/system/map/components/ConfigManagement/ConfigManagementForm.vue
@@ -26,32 +26,40 @@
/>
-
+
+ placeholder="请输入沿程配置编码"
+ />
+
+
-
-
+
+ placeholder="请选择所在河段"
+ :options="riverOptions"
+ :filter-option="filterOption"
+ @change="handleRiverSelect"
+ :disabled="isEdit"
+ />
+
+
-
+
+ />
+
+
@@ -70,7 +78,7 @@
:key="item.stcd"
:value="item.stcd"
>
- {{ item.stnm }}
+ {{ item.ennm }}
handleEditNodeSelect(dataRef)"
>
- {{ item.stnm }}
+ {{ dataRef.parentId ? item.stnm : item.ennm }}
@@ -280,18 +290,21 @@ import {
ArrowUpOutlined,
ArrowDownOutlined
} from '@ant-design/icons-vue';
+import { getEngInfoDropdown, getAddvcdDropdownByRvcd } from '@/api/select';
interface Props {
visible: boolean;
initialValues?: any | null;
loading?: boolean;
+ riverOptions?: any[];
}
const localLoading = ref(false);
const props = withDefaults(defineProps(), {
visible: false,
initialValues: null,
- loading: false
+ loading: false,
+ riverOptions: () => []
});
const modalVisible = computed({
@@ -311,15 +324,20 @@ const defaultFormData = reactive({
id: undefined,
name: undefined,
code: undefined,
- rvnm: undefined,
- description: undefined
+ rvcd: undefined,
+ remark: undefined
});
const formData: any = reactive({ ...defaultFormData });
const rules: Record = {
name: [{ required: true, message: '请输入沿程配置名称', trigger: 'blur' }],
code: [{ required: true, message: '请输入配置编码', trigger: 'blur' }],
- rvnm: [{ required: true, message: '请输入所在河段', trigger: 'blur' }]
+ rvcd: [{ required: true, message: '请选择所在河段', trigger: 'change' }]
+};
+
+const handleRiverSelect = async (value: string) => {
+ const res = await getEngInfoDropdown({ rvcd: value });
+ stationList.value = res.data || [];
};
const isEdit = computed(() => !!props.initialValues);
@@ -331,7 +349,7 @@ const treeData = ref([]);
const addingNewNode = ref(false);
const newNodeData = ref({
stcd: undefined,
- stnm: '',
+ ennm: '',
sttpName: ''
});
@@ -340,7 +358,7 @@ const addingChildNode = ref(false);
const currentParentKey = ref(null);
const childNodeData = ref({
stcd: undefined,
- stnm: '',
+ ennm: '',
sttpName: ''
});
@@ -349,18 +367,13 @@ const editingNode = ref(false);
const editingNodeKey = ref(null);
const editNodeData = ref({
stcd: undefined,
- stnm: '',
+ ennm: '',
sttpName: '',
originalData: null as any
});
-// 站点列表(模拟数据,实际应从接口获取)
-const stationList = ref([
- { stcd: '1', stnm: '站点A', sttpName: '类型1' },
- { stcd: '2', stnm: '站点B', sttpName: '类型2' },
- { stcd: '3', stnm: '站点C', sttpName: '类型1' },
- { stcd: '4', stnm: '站点D', sttpName: '类型3' }
-]);
+const stationList = ref([]);
+const childStationList = ref([]);
// 生成唯一ID
let nodeIdCounter = 0;
@@ -369,19 +382,19 @@ const generateNodeId = () => `node_${Date.now()}_${++nodeIdCounter}`;
// 获取节点标题
const getNodeTitle = (dataRef: any) => {
if (!dataRef.parentId) {
- // 一级节点:只显示 stnm
- return dataRef.stnm || '';
+ return dataRef.ennm || '';
} else {
- // 二级节点:显示 stnm + sttpName
- return `${dataRef.stnm || ''} ${dataRef.sttpName || ''}`;
+ return `${dataRef.ennm || ''} ${dataRef.sttpName || ''}`;
}
};
// 搜索过滤
-const filterOption = (input: string, option: any) => {
- return (
- option.children[0].children.toLowerCase().indexOf(input.toLowerCase()) >= 0
- );
+const filterOption = (inputValue: string, option: any) => {
+ const label = option.label || option.name || '';
+ const reachcdName = option.reachcdName || '';
+ const keyword = inputValue || '';
+
+ return label.indexOf(keyword) !== -1 || reachcdName.indexOf(keyword) !== -1;
};
// 判断是否为第一个节点
@@ -426,10 +439,14 @@ const findNodeByKey = (nodes: any[], key: string): any => {
// 新增一级节点
const handleAdd = () => {
+ if (!formData.rvcd) {
+ message.warning('请先选择所在河段');
+ return;
+ }
addingNewNode.value = true;
newNodeData.value = {
stcd: undefined,
- stnm: '',
+ ennm: '',
sttpName: ''
};
};
@@ -438,7 +455,7 @@ const handleAdd = () => {
const handleNodeSelect = (value: string) => {
const station = stationList.value.find(item => item.stcd === value);
if (station) {
- newNodeData.value.stnm = station.stnm;
+ newNodeData.value.ennm = station.ennm;
newNodeData.value.sttpName = station.sttpName;
}
};
@@ -453,7 +470,7 @@ const handleSaveNewNode = () => {
const newNode = {
key: generateNodeId(),
stcd: newNodeData.value.stcd,
- stnm: newNodeData.value.stnm,
+ ennm: newNodeData.value.ennm,
sttpName: newNodeData.value.sttpName,
parentId: null,
children: []
@@ -469,27 +486,29 @@ const handleCancelAdd = () => {
addingNewNode.value = false;
newNodeData.value = {
stcd: undefined,
- stnm: '',
+ ennm: '',
sttpName: ''
};
};
// 添加子节点(二级节点)
-const handleAddChild = (parentData: any) => {
+const handleAddChild = async (parentData: any) => {
addingChildNode.value = true;
currentParentKey.value = parentData.key;
childNodeData.value = {
stcd: undefined,
- stnm: '',
+ ennm: '',
sttpName: ''
};
+ const res = await getAddvcdDropdownByRvcd({ stcd: parentData.stcd });
+ childStationList.value = res.data || [];
};
// 选择子节点
const handleChildNodeSelect = (value: string) => {
- const station = stationList.value.find(item => item.stcd === value);
+ const station = childStationList.value.find(item => item.stcd === value);
if (station) {
- childNodeData.value.stnm = station.stnm;
+ childNodeData.value.ennm = station.stnm;
childNodeData.value.sttpName = station.sttpName;
}
};
@@ -510,7 +529,7 @@ const handleSaveChildNode = () => {
const newChild = {
key: generateNodeId(),
stcd: childNodeData.value.stcd,
- stnm: childNodeData.value.stnm,
+ ennm: childNodeData.value.ennm,
sttpName: childNodeData.value.sttpName,
parentId: parent.key,
children: []
@@ -533,29 +552,38 @@ const handleCancelAddChild = () => {
currentParentKey.value = null;
childNodeData.value = {
stcd: undefined,
- stnm: '',
+ ennm: '',
sttpName: ''
};
};
// 编辑节点
-const handleEditNode = (dataRef: any) => {
+const handleEditNode = async (dataRef: any) => {
editingNode.value = true;
editingNodeKey.value = dataRef.key;
// 保存原始数据
editNodeData.value = {
stcd: dataRef.stcd,
- stnm: dataRef.stnm,
+ ennm: dataRef.ennm,
sttpName: dataRef.sttpName,
originalData: { ...dataRef }
};
+ if (dataRef.parentId) {
+ const parent = findNodeByKey(treeData.value, dataRef.parentId);
+ if (parent) {
+ const res = await getAddvcdDropdownByRvcd({ stcd: parent.stcd });
+ childStationList.value = res.data || [];
+ }
+ }
};
// 选择编辑节点
-const handleEditNodeSelect = (value: string) => {
- const station = stationList.value.find(item => item.stcd === value);
+const handleEditNodeSelect = (dataRef: any) => {
+ const value = editNodeData.value.stcd;
+ const list = dataRef.parentId ? childStationList.value : stationList.value;
+ const station = list.find(item => item.stcd === value);
if (station) {
- editNodeData.value.stnm = station.stnm;
+ editNodeData.value.ennm = dataRef.parentId ? station.stnm : station.ennm;
editNodeData.value.sttpName = station.sttpName;
editNodeData.value.stcd = station.stcd;
}
@@ -577,7 +605,7 @@ const handleSaveEditNode = () => {
// 更新节点数据
node.stcd = editNodeData.value.stcd;
- node.stnm = editNodeData.value.stnm;
+ node.ennm = editNodeData.value.ennm;
node.sttpName = editNodeData.value.sttpName;
editingNode.value = false;
@@ -591,7 +619,7 @@ const handleCancelEditNode = () => {
editingNodeKey.value = null;
editNodeData.value = {
stcd: undefined,
- stnm: '',
+ ennm: '',
sttpName: '',
originalData: null
};
@@ -631,7 +659,7 @@ const handleMoveDown = (dataRef: any) => {
const handleDeleteNode = (dataRef: any) => {
Modal.confirm({
title: '确认删除',
- content: `确定要删除节点"${dataRef.stnm}"吗?`,
+ content: `确定要删除节点"${dataRef.ennm}"吗?`,
okText: '确定',
cancelText: '取消',
onOk: () => {
@@ -677,7 +705,7 @@ const handleOk = async () => {
}
};
-const initForm = () => {
+const initForm = async () => {
if (props.initialValues) {
const values = props.initialValues;
Object.keys(formData).forEach(key => {
@@ -702,6 +730,12 @@ const initForm = () => {
} else {
treeData.value = [];
}
+
+ // 编辑时调用接口获取一级站点列表
+ if (formData.rvcd) {
+ const res = await getEngInfoDropdown({ rvcd: formData.rvcd });
+ stationList.value = res.data || [];
+ }
} else {
resetForm();
}
diff --git a/frontend/src/views/system/map/components/ConfigManagement/ConfigManagementSearch.vue b/frontend/src/views/system/map/components/ConfigManagement/ConfigManagementSearch.vue
index c10b93c8..91cd9b3b 100644
--- a/frontend/src/views/system/map/components/ConfigManagement/ConfigManagementSearch.vue
+++ b/frontend/src/views/system/map/components/ConfigManagement/ConfigManagementSearch.vue
@@ -10,7 +10,9 @@
>
- 新增沿程配置
+
+ 新增沿程配置
+
@@ -18,46 +20,52 @@
diff --git a/frontend/src/views/system/map/components/ConfigManagement/index.vue b/frontend/src/views/system/map/components/ConfigManagement/index.vue
index 84d71955..af27d7db 100644
--- a/frontend/src/views/system/map/components/ConfigManagement/index.vue
+++ b/frontend/src/views/system/map/components/ConfigManagement/index.vue
@@ -4,6 +4,8 @@
@@ -37,6 +39,8 @@
ref="configManagementForm"
v-model:visible="editModalVisible"
:initial-values="currentRecord"
+ :river-options="riverOptions"
+ :river-options-load="riverOptionsLoad"
@cancel="editModalCancel"
@ok="handleEditSubmit"
/>
@@ -52,8 +56,10 @@ import { message, Modal } from 'ant-design-vue';
import {
getAllConfigTree,
deleteBaseWbsb,
- saveBaseWbsb
+ saveBaseWbsbChild,
+ saveBaseWbsbChildDetail
} from '@/api/system/map/ConfigManagement';
+import { getRvcdDropdown } from '@/api/select';
// 表格实例
const basicTable = ref(null);
@@ -129,9 +135,20 @@ const handleAdd = () => {
editModalVisible.value = true;
};
+// 过滤掉值为 '-' 的字段
+const filterRecord = (record: any) => {
+ const filtered: any = {};
+ Object.keys(record).forEach(key => {
+ if (record[key] !== '-') {
+ filtered[key] = record[key];
+ }
+ });
+ return filtered;
+};
+
// 编辑处理
const handleEdit = (record: any) => {
- currentRecord.value = { ...record };
+ currentRecord.value = filterRecord(record);
editModalVisible.value = true;
};
@@ -144,8 +161,12 @@ const handleDelete = (record: any) => {
onOk: async () => {
try {
let res = await deleteBaseWbsb([record.id]);
- message.success('删除成功');
- basicTable.value.refresh();
+ if (res.code == 0) {
+ message.success('删除成功');
+ basicTable.value.refresh();
+ } else {
+ message.error('删除失败');
+ }
} catch (error) {
message.error('删除失败');
return;
@@ -159,12 +180,12 @@ const onSearchFinish = (values: any) => {
const params = {
logic: 'and',
filters: [
- values.parentId
+ values.rvcd
? {
- field: 'parentId',
+ field: 'rvcd',
operator: 'eq',
dataType: 'string',
- value: values.parentId
+ value: values.rvcd
}
: null,
values.name
@@ -197,23 +218,79 @@ const editModalCancel = () => {
// 表单提交
const handleEditSubmit = async (values: any) => {
try {
- let res = await saveBaseWbsb({
+ const formData = {
...currentRecord.value,
...values
- });
- message.success(`保存成功`);
+ };
+ delete formData.configNodes;
- editModalVisible.value = false;
- basicTable.value.refresh();
+ Object.keys(formData).forEach(key => {
+ if (key.includes('-')) {
+ delete formData[key];
+ }
+ });
+
+ let res = await saveBaseWbsbChild(formData);
+ if (res.code == 0) {
+ const alongId = res.data;
+ const treeData = values.configNodes || [];
+
+ if (treeData.length > 0) {
+ const formatTreeData = (
+ nodes: any[],
+ parentId: string | null = null
+ ) => {
+ return nodes.map(node => ({
+ alongId,
+ stcd: node.stcd,
+ stnm: node.ennm,
+ sttpName: node.sttpName,
+ parentId: parentId ? parentId : null,
+ children:
+ node.children && node.children.length > 0
+ ? formatTreeData(node.children, node.key)
+ : []
+ }));
+ };
+
+ const detailData = formatTreeData(treeData);
+
+ const detailRes = await saveBaseWbsbChildDetail(detailData);
+ if (detailRes.code == 0) {
+ message.success(`保存成功`);
+ editModalVisible.value = false;
+ basicTable.value.refresh();
+ } else {
+ message.error(`保存子节点失败`);
+ }
+ } else {
+ message.success(`保存成功`);
+ editModalVisible.value = false;
+ basicTable.value.refresh();
+ }
+ } else {
+ message.error(`保存失败`);
+ }
} catch (error) {
message.error(`保存失败`);
-
editModalVisible.value = false;
return;
}
};
-
-const initOption = () => {};
+const riverOptions = ref([]);
+const riverOptionsLoad = ref(false);
+const initOption = () => {
+ const params = {};
+ riverOptionsLoad.value = true;
+ getRvcdDropdown(params).then((res: any) => {
+ res.data.forEach((item: any) => {
+ item.value = item.rvcd;
+ item.label = item.rvnm;
+ });
+ riverOptions.value = res.data || [];
+ riverOptionsLoad.value = false;
+ });
+};
onMounted(() => {
initOption();
});
diff --git a/frontend/src/views/system/map/components/LegendData/LegendDataForm.vue b/frontend/src/views/system/map/components/LegendData/LegendDataForm.vue
index bccce97a..c2014599 100644
--- a/frontend/src/views/system/map/components/LegendData/LegendDataForm.vue
+++ b/frontend/src/views/system/map/components/LegendData/LegendDataForm.vue
@@ -2,7 +2,7 @@
emit('update:visible', val)
});
+const confirmLoading = computed(() => {
+ return localLoading.value || props.loading;
+});
+
const emit = defineEmits<{
(e: 'update:visible', value: boolean): void;
(e: 'cancel'): void;
@@ -276,6 +280,7 @@ const handleLayerSelect = (value: any) => {
};
const handleOk = async () => {
+ localLoading.value = true;
try {
await formRef.value.validate();
// 过滤掉 undefined 的字段,不提交空值
@@ -329,6 +334,7 @@ const handleOk = async () => {
} catch (error) {
console.error('Validate Failed:', error);
message.error('请检查表单填写是否正确');
+ localLoading.value = false;
}
};
@@ -350,6 +356,7 @@ const resetForm = () => {
formRef.value.resetFields();
}
Object.assign(formData, defaultFormData);
+ localLoading.value = false;
};
const handleCancel = () => {
@@ -358,11 +365,22 @@ const handleCancel = () => {
resetForm();
};
+watch(
+ () => props.loading,
+ newLoading => {
+ if (newLoading) {
+ localLoading.value = false;
+ }
+ }
+);
+
watch(
() => props.visible,
newVisible => {
if (newVisible) {
initForm();
+ } else {
+ localLoading.value = false;
}
},
{ immediate: false }
diff --git a/frontend/src/views/system/map/components/LegendData/index.vue b/frontend/src/views/system/map/components/LegendData/index.vue
index 59deedd4..9738c1a6 100644
--- a/frontend/src/views/system/map/components/LegendData/index.vue
+++ b/frontend/src/views/system/map/components/LegendData/index.vue
@@ -66,6 +66,7 @@
:LayerOptions="LayerOptions"
v-model:visible="editModalVisible"
:initial-values="currentRecord"
+ :loading="editLoading"
@cancel="editModalCancel"
@ok="handleEditSubmit"
/>
@@ -249,6 +250,7 @@ const LegendOptions = ref([]);
const LayerOptions = ref([]);
const currentRecord = ref(null);
const editModalVisible = ref(false);
+const editLoading = ref(false);
const handleAdd = () => {
currentRecord.value = null;
ensureOptionsLoaded().then(() => {
@@ -401,11 +403,16 @@ const editModalCancel = () => {
// 表单提交
const handleEditSubmit = async (values: any, type: string) => {
+ editLoading.value = true;
try {
let res = await saveMapLegend({
...currentRecord.value,
...values
});
+ if (res.code == 1) {
+ message.error('保存失败');
+ return;
+ }
if (type === 'switch') {
message.success('修改状态成功');
} else {
@@ -421,6 +428,8 @@ const handleEditSubmit = async (values: any, type: string) => {
}
editModalVisible.value = false;
return;
+ } finally {
+ editLoading.value = false;
}
};
const initOption = () => {
diff --git a/frontend/src/views/system/pushManagement/components/ConfigManagement/ConfigManagementForm.vue b/frontend/src/views/system/pushManagement/components/ConfigManagement/ConfigManagementForm.vue
new file mode 100644
index 00000000..4835ade9
--- /dev/null
+++ b/frontend/src/views/system/pushManagement/components/ConfigManagement/ConfigManagementForm.vue
@@ -0,0 +1,784 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.stnm }}
+
+
+
+ 保存
+
+
+
+
+
+
+ 新增一级节点
+
+
+
+
+
+
+
+
+
+ {{ item.stnm }}
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
{{ getNodeTitle(dataRef) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.stnm }}
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/views/system/pushManagement/components/ConfigManagement/ConfigManagementSearch.vue b/frontend/src/views/system/pushManagement/components/ConfigManagement/ConfigManagementSearch.vue
new file mode 100644
index 00000000..c10b93c8
--- /dev/null
+++ b/frontend/src/views/system/pushManagement/components/ConfigManagement/ConfigManagementSearch.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
diff --git a/frontend/src/views/system/pushManagement/components/ConfigManagement/index.vue b/frontend/src/views/system/pushManagement/components/ConfigManagement/index.vue
new file mode 100644
index 00000000..64294dbc
--- /dev/null
+++ b/frontend/src/views/system/pushManagement/components/ConfigManagement/index.vue
@@ -0,0 +1,228 @@
+
+
+
+ 推送配置
+
+
+
+
+
+
+
diff --git a/frontend/src/views/system/pushManagement/components/HistoryManagement/LayerManagementForm.vue b/frontend/src/views/system/pushManagement/components/HistoryManagement/LayerManagementForm.vue
new file mode 100644
index 00000000..caa405e3
--- /dev/null
+++ b/frontend/src/views/system/pushManagement/components/HistoryManagement/LayerManagementForm.vue
@@ -0,0 +1,260 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/views/system/pushManagement/components/HistoryManagement/LayerManagementSearch.vue b/frontend/src/views/system/pushManagement/components/HistoryManagement/LayerManagementSearch.vue
new file mode 100644
index 00000000..40cb5033
--- /dev/null
+++ b/frontend/src/views/system/pushManagement/components/HistoryManagement/LayerManagementSearch.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/frontend/src/views/system/pushManagement/components/HistoryManagement/index.vue b/frontend/src/views/system/pushManagement/components/HistoryManagement/index.vue
new file mode 100644
index 00000000..372b78b1
--- /dev/null
+++ b/frontend/src/views/system/pushManagement/components/HistoryManagement/index.vue
@@ -0,0 +1,358 @@
+
+
+
+ 推送历史
+
+
+
+
+
+
+
diff --git a/frontend/src/views/system/pushManagement/index.vue b/frontend/src/views/system/pushManagement/index.vue
new file mode 100644
index 00000000..c630490d
--- /dev/null
+++ b/frontend/src/views/system/pushManagement/index.vue
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+