Browse Source

系统默认角色编辑

zhangjie 1 year ago
parent
commit
5a98ea601f

+ 9 - 2
src/modules/base/components/ModifyRole.vue

@@ -20,6 +20,7 @@
           style="width: 282px"
           v-model.trim="modalForm.name"
           placeholder="请输入角色名称"
+          :disabled="modalForm.defaultRole"
           clearable
         ></el-input>
       </el-form-item>
@@ -29,6 +30,7 @@
           type="textarea"
           placeholder="建议不超过100个字"
           resize="none"
+          :disabled="modalForm.defaultRole"
           clearable
         ></el-input>
       </el-form-item>
@@ -75,6 +77,7 @@ const initModalForm = {
   interpret: "",
   dataPermissionType: null,
   privilegeIds: [],
+  defaultRole: false,
 };
 
 export default {
@@ -147,12 +150,15 @@ export default {
     },
     async visibleChange() {
       let privilegeIds = [],
-        dataPermissionInfo = [];
+        dataPermissionInfo = [],
+        disabledIds = [];
       if (this.instance.id) {
         this.modalForm = this.$objAssign(initModalForm, this.instance);
         const data = await roleBoundPrivileges(this.instance.id);
         privilegeIds = data.privilegeIds || [];
         dataPermissionInfo = data.dataPermissionInfo || [];
+        if (this.instance.defaultRole)
+          disabledIds = data.defaultPrivilegeIds || [];
         this.modalForm.privilegeIds = privilegeIds;
       } else {
         this.modalForm = { ...initModalForm };
@@ -161,7 +167,8 @@ export default {
         this.$refs.modalFormComp.clearValidate();
         this.$refs.PrivilegeSet.buildTableData(
           privilegeIds,
-          dataPermissionInfo
+          dataPermissionInfo,
+          disabledIds
         );
       });
     },

+ 11 - 1
src/modules/base/components/PrivilegeSet.vue

@@ -18,6 +18,7 @@
             <div v-else-if="col && col.type === 'page-checkbox'">
               <el-checkbox
                 v-model="row.enable"
+                :disabled="row.disabled"
                 @change="(enable) => pageSelectChange(row, enable)"
               ></el-checkbox>
             </div>
@@ -30,6 +31,7 @@
                 v-model="row.dataPermissionType"
                 class="width-200"
                 placeholder="请选择"
+                :disabled="row.disabled"
               >
                 <el-option
                   v-for="(val, key) in DATA_PRIVILEGE_TYPE"
@@ -47,6 +49,7 @@
               >
                 <el-checkbox
                   v-model="item.enable"
+                  :disabled="item.disabled"
                   @change="(enable) => typeSelectChange(row, enable)"
                   >{{ item.name }}</el-checkbox
                 >
@@ -126,7 +129,11 @@ export default {
 
       return headers;
     },
-    buildTableData(privilegeIds = [], dataPermissionInfo = []) {
+    buildTableData(
+      privilegeIds = [],
+      dataPermissionInfo = [],
+      disabledIds = []
+    ) {
       let tableData = [];
       const privColumnCount = this.showPermission ? 6 : 5;
       let tableColumnCount = this.maxDeep + privColumnCount;
@@ -164,6 +171,7 @@ export default {
                 : nav[type].map((elem) => {
                     let data = { ...elem };
                     data.enable = privilegeIds.includes(elem.id);
+                    data.disabled = disabledIds.includes(nav.id);
                     return data;
                   });
               columns[this.maxDeep + index + offsetPageSetInd] = {
@@ -178,6 +186,7 @@ export default {
             name: nav.name,
             url: nav.url,
             enable: privilegeIds.includes(nav.id),
+            disabled: disabledIds.includes(nav.id),
             dataPermissionType:
               isPage && this.showPermission && !isDisabledPermissionUrl
                 ? datePermissionMap[nav.id] || "SELF"
@@ -200,6 +209,7 @@ export default {
       this.tableData.forEach((item) => {
         if (
           item.isPage &&
+          !item.disabled &&
           this.showPermission &&
           !this.disabledPermissionUrls.includes(item.url)
         )

+ 1 - 1
src/modules/base/views/RoleManage.vue

@@ -69,7 +69,7 @@
         <el-table-column class-name="action-column" label="操作" width="180px">
           <template slot-scope="scope">
             <el-button
-              v-if="checkPrivilege('link', 'edit') && !scope.row.defaultRole"
+              v-if="checkPrivilege('link', 'edit')"
               class="btn-primary"
               type="text"
               @click="toEdit(scope.row)"