| | |
| | | import { ref } from 'vue' |
| | | import { ElMessage, ElMessageBox } from 'element-plus' |
| | | import { createSimData } from '@/api/trApi'; |
| | | import dayjs from 'dayjs' |
| | | |
| | | export const SimAPIStore = defineStore('SimAPI', () => { |
| | | const selectTab = ref("行政区划仿真") |
| | |
| | | } |
| | | } |
| | | |
| | | // 获取降雨类型 |
| | | const getRainType = (tabName) => { |
| | | switch (tabName) { |
| | | case '预测模拟': return 1 |
| | | case '实时模拟': return 2 |
| | | case '历史模拟': return 3 |
| | | default: return 0 |
| | | } |
| | | } |
| | | |
| | | // 验证表单 |
| | | const validateForm = (forms) => { |
| | | if (!forms?.name) { |
| | | ElMessage.warning('请输入方案名称') |
| | | return false |
| | | } |
| | | if (!forms.name) { |
| | | ElMessage.warning('请确保表单均已填写') |
| | | return false |
| | | |
| | | if (forms.type === 1 || forms.type === 3) { |
| | | if (!forms.geom || !forms.rainfall || !forms.intensity || !forms.duration) { |
| | | ElMessage.warning('请确保表单均已填写') |
| | | return false |
| | | } |
| | | } |
| | | if (forms.type === 2) { |
| | | if (!forms.geom || !forms.gauges) { |
| | | ElMessage.warning('请确保表单均已填写') |
| | | return false |
| | | } |
| | | } |
| | | return true |
| | | } |
| | | |
| | | // 弹窗 |
| | | const openSaveDialog = async (forms) => { |
| | | // 保存方案逻辑 |
| | | const saveScheme = async (forms) => { |
| | | // forms.hours = dayjs(val[0]).format("YYYY-MM-DD HH:mm:ss"); |
| | | if (isLoading.value) { |
| | | ElMessage.warning('正在保存,请稍候...') |
| | | return |
| | | } |
| | | |
| | | isLoading.value = true |
| | | |
| | | try { |
| | | const params = { |
| | | 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: 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: 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 |
| | | }) |
| | | } |
| | | console.log(params) |
| | | // const res = await createSimData(params) |
| | | ElMessage.success('方案保存成功') |
| | | // return res |
| | | } catch (error) { |
| | | console.error('保存失败:', error) |
| | | ElMessage.error('保存失败: ' + (error.message || '请稍后重试')) |
| | | throw error |
| | | } finally { |
| | | isLoading.value = false |
| | | } |
| | | } |
| | | |
| | | // 保存方案弹窗 |
| | | const addSimCheme = async (forms) => { |
| | | if (!validateForm(forms)) return |
| | | |
| | | try { |
| | |
| | | } |
| | | } |
| | | |
| | | const saveScheme = async (forms) => { |
| | | if (isLoading.value) { |
| | | ElMessage.warning('正在保存,请稍候...') |
| | | return |
| | | } |
| | | |
| | | isLoading.value = true |
| | | |
| | | try { |
| | | const params = { |
| | | areaType: getAreaType(selectTab.value), |
| | | createTime: Date.now(), |
| | | name: forms.name, |
| | | type: getRainType(forms.type), |
| | | status: 0, |
| | | data: forms.data |
| | | } |
| | | |
| | | const response = await createSimData(params) |
| | | ElMessage.success('方案保存成功') |
| | | return response |
| | | } catch (error) { |
| | | console.error('保存失败:', error) |
| | | ElMessage.error('保存失败: ' + (error.message || '请稍后重试')) |
| | | throw error |
| | | } finally { |
| | | isLoading.value = false |
| | | } |
| | | } |
| | | |
| | | |
| | | // // 新建方案 |
| | | // const createSimulation = async (forms) => { |
| | | // console.log(forms, 'ffffffff') |
| | | |
| | | // const params = { |
| | | // areaType: getAreaType(selectTab), |
| | | // createTime: Date.now(), |
| | | // name: forms.name, |
| | | // // 1为预测模拟,2为实时模拟,3为历史模拟 |
| | | // type: getRainType(forms.type), |
| | | // // 0为创建仿真,1为预处理,2为分析中,10为完成,20为出错 |
| | | // status: 0, |
| | | // data: forms.data |
| | | // } |
| | | // console.log(params, 'params') |
| | | |
| | | // try { |
| | | // await createSimData(params) |
| | | // } catch (error) { |
| | | // console.error('创建仿真失败:', error) |
| | | // } |
| | | // } |
| | | return { |
| | | // 状态 |
| | | selectTab, |
| | | isLoading, |
| | | // 方法 |
| | | handleClickTab, |
| | | openSaveDialog, |
| | | addSimCheme, |
| | | saveScheme, |
| | | } |
| | | }) |