category.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <template>
  2. <el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')" :close-on-click-modal="false" :close-on-press-escape="false">
  3. <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="120px" label-position="top">
  4. <el-form-item label="分类名称" prop="name">
  5. <el-input v-model="formData.name" placeholder="请输入"></el-input>
  6. <div class="el-form-item-msg"></div>
  7. </el-form-item>
  8. <el-form-item label="字段名称" prop="code">
  9. <el-input v-model="formData.code" placeholder="请输入"></el-input>
  10. <div class="el-form-item-msg">只支持英文字母、数字,不支持中文</div>
  11. </el-form-item>
  12. </el-form>
  13. <template #footer>
  14. <el-button @click="visible=false" >取 消</el-button>
  15. <el-button type="primary" :loading="isSaveing" @click="submit()">保存</el-button>
  16. </template>
  17. </el-dialog>
  18. </template>
  19. <script>
  20. export default {
  21. data() {
  22. return {
  23. loading: false,
  24. mode:"add",
  25. visible: false,
  26. isSaveing: false,
  27. titleMap:{
  28. add:"新增字典分类",
  29. edit:"编辑字典分类"
  30. },
  31. rules:{
  32. name: [
  33. {required: true, message: '请输入'}
  34. ],
  35. code: [
  36. {required: true, message: '请输入'}
  37. ],
  38. },
  39. formData:{}
  40. }
  41. },
  42. methods: {
  43. open(mode = 'add'){
  44. this.mode = mode;
  45. this.visible = true;
  46. return this
  47. },
  48. //表单注入数据
  49. setData(data){
  50. this.formData = JSON.parse(JSON.stringify(data));
  51. },
  52. async submit(){
  53. var validate = await this.$refs.dialogForm.validate().catch(()=>{});
  54. if(!validate){ return false }
  55. this.isSaveing = true;
  56. var resp = await this.$API.dic.save.post(this.formData);
  57. this.isSaveing = false;
  58. if (resp.code == 0) {
  59. return this.$message.error(resp.msg);
  60. }
  61. this.$message.success(resp.msg);
  62. this.visible = false;
  63. this.formData = {};
  64. this.$emit("success");
  65. }
  66. }
  67. }
  68. </script>