28e5b29392cab51e0ca2771b34520b567335c087.svn-base 4.0 KB

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