feat: 灾毁事件共享

This commit is contained in:
niedongsheng 2026-04-20 11:28:23 +08:00
parent 238bd0de6d
commit 9979660218
6 changed files with 54 additions and 14 deletions

View File

@ -171,7 +171,6 @@ import { useOptions } from '@shared/composables/useOptions'
const router = useRouter()
const yhzStore = useYHZStore()
const { options } = useOptions()
const DEFAULT_REPORTER_UNIT = '万州区公路中心'
//
const INIT_FORM = reactive({
@ -192,7 +191,7 @@ const INIT_FORM = reactive({
reporterName: '',
reportTime: '', //
reporterPhone: '', //
reportUnit: DEFAULT_REPORTER_UNIT,
reportUnit: '',
routeNo: '',
occurTime: '',
roadConditionLocation: '',
@ -358,7 +357,7 @@ const handleAdd = async () => {
routeNo: form.routeNo,
occurTime: form.occurTime,
reportTime,
reportUnit: form.event.reportUnit || DEFAULT_REPORTER_UNIT,
reportUnit: form.event.reportUnit,
disposalMeasures: form.report.disposalMeasures,
expectRecoverTime: form.report.expectRecoverTime,
actualRecoverTime: form.report.actualRecoverTime || null,

View File

@ -7,7 +7,7 @@
<BasePicker v-model="formData.roadConditionType" :options="options['waterRoadConditionType']" label="路况类别" placeholder="请选择" />
<!-- 是否阻断 (event.isBlocked) -->
<BasePicker v-model="formData.event.isBlocked" :options="options['yesNoBool']" label="是否阻断" placeholder="请选择" />
<BasePicker v-model="formData.event.isBlocked" :options="options['yesOrNoBool']" label="是否阻断" placeholder="请选择" />
<!-- 抢险进度 (event.repairProgress) -->
<BasePicker v-model="formData.event.repairProgress" :options="options['repairProgress']" label="抢险进度" placeholder="请选择" />
@ -140,7 +140,7 @@
</PanelItem>
<PanelItem v-if="!isContinue || (isContinue && !detail?.event.needsRecovery)">
<!-- 是否需要恢复重建 (event.needsRecovery) -->
<BasePicker v-model="formData.event.needsRecovery" :options="options['yesNoBool']" label="是否需要恢复重建" placeholder="请选择" />
<BasePicker v-model="formData.event.needsRecovery" :options="options['yesOrNoBool']" label="是否需要恢复重建" placeholder="请选择" />
<!-- 恢复重建预估费用 (event.estimatedRecoveryCost) -->
<van-field v-model="formData.event.estimatedRecoveryCost" v-if="formData?.event.needsRecovery" label="恢复重建预估费用" placeholder="请填写" type="digit">
<template #button>
@ -165,7 +165,6 @@ import LossList from './LossList.vue'
import { useRouter, useRoute } from 'vue-router'
import { request } from '@shared/utils/request'
import { useOptions } from '@shared/composables/useOptions'
import mockFormData from '../waterDisasterFormData.json'
const route = useRoute()
const { options } = useOptions()
@ -626,7 +625,7 @@ const getDisasterDetail = async () => {
const newFormData = {
...data,
lossList: null,
report: route.query?.mock ? mockFormData : {},
report: {},
fileList: null
}
initFormData(newFormData)
@ -650,7 +649,7 @@ onMounted(() => {
if (route.query.id) {
getDisasterDetail()
} else {
initFormData(route.query?.mock ? mockFormData : {})
initFormData({})
}
})

View File

@ -18,12 +18,15 @@ import { ref } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import Index from "./views/index.vue";
import { onMounted } from 'vue';
import { useUserStore } from './store/userStore';
const route = useRoute()
const router = useRouter()
const userStore = useUserStore()
const pageLoaded = ref(false)
onMounted(async () => {
await userStore.initUserInfo()
try {
// route.meta
//

View File

@ -112,6 +112,11 @@ const uploadFiles = async (event) => {
const name = file.name
if(props.type == 'image') fileType = 1
if(props.type == 'video') fileType = 2
if(props.type == null) {
const fileTypeStr = file.type
if(fileTypeStr.startsWith('image/')) fileType = 1
if(fileTypeStr.startsWith('video/')) fileType = 2
}
const url = res.data
const fileData = {

View File

@ -1,13 +1,41 @@
import { defineStore } from 'pinia'
import { request } from "@/utils/request";
export const useUserStore = defineStore('user', {
state: {
},
state: () => ({
userInfo: null
}),
getters: {
getUserInfo(state) {
let userInfo = state.userInfo
if(userInfo) return userInfo
try {
userInfo = JSON.parse(localStorage.getItem('userInfo'))
return userInfo
} catch(error) {
console.log(error)
}
return null
},
},
actions: {
setUserInfo(userInfo) {
if(userInfo === null || userInfo === undefined || userInfo === '') {
localStorage.removeItem('userInfo')
this.userInfo = null
} else {
this.userInfo = userInfo
localStorage.setItem('userInfo', JSON.stringify(userInfo))
}
},
async initUserInfo() {
const res = await request({
url: '/snow-ops-platform/user/getUserInfo',
method: 'GET'
})
if(res?.code === '00000') {
this.setUserInfo(res.data)
}
}
}
})

View File

@ -23,11 +23,17 @@ export function useOptions() {
const options = ref({})
// 是否 布尔类型
options.value['yesNoBool'] = [
options.value['yesOrNoBool'] = [
{ label: '是', value: true },
{ label: '否', value: false }
]
// 有 无
options.value['haveOrNot'] = [
{ label: '有', value: 1 },
{ label: '无', value: 0 }
]
// 事件类型
options.value['eventType'] = [
{ label: '水毁事件', value: '水毁事件' },