diff --git a/packages/mobile/src/components/BaseDatePicker.vue b/packages/mobile/src/components/BaseDatePicker.vue new file mode 100644 index 0000000..360cfd9 --- /dev/null +++ b/packages/mobile/src/components/BaseDatePicker.vue @@ -0,0 +1,434 @@ + + + + + \ No newline at end of file diff --git a/packages/mobile/src/components/BasePicker.vue b/packages/mobile/src/components/BasePicker.vue new file mode 100644 index 0000000..68470dd --- /dev/null +++ b/packages/mobile/src/components/BasePicker.vue @@ -0,0 +1,139 @@ + + + + + \ No newline at end of file diff --git a/packages/mobile/src/components/CardItem.vue b/packages/mobile/src/components/CardItem.vue index b272bac..1018ab6 100644 --- a/packages/mobile/src/components/CardItem.vue +++ b/packages/mobile/src/components/CardItem.vue @@ -39,7 +39,7 @@ const props = defineProps({ .card-item { position: relative; width: 100%; - padding: 21px 50px 17px 10px; + padding: 20px; background-color: #fff; border-radius: 8px; } diff --git a/packages/mobile/src/components/PageContainer.vue b/packages/mobile/src/components/PageContainer.vue index e1e23e0..aa1057b 100644 --- a/packages/mobile/src/components/PageContainer.vue +++ b/packages/mobile/src/components/PageContainer.vue @@ -1,6 +1,6 @@ + + + \ No newline at end of file diff --git a/packages/mobile/src/components/TagFilter.vue b/packages/mobile/src/components/TagFilter.vue new file mode 100644 index 0000000..8246d0a --- /dev/null +++ b/packages/mobile/src/components/TagFilter.vue @@ -0,0 +1,223 @@ + + + + + \ No newline at end of file diff --git a/packages/mobile/src/router/index.js b/packages/mobile/src/router/index.js index 9222cb0..7355826 100644 --- a/packages/mobile/src/router/index.js +++ b/packages/mobile/src/router/index.js @@ -80,6 +80,31 @@ const routes = [ path: '/warningMessageHandle', name: 'WarningMessageHandle', component: () => import('../views/WarningMessage/WarningMessageHandle.vue') + }, + { + path: '/rebuild', + name: 'Rebuild', + component: () => import('../views/Rebuild/Rebuild.vue') + }, + { + path: '/rebuild-add/:data?', + name: 'RebuildAdd', + component: () => import('../views/Rebuild/RebuildAdd.vue') + }, + { + path: '/rebuild-details/:data?', + name: 'RebuildDetails', + component: () => import('../views/Rebuild/RebuildDetails.vue') + }, + { + path: '/disasterManagement', + name: 'DisasterManagement', + component: () => import('../views/DisasterManagement/DisasterManagement.vue') + }, + { + path: '/disasterReport', + name: 'DisasterReport', + component: () => import('../views/DisasterManagement/DisasterReport.vue') } ] diff --git a/packages/mobile/src/views/DisasterManagement/DisasterManagement.vue b/packages/mobile/src/views/DisasterManagement/DisasterManagement.vue new file mode 100644 index 0000000..294d79e --- /dev/null +++ b/packages/mobile/src/views/DisasterManagement/DisasterManagement.vue @@ -0,0 +1,274 @@ + + + + + \ No newline at end of file diff --git a/packages/mobile/src/views/DisasterManagement/DisasterReport.vue b/packages/mobile/src/views/DisasterManagement/DisasterReport.vue new file mode 100644 index 0000000..15c4694 --- /dev/null +++ b/packages/mobile/src/views/DisasterManagement/DisasterReport.vue @@ -0,0 +1,148 @@ + + + + + \ No newline at end of file diff --git a/packages/mobile/src/views/DisasterManagement/WaterDisaster/CubeCalculateDialog.vue b/packages/mobile/src/views/DisasterManagement/WaterDisaster/CubeCalculateDialog.vue new file mode 100644 index 0000000..7cd4ecb --- /dev/null +++ b/packages/mobile/src/views/DisasterManagement/WaterDisaster/CubeCalculateDialog.vue @@ -0,0 +1,159 @@ + + + diff --git a/packages/mobile/src/views/DisasterManagement/WaterDisaster/LossList.vue b/packages/mobile/src/views/DisasterManagement/WaterDisaster/LossList.vue new file mode 100644 index 0000000..0565258 --- /dev/null +++ b/packages/mobile/src/views/DisasterManagement/WaterDisaster/LossList.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/packages/mobile/src/views/DisasterManagement/WaterDisaster/LossPicker.vue b/packages/mobile/src/views/DisasterManagement/WaterDisaster/LossPicker.vue new file mode 100644 index 0000000..535a2f8 --- /dev/null +++ b/packages/mobile/src/views/DisasterManagement/WaterDisaster/LossPicker.vue @@ -0,0 +1,47 @@ + + + diff --git a/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue new file mode 100644 index 0000000..dd03a70 --- /dev/null +++ b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue @@ -0,0 +1,524 @@ + + + + + diff --git a/packages/mobile/src/views/DisasterManagement/mockData.json b/packages/mobile/src/views/DisasterManagement/mockData.json new file mode 100644 index 0000000..3eb1a93 --- /dev/null +++ b/packages/mobile/src/views/DisasterManagement/mockData.json @@ -0,0 +1,42 @@ +[ + { + "id": 1, + "title": "G242金铃乡老窖坪发生积雪", + "status": "未解除", + "occurTime": "2025/10/10 20:29", + "estimateRecoverTime": "2025/10/10 20:29", + "disasterType": "积雪" + }, + { + "id": 2, + "title": "S521白鹿镇X发生边坡坍塌", + "status": "已解除", + "occurTime": "2025/10/10 20:29", + "estimateRecoverTime": "2025/10/10 20:29", + "disasterType": "边坡坍塌" + }, + { + "id": 3, + "title": "彭水S523发生边坡坍塌", + "status": "未解除", + "occurTime": "2025/10/10 20:29", + "estimateRecoverTime": "2025/10/10 20:29", + "disasterType": "路基沉陷" + }, + { + "id": 4, + "title": "梁平蟠龙镇G318发生山体滑坡", + "status": "已解除", + "occurTime": "2025/10/10 20:29", + "estimateRecoverTime": "2025/10/10 20:29", + "disasterType": "山体滑坡" + }, + { + "id": 5, + "title": "重庆市大足区XX县G201行道树倒塌", + "status": "已解除", + "occurTime": "2025/10/10 20:29", + "estimateRecoverTime": "2025/10/10 20:29", + "disasterType": "行道树倒塌" + } +] diff --git a/packages/mobile/src/views/DisasterManagement/waterDisasterFormData.json b/packages/mobile/src/views/DisasterManagement/waterDisasterFormData.json new file mode 100644 index 0000000..d17fc06 --- /dev/null +++ b/packages/mobile/src/views/DisasterManagement/waterDisasterFormData.json @@ -0,0 +1,63 @@ +{ + "occurLocation": "G108国道 K2250+300处", + "occurTime": "2024-07-15 14:30:00", + "roadConditionType": "国道", + "routeNo": "G108", + "event": { + "blockedMileage": 1.5, + "blockedPointName": "磨盘山隧道口", + "contactPerson": "张明", + "contactPhone": "13812345678", + "damageCount": 3, + "district": "武侯区", + "endStakeLat": "30.658712", + "endStakeLng": "104.082356", + "endStakeNo": "K2251+200", + "estimatedRecoveryCost": 120.5, + "inspectionMileage": 25.6, + "isBlocked": true, + "needsRecovery": true, + "repairProgress": "抢修中", + "reporterUnit": "武侯区交通运输局", + "startStakeLat": "30.652145", + "startStakeLng": "104.075632", + "startStakeNo": "K2250+300" + }, + "report": { + "damagedVehicleCount": 2, + "strandedPersonCount": 12, + "deadCount": 0, + "strandedVehicleCount": 12, + "disposalMeasures": "halfClose,bypass", + "actualRecoverTime": "2024-07-17 12:00:00", + "expectRecoverTime": "2024-07-18 18:00:00", + "injuredCount": 1, + "investedFunds": 35.8, + "investedMachinery": 6, + "investedManpower": 45, + "remark": "已组织抢险队伍进行抢通,便道已修建完成", + "siteDescription": "因持续强降雨导致山体滑坡,掩埋路面约50米,边坡垮塌严重", + "totalLossAmount": 85.6 + }, + "lossList": [ + { + "length": 50, + "width": 8.5, + "height": 2.5, + "unitPrice": 380, + "totalAmount": 38.9, + "lossCategory": "路面损毁", + "remark": "沥青路面严重损坏" + }, + { + "length": 30, + "width": 2.5, + "height": 6, + "unitPrice": 520, + "totalAmount": 23.4, + "lossCategory": "挡墙损毁", + "remark": "浆砌片石挡墙垮塌" + } + ], + "fileList": [] +} \ No newline at end of file diff --git a/packages/mobile/src/views/Home.vue b/packages/mobile/src/views/Home.vue index 2f54a4e..d0f0927 100644 --- a/packages/mobile/src/views/Home.vue +++ b/packages/mobile/src/views/Home.vue @@ -100,6 +100,13 @@ const gridItems = [ params: { data: encodeURIComponent(JSON.stringify(yhzinfo.value)) }, }, }, + { + icon: group106Icon, + text: "灾害管理", + to: { + name: "DisasterManagement", + }, + }, { icon: group105Icon, text: "预警信息", @@ -107,6 +114,13 @@ const gridItems = [ name: "WarningMessage", }, }, + { + icon: group106Icon, + text: '恢复重建', + to: { + name: 'Rebuild', + } + } ]; // 获取当前登录用于就职的养护站信息 diff --git a/packages/mobile/src/views/Rebuild/Rebuild.vue b/packages/mobile/src/views/Rebuild/Rebuild.vue new file mode 100644 index 0000000..ce40740 --- /dev/null +++ b/packages/mobile/src/views/Rebuild/Rebuild.vue @@ -0,0 +1,169 @@ + + + + + \ No newline at end of file diff --git a/packages/mobile/src/views/Rebuild/RebuildAdd.vue b/packages/mobile/src/views/Rebuild/RebuildAdd.vue new file mode 100644 index 0000000..cc0295e --- /dev/null +++ b/packages/mobile/src/views/Rebuild/RebuildAdd.vue @@ -0,0 +1,154 @@ + + + + + + diff --git a/packages/mobile/src/views/Rebuild/RebuildDetails.vue b/packages/mobile/src/views/Rebuild/RebuildDetails.vue new file mode 100644 index 0000000..eded6ee --- /dev/null +++ b/packages/mobile/src/views/Rebuild/RebuildDetails.vue @@ -0,0 +1,104 @@ + + + + + + diff --git a/packages/screen/src/router/index.js b/packages/screen/src/router/index.js index 9d4f956..3974b60 100644 --- a/packages/screen/src/router/index.js +++ b/packages/screen/src/router/index.js @@ -139,6 +139,16 @@ const routes = [ breadcrumb: true, parentRoute: 'warningManagement' // 用于在面包屑中建立父子关系 } + }, + // 项目管理 + { + path: '/projectManagement', + name: 'projectManagement', + component: () => import('../views/ProjectManagement_Rebuild/index.vue'), + meta: { + title: '项目管理', + breadcrumb: true + } } ] diff --git a/packages/screen/src/views/ProjectManagement_Rebuild/addDialog.vue b/packages/screen/src/views/ProjectManagement_Rebuild/addDialog.vue new file mode 100644 index 0000000..c981eb7 --- /dev/null +++ b/packages/screen/src/views/ProjectManagement_Rebuild/addDialog.vue @@ -0,0 +1,372 @@ + + + + + \ No newline at end of file diff --git a/packages/screen/src/views/ProjectManagement_Rebuild/index.js b/packages/screen/src/views/ProjectManagement_Rebuild/index.js new file mode 100644 index 0000000..ae4d3a7 --- /dev/null +++ b/packages/screen/src/views/ProjectManagement_Rebuild/index.js @@ -0,0 +1,205 @@ +import { h, ref, onMounted, reactive, watch, toRaw, nextTick } from "vue"; +import { request } from "@/utils/request"; +import { useRoute, useRouter } from 'vue-router' +import AddDialog from "./addDialog.vue"; + +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: "xxx", + label: "区县", + }, + { + prop: "xxx", + label: "路线编码", + }, + { + prop: "xxx", + label: "灾害类型", + }, + { + prop: "xxx", + label: "起点桩号", + }, + { + prop: "xxx", + label: "止点桩号", + }, + { + prop: "xxx", + label: "实施里程(公里)", + }, + { + prop: "xxx", + label: "技术等级", + }, + { + prop: "xxx", + label: "总投资金额(万元)", + }, + { + prop: "xxx", + label: "投资估算(万元)", + }, + { + prop: "xxx", + label: "开工或预计开工时间", + }, + { + prop: "xxx", + label: "完工或预计完工时间", + }, + { + prop: "xxx", + label: "申报状态", + }, + { + prop: "xxx", + label: "审批状态", + }, + { + prop: "xxx", + label: "更新日期", + }, + { + label: "操作", + fixed: "right", + width: 150, + render: (row) => () => + h("div", { class: "action-btns" }, [ + h( + ElButton, + { + type: "primary", + link: true, + onClick: async () => { + }, + }, + () => "审批" + ), + h( + ElButton, + { + type: "primary", + link: true, + style: "margin-left: 10px;", + onClick: async () => { + }, + }, + () => "详情" + ), + ]), + }, +] + +// 过滤条件 +const filterData = reactive({ + year: "", + code: "", +}) +// 分页 +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 res = await request({ + url: '', + method: "GET", + params: { + + } + }) + } catch (error) { + + } +} + + +// 打开填报项目弹窗 +const openAddDialog = () => { + model.title = '填报项目'; + Object.assign(form, INIT_FORM); + model.props = { + form: form, + }; + model.content = AddDialog; + model.onCancel = () => { + modelVisible.value = false; + }; + model.onConfirm = async () => { + dialogType.value = ''; + await dialogRef?.value?.dynamicComponentRef?.formRef.validate().then(() => { + console.log('@@@@@填报项目', form); + }) + .catch((err) => { + ElMessage.error('请处理表单中的错误项'); + }); + }; + model.width = "70%" + modelVisible.value = true; +} + + + +export default () => { + + const router = useRouter(); + + + + return { + tableData, + filterData, + pagination, + columns, + + modelVisible, + model, + drawerVisible, + drawer, + dialogRef, + drawerRef, + openAddDialog, + } +} \ No newline at end of file diff --git a/packages/screen/src/views/ProjectManagement_Rebuild/index.vue b/packages/screen/src/views/ProjectManagement_Rebuild/index.vue new file mode 100644 index 0000000..10005f7 --- /dev/null +++ b/packages/screen/src/views/ProjectManagement_Rebuild/index.vue @@ -0,0 +1,52 @@ + + + + + \ No newline at end of file