| | |
| | | <template> |
| | | <div class="p-2"> |
| | | <dialog :title="dialog.title" :model="dialog.visible" width="500px"> |
| | | <el-form ref="configFormRef" :model="formData" :rules="rules" label-width="80px"> |
| | | <el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px" v-loading="formLoading"> |
| | | <el-form-item label="参数名称" prop="configName"> |
| | | <el-input v-model="formData.configName" placeholder="请输入参数名称"/> |
| | | </el-form-item> |
| | |
| | | </el-form> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button type="primary" @click="submitForm">确 定</el-button> |
| | | <el-button @click="cancel">取 消</el-button> |
| | | <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button> |
| | | <el-button @click="dialog.visible = false">取 消</el-button> |
| | | </div> |
| | | </template> |
| | | </dialog> |
| | |
| | | <script setup lang="ts"> |
| | | // 模块导入 |
| | | import {ConfigForm} from "@/api/system/config/types"; |
| | | import {getConfig} from "@/api/system/config"; |
| | | import {addConfig, getConfig, updateConfig} from "@/api/system/config"; |
| | | |
| | | |
| | | // 接收父组件传入属性 |
| | | // const props = defineProps({}) |
| | | |
| | | // 当前组件属性 |
| | | const { proxy } = getCurrentInstance() as ComponentInternalInstance; |
| | | const dialog = reactive<DialogOption>({ |
| | | visible: false, |
| | | title: '' |
| | |
| | | const formLoading = ref(false) |
| | | // 表单的类型:create - 新增;update - 修改 |
| | | const formType = ref('') |
| | | const configFormRef = ref<ElFormInstance>(); |
| | | const formRef = ref<ElFormInstance>(); |
| | | const formData = ref<ConfigForm>({ |
| | | configId: undefined, |
| | | configName: '', |
| | |
| | | configType: "Y", |
| | | remark: '' |
| | | }) |
| | | // 当前组件方法 |
| | | const formRules = reactive({ |
| | | configName: [{ required: true, message: "参数名称不能为空", trigger: "blur" }], |
| | | configKey: [{ required: true, message: "参数键名不能为空", trigger: "blur" }], |
| | | configValue: [{ required: true, message: "参数键值不能为空", trigger: "blur" }] |
| | | }) |
| | | |
| | | /** 当前组件方法 */ |
| | | /** 窗体打开事件 */ |
| | | const open = async (type: string, id?: number) => { |
| | | dialog.visible = true |
| | | dialog.title = type |
| | | formType.value = type |
| | | // resetForm() |
| | | resetForm() |
| | | // 修改时,设置数据 |
| | | if (id) { |
| | | formLoading.value = true |
| | |
| | | } finally { |
| | | formLoading.value = false |
| | | } |
| | | // } else { |
| | | // formData.value.ownerUserId = userId |
| | | // } |
| | | } |
| | | } |
| | | |
| | | /** 重置表单 */ |
| | | const resetForm = () => { |
| | | formData.value = { |
| | | configId: undefined, |
| | | configName: '', |
| | | configKey: '', |
| | | configValue: '', |
| | | configType: "Y", |
| | | remark: '' |
| | | } |
| | | formRef.value?.resetFields() |
| | | } |
| | | // 传回给父组件的属性与方法 |
| | | // 提供 open 方法,用于打开弹窗 |
| | | defineExpose({open}) |
| | | |
| | | // 触发父组件的事件 |
| | | // const emits = defineEmits([]) |
| | | |
| | | /** 触发父组件的事件 */ |
| | | /** 定义 success 事件,用于操作成功后的回调 */ |
| | | const emit = defineEmits(['success']) |
| | | /** 提交窗体 */ |
| | | const submitForm = async () => { |
| | | // 校验表单 |
| | | if (!formRef) return |
| | | const valid = await formRef.value?.validate() |
| | | if (!valid) return |
| | | // 提交请求 |
| | | formLoading.value = true |
| | | try { |
| | | const data = formData.value as unknown as ConfigForm |
| | | if (formType.value === 'create') { |
| | | await addConfig(data) |
| | | proxy?.$modal.msgSuccess("新增参数成功"); |
| | | } else { |
| | | await updateConfig(data) |
| | | proxy?.$modal.msgSuccess("修改参数成功"); |
| | | } |
| | | dialog.visible = false |
| | | // 发送操作成功的事件 |
| | | emit('success') |
| | | } finally { |
| | | formLoading.value = false |
| | | } |
| | | } |
| | | // 初始化 |
| | | </script> |
| | | |