1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import { defineStore } from 'pinia'
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 isLoading = ref(false)
 
    const handleClickTab = (data) => {
        selectTab.value = data
    }
 
    // 获取区域类型
    const getAreaType = (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.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 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 {
            await ElMessageBox.confirm('确定要保存当前方案吗?', '新建方案', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
            })
            // 用户确认后执行保存
            await saveScheme(forms)
        } catch (error) {
            if (error !== 'cancel') {
                console.error('保存出错:', error)
                ElMessage.error('保存过程中出现错误')
            } else {
                ElMessage.info('已取消保存')
            }
        }
    }
 
 
    return {
        selectTab,
        isLoading,
        handleClickTab,
        addSimCheme,
        saveScheme,
    }
})