edit.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <template>
  2. <el-dialog :title="isEdit ? '修改模版' : '添加模版'" v-model="dialogVisible" width="600px" :before-close="closeDialog" :close-on-click-modal="false">
  3. <el-form ref="formRef" :rules="formRules" :model="ruleForm" label-width="80px" style="width: 90%; margin: 0 auto">
  4. <el-form-item label="模版编码" prop="number">
  5. <el-input :disabled="isEdit" v-model="ruleForm.number" placeholder="请输入模版编码" />
  6. </el-form-item>
  7. <el-form-item label="模版名称">
  8. <el-input v-model="ruleForm.title" placeholder="请输入模版名称" />
  9. </el-form-item>
  10. <el-form-item label="状态">
  11. <el-switch v-model="ruleForm.status" inline-prompt active-text="开" inactive-text="关" :active-value="1" :inactive-value="0" width="80" />
  12. </el-form-item>
  13. <el-form-item label="备注">
  14. <el-input type="textarea" v-model="ruleForm.remarks" placeholder="请输入备注信息" />
  15. </el-form-item>
  16. </el-form>
  17. <template #footer>
  18. <el-button v-auth="'canceSaveTemplate'" @click="closeDialog()"> 取 消 </el-button>
  19. <el-button v-auth="'saveTemplate'" :loading="btnLoading" type="primary" @click="submitData"> 保 存 </el-button>
  20. </template>
  21. </el-dialog>
  22. </template>
  23. <script lang="ts" setup>
  24. import { computed, ref } from 'vue';
  25. import api from '/@/api/ice104/index';
  26. import { ElMessage } from 'element-plus';
  27. const dialogVisible = ref(false);
  28. const btnLoading = ref(false);
  29. const emit = defineEmits(['updateList']);
  30. const formRef = ref();
  31. const ruleForm = ref({
  32. number: '',
  33. title: '',
  34. status: 1,
  35. remarks: "",
  36. mode: 0
  37. })
  38. const isEdit = ref(false);
  39. const formRules = computed(() => ({
  40. number: [{ required: true, trigger: 'change', message: '请输入模版编码' }],
  41. }));
  42. const submitData = async () => {
  43. formRef.value.validate((valid: boolean) => {
  44. if (!valid) return
  45. btnLoading.value = true
  46. if (isEdit.value) {
  47. // 修改
  48. api.template.editItem({
  49. ...ruleForm.value,
  50. })
  51. .then(() => {
  52. ElMessage({ type: 'success', message: '修改成功' })
  53. emit('updateList')
  54. closeDialog()
  55. })
  56. .finally(() => (btnLoading.value = false))
  57. } else {
  58. // 新增
  59. api.template.addItem(ruleForm.value)
  60. .then(() => {
  61. ElMessage({ type: 'success', message: '添加成功' })
  62. emit('updateList')
  63. closeDialog()
  64. })
  65. .finally(() => (btnLoading.value = false))
  66. }
  67. })
  68. }
  69. /**
  70. * 关闭弹窗
  71. */
  72. const closeDialog = () => {
  73. dialogVisible.value = false;
  74. ruleForm.value = {
  75. number: '',
  76. title: '',
  77. status: 1,
  78. remarks: "",
  79. mode: 0
  80. }
  81. }
  82. const open = async (row: any) => {
  83. dialogVisible.value = true
  84. if (row && row.number.toString()) {
  85. ruleForm.value = row;
  86. isEdit.value = true;
  87. } else {
  88. isEdit.value = false;
  89. }
  90. }
  91. defineExpose({ open })
  92. </script>
  93. <style lang="scss" scoped>
  94. .width100 {
  95. width: 100%;
  96. }
  97. </style>