Blame view

ant-design-vue-base/src/views/system/modules/RoleModal.vue 3.96 KB
1a2d344e   wxy   初始化项目
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
  <template>
    <a-modal
      :title="title"
      :width="800"
      :visible="visible"
      :confirmLoading="confirmLoading"
      @ok="handleOk"
      @cancel="handleCancel"
      cancelText="关闭"
      wrapClassName="ant-modal-cust-warp"
      style="top:5%;height: 85%;overflow-y: hidden">
  
      <a-spin :spinning="confirmLoading">
        <a-form-model ref="form"  v-bind="layout"  :model="model" :rules="validatorRules">
          <a-form-model-item label="角色编码" required prop="roleCode">
            <a-input v-model="model.roleCode" :disabled="roleDisabled"  placeholder="请输入角色编码"/>
          </a-form-model-item>
          <a-form-model-item label="角色名称" required prop="roleName">
            <a-input v-model="model.roleName" placeholder="请输入角色名称"/>
          </a-form-model-item>
          <a-form-model-item label="描述" prop="description">
            <a-textarea :rows="5" v-model="model.description" placeholder="请输入角色描述"/>
          </a-form-model-item>
        </a-form-model>
      </a-spin>
    </a-modal>
  </template>
  
  <script>
    import {addRole,editRole,duplicateCheck } from '@/api/api'
    export default {
      name: "RoleModal",
      data () {
        return {
          title:"操作",
          visible: false,
          roleDisabled: false,
          model: {},
          layout: {
            labelCol: { span: 3 },
            wrapperCol: { span: 14 },
          },
          confirmLoading: false,
          validatorRules:{
            roleName: [
              { required: true, message: '请输入角色名称!' },
              { min: 2, max: 30, message: '长度在 2  30 个字符', trigger: 'blur' }
            ],
            roleCode: [
              { required: true, message: '请输入角色名称!'},
              { min: 0, max: 64, message: '长度不超过 64 个字符', trigger: 'blur' },
              { validator: this.validateRoleCode}
            ],
            description: [
              { min: 0, max: 126, message: '长度不超过 126 个字符', trigger: 'blur' }
            ]
          },
        }
      },
      created () {
        //备份model原始值
        this.modelDefault = JSON.parse(JSON.stringify(this.model));
      },
      methods: {
        add () {
          this.edit(this.modelDefault);
        },
        edit (record) {
          this.model = Object.assign({}, record);
          this.visible = true;
          //编辑页面禁止修改角色编码
          if(this.model.id){
            this.roleDisabled = true;
          }else{
            this.roleDisabled = false;
          }
        },
        close () {
          this.$refs.form.clearValidate();
          this.$emit('close');
          this.visible = false;
        },
        handleOk () {
          const that = this;
          // 触发表单验证
          this.$refs.form.validate(valid => {
            if (valid) {
              that.confirmLoading = true;
              let obj;
              if(!this.model.id){
                obj=addRole(this.model);
              }else{
                obj=editRole(this.model);
              }
              obj.then((res)=>{
                if(res.success){
                  that.$message.success(res.message);
                  that.$emit('ok');
                }else{
                  that.$message.warning(res.message);
                }
              }).finally(() => {
                that.confirmLoading = false;
                that.close();
              })
            }else{
              return false;
            }
          })
        },
        handleCancel () {
          this.close()
        },
        validateRoleCode(rule, value, callback){
          if(/[\u4E00-\u9FA5]/g.test(value)){
            callback("角色编码不可输入汉字!");
          }else{
            let params = {
              tableName: "sys_role",
              fieldName: "role_code",
              fieldVal: value,
              dataId: this.model.id,
            };
            duplicateCheck(params).then((res)=>{
              if(res.success){
                callback();
              }else{
                callback(res.message);
              }
            });
          }
        }
      }
    }
  </script>
  
  <style scoped>
  
  </style>