Event-edit.vue 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <el-dialog title="修改事件" v-model="state.dialogVisible" width="700px" draggable @close="close">
  3. <el-form :model="state.ruleForm" ref="ruleFormRef" label-width="80px" v-loading="state.loading">
  4. <el-row :gutter="10">
  5. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  6. <el-form-item label="事件名称" prop="eventName" :rules="[{ required: true, message: '请填写事件名称', trigger: 'blur' }]">
  7. <el-input v-model="state.ruleForm.eventName" placeholder="请填写事件名称" clearable></el-input>
  8. </el-form-item>
  9. </el-col>
  10. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  11. <el-form-item label="排序" prop="orderBy" :rules="[{ required: false, message: '请填写排序', trigger: 'blur' }]">
  12. <el-input-number v-model="state.ruleForm.orderBy" controls-position="right" placeholder="请填写排序" class="w100" />
  13. </el-form-item>
  14. </el-col>
  15. </el-row>
  16. </el-form>
  17. <template #footer>
  18. <span class="dialog-footer">
  19. <el-button @click="closeDialog" class="default-button">取 消</el-button>
  20. <el-button type="primary" @click="onSubmit(ruleFormRef)" :loading="state.loading">确 定 </el-button>
  21. </span>
  22. </template>
  23. </el-dialog>
  24. </template>
  25. <script setup lang="ts">
  26. import { reactive, ref } from 'vue';
  27. import { ElMessage, FormInstance } from 'element-plus';
  28. import { treeEventClassDetail, treeEventClassEdit } from '@/api/auxiliary/eventClass';
  29. // 定义子组件向父组件传值/事件
  30. const emit = defineEmits(['updateList']);
  31. // 定义变量内容
  32. const ruleFormRef = ref<FormInstance>();
  33. const state = reactive<any>({
  34. dialogVisible: false, // 弹窗显示隐藏
  35. ruleForm: {
  36. orderBy: 0,
  37. eventName: null, // 事件名称
  38. },
  39. loading: false, // 确定按钮loading
  40. });
  41. // 打开弹窗
  42. const openDialog = async (val:any) => {
  43. getDetail(val.id);
  44. };
  45. // 关闭弹窗
  46. const closeDialog = () => {
  47. state.dialogVisible = false;
  48. };
  49. const close = () => {
  50. ruleFormRef.value?.clearValidate();
  51. ruleFormRef.value?.resetFields();
  52. };
  53. // 修改
  54. const onSubmit = (formEl: FormInstance | undefined) => {
  55. if (!formEl) return;
  56. formEl.validate((valid: boolean) => {
  57. if (!valid) return;
  58. state.loading = true;
  59. treeEventClassEdit(state.ruleForm)
  60. .then(() => {
  61. emit('updateList');
  62. closeDialog(); // 关闭弹窗
  63. ElMessage.success('操作成功');
  64. state.loading = false;
  65. })
  66. .catch(() => {
  67. emit('updateList');
  68. state.loading = false;
  69. });
  70. });
  71. };
  72. // 获取详情
  73. const getDetail = (id:string) => {
  74. state.loading = true;
  75. treeEventClassDetail({id})
  76. .then((res) => {
  77. state.ruleForm = res.result;
  78. state.dialogVisible = true;
  79. state.loading = false;
  80. }).catch(()=>{
  81. state.loading = false;
  82. })
  83. }
  84. // 暴露变量
  85. defineExpose({
  86. openDialog,
  87. closeDialog,
  88. });
  89. </script>