feat: 灾毁事件共享
This commit is contained in:
parent
238bd0de6d
commit
9979660218
@ -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,
|
||||
|
||||
@ -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({})
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@ -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 已正确加载
|
||||
// 这样可以避免大组件懒加载时的竞态条件问题
|
||||
|
||||
@ -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 = {
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -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: '水毁事件' },
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user