From 28eec7655f5a4df7267fa6ab670732856a2ecb83 Mon Sep 17 00:00:00 2001
From: huangchenhao <123673748@qq.com>
Date: Tue, 14 Apr 2026 13:46:07 +0800
Subject: [PATCH 01/12] =?UTF-8?q?feat:=20=E6=B3=95=E8=A7=84=E5=A4=84=20?=
=?UTF-8?q?=E7=BA=BF=E4=B8=8B=E5=B8=AE=E6=89=B6=E5=8F=B0=E8=B4=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/screen/src/router/index.js | 20 +-
.../LedgerManagement/helpLedger/index.js | 254 ++++++++++++++++++
.../LedgerManagement/helpLedger/index.vue | 81 ++++++
.../district/index.js | 16 +-
.../src/views/WarningManagement/law/index.js | 2 +-
.../src/views/WarningManagement/law/index.vue | 4 +-
6 files changed, 356 insertions(+), 21 deletions(-)
create mode 100644 packages/screen/src/views/LedgerManagement/helpLedger/index.js
create mode 100644 packages/screen/src/views/LedgerManagement/helpLedger/index.vue
diff --git a/packages/screen/src/router/index.js b/packages/screen/src/router/index.js
index dcb4155..112b1a2 100644
--- a/packages/screen/src/router/index.js
+++ b/packages/screen/src/router/index.js
@@ -170,16 +170,16 @@ const routes = [
}
},
// 线下帮扶台账 - 法规处
- // {
- // path: '/ledgerManagement3',
- // name: 'ledgerManagement3',
- // component: () => import('../views/LedgerManagement/index.vue'),
- // meta: {
- // title: '驻地台账',
- // breadcrumb: true,
- // parentRoute: 'warningManagement3'
- // }
- // },
+ {
+ path: '/ledgerManagement3',
+ name: 'ledgerManagement3',
+ component: () => import('../views/LedgerManagement/helpLedger/index.vue'),
+ meta: {
+ title: '线下帮扶台账',
+ breadcrumb: true,
+ parentRoute: 'warningManagement3'
+ }
+ },
// 项目管理 - 区县
diff --git a/packages/screen/src/views/LedgerManagement/helpLedger/index.js b/packages/screen/src/views/LedgerManagement/helpLedger/index.js
new file mode 100644
index 0000000..301f99c
--- /dev/null
+++ b/packages/screen/src/views/LedgerManagement/helpLedger/index.js
@@ -0,0 +1,254 @@
+import { h, ref, onMounted, reactive, watch, toRaw, nextTick } from "vue";
+import { request } from "@/utils/request";
+import { useRoute, useRouter } from 'vue-router'
+
+const tableData = ref([]); // 表格数据
+
+const modelVisible = ref(false); // 弹窗状态
+const drawerVisible = ref(false); // 抽屉状态
+// 弹窗内容
+const model = reactive({
+ title: '',
+ content: null,
+ props: {},
+ onCancel: null,
+ onConfirm: null,
+ width: '',
+});
+const form = reactive({
+});
+const INIT_FORM = {
+
+};
+// 抽屉内容
+const drawer = reactive({
+ title: '',
+ content: null,
+ props: {},
+ onCancel: null,
+ onConfirm: null,
+ direction: 'rtl',
+ size: '50%'
+});
+const dialogRef = ref(null); // 弹窗实例
+const drawerRef = ref(null); // 抽屉实例
+
+const columns = [
+ {
+ prop: "helpTime",
+ label: "帮扶时间",
+ // formatter: (row) => `${row.helpTime || ''} - ${row.helpTimeEnd || ''}`,
+ },
+ {
+ prop: "helpCounty",
+ label: "帮扶区县",
+ },
+ {
+ prop: "helpPerson",
+ label: "帮扶人员",
+ },
+ {
+ prop: "helpUnit",
+ label: "帮扶单位",
+ },
+ {
+ prop: "helpStatus",
+ label: "帮扶情况",
+ },
+ {
+ prop: "attachmentUrl",
+ label: "附件",
+ render: (row) => {
+ if (row.attachmentUrl) {
+ return h(ElButton, {
+ text: 'true',
+ type: 'primary',
+ onClick: () => downloadAttachment(row.attachmentUrl)
+ }, '附件下载');
+ } else {
+ return h('span', {}, '---');
+ }
+ }
+ },
+ {
+ prop: "uploadTime",
+ label: "上传时间",
+ },
+ {
+ prop: "remark",
+ label: "备注",
+ },
+]
+
+// 过滤条件
+const filterData = reactive({})
+// 分页
+const pagination = reactive({
+ current: 1,
+ pageSize: 10,
+ total: 0,
+ pageSizes: [10, 20, 50],
+ layout: "prev, pager, next, jumper",
+ onChange: (page, pageSize) => {
+ pagination.current = page;
+ pagination.pageSize = pageSize;
+ getTableData(filterData);
+ },
+});
+
+// 获取列表
+const getTableData = async (filterData = {}) => {
+ try {
+ // 过滤空字符串属性
+ const filteredParams = {};
+ Object.keys(filterData).forEach(key => {
+ if (filterData[key] !== '' && filterData[key] != null) {
+ filteredParams[key] = filterData[key];
+ }
+ });
+ const res = await request({
+ url: '/snow-ops-platform/fgc-xxbf/list',
+ method: "GET",
+ params: {
+ ...filteredParams,
+ pageNum: pagination.current,
+ pageSize: pagination.pageSize,
+ }
+ })
+ if (res.code === '00000') {
+ tableData.value = res.data.records
+ pagination.total = res.data.total
+ } else {
+ throw new Error(res.message)
+ }
+ } catch (error) {
+ ElMessage.error(error.message)
+ console.error('获取列表失败:', error);
+ }
+}
+
+// 下载附件
+const downloadAttachment = (url) => {
+ if (!url) {
+ ElMessage.warning('无附件地址');
+ return;
+ }
+ // 直接使用 window.open 触发下载
+ window.open(url, '_blank');
+}
+
+// 预警类型选项
+const eventTypeOptions = [
+ { label: "全部", value: "" },
+ { label: "台风预警", value: "台风预警" },
+ { label: "暴雨预警", value: "暴雨预警" },
+ { label: "寒潮预警", value: "寒潮预警" },
+ { label: "大雾预警", value: "大雾预警" },
+ { label: "暴雪预警", value: "暴雪预警" },
+ { label: "道路结冰预警", value: "道路结冰预警" },
+ { label: "雷电预警", value: "雷电预警" },
+ { label: "强对流预警", value: "强对流预警" },
+];
+
+// 预警级别选项
+const severityOptions = [
+ { label: "全部", value: "" },
+ { label: "红色预警", value: "红色预警" },
+ { label: "橙色预警", value: "橙色预警" },
+ { label: "黄色预警", value: "黄色预警" },
+ { label: "蓝色预警", value: "蓝色预警" },
+]
+
+// 响应情况选项
+const responseOptions = [
+ { label: "全部", value: "" },
+ { label: "未响应", value: "未响应" },
+ { label: "部分响应", value: "部分响应" },
+ { label: "全部响应", value: "全部响应" },
+]
+
+
+const downloadFile = async () => {
+ window.open('/snow-ops-platform/fgc-xxbf/template', '_blank');
+}
+
+const uploadFile = async (file) => {
+ if (!file) {
+ ElMessage.warning('请选择要上传的文件');
+ return;
+ }
+
+ try {
+ // 创建FormData对象
+ const formData = new FormData();
+ formData.append('file', file);
+
+ const loading = ElLoading.service({
+ lock: true,
+ text: '操作中',
+ background: 'rgba(0, 0, 0, 0.7)',
+ })
+
+ // 发送POST请求
+ const res = await request({
+ url: '/snow-ops-platform/fgc-xxbf/upload',
+ method: 'POST',
+ data: formData,
+ headers: {
+ 'Content-Type': 'multipart/form-data'
+ }
+ });
+
+ // 关闭加载提示
+ loading.close();
+
+ if (res.code === '00000') {
+ ElMessage.success('文件上传成功');
+ // 刷新表格数据
+ getTableData(filterData);
+ } else {
+ throw new Error(res.message || '上传失败');
+ }
+ } catch (error) {
+ ElMessage.error(error.message || '文件上传失败');
+ console.error('文件上传失败:', error);
+ }
+}
+
+
+export default () => {
+
+ onMounted(() => {
+ getTableData();
+ })
+
+
+ watch(filterData, (val) => {
+ getTableData(filterData);
+ }, { deep: true })
+
+
+ return {
+ modelVisible,
+ model,
+ drawerVisible,
+ drawer,
+ dialogRef,
+ drawerRef,
+
+ eventTypeOptions,
+ severityOptions,
+ responseOptions,
+
+
+ tableData,
+ filterData,
+ pagination,
+ columns,
+
+ downloadFile,
+ uploadFile,
+
+
+ }
+}
\ No newline at end of file
diff --git a/packages/screen/src/views/LedgerManagement/helpLedger/index.vue b/packages/screen/src/views/LedgerManagement/helpLedger/index.vue
new file mode 100644
index 0000000..544c4bd
--- /dev/null
+++ b/packages/screen/src/views/LedgerManagement/helpLedger/index.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+ 上传线下帮扶
+ 线下帮扶模板下载
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/screen/src/views/ProjectManagement_Rebuild/district/index.js b/packages/screen/src/views/ProjectManagement_Rebuild/district/index.js
index 11b2dcb..6c3269f 100644
--- a/packages/screen/src/views/ProjectManagement_Rebuild/district/index.js
+++ b/packages/screen/src/views/ProjectManagement_Rebuild/district/index.js
@@ -372,15 +372,15 @@ export default () => {
getTableData();
})
-// 新增填报
-const newAdd = () => {
- router.push({
- name: 'projectAdd',
- params: {
- mode: 'add'
+ // 新增填报
+ const newAdd = () => {
+ router.push({
+ name: 'projectAdd',
+ params: {
+ mode: 'add'
+ }
+ })
}
- })
-}
watch(filterData, (val) => {
diff --git a/packages/screen/src/views/WarningManagement/law/index.js b/packages/screen/src/views/WarningManagement/law/index.js
index dd75054..25a8087 100644
--- a/packages/screen/src/views/WarningManagement/law/index.js
+++ b/packages/screen/src/views/WarningManagement/law/index.js
@@ -213,7 +213,7 @@ export default () => {
const router = useRouter();
const gotoLedgerPage = () => {
router.push({
- path: '/ledgerManagement2'
+ path: '/ledgerManagement3'
});
};
diff --git a/packages/screen/src/views/WarningManagement/law/index.vue b/packages/screen/src/views/WarningManagement/law/index.vue
index 126bc4f..675c1fe 100644
--- a/packages/screen/src/views/WarningManagement/law/index.vue
+++ b/packages/screen/src/views/WarningManagement/law/index.vue
@@ -13,8 +13,8 @@
生成报告
发布预警
- 上传线下帮扶
- 线下帮扶台账
+
+ 线下帮扶台账
导出
From 4f060a58284a5f59c6c3a68a8e55ebdbe82fad0f Mon Sep 17 00:00:00 2001
From: huangchenhao <123673748@qq.com>
Date: Tue, 14 Apr 2026 14:25:29 +0800
Subject: [PATCH 02/12] =?UTF-8?q?feat:=20=E5=93=8D=E5=BA=94=E9=A2=84?=
=?UTF-8?q?=E8=AD=A6=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2=20=E6=B7=BB?=
=?UTF-8?q?=E5=8A=A0=E5=8F=82=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../screen/src/views/WarningManagement/construction/index.js | 1 +
packages/screen/src/views/WarningManagement/district/index.js | 1 +
2 files changed, 2 insertions(+)
diff --git a/packages/screen/src/views/WarningManagement/construction/index.js b/packages/screen/src/views/WarningManagement/construction/index.js
index 20722f8..9247424 100644
--- a/packages/screen/src/views/WarningManagement/construction/index.js
+++ b/packages/screen/src/views/WarningManagement/construction/index.js
@@ -128,6 +128,7 @@ const getTableData = async (filterData = {}) => {
...filteredParams,
pageNum: pagination.current,
pageSize: pagination.pageSize,
+ ledgerType: 1, // 1-建设处,2-区县
}
})
if (res.code === '00000') {
diff --git a/packages/screen/src/views/WarningManagement/district/index.js b/packages/screen/src/views/WarningManagement/district/index.js
index dd75054..b482cbf 100644
--- a/packages/screen/src/views/WarningManagement/district/index.js
+++ b/packages/screen/src/views/WarningManagement/district/index.js
@@ -128,6 +128,7 @@ const getTableData = async (filterData = {}) => {
...filteredParams,
pageNum: pagination.current,
pageSize: pagination.pageSize,
+ ledgerType: 2, // 1-建设处,2-区县
}
})
if (res.code === '00000') {
From a0fadb86d91a6f5731b99df75b1a71b3de9969dc Mon Sep 17 00:00:00 2001
From: huangchenhao <123673748@qq.com>
Date: Tue, 14 Apr 2026 16:25:16 +0800
Subject: [PATCH 03/12] =?UTF-8?q?feat=EF=BC=9A=E5=93=8D=E5=BA=94=E9=A2=84?=
=?UTF-8?q?=E8=AD=A6=20=E6=B3=95=E8=A7=84=E5=A4=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../WarningManagement/construction/index.vue | 2 +
.../WarningManagement/district/index.vue | 1 +
.../views/WarningManagement/law/addDialog.vue | 405 ++++--------------
.../src/views/WarningManagement/law/index.js | 31 +-
.../src/views/WarningManagement/law/index.vue | 4 +-
5 files changed, 111 insertions(+), 332 deletions(-)
diff --git a/packages/screen/src/views/WarningManagement/construction/index.vue b/packages/screen/src/views/WarningManagement/construction/index.vue
index d827332..87e6449 100644
--- a/packages/screen/src/views/WarningManagement/construction/index.vue
+++ b/packages/screen/src/views/WarningManagement/construction/index.vue
@@ -43,6 +43,8 @@ import MyDialog from "../../../component/MyDialog/index.js";
import MyDrawer from "../../../component/MyDrawer/index.js";
import scriptFn from "./index.js";
const script = scriptFn();
+const { dialogRef, drawerRef } = script;
+
\ No newline at end of file
diff --git a/packages/screen/src/views/WarningManagement/law/index.js b/packages/screen/src/views/WarningManagement/law/index.js
index 25a8087..2186224 100644
--- a/packages/screen/src/views/WarningManagement/law/index.js
+++ b/packages/screen/src/views/WarningManagement/law/index.js
@@ -67,8 +67,24 @@ const columns = [
label: "预警结束时间",
},
{
- prop: "affectedSiteCount",
- label: "影响数量",
+ prop: "affectedRoadSectionCount",
+ label: "影响路段",
+ },
+ {
+ prop: "affectedBridgeCount",
+ label: "影响桥梁",
+ },
+ {
+ prop: "affectedTunnelCount",
+ label: "影响隧道",
+ },
+ {
+ prop: "affectedSlopeCount",
+ label: "影响边坡",
+ },
+ {
+ prop: "affectedProjectCount",
+ label: "影响项目",
},
{
prop: "responseStatus",
@@ -122,7 +138,7 @@ const getTableData = async (filterData = {}) => {
}
});
const res = await request({
- url: '/snow-ops-platform/weatherWarning/response-list',
+ url: '/snow-ops-platform/lawWeatherWarning/response-list',
method: "GET",
params: {
...filteredParams,
@@ -172,9 +188,9 @@ const responseOptions = [
{ label: "全部响应", value: "全部响应" },
]
-// 打开填报项目弹窗
+// 打开发布预警弹窗
const openAddDialog = () => {
- model.title = '填报项目';
+ model.title = '发布预警';
Object.assign(form, INIT_FORM);
model.props = {
form: form,
@@ -184,15 +200,14 @@ const openAddDialog = () => {
modelVisible.value = false;
};
model.onConfirm = async () => {
- dialogType.value = '';
await dialogRef?.value?.dynamicComponentRef?.formRef.validate().then(() => {
- console.log('@@@@@填报项目', form);
+ console.log('@@@@@发布预警', form);
})
.catch((err) => {
ElMessage.error('请处理表单中的错误项');
});
};
- model.width = "70%"
+ model.width = "50%"
modelVisible.value = true;
}
diff --git a/packages/screen/src/views/WarningManagement/law/index.vue b/packages/screen/src/views/WarningManagement/law/index.vue
index 675c1fe..f526f85 100644
--- a/packages/screen/src/views/WarningManagement/law/index.vue
+++ b/packages/screen/src/views/WarningManagement/law/index.vue
@@ -12,7 +12,7 @@
生成报告
-
发布预警
+
发布预警
线下帮扶台账
导出
@@ -45,6 +45,8 @@ import MyDialog from "../../../component/MyDialog/index.js";
import MyDrawer from "../../../component/MyDrawer/index.js";
import scriptFn from "./index.js";
const script = scriptFn();
+const { dialogRef, drawerRef } = script;
+
\ No newline at end of file
+
diff --git a/packages/mobile/src/views/DisasterManagement/DisasterReport.vue b/packages/mobile/src/views/DisasterManagement/DisasterReport.vue
index 46b46af..b5d0d54 100644
--- a/packages/mobile/src/views/DisasterManagement/DisasterReport.vue
+++ b/packages/mobile/src/views/DisasterManagement/DisasterReport.vue
@@ -5,22 +5,16 @@
-
- 水毁灾害
- 冰雪灾害
-
+
+
+ {{ item.label }}
+
+
-
-
-
-
-
-
-
-
-
+
+
@@ -32,8 +26,8 @@ import PageContainer from '@/components/PageContainer.vue'
import CurrentSite from '@/components/CurrentSite.vue'
import PanelItem from '@/components/PanelItem.vue'
import WaterDisaster from './WaterDisaster/WaterDisaster.vue'
+import IceDisaster from './IceDisaster.vue'
import { request } from '@shared/utils/request'
-import mockFormData from './waterDisasterFormData.json'
const router = useRouter()
const route = useRoute()
@@ -45,118 +39,27 @@ const title = ref(!isContinue ? '灾毁填报' : '灾毁续报')
// 事件类型
const eventType = ref('water')
-
-// 表单数据
-const formData = ref(route.query.mock ? mockFormData : {})
-const waterDisasterRef = ref(null)
-const submitting = ref(false)
+const eventTypeOptions = [
+ {
+ label: '水毁灾害',
+ value: 'water'
+ },
+ {
+ label: '冰雪灾害',
+ value: 'ice'
+ }
+]
// 返回上一页
const handleClickBack = () => {
router.replace('/disasterManagement')
}
-
-// 提交表单
-const handleSubmit = async () => {
- // 验证表单
- if (eventType.value === 'water') {
- if (!waterDisasterRef.value.validate()) {
- return
- }
- }
-
- submitting.value = true
- try {
- // 获取表单数据
- let formData = {}
- if (eventType.value === 'water') {
- formData = waterDisasterRef.value.getFormData()
- }
-
- // 添加事件类型和站点信息
- const submitData = {
- ...formData
- // 可以在这里添加站点信息等其他数据
- }
-
- const res = await request({
- url: '/snow-ops-platform/water-damage/addOrUpdate',
- method: 'post',
- data: submitData
- })
-
- if (res?.code === '00000') {
- showSuccessToast('提交成功')
- if (submitData.event.needsRecovery) {
- router.replace({
- name: 'RebuildAdd',
- params: {
- data: res.data.id
- }
- })
- } else {
- // 提交成功后返回列表页
- setTimeout(() => {
- router.replace('/disasterManagement')
- }, 500)
- }
- } else {
- showFailToast(res.message)
- }
- } catch (error) {
- showFailToast('提交失败,请重试')
- console.error('提交失败:', error)
- } finally {
- submitting.value = false
- }
-}
-
-// 获取灾毁详情
-const getDisasterDetail = async () => {
- const id = route.query.id
- if (!id) {
- return
- }
-
- try {
- const result = await request({
- url: `/snow-ops-platform/water-damage/getById`,
- method: 'get',
- params: { id }
- })
-
- if (result?.data) {
- // 接口返回 Data 结构
- const data = result.data
- const newFormData = {
- ...data,
- lossList: null,
- report: formData.value.report,
- fileList: null
- }
- waterDisasterRef.value.initFormData(newFormData)
- } else {
- showToast(result.message || '获取详情失败')
- }
- } catch (error) {
- console.error('获取灾毁详情失败:', error)
- showToast('获取详情失败,请稍后重试')
- }
-}
-
-onMounted(() => {
- if (route.query?.id) {
- getDisasterDetail()
- } else {
- waterDisasterRef.value.initFormData(formData.value)
- }
-})
diff --git a/packages/mobile/src/views/DisasterManagement/IceDisaster.vue b/packages/mobile/src/views/DisasterManagement/IceDisaster.vue
new file mode 100644
index 0000000..74baf88
--- /dev/null
+++ b/packages/mobile/src/views/DisasterManagement/IceDisaster.vue
@@ -0,0 +1,524 @@
+
+
+
+
+
+
+
+ 校准时间
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 限速通行
+
+
+ 封闭交通
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 人次
+
+
+ 万元
+
+
+ 台班
+
+
+
+
+
+ {{ material.dw }}
+ 删除
+
+
+
+ 添加物资
+
+
+
添加物资
+
+
+
+
+
+
+
+ 共 {{ materialList.length }} 项
+
+ {{ isAllSelected ? '取消全选' : '全选' }}
+
+
+
+
+
+
+
+
+
+
+
确认添加
+
+
+
+
+
+
+ 正常通行
+ 限速通行
+
+ 封闭交通
+
+
+
+
+
+
+
+
+ 有滞留
+
+ {
+ form.traffic.hasStrandedVehicles = 0
+ form.traffic.strandedVehicleCount = null
+ }
+ "
+ class="last-button"
+ >
+ 无滞留
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
提交
+
+
+
+
+
+
diff --git a/packages/mobile/src/views/DisasterManagement/RoadRoutesPicker.vue b/packages/mobile/src/views/DisasterManagement/RoadRoutesPicker.vue
new file mode 100644
index 0000000..abd323b
--- /dev/null
+++ b/packages/mobile/src/views/DisasterManagement/RoadRoutesPicker.vue
@@ -0,0 +1,313 @@
+
+
+
+
+
+
+
+
+
+
+
已选择路线:{{ tempSelectedItem.routeCode }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue
index 1a39cd4..e888bbe 100644
--- a/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue
+++ b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue
@@ -4,13 +4,13 @@
-
+
-
+
-
+
@@ -30,7 +30,7 @@
-
+
@@ -38,6 +38,10 @@
+
+
+
+
@@ -51,13 +55,13 @@
处置措施
-
-
- 半幅封闭
- 全副封闭
- 便道通行
- 正常通行
-
+
+
+
+ {{ item.label }}
+
+
+
@@ -130,44 +134,49 @@
-
+
-
+
-
+
-
+
万元
+
+
+
diff --git a/packages/screen/src/views/DisasterManagement/DisasterReport/RoadRoutesSelect.vue b/packages/screen/src/views/DisasterManagement/DisasterReport/RoadRoutesSelect.vue
new file mode 100644
index 0000000..9fc1342
--- /dev/null
+++ b/packages/screen/src/views/DisasterManagement/DisasterReport/RoadRoutesSelect.vue
@@ -0,0 +1,255 @@
+
+
+
+
+
+
+
+
+
+
+
已选择地点路线:{{ tempSelectedItem?.routeCode }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterLossListPC.vue b/packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterLossListPC.vue
index cf01934..18a3ad8 100644
--- a/packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterLossListPC.vue
+++ b/packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterLossListPC.vue
@@ -1,14 +1,21 @@
-
-
- changeValue(item, event)">
-
- {{ item.unit }}
-
-
-
-
+
+
+
+ changeValue(item, event)">
+
+ {{ item.unit }}
+
+
+
+
+
+
+
+
+
+
@@ -32,9 +39,17 @@ const props = defineProps({
})
const getValue = (config) => {
- const value = props.modelValue.find((v) => v.lossTypeId === config.lossTypeId)
- if (value == null) props.modelValue.push({ ...config })
- return value?.totalAmount || 0
+ const item = getValueItem(config)
+ return item?.totalAmount || 0
+}
+
+const getValueItem = (config) => {
+ let item = props.modelValue.find((v) => v.lossTypeId === config.lossTypeId)
+ if (item == null) {
+ item = { ...config }
+ props.modelValue.push(item)
+ }
+ return item
}
const configs = ref([])
diff --git a/packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterReportPC.vue b/packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterReportPC.vue
index d37522d..ff3ec07 100644
--- a/packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterReportPC.vue
+++ b/packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterReportPC.vue
@@ -37,8 +37,7 @@
-
-
+
@@ -46,12 +45,7 @@
-
-
-
-
-
-
+
@@ -59,8 +53,7 @@
-
-
+
@@ -70,19 +63,15 @@
-
-
+
-
-
-
-
-
-
+
+
+
@@ -126,7 +115,7 @@
-
+
@@ -135,20 +124,19 @@
-
+
-
-
+
+
+
+
-
-
-
-
-
+
+
@@ -156,7 +144,7 @@
-
+
@@ -193,15 +181,15 @@
-
-
+
+
-
-
+
+
@@ -213,7 +201,7 @@
-
+
@@ -315,13 +303,6 @@
-
-
-
-
-
-
-
@@ -330,14 +311,13 @@
-
-
+
-
+
@@ -374,9 +354,12 @@ import { request } from '@/utils/request'
import LossList from './WaterDisasterLossListPC.vue'
import BlockItem from '@/component/BlockItem.vue'
import FileUpload from '@/component/FileUpload/FileUpload.vue'
+import { useOptions } from '@shared/composables/useOptions'
+import RoadRoutesSelect from './RoadRoutesSelect.vue'
const router = useRouter()
const route = useRoute()
+const { options, getAreaOptions } = useOptions()
const formRef = ref(null)
const submitting = ref(false)
@@ -392,6 +375,10 @@ const videoFileList = ref([])
const eventType = ref('水毁事件')
+const filterForm = reactive({
+ routeType: ''
+})
+
const formData = reactive({
// 顶层字段
occurLocation: null, // 发生地点/路况位置
@@ -502,14 +489,29 @@ watch(
// 表单校验规则
const formRules = {
+ roadConditionType: [{ required: true, message: '请选择路况类别', trigger: 'change' }],
+ "event.isBlocked": [{ required: true, message: '请选择是否阻断', trigger: 'change' }],
+ "event.repairProgress": [{ required: true, message: '请选择抢险进度', trigger: 'change' }],
+ "report.disposalMeasures": [{ required: true, message: '请选择处置措施', trigger: 'change' }],
+ "event.damageCount": [{ required: true, message: '请输入水毁处数', trigger: 'blur' }],
+ "event.blockedMileage": [{ required: true, message: '请输入阻断里程', trigger: 'blur' }],
occurTime: [{ required: true, message: '请选择发生时间', trigger: 'change' }],
- routeNo: [{ required: true, message: '请输入线路编号', trigger: 'blur' }],
- 'event.reporterUnit': [{ required: true, message: '请输入填报单位', trigger: 'blur' }],
- 'event.contactPerson': [{ required: true, message: '请输入联系人', trigger: 'blur' }],
- 'event.contactPhone': [
- { required: true, message: '请输入联系电话', trigger: 'blur' },
- { pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号码', trigger: 'blur' }
- ]
+ "report.expectRecoverTime": [{ required: true, message: '请输入预计恢复时间', trigger: 'blur' }],
+ "routeNo": [{ required: true, message: '请输入线路编号', trigger: 'blur' }],
+ "event.startStakeNo": [{ required: true, message: '请输入起点桩号', trigger: 'blur' }],
+ "event.endStakeNo": [{ required: true, message: '请输入止点桩号', trigger: 'blur' }],
+ "occurLocation": [{ required: true, message: '请输入路况位置', trigger: 'blur' }],
+ "event.blockedPointName": [{ required: true, message: '请输入阻断点小地名', trigger: 'blur' }],
+ "event.longitude": [{ required: true, message: '请输入经度', trigger: 'blur' }],
+ "event.latitude": [{ required: true, message: '请输入纬度', trigger: 'blur' }],
+ "event.needsRecovery": [{ required: true, message: '请选择是否需要恢复重建', trigger: 'change' }],
+ "event.estimatedRecoveryCost": [{ required: true, message: '请输入恢复重建预估费用', trigger: 'blur' }],
+ // 'event.reporterUnit': [{ required: true, message: '请输入填报单位', trigger: 'blur' }],
+ // 'event.contactPerson': [{ required: true, message: '请输入联系人', trigger: 'blur' }],
+ // 'event.contactPhone': [
+ // { required: true, message: '请输入联系电话', trigger: 'blur' },
+ // { pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号码', trigger: 'blur' }
+ // ]
}
// 图片上传前校验
@@ -561,6 +563,16 @@ const initFormData = (data) => {
Object.assign(formData, data)
}
+
+const handleDistrictChange = () => {
+ formData.routeNo = null
+}
+
+const handleRouteNoChange = (item) => {
+ formData.event.startStakeNo = item.startStakeNo
+ formData.event.endStakeNo = item.endStakeNo
+}
+
// 获取表单数据
const getFormData = () => {
return { ...formData }
@@ -621,8 +633,7 @@ const handleSubmit = async () => {
// 加载编辑数据
const loadEditData = async () => {
-
- if(route.query.mock) {
+ if (route.query.mock) {
initFormData(mockData)
} else {
initFormData({})
@@ -630,6 +641,9 @@ const loadEditData = async () => {
}
onMounted(() => {
+ // 获取区县下拉列表
+ getAreaOptions()
+
loadEditData()
})
diff --git a/packages/shared/composables/useOptions.js b/packages/shared/composables/useOptions.js
new file mode 100644
index 0000000..319148b
--- /dev/null
+++ b/packages/shared/composables/useOptions.js
@@ -0,0 +1,94 @@
+import { ref } from 'vue'
+import { request } from '@shared/utils/request'
+
+// 通用调用接口方法
+const getOptionsByApi = async ({ url, params }) => {
+ const res = await request({
+ url,
+ method: 'get',
+ params,
+ timeout: 60000
+ })
+
+ if (res?.code === '00000') return res.data
+ else {
+ console.error('接口调用失败', res)
+ return []
+ }
+}
+
+// 公用下拉选项
+
+export function useOptions() {
+ const options = ref({})
+
+ // 是否 布尔类型
+ options.value['yesNoBool'] = [
+ { label: '是', value: true },
+ { label: '否', value: false }
+ ]
+
+ // 事件类型
+ options.value['eventType'] = [
+ { label: '水毁事件', value: '水毁事件' },
+ { label: '冰雪事件', value: '冰雪事件' }
+ ]
+
+ // 抢险进度
+ options.value['repairProgress'] = [
+ { label: '未抢险', value: '未抢险' },
+ { label: '抢险中', value: '抢险中' }
+ ]
+
+ // 处理措施
+ options.value['disposalMeasures'] = [
+ { label: '全幅封闭', value: '全幅封闭' },
+ { label: '半幅封闭', value: '半幅封闭' },
+ { label: '正常通行', value: '正常通行' },
+ { label: '限制通行', value: '限制通行' }
+ ]
+
+ // 路线类型
+ options.value['roadType'] = [
+ { label: '国道', value: 'G' },
+ { label: '省道', value: 'S' },
+ { label: '县道', value: 'X' },
+ { label: '乡道', value: 'Y' },
+ { label: '村道', value: 'C' }
+ ]
+
+ // 路况类型
+ options.value['roadConditionType'] = [
+ { label: '山体滑坡', value: '山体滑坡' },
+ { label: '泥石流', value: '泥石流' },
+ { label: '边坡坍塌(上、下)', value: '边坡坍塌(上、下)' },
+ { label: '路基沉降(垮塌)', value: '路基沉降(垮塌)' },
+ { label: '行道树倒塌', value: '行道树倒塌' },
+ { label: '积水', value: '积水' },
+ { label: '其他', value: '其他' }
+ ]
+
+ // 获取区县
+ const getAreaOptions = async (params) => {
+ let list = await getOptionsByApi({
+ url: '/snow-ops-platform/infrastructure-asset/counties',
+ params: {
+ xzdm: params?.xzdm // 区县代码 可选
+ }
+ })
+ list = list.filter((item) => {
+ return !!item.qxmc
+ })
+ options.value['area'] = list.map((item) => {
+ return {
+ label: item.qxmc,
+ value: item.xzdm
+ }
+ })
+ }
+
+ return {
+ options,
+ getAreaOptions,
+ }
+}
From cec95f79c0472a1e233960ec8d34efc4c169e32d Mon Sep 17 00:00:00 2001
From: huangchenhao <123673748@qq.com>
Date: Wed, 15 Apr 2026 09:22:47 +0800
Subject: [PATCH 07/12] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E7=BA=BF?=
=?UTF-8?q?=E8=B7=AF=E7=BC=96=E5=8F=B7=E9=80=89=E6=8B=A9=E7=BB=84=E4=BB=B6?=
=?UTF-8?q?=20=E4=BC=A0=E9=80=92=E8=A1=A8=E5=8D=95=E9=AA=8C=E8=AF=81?=
=?UTF-8?q?=E8=A7=84=E5=88=99=E5=8F=82=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../views/DisasterManagement/RoadRoutesPicker.vue | 14 ++++++++++++--
packages/mobile/src/views/Rebuild/RebuildAdd.vue | 15 +++++++++++----
2 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/packages/mobile/src/views/DisasterManagement/RoadRoutesPicker.vue b/packages/mobile/src/views/DisasterManagement/RoadRoutesPicker.vue
index abd323b..07029c5 100644
--- a/packages/mobile/src/views/DisasterManagement/RoadRoutesPicker.vue
+++ b/packages/mobile/src/views/DisasterManagement/RoadRoutesPicker.vue
@@ -7,7 +7,7 @@
-->
-
+
@@ -39,7 +39,7 @@ import { ref, computed, watch, onUnmounted } from 'vue'
import { showToast } from 'vant'
import { request } from '@shared/utils/request'
-// ==================== Props ====================
+ // ==================== Props ====================
const props = defineProps({
// v-model 绑定的值(路线编号)
modelValue: {
@@ -84,6 +84,16 @@ const props = defineProps({
searchDelay: {
type: Number,
default: 500
+ },
+ // 表单验证规则
+ rules: {
+ type: Array,
+ default: () => []
+ },
+ // 左上角是否必填标志
+ required: {
+ type: Boolean,
+ default: false
}
})
diff --git a/packages/mobile/src/views/Rebuild/RebuildAdd.vue b/packages/mobile/src/views/Rebuild/RebuildAdd.vue
index 09b0923..c2182ef 100644
--- a/packages/mobile/src/views/Rebuild/RebuildAdd.vue
+++ b/packages/mobile/src/views/Rebuild/RebuildAdd.vue
@@ -5,8 +5,8 @@
-
+
{
data: form
})
toast.close();
- if(res.code === '00000'){
+ if (res.code === '00000') {
showToast('提交成功');
handleClickBack();
- }else{
+ } else {
showToast('提交失败, 请稍后重试或联系管理员');
}
} catch (error) {
@@ -193,6 +194,12 @@ const handleAdd = async () => {
}
+const handleRouteNoChange = (item) => {
+ form.project.startStakeNo = item.startStakeNo
+ form.project.endStakeNo = item.endStakeNo
+}
+
+
From b80ffeda986f4280a4983caf63c2dc36aee4e5f3 Mon Sep 17 00:00:00 2001
From: huangchenhao <123673748@qq.com>
Date: Wed, 15 Apr 2026 09:24:55 +0800
Subject: [PATCH 08/12] =?UTF-8?q?feat:=20=E6=81=A2=E5=A4=8D=E9=87=8D?=
=?UTF-8?q?=E5=BB=BA=20=E9=A1=B9=E7=9B=AE=E5=A1=AB=E6=8A=A5=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9=E8=A1=A8=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/mobile/src/views/Rebuild/RebuildAdd.vue | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/packages/mobile/src/views/Rebuild/RebuildAdd.vue b/packages/mobile/src/views/Rebuild/RebuildAdd.vue
index c2182ef..3cd431b 100644
--- a/packages/mobile/src/views/Rebuild/RebuildAdd.vue
+++ b/packages/mobile/src/views/Rebuild/RebuildAdd.vue
@@ -7,9 +7,9 @@
:rules="[{ required: true, message: '请填写区县名称' }]" />
-
-
From 9bf1eb7e590cfeaf5ed5f3f66a99c9bb5f731afb Mon Sep 17 00:00:00 2001
From: niedongsheng <605973111@qq.com>
Date: Wed, 15 Apr 2026 10:44:57 +0800
Subject: [PATCH 09/12] =?UTF-8?q?feat:=20=E9=87=8D=E6=9E=84=E7=81=BE?=
=?UTF-8?q?=E5=AE=B3=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../views/DisasterManagement/IceDisaster.vue | 12 +-
.../WaterDisaster/WaterDisaster.vue | 8 +-
packages/screen/src/router/index.js | 18 +-
.../DisasterManagementPC.vue | 2 +-
.../DisasterReport/DisasterReportPC.vue | 115 ---
.../IceDisasterReport/IceDisasterReportPC.vue | 705 ++++++++++++++++++
.../WaterDisasterContinueReportPC.vue | 8 +-
.../WaterDisasterDetailPC.vue | 6 +-
.../WaterDisasterLossListDetailPC.vue | 0
.../WaterDisasterLossListPC.vue | 0
.../WaterDisasterReportPC.vue | 69 +-
.../waterMockJson.json | 0
.../RoadRoutesSelect.vue | 0
packages/shared/composables/useOptions.js | 10 +-
14 files changed, 787 insertions(+), 166 deletions(-)
delete mode 100644 packages/screen/src/views/DisasterManagement/DisasterReport/DisasterReportPC.vue
create mode 100644 packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue
rename packages/screen/src/views/DisasterManagement/{DisasterDetail => WaterDisasterDetail}/WaterDisasterContinueReportPC.vue (98%)
rename packages/screen/src/views/DisasterManagement/{DisasterDetail => WaterDisasterDetail}/WaterDisasterDetailPC.vue (98%)
rename packages/screen/src/views/DisasterManagement/{DisasterDetail => WaterDisasterDetail}/WaterDisasterLossListDetailPC.vue (100%)
rename packages/screen/src/views/DisasterManagement/{DisasterReport => WaterDisasterReport}/WaterDisasterLossListPC.vue (100%)
rename packages/screen/src/views/DisasterManagement/{DisasterReport => WaterDisasterReport}/WaterDisasterReportPC.vue (91%)
rename packages/screen/src/views/DisasterManagement/{DisasterReport => WaterDisasterReport}/waterMockJson.json (100%)
rename packages/screen/src/views/DisasterManagement/{DisasterReport => components}/RoadRoutesSelect.vue (100%)
diff --git a/packages/mobile/src/views/DisasterManagement/IceDisaster.vue b/packages/mobile/src/views/DisasterManagement/IceDisaster.vue
index 74baf88..42a47e8 100644
--- a/packages/mobile/src/views/DisasterManagement/IceDisaster.vue
+++ b/packages/mobile/src/views/DisasterManagement/IceDisaster.vue
@@ -169,11 +169,13 @@ import { useRouter, useRoute } from 'vue-router'
import { showToast, showLoadingToast } from 'vant'
import PanelItem from '@/components/PanelItem.vue'
import { request } from '../../../../shared/utils/request'
+import { useYHZStore } from '@/stores/yhzStore';
const router = useRouter()
const route = useRoute()
+const yhzStore = useYHZStore()
+
// 组件挂载时获取数据
-const yhzDetail = ref({}) // 养护站详情数据
const INIT_FORM = reactive({
event: {
occurLocation: '', // 发生地点
@@ -293,7 +295,7 @@ const checkMaterialAmount = (material, index) => {
const getMaterialList = async (wzmc) => {
try {
const data = {
- yhzid: yhzDetail.value.id,
+ yhzid: yhzStore.getYHZInfo.id,
wzmc,
pageNum: 1,
pageSize: 9999
@@ -329,9 +331,9 @@ const handleAdd = async () => {
forbidClick: true,
duration: 0 // 设置为0表示不会自动关闭
})
- form.event.serviceStationId = yhzDetail.value.id
- form.event.district = yhzDetail.value.qxmc
- console.log('yhzDetail', toRaw(yhzDetail.value))
+ form.event.serviceStationId = yhzStore.getYHZInfo.id
+ form.event.district = yhzStore.getYHZInfo.qxmc
+ console.log('yhzDetail', toRaw(yhzStore.getYHZInfo))
console.log('form', toRaw(form))
const res = await request({
url: '/snow-ops-platform/event/add',
diff --git a/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue
index e888bbe..6ec2805 100644
--- a/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue
+++ b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue
@@ -4,7 +4,7 @@
-
+
@@ -116,17 +116,17 @@
-
+
台/班
-
+
人次
-
+
万元
diff --git a/packages/screen/src/router/index.js b/packages/screen/src/router/index.js
index 112b1a2..bb0541e 100644
--- a/packages/screen/src/router/index.js
+++ b/packages/screen/src/router/index.js
@@ -181,7 +181,6 @@ const routes = [
}
},
-
// 项目管理 - 区县
{
path: '/projectManagement',
@@ -245,18 +244,25 @@ const routes = [
}
},
{
- path: '/disasterReport',
- name: 'DisasterReport',
- component: () => import('../views/DisasterManagement/DisasterReport/DisasterReportPC.vue'),
+ path: '/iceDisasterReport',
+ component: () => import('../views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue'),
meta: {
- title: '灾毁事件填报',
+ title: '冰雪灾害上报',
+ breadcrumb: true
+ }
+ },
+ {
+ path: '/waterDisasterReport',
+ component: () => import('../views/DisasterManagement/WaterDisasterReport/WaterDisasterReportPC.vue'),
+ meta: {
+ title: '水毁灾害上报',
breadcrumb: true
}
},
{
path: '/waterDisasterDetail',
name: 'WaterDisasterDetail',
- component: () => import('../views/DisasterManagement/DisasterDetail/WaterDisasterDetailPC.vue'),
+ component: () => import('../views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue'),
meta: {
title: '水毁事件详情',
breadcrumb: true
diff --git a/packages/screen/src/views/DisasterManagement/DisasterManagementPC.vue b/packages/screen/src/views/DisasterManagement/DisasterManagementPC.vue
index b221fd4..107af41 100644
--- a/packages/screen/src/views/DisasterManagement/DisasterManagementPC.vue
+++ b/packages/screen/src/views/DisasterManagement/DisasterManagementPC.vue
@@ -329,7 +329,7 @@ const handleEdit = (row) => {
// 新增跳转
const toReport = () => {
- router.push('/disasterReport')
+ router.push('/waterDisasterReport')
}
// 查看图片
diff --git a/packages/screen/src/views/DisasterManagement/DisasterReport/DisasterReportPC.vue b/packages/screen/src/views/DisasterManagement/DisasterReport/DisasterReportPC.vue
deleted file mode 100644
index 3bfa6d3..0000000
--- a/packages/screen/src/views/DisasterManagement/DisasterReport/DisasterReportPC.vue
+++ /dev/null
@@ -1,115 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue b/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue
new file mode 100644
index 0000000..dcb71bd
--- /dev/null
+++ b/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue
@@ -0,0 +1,705 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ K
+
+
+
+
+
+
+
+ K
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 人
+
+
+
+
+
+
+
+
+
+
+ 人
+
+
+
+
+
+
+
+
+
+
+ 人
+
+
+
+
+
+
+
+
+
+
+ 辆
+
+
+
+
+
+
+
+
+
+
+ 辆
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 台/班
+
+
+
+
+
+
+
+
+
+
+ 人次
+
+
+
+
+
+
+
+
+
+
+ 万元
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 万元
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 提交
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/screen/src/views/DisasterManagement/DisasterDetail/WaterDisasterContinueReportPC.vue b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterContinueReportPC.vue
similarity index 98%
rename from packages/screen/src/views/DisasterManagement/DisasterDetail/WaterDisasterContinueReportPC.vue
rename to packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterContinueReportPC.vue
index c98f449..7da218e 100644
--- a/packages/screen/src/views/DisasterManagement/DisasterDetail/WaterDisasterContinueReportPC.vue
+++ b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterContinueReportPC.vue
@@ -99,15 +99,15 @@
-
-
+
+
人次
-
-
+
+
万元
diff --git a/packages/screen/src/views/DisasterManagement/DisasterDetail/WaterDisasterDetailPC.vue b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue
similarity index 98%
rename from packages/screen/src/views/DisasterManagement/DisasterDetail/WaterDisasterDetailPC.vue
rename to packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue
index 35b348b..2460f40 100644
--- a/packages/screen/src/views/DisasterManagement/DisasterDetail/WaterDisasterDetailPC.vue
+++ b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue
@@ -196,19 +196,19 @@
- 已投入机械:
+ 投入机械:
{{ report.investedMachinery ? report.investedMachinery + '台/班' : '-'}}
- 已投入人力:
+ 投入人力:
{{ report.investedManpower ? report.investedManpower + '人次' : '-'}}
- 已投入资金:
+ 投入资金:
{{ report.investedFunds ? report.investedFunds + '万元' : '-'}}
diff --git a/packages/screen/src/views/DisasterManagement/DisasterDetail/WaterDisasterLossListDetailPC.vue b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterLossListDetailPC.vue
similarity index 100%
rename from packages/screen/src/views/DisasterManagement/DisasterDetail/WaterDisasterLossListDetailPC.vue
rename to packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterLossListDetailPC.vue
diff --git a/packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterLossListPC.vue b/packages/screen/src/views/DisasterManagement/WaterDisasterReport/WaterDisasterLossListPC.vue
similarity index 100%
rename from packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterLossListPC.vue
rename to packages/screen/src/views/DisasterManagement/WaterDisasterReport/WaterDisasterLossListPC.vue
diff --git a/packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterReportPC.vue b/packages/screen/src/views/DisasterManagement/WaterDisasterReport/WaterDisasterReportPC.vue
similarity index 91%
rename from packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterReportPC.vue
rename to packages/screen/src/views/DisasterManagement/WaterDisasterReport/WaterDisasterReportPC.vue
index ff3ec07..ea46833 100644
--- a/packages/screen/src/views/DisasterManagement/DisasterReport/WaterDisasterReportPC.vue
+++ b/packages/screen/src/views/DisasterManagement/WaterDisasterReport/WaterDisasterReportPC.vue
@@ -1,5 +1,11 @@
+
+
@@ -36,7 +42,7 @@
-
+
@@ -45,7 +51,7 @@
-
+
@@ -208,7 +214,12 @@
-
+
+
+
+
@@ -271,9 +282,9 @@
-
+
-
+
台/班
@@ -282,7 +293,7 @@
-
+
@@ -293,9 +304,9 @@
-
+
-
+
万元
@@ -317,7 +328,7 @@
-
+
@@ -355,7 +366,7 @@ import LossList from './WaterDisasterLossListPC.vue'
import BlockItem from '@/component/BlockItem.vue'
import FileUpload from '@/component/FileUpload/FileUpload.vue'
import { useOptions } from '@shared/composables/useOptions'
-import RoadRoutesSelect from './RoadRoutesSelect.vue'
+import RoadRoutesSelect from '../components/RoadRoutesSelect.vue'
const router = useRouter()
const route = useRoute()
@@ -429,6 +440,10 @@ const formData = reactive({
fileList: []
})
+const handleEventTypeChange = () => {
+ router.replace({ path: '/iceDisasterReport' })
+}
+
// 监听处置措施数组变化,转换为逗号分隔的字符串存到 report.disposalMeasures
watch(
disposalMeasuresArray,
@@ -490,22 +505,22 @@ watch(
// 表单校验规则
const formRules = {
roadConditionType: [{ required: true, message: '请选择路况类别', trigger: 'change' }],
- "event.isBlocked": [{ required: true, message: '请选择是否阻断', trigger: 'change' }],
- "event.repairProgress": [{ required: true, message: '请选择抢险进度', trigger: 'change' }],
- "report.disposalMeasures": [{ required: true, message: '请选择处置措施', trigger: 'change' }],
- "event.damageCount": [{ required: true, message: '请输入水毁处数', trigger: 'blur' }],
- "event.blockedMileage": [{ required: true, message: '请输入阻断里程', trigger: 'blur' }],
+ 'event.isBlocked': [{ required: true, message: '请选择是否阻断', trigger: 'change' }],
+ 'event.repairProgress': [{ required: true, message: '请选择抢险进度', trigger: 'change' }],
+ 'report.disposalMeasures': [{ required: true, message: '请选择处置措施', trigger: 'change' }],
+ 'event.damageCount': [{ required: true, message: '请输入水毁处数', trigger: 'blur' }],
+ 'event.blockedMileage': [{ required: true, message: '请输入阻断里程', trigger: 'blur' }],
occurTime: [{ required: true, message: '请选择发生时间', trigger: 'change' }],
- "report.expectRecoverTime": [{ required: true, message: '请输入预计恢复时间', trigger: 'blur' }],
- "routeNo": [{ required: true, message: '请输入线路编号', trigger: 'blur' }],
- "event.startStakeNo": [{ required: true, message: '请输入起点桩号', trigger: 'blur' }],
- "event.endStakeNo": [{ required: true, message: '请输入止点桩号', trigger: 'blur' }],
- "occurLocation": [{ required: true, message: '请输入路况位置', trigger: 'blur' }],
- "event.blockedPointName": [{ required: true, message: '请输入阻断点小地名', trigger: 'blur' }],
- "event.longitude": [{ required: true, message: '请输入经度', trigger: 'blur' }],
- "event.latitude": [{ required: true, message: '请输入纬度', trigger: 'blur' }],
- "event.needsRecovery": [{ required: true, message: '请选择是否需要恢复重建', trigger: 'change' }],
- "event.estimatedRecoveryCost": [{ required: true, message: '请输入恢复重建预估费用', trigger: 'blur' }],
+ 'report.expectRecoverTime': [{ required: true, message: '请输入预计恢复时间', trigger: 'blur' }],
+ routeNo: [{ required: true, message: '请输入线路编号', trigger: 'blur' }],
+ 'event.startStakeNo': [{ required: true, message: '请输入起点桩号', trigger: 'blur' }],
+ 'event.endStakeNo': [{ required: true, message: '请输入止点桩号', trigger: 'blur' }],
+ occurLocation: [{ required: true, message: '请输入路况位置', trigger: 'blur' }],
+ 'event.blockedPointName': [{ required: true, message: '请输入阻断点小地名', trigger: 'blur' }],
+ 'event.longitude': [{ required: true, message: '请输入经度', trigger: 'blur' }],
+ 'event.latitude': [{ required: true, message: '请输入纬度', trigger: 'blur' }],
+ 'event.needsRecovery': [{ required: true, message: '请选择是否需要恢复重建', trigger: 'change' }],
+ 'event.estimatedRecoveryCost': [{ required: true, message: '请输入恢复重建预估费用', trigger: 'blur' }]
// 'event.reporterUnit': [{ required: true, message: '请输入填报单位', trigger: 'blur' }],
// 'event.contactPerson': [{ required: true, message: '请输入联系人', trigger: 'blur' }],
// 'event.contactPhone': [
@@ -563,7 +578,6 @@ const initFormData = (data) => {
Object.assign(formData, data)
}
-
const handleDistrictChange = () => {
formData.routeNo = null
}
@@ -657,7 +671,10 @@ defineExpose({
diff --git a/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue
new file mode 100644
index 0000000..751cdfc
--- /dev/null
+++ b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue
@@ -0,0 +1,606 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 事件类型:
+ 冰雪事件
+
+
+
+
+ 路况类别:
+ {{ detailData.roadConditionType || '-' }}
+
+
+
+
+ 是否阻断:
+ {{ detailData.event?.isBlocked ? '是' : '否' }}
+
+
+
+
+
+
+
+ 抢险进度:
+ {{ detailData.event?.repairProgress || '-' }}
+
+
+
+
+ 处理措施:
+ {{ getBaseDisposalMeasures() }}
+
+
+
+
+ 水毁处数:
+ {{ detailData.event?.damageCount || 0 }}
+
+
+
+
+
+
+
+ 阻断里程:
+ {{ detailData.event?.blockedMileage ? detailData.event.blockedMileage + '公里' : '-' }}
+
+
+
+
+
+
+
+ 地点路线:
+ {{ detailData.occurLocation || '-' }}
+
+
+
+
+ 起点桩号:
+ {{ detailData.event?.startStakeNo || '-' }}
+
+
+
+
+ 止点桩号:
+ {{ detailData.event?.endStakeNo || '-' }}
+
+
+
+
+
+
+
+ 路况位置:
+ {{ detailData.event?.blockedPointName || detailData.occurLocation || '-' }}
+
+
+
+
+ 阻断点小地名:
+ {{ detailData.event?.blockedPointName || '-' }}
+
+
+
+
+
+
+
+ 所属区县:
+ {{ detailData.event?.district || '-' }}
+
+
+
+
+ 发生时间:
+ {{ detailData.occurTime || '-' }}
+
+
+
+
+
+
+
+ 是否恢复重建:
+ {{ detailData.event?.needsRecovery ? '是' : '否' }}
+
+
+
+
+ 恢复重建预估费用:
+ {{ detailData.event?.estimatedRecoveryCost ? detailData.event.estimatedRecoveryCost + '万元' : '-' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 现场描述:
+ {{ report.siteDescription || '-' }}
+
+
+ 处置措施:
+ {{ report.disposalMeasures || '-' }}
+
+
+ 实际恢复时间:
+ {{ report.actualRecoverTime || '-' }}
+
+
+ 预计恢复时间:
+ {{ report.expectRecoverTime || '-' }}
+
+
+
+ 填报人:
+ {{ report.reporterName ? report.reporterName : '-' }}
+
+
+
+ 联系电话:
+ {{ report.phone ? report.phone : '-' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 投入机械:
+ {{ report.investedMachinery ? report.investedMachinery + '台/班' : '-'}}
+
+
+
+
+ 投入人力:
+ {{ report.investedManpower ? report.investedManpower + '人次' : '-'}}
+
+
+
+
+ 投入资金:
+ {{ report.investedFunds ? report.investedFunds + '万元' : '-'}}
+
+
+
+
+
+
+ {{ report.showDetail ? '点击关闭详情' : '点击查看详情' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue b/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue
index dcb71bd..243d343 100644
--- a/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue
+++ b/packages/screen/src/views/DisasterManagement/IceDisasterReport/IceDisasterReportPC.vue
@@ -328,7 +328,6 @@ import { useRouter, useRoute } from 'vue-router'
import { ElMessage } from 'element-plus'
import { Plus, Upload } from '@element-plus/icons-vue'
import { request } from '@/utils/request'
-import LossList from './WaterDisasterLossListPC.vue'
import BlockItem from '@/component/BlockItem.vue'
import FileUpload from '@/component/FileUpload/FileUpload.vue'
import { useOptions } from '@shared/composables/useOptions'
diff --git a/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterContinueReportPC.vue b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterContinueReportPC.vue
index 7da218e..a031a06 100644
--- a/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterContinueReportPC.vue
+++ b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterContinueReportPC.vue
@@ -138,7 +138,7 @@
import { ref, reactive, watch, computed } from 'vue'
import { ElMessage } from 'element-plus'
import { request } from '@shared/utils/request'
-import LossList from '../DisasterReport/WaterDisasterLossListPC.vue'
+import LossList from '../WaterDisasterReport/WaterDisasterLossListPC.vue'
// Props 定义
const props = defineProps({
diff --git a/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue
index 2460f40..736ca85 100644
--- a/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue
+++ b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue
@@ -4,7 +4,7 @@