| | |
| | | import dayjs from 'dayjs' |
| | | |
| | | export const SimAPIStore = defineStore('SimAPI', () => { |
| | | |
| | | // 定时器 |
| | | const shouldPoll = ref(false) |
| | | |
| | | const selectTab = ref("行政区划仿真") |
| | | |
| | | const isLoading = ref(false) |
| | |
| | | } |
| | | |
| | | if (forms.type === 1 || forms.type === 3) { |
| | | if (!forms.geom || !forms.rainfall || !forms.intensity || !forms.duration) { |
| | | ElMessage.warning('请确保表单均已填写') |
| | | if (!forms.geom) { |
| | | ElMessage.warning('请选择模拟区域') |
| | | return false |
| | | } |
| | | if (!forms.rainfall && !forms.intensity && !forms.duration && (forms.rainfall.length > 0 && !forms.intensityUnit)) { |
| | | ElMessage.warning('请确保表单均已填写'); |
| | | return false; |
| | | } |
| | | } |
| | | if (forms.type === 2) { |
| | | if (!forms.geom || !forms.gauges) { |
| | | ElMessage.warning('请确保表单均已填写') |
| | | if (!forms.geom) { |
| | | ElMessage.warning('请选择模拟区域') |
| | | return false |
| | | } |
| | | if (forms.gauges.length === 0) { |
| | | ElMessage.warning('请选择雨量计设备') |
| | | return false |
| | | } |
| | | } |
| | |
| | | |
| | | try { |
| | | const params = { |
| | | geom: forms.geom, |
| | | geom: forms.geom.value, |
| | | areaName: forms.geom.label, |
| | | areaType: getAreaType(selectTab.value), |
| | | createTime: Date.now(), |
| | | name: forms.name, |
| | | type: forms.type, |
| | | status: 0, |
| | | data: JSON.stringify({ |
| | | startTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), |
| | | startTime: Array.isArray(forms.hours) |
| | | ? dayjs(forms.hours[0]).format("YYYY-MM-DD HH:mm:ss") |
| | | : dayjs(forms.hours).format("YYYY-MM-DD HH:mm:ss"), |
| | | type: forms.type, |
| | | total: forms.rainfall, |
| | | duration: forms.duration, |
| | | intensity: forms.intensity, |
| | | total: parseFloat(forms.rainfall), |
| | | duration: parseFloat(forms.duration), |
| | | intensity: parseFloat(forms.intensity), |
| | | prediction: forms.prediction, |
| | | history: forms.history, |
| | | mode: forms.mode, |
| | | gauges: forms.gauges, |
| | | rainfalls: forms.rainFallList |
| | | rainfalls: forms.rainFallList, |
| | | intensityUnit: forms.intensityUnit || 'mm/15min' |
| | | }) |
| | | } |
| | | // console.log(params, '保存方案参数') |
| | | const res = await createSimData(params) |
| | | ElMessage.success('方案保存成功') |
| | | return res |
| | |
| | | |
| | | // 保存方案弹窗 |
| | | const addSimCheme = async (forms) => { |
| | | if (!validateForm(forms)) return |
| | | // 表单验证 |
| | | if (!validateForm(forms)) { |
| | | throw new Error('表单验证未通过'); // 抛出错误,阻止继续执行 |
| | | } |
| | | |
| | | try { |
| | | await ElMessageBox.confirm('确定要保存当前方案吗?', '新建方案', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | }) |
| | | // 用户确认后执行保存 |
| | | await saveScheme(forms) |
| | | // 用户确认后执行保存,并返回结果 |
| | | const res = await saveScheme(forms); // 执行保存并接收结果 |
| | | return res; // 返回保存的结果 |
| | | } catch (error) { |
| | | if (error !== 'cancel') { |
| | | console.error('保存出错:', error) |
| | |
| | | } else { |
| | | ElMessage.info('已取消保存') |
| | | } |
| | | throw error // 保证外部能捕获到错误 |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | return { |
| | | selectTab, |
| | | isLoading, |
| | | shouldPoll, |
| | | handleClickTab, |
| | | addSimCheme, |
| | | saveScheme, |