diff --git a/packages/mobile/package.json b/packages/mobile/package.json index 143d741..749d2e8 100644 --- a/packages/mobile/package.json +++ b/packages/mobile/package.json @@ -15,6 +15,7 @@ "vant": "^4.9.21", "@vueuse/core": "^14.0.0", "dayjs": "^1.11.19", + "leaflet": "^1.9.4", "axios": "^1.13.2", "@h5/shared": "workspace:*" }, diff --git a/packages/mobile/src/components/BaseDatePicker.vue b/packages/mobile/src/components/BaseDatePicker.vue index 7ff82a6..d465818 100644 --- a/packages/mobile/src/components/BaseDatePicker.vue +++ b/packages/mobile/src/components/BaseDatePicker.vue @@ -14,7 +14,7 @@ /> - +
取消 diff --git a/packages/mobile/src/components/BasePicker.vue b/packages/mobile/src/components/BasePicker.vue index 6d4a7fe..3e9ff80 100644 --- a/packages/mobile/src/components/BasePicker.vue +++ b/packages/mobile/src/components/BasePicker.vue @@ -14,7 +14,7 @@ /> - + - + @@ -58,26 +64,11 @@ - - - + { return false; } if (isEmpty(formData.value.event?.occurLocation)) { - showToast('请输入发生地点'); + showToast('请选择发生地点'); return false; } if (isEmpty(formData.value.event?.disasterMileage)) { diff --git a/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue index bc197a2..b161ae8 100644 --- a/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue +++ b/packages/mobile/src/views/DisasterManagement/WaterDisaster/WaterDisaster.vue @@ -51,7 +51,13 @@ - + @@ -60,19 +66,11 @@ - - - + @@ -167,6 +165,8 @@ import PanelItem from '@/components/PanelItem.vue' import BasePicker from '@/components/BasePicker.vue' import BaseDatePicker from '@/components/BaseDatePicker.vue' import DisasterFileUpload from '../components/DisasterFileUpload.vue' +import DisposalMeasuresSelector from '../components/DisposalMeasuresSelector.vue' +import PositionPickerMobile from '../components/PositionPickerMobile.vue' import RoadRoutesPicker from '../components/RoadRoutesPicker.vue' import LossList from '../components/LossList.vue' import { useRouter, useRoute } from 'vue-router' @@ -332,7 +332,7 @@ const validate = () => { return false } if (isEmpty(formData.value.event?.occurLocation)) { - showToast('请输入路况位置') + showToast('请选择路况位置') return false } if (isEmpty(formData.value.event?.blockedPointName)) { diff --git a/packages/mobile/src/views/DisasterManagement/components/DisposalMeasuresSelector.vue b/packages/mobile/src/views/DisasterManagement/components/DisposalMeasuresSelector.vue new file mode 100644 index 0000000..a37712d --- /dev/null +++ b/packages/mobile/src/views/DisasterManagement/components/DisposalMeasuresSelector.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/packages/mobile/src/views/DisasterManagement/components/LossPicker.vue b/packages/mobile/src/views/DisasterManagement/components/LossPicker.vue index 283bc72..81585f4 100644 --- a/packages/mobile/src/views/DisasterManagement/components/LossPicker.vue +++ b/packages/mobile/src/views/DisasterManagement/components/LossPicker.vue @@ -1,5 +1,5 @@ diff --git a/packages/mobile/src/views/DisasterManagement/components/PositionPickerMobile.vue b/packages/mobile/src/views/DisasterManagement/components/PositionPickerMobile.vue new file mode 100644 index 0000000..09cbecd --- /dev/null +++ b/packages/mobile/src/views/DisasterManagement/components/PositionPickerMobile.vue @@ -0,0 +1,568 @@ + + + + + diff --git a/packages/screen/package.json b/packages/screen/package.json index 9091471..800d244 100644 --- a/packages/screen/package.json +++ b/packages/screen/package.json @@ -17,6 +17,7 @@ "cesium": "^1.135.0", "echarts": "^6.0.0", "element-plus": "^2.11.5", + "leaflet": "^1.9.4", "pinia": "^3.0.3", "vue": "^3.5.18", "vue-echarts": "^8.0.1", diff --git a/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue index 79e96c5..3f67b2c 100644 --- a/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue +++ b/packages/screen/src/views/DisasterManagement/IceDisasterDetail/IceDisasterDetailPC.vue @@ -463,7 +463,15 @@ onMounted(() => { } .file-list { - width: 260px; + max-width: 260px; flex-shrink: 0; } +:deep(.upload-block) { + display: flex; + justify-content: flex-end; +} +:deep(.preview-block .preview-list) { + display: flex; + justify-content: flex-end; +} diff --git a/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterContinueReportPC.vue b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterContinueReportPC.vue index 6c704c1..470164a 100644 --- a/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterContinueReportPC.vue +++ b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterContinueReportPC.vue @@ -9,7 +9,7 @@ - + @@ -121,7 +121,7 @@ - + @@ -132,6 +132,13 @@ --> + +
+ +
只能上传jpg/png文件,且不超过500kb 最多上传6张照片
+
+
+ 追加记录 @@ -147,14 +154,15 @@ import { request } from '@shared/utils/request' import BlockItem from '@/component/BlockItem.vue' import NumberInput from '@/component/NumberInput/NumberInput.vue' import LossList from '../WaterDisasterReport/WaterDisasterLossListPC.vue' +import FileUpload from '@/component/FileUpload/FileUpload.vue' import { useRouter } from 'vue-router' // Props 定义 const props = defineProps({ value: { type: Object, - default: () => ({}) - } + default: () => ({}), + }, }) // Emits 定义 @@ -163,12 +171,10 @@ const emit = defineEmits(['input', 'change']) const router = useRouter() const createDefaultFormData = () => ({ - event: { - }, - report: { - }, + event: {}, + report: {}, lossList: [], - fileList: [] + fileList: [], }) // 表单数据 @@ -181,25 +187,25 @@ const roadConditionOptions = [ { label: '省道', value: '省道' }, { label: '县道', value: '县道' }, { label: '乡道', value: '乡道' }, - { label: '村道', value: '村道' } + { label: '村道', value: '村道' }, ] const blockedOptions = [ { label: '是', value: true }, - { label: '否', value: false } + { label: '否', value: false }, ] const repairProgressOptions = [ { label: '未抢险', value: '未抢险' }, { label: '抢险中', value: '抢险中' }, - { label: '已完成', value: '已完成' } + { label: '已完成', value: '已完成' }, ] // 日期选择器配置 const pickerOptions = { disabledDate(time) { return time.getTime() < new Date(2020, 0, 1) || time.getTime() > new Date(2030, 11, 31) - } + }, } // 监听外部传入的值 @@ -210,7 +216,7 @@ watch( initFormData(newVal) } }, - { immediate: true, deep: true } + { immediate: true, deep: true }, ) // 监听表单数据变化,向外传递 @@ -220,7 +226,7 @@ watch( emit('input', newVal) emit('change', newVal) }, - { deep: true } + { deep: true }, ) // 初始化表单数据 @@ -276,7 +282,7 @@ const handleAddSubmit = async () => { // 添加事件类型和站点信息 const submitData = { - ...formData.value + ...formData.value, // 可以在这里添加站点信息等其他数据 } @@ -288,7 +294,7 @@ const handleAddSubmit = async () => { const res = await request({ url: apiUrl, method: 'post', - data: submitData + data: submitData, }) if (res?.code === '00000') { @@ -316,7 +322,7 @@ defineExpose({ initFormData, getFormData, resetForm, - calibrateTime + calibrateTime, }) @@ -358,4 +364,10 @@ defineExpose({ } } } +.upload-tip { + margin-top: 8px; + color: #909399; + font-size: 12px; + line-height: 1.6; + } diff --git a/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue index 90410bf..d91c948 100644 --- a/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue +++ b/packages/screen/src/views/DisasterManagement/WaterDisasterDetail/WaterDisasterDetailPC.vue @@ -38,14 +38,16 @@
- - -
- {{ item.label }}: - {{ item.value }} -
-
+
+ + +
+ {{ item.label }}: + {{ item.value }} +
+
+
@@ -252,9 +254,9 @@ const getDisasterDetail = async () => { if (isEdit.value) { const newFormData = { ...data, - lossList: null, + lossList: [], report: {}, - fileList: null + fileList: [] } nextTick(() => { continueReport.value?.initFormData(newFormData) @@ -402,7 +404,15 @@ onMounted(() => { margin-bottom: -10px; } .file-list { - width: 320px; + max-width: 320px; flex-shrink: 0; } +:deep(.upload-block) { + display: flex; + justify-content: flex-end; +} +:deep(.preview-block .preview-list) { + display: flex; + justify-content: flex-end; +}