guonan
2025-04-22 d9c26a8b8b4336c53696b96d0ce3340758597777
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
125
126
127
128
129
130
131
import { defineStore } from 'pinia'
import { ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { createSimData } from '@/api/trApi';
 
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 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
        }
        return true
    }
 
    // 弹窗
    const openSaveDialog = 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('已取消保存')
            }
        }
    }
 
    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,
        saveScheme,
    }
})