提交 | 用户 | 时间
550970 1 <template>
L 2   <Dialog v-model="dialogVisible" :title="dialogTitle" width="50%">
3     <el-form
4       ref="formRef"
5       v-loading="formLoading"
6       :model="formData"
7       :rules="formRules"
8       label-width="120px"
9     >
10       <el-row>
11         <el-col :span="12">
12           <el-form-item label="表名" prop="tablename">
13             <el-input v-model="formData.tablename" placeholder="请输入表名"/>
14           </el-form-item>
15         </el-col>
16       </el-row>
17     </el-form>
18     <template #footer>
19       <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
20       <el-button @click="dialogVisible = false">取 消</el-button>
21     </template>
22   </Dialog>
23 </template>
24 <script lang="ts" setup>
25 import * as MmResultTable from '@/api/model/pre/result'
5b90b8 26
550970 27 defineOptions({name: 'DataMmResultTableForm'})
L 28
29 const {t} = useI18n() // 国际化
30 const message = useMessage() // 消息弹窗
31 const dialogVisible = ref(false) // 弹窗的是否展示
32 const dialogTitle = ref('') // 弹窗的标题
33 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
34 const formType = ref('') // 表单的类型:create - 新增;update - 修改
35 const formData = ref({
36   id: undefined,
37   tablename: undefined,
38 })
39 const formRules = reactive({
40   tablename: [{required: true, message: '表名不能为空', trigger: 'blur'}],
41 })
42 const formRef = ref() // 表单 Ref
43
44 /** 打开弹窗 */
45 const open = async (type: string, id?: number) => {
46   dialogVisible.value = true
47   dialogTitle.value = t('action.' + type)
48   formType.value = type
49   resetForm()
50   // 修改时,设置数据
51   if (id) {
52     formLoading.value = true
53     try {
54       formData.value = await MmResultTable.getMmResultTable(id)
55     } finally {
56       formLoading.value = false
57     }
58   }
59 }
60 defineExpose({open}) // 提供 open 方法,用于打开弹窗
61
62 /** 提交表单 */
63 const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
64 const submitForm = async () => {
65   // 校验表单
66   if (!formRef) return
67   const valid = await formRef.value.validate()
68   if (!valid) return
69   // 提交请求
70   formLoading.value = true
71   try {
72     const data = formData.value as unknown as MmResultTable.MmResultTableVO
73     if (formType.value === 'create') {
74       await MmResultTable.createMmResultTable(data)
75       message.success(t('common.createSuccess'))
76     } else {
77       await MmResultTable.updateMmResultTable(data)
78       message.success(t('common.updateSuccess'))
79     }
80     dialogVisible.value = false
81     // 发送操作成功的事件
82     emit('success')
83   } finally {
84     formLoading.value = false
85   }
86 }
87
88 /** 重置表单 */
89 const resetForm = () => {
90   formData.value = {
91     id: undefined,
92     tablename: undefined,
93   }
94   formRef.value?.resetFields()
95 }
96 </script>