feat: 灾毁事件共享
This commit is contained in:
parent
238bd0de6d
commit
9979660218
@ -171,7 +171,6 @@ import { useOptions } from '@shared/composables/useOptions'
|
|||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const yhzStore = useYHZStore()
|
const yhzStore = useYHZStore()
|
||||||
const { options } = useOptions()
|
const { options } = useOptions()
|
||||||
const DEFAULT_REPORTER_UNIT = '万州区公路中心'
|
|
||||||
|
|
||||||
// 组件挂载时获取数据
|
// 组件挂载时获取数据
|
||||||
const INIT_FORM = reactive({
|
const INIT_FORM = reactive({
|
||||||
@ -192,7 +191,7 @@ const INIT_FORM = reactive({
|
|||||||
reporterName: '',
|
reporterName: '',
|
||||||
reportTime: '', // 填报时间
|
reportTime: '', // 填报时间
|
||||||
reporterPhone: '', // 填报人手机号
|
reporterPhone: '', // 填报人手机号
|
||||||
reportUnit: DEFAULT_REPORTER_UNIT,
|
reportUnit: '',
|
||||||
routeNo: '',
|
routeNo: '',
|
||||||
occurTime: '',
|
occurTime: '',
|
||||||
roadConditionLocation: '',
|
roadConditionLocation: '',
|
||||||
@ -358,7 +357,7 @@ const handleAdd = async () => {
|
|||||||
routeNo: form.routeNo,
|
routeNo: form.routeNo,
|
||||||
occurTime: form.occurTime,
|
occurTime: form.occurTime,
|
||||||
reportTime,
|
reportTime,
|
||||||
reportUnit: form.event.reportUnit || DEFAULT_REPORTER_UNIT,
|
reportUnit: form.event.reportUnit,
|
||||||
disposalMeasures: form.report.disposalMeasures,
|
disposalMeasures: form.report.disposalMeasures,
|
||||||
expectRecoverTime: form.report.expectRecoverTime,
|
expectRecoverTime: form.report.expectRecoverTime,
|
||||||
actualRecoverTime: form.report.actualRecoverTime || null,
|
actualRecoverTime: form.report.actualRecoverTime || null,
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
<BasePicker v-model="formData.roadConditionType" :options="options['waterRoadConditionType']" label="路况类别" placeholder="请选择" />
|
<BasePicker v-model="formData.roadConditionType" :options="options['waterRoadConditionType']" label="路况类别" placeholder="请选择" />
|
||||||
|
|
||||||
<!-- 是否阻断 (event.isBlocked) -->
|
<!-- 是否阻断 (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) -->
|
<!-- 抢险进度 (event.repairProgress) -->
|
||||||
<BasePicker v-model="formData.event.repairProgress" :options="options['repairProgress']" label="抢险进度" placeholder="请选择" />
|
<BasePicker v-model="formData.event.repairProgress" :options="options['repairProgress']" label="抢险进度" placeholder="请选择" />
|
||||||
@ -140,7 +140,7 @@
|
|||||||
</PanelItem>
|
</PanelItem>
|
||||||
<PanelItem v-if="!isContinue || (isContinue && !detail?.event.needsRecovery)">
|
<PanelItem v-if="!isContinue || (isContinue && !detail?.event.needsRecovery)">
|
||||||
<!-- 是否需要恢复重建 (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) -->
|
<!-- 恢复重建预估费用 (event.estimatedRecoveryCost) -->
|
||||||
<van-field v-model="formData.event.estimatedRecoveryCost" v-if="formData?.event.needsRecovery" label="恢复重建预估费用" placeholder="请填写" type="digit">
|
<van-field v-model="formData.event.estimatedRecoveryCost" v-if="formData?.event.needsRecovery" label="恢复重建预估费用" placeholder="请填写" type="digit">
|
||||||
<template #button>
|
<template #button>
|
||||||
@ -165,7 +165,6 @@ import LossList from './LossList.vue'
|
|||||||
import { useRouter, useRoute } from 'vue-router'
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
import { request } from '@shared/utils/request'
|
import { request } from '@shared/utils/request'
|
||||||
import { useOptions } from '@shared/composables/useOptions'
|
import { useOptions } from '@shared/composables/useOptions'
|
||||||
import mockFormData from '../waterDisasterFormData.json'
|
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const { options } = useOptions()
|
const { options } = useOptions()
|
||||||
@ -626,7 +625,7 @@ const getDisasterDetail = async () => {
|
|||||||
const newFormData = {
|
const newFormData = {
|
||||||
...data,
|
...data,
|
||||||
lossList: null,
|
lossList: null,
|
||||||
report: route.query?.mock ? mockFormData : {},
|
report: {},
|
||||||
fileList: null
|
fileList: null
|
||||||
}
|
}
|
||||||
initFormData(newFormData)
|
initFormData(newFormData)
|
||||||
@ -650,7 +649,7 @@ onMounted(() => {
|
|||||||
if (route.query.id) {
|
if (route.query.id) {
|
||||||
getDisasterDetail()
|
getDisasterDetail()
|
||||||
} else {
|
} else {
|
||||||
initFormData(route.query?.mock ? mockFormData : {})
|
initFormData({})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -18,12 +18,15 @@ import { ref } from 'vue'
|
|||||||
import { useRoute, useRouter } from 'vue-router'
|
import { useRoute, useRouter } from 'vue-router'
|
||||||
import Index from "./views/index.vue";
|
import Index from "./views/index.vue";
|
||||||
import { onMounted } from 'vue';
|
import { onMounted } from 'vue';
|
||||||
|
import { useUserStore } from './store/userStore';
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
const userStore = useUserStore()
|
||||||
const pageLoaded = ref(false)
|
const pageLoaded = ref(false)
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
await userStore.initUserInfo()
|
||||||
try {
|
try {
|
||||||
// 等待路由完全准备好,确保 route.meta 已正确加载
|
// 等待路由完全准备好,确保 route.meta 已正确加载
|
||||||
// 这样可以避免大组件懒加载时的竞态条件问题
|
// 这样可以避免大组件懒加载时的竞态条件问题
|
||||||
|
|||||||
@ -112,6 +112,11 @@ const uploadFiles = async (event) => {
|
|||||||
const name = file.name
|
const name = file.name
|
||||||
if(props.type == 'image') fileType = 1
|
if(props.type == 'image') fileType = 1
|
||||||
if(props.type == 'video') fileType = 2
|
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 url = res.data
|
||||||
const fileData = {
|
const fileData = {
|
||||||
|
|||||||
@ -1,13 +1,41 @@
|
|||||||
import { defineStore } from 'pinia'
|
import { defineStore } from 'pinia'
|
||||||
|
import { request } from "@/utils/request";
|
||||||
|
|
||||||
export const useUserStore = defineStore('user', {
|
export const useUserStore = defineStore('user', {
|
||||||
state: {
|
state: () => ({
|
||||||
|
userInfo: null
|
||||||
},
|
}),
|
||||||
getters: {
|
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: {
|
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({})
|
const options = ref({})
|
||||||
|
|
||||||
// 是否 布尔类型
|
// 是否 布尔类型
|
||||||
options.value['yesNoBool'] = [
|
options.value['yesOrNoBool'] = [
|
||||||
{ label: '是', value: true },
|
{ label: '是', value: true },
|
||||||
{ label: '否', value: false }
|
{ label: '否', value: false }
|
||||||
]
|
]
|
||||||
|
|
||||||
|
// 有 无
|
||||||
|
options.value['haveOrNot'] = [
|
||||||
|
{ label: '有', value: 1 },
|
||||||
|
{ label: '无', value: 0 }
|
||||||
|
]
|
||||||
|
|
||||||
// 事件类型
|
// 事件类型
|
||||||
options.value['eventType'] = [
|
options.value['eventType'] = [
|
||||||
{ label: '水毁事件', value: '水毁事件' },
|
{ label: '水毁事件', value: '水毁事件' },
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user