diff --git a/packages/mobile/src/components/PageContainer.vue b/packages/mobile/src/components/PageContainer.vue index aa1057b..3d6a40c 100644 --- a/packages/mobile/src/components/PageContainer.vue +++ b/packages/mobile/src/components/PageContainer.vue @@ -17,7 +17,7 @@ const props = defineProps({ } }) -const emit = defineEmits(['back']) +const emit = defineEmits(['click-back']) const onClickLeft = () => { emit('click-back') diff --git a/packages/mobile/src/router/index.js b/packages/mobile/src/router/index.js index 7355826..f8e9de7 100644 --- a/packages/mobile/src/router/index.js +++ b/packages/mobile/src/router/index.js @@ -105,6 +105,11 @@ const routes = [ path: '/disasterReport', name: 'DisasterReport', component: () => import('../views/DisasterManagement/DisasterReport.vue') + }, + { + path: '/disasterDetail', + name: 'DisasterDetail', + component: () => import('../views/DisasterManagement/DisasterDetail.vue') } ] diff --git a/packages/mobile/src/views/DisasterManagement/DisasterDetail.vue b/packages/mobile/src/views/DisasterManagement/DisasterDetail.vue new file mode 100644 index 0000000..f4fd7d3 --- /dev/null +++ b/packages/mobile/src/views/DisasterManagement/DisasterDetail.vue @@ -0,0 +1,565 @@ + + + + + \ No newline at end of file diff --git a/packages/mobile/src/views/DisasterManagement/DisasterManagement.vue b/packages/mobile/src/views/DisasterManagement/DisasterManagement.vue index 294d79e..f6caa8d 100644 --- a/packages/mobile/src/views/DisasterManagement/DisasterManagement.vue +++ b/packages/mobile/src/views/DisasterManagement/DisasterManagement.vue @@ -3,24 +3,24 @@
- +
发生时间: - {{ item.occurTime }} + {{ item.occurTime || '-' }}
预计恢复时间: - {{ item.estimateRecoverTime }} + {{ item.expectRecoverTime || '-' }}
- {{ item.disasterType }} + {{ getDisasterTypeText(item) }}
@@ -34,7 +34,7 @@
- 灾害填报 + 灾害填报 { + // 优先使用 eventName,其次使用发生地点+线路编号组合 + if (item.eventName) { + return item.eventName + } + const parts = [] + if (item.routeNo) parts.push(item.routeNo) + if (item.occurLocation) parts.push(item.occurLocation) + if (item.startStakeNo) parts.push(item.startStakeNo) + + if (parts.length > 0) { + return parts.join(' ') + } + return '未命名事件' +} + +// 获取事件状态文本 +const getEventStatusText = (status) => { + // eventStatus: 0-未解除 1-已解除 + return status === 1 ? '已解除' : '未解除' +} + +// 获取事件状态类型(用于标签颜色) +const getEventStatusType = (status) => { + return status === 1 ? 'success' : 'danger' +} + +// 获取灾毁类型文本(根据实际情况映射) +const getDisasterTypeText = (item) => { + // 可以根据 roadConditionType、repairProgress 或其他字段来生成类型标签 + // 这里提供几种可能的映射方式 + + // 方式1:根据抢修进度 + if (item.repairProgress) { + return item.repairProgress + } + + // 方式2:根据路况类别 + if (item.roadConditionType) { + return item.roadConditionType + } + + // 方式3:默认返回"水毁灾害" + return '水毁灾害' +} + // 获取简短类型名称 const getShortTypeName = (type) => { const typeMap = { @@ -101,9 +148,15 @@ const getShortTypeName = (type) => { '行道树倒塌': '树倒', '积水': '积水', '积雪': '积雪', - '其他': '其他' + '其他': '其他', + '未抢修': '待抢修', + '抢修中': '抢修中', + '已完成': '已完成', + '高速公路': '高速', + '国道': '国道', + '省道': '省道' } - return typeMap[type] || type.substring(0, 2) + return typeMap[type] || (type ? type.substring(0, 2) : '灾害') } // 获取灾毁列表数据 @@ -115,12 +168,20 @@ const getDisasterList = async (keyword = '', disasterType = 'all') => { url: '/snow-ops-platform/water-damage/list', method: 'get', params: { - keyword: keyword.trim(), - disasterType: disasterType === 'all' ? '' : disasterType + keyword: keyword.trim(), + disasterType: disasterType === 'all' ? '' : disasterType } }) if (result?.data?.records) { - list.value = result.data.records + list.value = result.data.records.map(item => ({ + ...item, + // 数据转换,确保前端使用的字段存在 + title: getEventTitle(item), + status: getEventStatusText(item.eventStatus), + occurTime: item.occurTime, + estimateRecoverTime: item.expectRecoverTime, + disasterType: getDisasterTypeText(item) + })) } else { showToast(result.message || '获取数据失败') list.value = [] @@ -162,14 +223,9 @@ const handleClickBack = () => { // 点击列表项 const handleClickItem = (item) => { router.push({ - path: '/disaster-detail', + path: '/disasterDetail', query: { - id: item.id, - title: item.title, - status: item.status, - occurTime: item.occurTime, - estimateRecoverTime: item.estimateRecoverTime, - disasterType: item.disasterType + id: item.id } }) } @@ -271,4 +327,7 @@ onMounted(() => { border-color: #1989fa; } } +:deep(.van-tag) { + white-space: nowrap; +} \ 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 15c4694..88cbc26 100644 --- a/packages/mobile/src/views/DisasterManagement/DisasterReport.vue +++ b/packages/mobile/src/views/DisasterManagement/DisasterReport.vue @@ -1,10 +1,10 @@ diff --git a/packages/mobile/src/views/DisasterManagement/WaterDisaster/CubeCalculateDialog.vue b/packages/mobile/src/views/DisasterManagement/WaterDisaster/CubeCalculateDialog.vue index 7cd4ecb..234efcb 100644 --- a/packages/mobile/src/views/DisasterManagement/WaterDisaster/CubeCalculateDialog.vue +++ b/packages/mobile/src/views/DisasterManagement/WaterDisaster/CubeCalculateDialog.vue @@ -2,7 +2,7 @@
- + - + - + @@ -38,7 +38,7 @@ - + @@ -61,7 +61,9 @@ const formData = ref({ unitPrice: '' }) -const totalPrice = computed(() => { +const itemName = ref('') + +const totalAmount = computed(() => { const l = parseFloat(formData.value.length) const w = parseFloat(formData.value.width) const h = parseFloat(formData.value.height) @@ -84,14 +86,25 @@ const totalPrice = computed(() => { return (l * w * h * price) }) -watch(totalPrice, ()=>{ - formData.value.totalPrice = totalPrice.value +watch(totalAmount, ()=>{ + formData.value.totalAmount = totalAmount.value }) // 显示弹窗 -const show = () => { +const show = (item) => { + console.log("🚀 ~ show ~ item:", item) + formData.value.length = item.length + formData.value.width = item.width + formData.value.height = item.height + formData.value.unitPrice = item.unitPrice + formData.value.totalAmount = item.totalAmount + itemName.value = getItemName(item) visible.value = true } +const getItemName = (item) => { + return item.lossTypeName +} + // 验证表单数据 const validateForm = () => { const l = parseFloat(formData.length) @@ -125,11 +138,11 @@ const validateForm = () => { // 确认损失计算 const confirm = () => { - if(!formData.value.totalPrice) { + if(!formData.value.totalAmount) { showToast('请填写损失金额') return } - emit('confirm', formData.value.totalPrice) + emit('confirm', formData.value) // 重置表单 resetForm() visible.value = false @@ -147,7 +160,7 @@ const resetForm = () => { formData.value.width = '' formData.value.height = '' formData.value.unitPrice = '' - formData.value.totalPrice + formData.value.totalAmount } // 定义事件 const emit = defineEmits(['confirm']) diff --git a/packages/mobile/src/views/DisasterManagement/WaterDisaster/LossList.vue b/packages/mobile/src/views/DisasterManagement/WaterDisaster/LossList.vue index 0565258..85f0a7f 100644 --- a/packages/mobile/src/views/DisasterManagement/WaterDisaster/LossList.vue +++ b/packages/mobile/src/views/DisasterManagement/WaterDisaster/LossList.vue @@ -1,14 +1,15 @@