فهرست منبع

Merge branch 'release/v2.4.0' into 'develop'

Release/v2.4.0

See merge request dcuc-tjdsj/auth-web!42
林倩 3 سال پیش
والد
کامیت
c8f3577cef

+ 2 - 1
config/dev.env.js

@@ -35,7 +35,8 @@ module.exports = merge(prodEnv, {
         "/dcucauth": {
             // target: "http://10.11.1.237:8861"
             // target: "http://10.254.11.203:8861"
-             target: "http://192.168.10.2:8871"
+            //  target: "http://192.168.10.2:8871"
+             target: "http://192.168.6.133:3471"
 
         }
     })

+ 6 - 6
package-lock.json

@@ -15174,9 +15174,9 @@
       }
     },
     "ui-component-v4": {
-      "version": "1.2.41",
-      "resolved": "http://192.168.6.13:8082/repository/npm_all/ui-component-v4/-/ui-component-v4-1.2.41.tgz",
-      "integrity": "sha512-PWyWCEMjhGIo6ErYQWUXcP49DyLxe0l9pc0kapzxODvR3+LDhhIy4a7eIkGiRNRifSENvLLbVYWttooJEyGvEQ==",
+      "version": "1.2.43",
+      "resolved": "http://192.168.6.13:8082/repository/npm_all/ui-component-v4/-/ui-component-v4-1.2.43.tgz",
+      "integrity": "sha512-38CcMrNUREK2Nl9EvOvApbyPxac2q3mm4Xx6aId5rh3BzN+eMGewlrgHN2+iJndCY5jG7Nbn6Zu/BUx050I8NA==",
       "requires": {
         "async-validator": "~1.8.1",
         "babel-helper-vue-jsx-merge-props": "^2.0.0",
@@ -15536,9 +15536,9 @@
       }
     },
     "viewerjs": {
-      "version": "1.10.0",
-      "resolved": "http://192.168.6.13:8082/repository/npm_all/viewerjs/-/viewerjs-1.10.0.tgz",
-      "integrity": "sha1-bc1pO1SN1tfINxsZMTbR6uGAYh8="
+      "version": "1.10.1",
+      "resolved": "http://192.168.6.13:8082/repository/npm_all/viewerjs/-/viewerjs-1.10.1.tgz",
+      "integrity": "sha1-B0me0EPQop4wArkPVcWyKL0adCw="
     },
     "vinyl": {
       "version": "0.5.3",

+ 1 - 1
package.json

@@ -41,7 +41,7 @@
     "postcss-salad": "^2.0.1",
     "request": "^2.88.2",
     "screenfull": "^4.0.0",
-    "ui-component-v4": "^1.2.41",
+    "ui-component-v4": "^1.2.43",
     "ui-gojs": "^2.1.9",
     "ui-jz-v4-common": "^1.2.222",
     "vue": "2.6.10",

+ 11 - 3
src/api/permission-selfhelp-manage.js

@@ -33,9 +33,9 @@ export function allAppFuncTree() {
   return request({
     url: `/authsvr/v2/appfuninfo/allMenuTree`,
     method: 'GET',
-    // params: {
-    //   exclude: true
-    // }
+    params: {
+      exclude: true // 去除角色授权的菜单
+    }
   });
 }
 
@@ -127,3 +127,11 @@ export function getFlowDefine(applyType) {
     }
   });
 }
+// 判断应用功能菜单是否重复申请
+export function checkAppFunRepeat(params) {
+  return request({
+     url: `${baseUrl}/funApplyRepeatCheck`,
+     method: "GET",
+     params
+  })
+}

+ 13 - 0
src/assets/style/project.scss

@@ -8,6 +8,19 @@
 	width: 100% !important;
 }
 
+/* 控制悬浮最大宽度
+-------------------------- */
+.el-tooltip__popper {
+    max-width: 600px;
+}
+.layui-layer-setwin .layui-layer-min {
+	opacity: 0;
+    pointer-events: none
+}
+// .layui-layer-setwin:nth-child(1) {
+// 	display: none;
+// }
+
 // // 重置滚动条样式
 // ::-webkit-scrollbar {
 //     width: 17px;

+ 0 - 1
src/pages/common/table/index.vue

@@ -8,7 +8,6 @@
     ref="grid"
     row-key="id"
     border
-    :auto-page="(h) => h * 0.6"
     :expand-row-keys="expands"
     @change-current="handleChangeCurrent"
     @change-size="handleChangeSize"

+ 1 - 5
src/pages/common/transfer-tree/mixin.js

@@ -36,8 +36,8 @@ export default {
       _treeData.forEach(item => {
         item[this.pidName] = 0;
       });
-
       // 构造除去反向选中值 `this.unselectedKeyValue` 的目标树数据
+      console.log("tar", this.constructTreeBox(this.unselectedKeyValue, _treeData));
       return this.constructTreeBox(this.unselectedKeyValue, _treeData);
     },
     /**
@@ -96,22 +96,18 @@ export default {
       let _treeData = _.cloneDeep(this.dataSource);
       let _selectedKey = _.difference(this.allKeyValue(true), this.selectedKeyValue);
       let self = this;
-
       // 递归获取选中的 key 值(包含父级的)
       function getSelectedKeyValue(data, key) {
         // 初始化数据
         let _treeData = _.cloneDeep(data);
-
         _treeData.map(base => {
           // 检测子节点数据是否存在
           if (base[self.childrenName] && base[self.childrenName].length > 0) {
             // 若存在,则进行递归,获取子节点
             getSelectedKeyValue(base[self.childrenName], base[self.valueName]);
           }
-
           return base;
         });
-
         // 计算同级的数量
         let _count = 0;
         _selectedKey.forEach(item => {

+ 1 - 1
src/pages/empower-manage/institutional-quotas-manage/edit.vue

@@ -525,7 +525,7 @@ export default {
                 res.dfpNum = 0;
                 res.initNum = 0;
                 res.initNumOld = 0;
-                if (res.parent == true) {
+                if (res.parent == true || res.isParent == true) {
                     res.hasChildren = true;
                 }
                 res.id = res.id ? res.id : this.treeFirst;

+ 2 - 2
src/pages/empower-manage/institutional-quotas-manage/index.vue

@@ -9,7 +9,7 @@
       <el-form-item label="单位名称">
         <select-tree
           ref="selectTree"
-          api-name="getOrgTree"
+          api-name="getTree"
           @submitTreeValue="getTreeValue"
           nodeKey="id"
           placeholder="请选择单位名称"
@@ -57,7 +57,7 @@ export default {
       tableUrl,
       titleData: [
         {
-          label: '应用角色',
+          label: '应用系统角色',
           prop: 'roles',
           fixed: 'right'
         }

+ 1 - 0
src/pages/permission-selfhelp-manage/DataConfig.js

@@ -1,3 +1,4 @@
+
 export const tableHeader = [
   {
     label: '流程标题',

+ 31 - 16
src/pages/permission-selfhelp-manage/component/app-func-form.vue

@@ -12,7 +12,6 @@
       v-model="selectedValue"
       :data="data"
       children-name="child"
-      pid-name="p"
       :open-all="false"
       :transfer-open-node="true"
       :filter-node-from="handleSearch"
@@ -37,7 +36,9 @@ export default {
       type: Boolean,
       default: false
     },
-    type: String
+    type: String,
+    // 审批单编号
+    applicantOrdNo: String
   },
   components: { transferTree },
   data() {
@@ -69,9 +70,10 @@ export default {
     },
     // 树节点转成文字
     nodeTransferLabel(keys, tree) {
+      // 需要过滤匹配不到的
       const funcAttr = keys.map((item) => {
         return this.findIndexArray(tree, item, []);
-      });
+      }).filter(item => item !== false);
       let attr = [];
       for (let i = 0; i < funcAttr.length; i++) {
         const element = funcAttr[i].join('/');
@@ -82,18 +84,17 @@ export default {
     handleCancel() {
       this.$emit('close');
     },
-    handleSubmit() {
-      // 申请访问的资源,剔除已经申请过的资源
+    async handleSubmit() {
+      // 申请访问的资源,剔除已经申请过的资源,不包含父级节点
       const applyKeys = this.selectedValue.filter((item) => !this.havefunIdsOnlyChild.includes(item));
+      // 将节点转成文字
       const approveContent = this.nodeTransferLabel(applyKeys, this.$refs.transferTree.targetData);
       // 撤销的资源, 已有资源与已选资源作比对
       const cancelKeys = this.havefunIdsOnlyChild.filter((item) => !this.selectedValue.includes(item));
       const cancelContent = this.nodeTransferLabel(cancelKeys, this.data);
-      // const completeContent = `${approveContent}'\n'${cancelContent}`
-      // 获取目标树所有的key,包含父节点
+      // 已选节点 = 获取目标树所有的key,包含父节点
       const allKeys = this.$refs.transferTree.allKeyValue(false, this.$refs.transferTree.targetData);
-      // 实际保存的节点,剔除应用节点
-      const resourceInfos = allKeys
+      const allResourceInfo = allKeys
         .map((item) => this.$refs.transferTree.$refs['to-tree'].getNode(item).data)
         .map((item) => {
           return {
@@ -102,21 +103,35 @@ export default {
           };
         })
         .filter((item) => item.appId);
-      // 需要验证重复申请的资源,剔除该用户已经拥有的资源
-      const validRepeatNode = resourceInfos
-        .filter((item) => !this.havefunIds.includes(item.funId))
-        .map((item) => item.funId);
+      // 新增的节点 = 剔除该用户已经拥有的资源
+      const resourceInfos = allResourceInfo.filter((item) => !this.havefunIds.includes(item.funId));
 
+      // 撤销的节点 = 已有节点 - (已选节点 - 新增节点 )
+      // 已有的节点去除撤销的节点,包含父节点
+      const resourceKeys = allResourceInfo.map((item) => item.funId);
+      const haveFuncKeysExcludeCancel = allResourceInfo
+        .filter((item) => !resourceKeys.includes(item))
+        .map((item) => item.funId);
+      const cancelResourceKeys = this.havefunIds.filter((item) => !haveFuncKeysExcludeCancel.includes(item));
+      const cancelResourceInfos = cancelResourceKeys
+        .map((item) => this.$refs.transferTree.$refs['from-tree'].getNode(item).data)
+        .map((item) => {
+          return {
+            appId: item.appId,
+            funId: item.id
+          };
+        })
+        .filter((item) => item.appId);
       // 已选资源有变更,则可以直接保存,无变更,则需要至少选中一条
       // 判断有无变更的标准:resourceInfos的funId 与getSetFunIdsByUser方法返回的已选资源id作匹配
       if (applyKeys.length == 0 && cancelKeys.length == 0) {
         this.$message.warning('已选资源无变更。');
       } else {
-        this.$emit('success', approveContent, cancelContent, this.selectedValue, resourceInfos);
+        this.$emit('success', approveContent, cancelContent, this.selectedValue, resourceInfos, cancelResourceInfos);
       }
     },
+
     handleSearch(value, data) {
-      console.log(value, data.label);
       if (!value) return true;
       return data.label.indexOf(value) !== -1;
     },
@@ -151,7 +166,7 @@ export default {
             keys.push(key);
             return;
           } else {
-            if (item.child.length > 0) {
+            if (item.child && item.child.length > 0) {
               filterParentKey(item.child, key);
             } else {
               return;

+ 125 - 47
src/pages/permission-selfhelp-manage/component/basic-form.vue

@@ -100,7 +100,7 @@
         </dg-col>
         <dg-col :span="12" v-if="isDetail">
           <el-form-item label="创建时间:">
-            {{ sizeForm.createTime }} 
+            {{ sizeForm.createTime }}
           </el-form-item>
         </dg-col>
         <dg-col :span="12" v-if="sizeForm.applyType == 'SERVICE_AUTH'">
@@ -119,7 +119,9 @@
           <el-form-item label="审批内容:" class="self-form-item" prop="flowContent">
             <div style="display: flex" v-if="!isDetail">
               <el-input type="textarea" :autosize="{ minRows: 5 }" :value="flowContentStr" :disabled="true"></el-input>
-              <dg-button style="margin-left: 10px" @click="handleChoice" v-if="sizeForm.applyType">选择</dg-button>
+              <dg-button style="margin-left: 10px" @click="handleChoice" v-if="sizeForm.applyType && !this.repeatApply"
+                >选择</dg-button
+              >
             </div>
             <div v-else>
               {{ flowContentStr }}
@@ -172,7 +174,7 @@
           </dg-col>
         </div>
       </dg-row>
-      <dg-row>
+      <!-- <dg-row>
         <dg-col :span="24">
           <el-form-item label="权限有效期:" prop="permissionValidType">
             <div v-if="isDetail">
@@ -195,14 +197,12 @@
                 </dg-col>
                 <dg-col :span="10">
                   <dg-date-picker
-                    :start-value.sync="sizeForm.startTime"
-                    :end-value.sync="sizeForm.endTime"
+                    v-model="dateRange"
                     type="daterange"
                     range-separator="至"
                     start-placeholder="开始日期"
                     end-placeholder="结束日期"
-                    value-format="yyyy-MM-dd HH:mm:ss"
-                    :default-time="['00:00:00', '23:59:59']"
+                    value-format="yyyy-MM-dd"
                     v-show="sizeForm.permissionValidType !== '02'"
                     :picker-options="pickerOptions"
                     clearable
@@ -214,7 +214,7 @@
             </div>
           </el-form-item>
         </dg-col>
-      </dg-row>
+      </dg-row> -->
       <!-- v1.0.0不实现 -->
       <!-- <dg-row>
                 <dg-col :span="12">
@@ -253,6 +253,19 @@
         <dg-button type="primary" @click="handleSubmit">提交</dg-button>
       </div>
     </div>
+    <!-- 重复申请提示框 -->
+    <dg-dialog title="提示" :visible.sync="visible" width="450px" :modal="false">
+      <p class="repeatContent">
+        您存在待审批的审批单,审批单号:
+        <span @click="handleOpenDetail">
+          {{ repeatApply }}
+        </span>
+        ,无法申请,请等待审批后再进行资源申请。
+      </p>
+      <span slot="footer" class="dialog-footer">
+        <dg-button @click="visible = false">关闭</dg-button>
+      </span>
+    </dg-dialog>
   </div>
 </template>
 
@@ -289,7 +302,7 @@ export default {
     // 验证有效期间
     const checkPermissionValid = (rule, val, callback) => {
       if (val == '01') {
-        if (!this.sizeForm.startTime && !this.sizeForm.endTime) {
+        if (!this.dateRange) {
           return callback(new Error('请选择开始时间和结束时间'));
         } else {
           callback();
@@ -333,6 +346,7 @@ export default {
           code: '02'
         }
       ],
+      dateRange: "",
       pickerOptions: {
         disabledDate(currentDate) {
           return currentDate.getTime() < Date.now() - 8.64e7;
@@ -357,7 +371,9 @@ export default {
           cancelText: '申请撤销服务:'
         }
       },
-      needFilter: true
+      needFilter: true,
+      visible: false,
+      repeatApply: ''
     };
   },
   components: {},
@@ -380,37 +396,63 @@ export default {
   watch: {
     'sizeForm.applyType': {
       handler(val) {
-        let component;
-        if (val == 'DATA_AUTH') {
-          component = dataSourceForm;
-        } else if (val == 'SERVICE_AUTH') {
-          component = serviceSourceForm;
-        } else {
-          component = appFuncForm;
+        if (val) {
+          let component;
+          if (val == 'DATA_AUTH') {
+            component = dataSourceForm;
+          } else if (val == 'SERVICE_AUTH') {
+            component = serviceSourceForm;
+          } else {
+            component = appFuncForm;
+          }
+          this.applyContentCom = component;
         }
-        this.applyContentCom = component;
       }
     }
   },
   methods: {
-    // 获取流程名称
-    getProcessName(val) {
-      Api.getFlowDefine(val).then((res) => {
-        const { content, result, msg } = res.data;
-        if (result == '200') {
-          this.sizeForm.processName = content.processName;
-          this.sizeForm.businessCode = content.businessCode;
-          this.sizeForm.processType = content.processTypeCode;
-          // 审批单标题 = 流程名称 + 申请人姓名 + 日期
-          this.sizeForm.flowTitle = `${content.processName}-${this.sizeForm.applicantName}-${moment().format(
-            'YYYY-MM-DD'
-          )}`;
-        } else {
-          this.$message.warning(msg);
+    handleOpenDetail() {
+      const layer = this.$dgLayer({
+        title: '详情',
+        props: {
+          applyOrdNo: this.repeatApply,
+          type: 'detail'
+        },
+        content: require('./detail.vue'),
+        area: ['1280px', '900px'],
+        on: {
+          success(params) {
+            layer.close(layer.dialogIndex);
+          },
+          close() {
+            layer.close(layer.dialogIndex);
+          }
         }
       });
     },
-    // 切换审批类型,清空审批内容
+    // 获取流程名称
+    getProcessName(val) {
+      // 暂时处理: 服务和数据资源暂不开放,直接提示‘功能设计中,敬请期待!’
+      if (val == 'APP_FUN_AUTH') {
+        Api.getFlowDefine(val).then((res) => {
+          const { content, result, msg } = res.data;
+          if (result == '200') {
+            this.sizeForm.processName = content.processName;
+            this.sizeForm.businessCode = content.businessCode;
+            this.sizeForm.processType = content.processTypeCode;
+            // 审批单标题 = 流程名称 + 申请人姓名 + 日期
+            this.sizeForm.flowTitle = `${content.processName}-${this.sizeForm.applicantName}-${moment().format(
+              'YYYY-MM-DD'
+            )}`;
+          } else {
+            this.$message.warning(msg);
+          }
+        });
+      } else {
+        this.$message.warning('功能设计中,敬请期待!');
+      }
+    },
+    // 切换审批类型,判断是否存在未审批的单,清空审批内容
     handleChangeApplyType(val) {
       this.sizeForm.flowContent = '';
       this.sizeForm.resourceInfos = [];
@@ -439,21 +481,34 @@ export default {
       }
     },
     save() {
-      const { resourceInfos, applyId, userType, userName, userCode, ...otherInfo } = this.sizeForm;
+      const { resourceInfos, delResourceInfos, applyId, userType, userName, userCode, ...otherInfo } = this.sizeForm;
       let params = {
-        resourceInfos
+        resourceInfos,
+        delResourceInfos
       };
       let api = '';
-
+      if (this.sizeForm.permissionValidType == '01') {
+        this.sizeForm.startTime = this.dateRange[0];
+        this.sizeForm.endTime = this.dateRange[1];
+      }
       if (this.type == 'add') {
         params['workFlow'] = otherInfo;
         api = 'savePermissionApply';
       } else {
-        const { permissionValidType, operateType, applicantPhoneNo, applyReason, startTime, endTime, flowContent } =
-          this.sizeForm;
+        const {
+          permissionValidType,
+          operateType,
+          applicantPhoneNo,
+          applyReason,
+          startTime,
+          endTime,
+          flowContent,
+          delResourceInfos
+        } = this.sizeForm;
         // 只选可编辑的字段
         params = {
           resourceInfos,
+          delResourceInfos,
           permissionValidType,
           operateType,
           applicantPhoneNo,
@@ -467,12 +522,17 @@ export default {
       }
 
       Api[api](params).then((res) => {
-        if (this.sizeForm.operateType == '2') {
-          this.$message.success('提交成功!');
+        const { result, msg } = res.data;
+        if (result == '200') {
+          if (this.sizeForm.operateType == '2') {
+            this.$message.success('提交成功!');
+          } else {
+            this.$message.success('保存成功!');
+          }
+          this.$emit('success');
         } else {
-          this.$message.success('保存成功!');
+          this.$message.error(msg);
         }
-        this.$emit('success');
       });
     },
     // 选择
@@ -485,13 +545,15 @@ export default {
         props: {
           selectKeys: this.applySelectKeys,
           needFilter: this.needFilter,
-          type: this.type
+          type: this.type,
+          applicantOrdNo: this.applyOrdNo
         },
         content: this.applyContentCom,
         area: ['1200px', '700px'],
         on: {
-          success(visitResourceName, cancelResourceName, selectKeys, resourceInfos = []) {
+          success(visitResourceName, cancelResourceName, selectKeys, resourceInfos = [], delResourceInfos = []) {
             vm.sizeForm.resourceInfos = resourceInfos;
+            vm.sizeForm.delResourceInfos = delResourceInfos;
             vm.applySelectKeys = selectKeys;
             const visitorName =
               vm.sizeForm.applyType !== 'SERVICE_AUTH' ? vm.sizeForm.applicantName : vm.sizeForm.applyId;
@@ -549,13 +611,22 @@ export default {
         needFlowInfo: true
       };
       Api.applyDetail(params).then((res) => {
-        const { workFlow, resourceInfos, ...otherInfo } = res.data.content;
+        const { workFlow, resourceInfos, existResourceInfos, delResourceInfos, ...otherInfo } = res.data.content;
         this.sizeForm = {
           ...workFlow,
           resourceInfos,
+          delResourceInfos,
           ...otherInfo
         };
-        this.applySelectKeys = this.sizeForm.resourceInfos.map((item) => item.funId);
+        if (this.sizeForm.permissionValidType == '01') {
+           this.dateRange = [this.sizeForm.startTime, this.sizeForm.endTime];
+        }
+        const delResourceInfoIds = delResourceInfos.map((item) => item.funId);
+        // 默认选中节点 = 新增节点 + ( 已有节点 - 欲撤销节点 )
+        this.applySelectKeys = [
+          ...resourceInfos,
+          ...existResourceInfos.filter((item) => !delResourceInfoIds.includes(item.funId))
+        ].map((item) => item.funId);
         this.show = true;
       });
     }
@@ -581,6 +652,7 @@ export default {
         startTime: '',
         endTime: '',
         resourceInfos: [],
+        delResourceInfos: [],
         applyId: '', // 应用方
         userType: '',
         userName: '',
@@ -598,5 +670,11 @@ export default {
 };
 </script>
 <style scoped lang="scss">
-// @import './index.scss';
+.repeatContent {
+  color: rgba(0, 0, 0, 0.85);
+  span {
+    color: #1890ff;
+    cursor: pointer;
+  }
+}
 </style>

+ 1 - 1
src/pages/permission-selfhelp-manage/component/process-status/index.vue

@@ -17,7 +17,7 @@
                         <dg-table-column label="操作状态" prop="operateState" width="180">
                             <template slot-scope="{row}">
                                 <span v-if="row.operateState"><i class="el-icon-success" style="color:#67c23a"></i> 已办</span>
-                                <span v-else><i class="el-icon-warning" style="#f04134"></i> 未办</span>
+                                <span v-else><i class="el-icon-warning" style="color:#f04134"></i> 未办</span>
                             </template>
                         </dg-table-column>
                         <dg-table-column label="接收时间" prop="receiveTime"></dg-table-column>

+ 1 - 2
src/pages/permission-selfhelp-manage/index.vue

@@ -49,7 +49,7 @@
             <el-tooltip content="编辑" effect="dark" placement="top-end" v-if="row.showEdit">
               <i class="el-icon-edit" @click="handleApplyPermission(row.applyOrdNo)"></i>
             </el-tooltip>
-            <el-tooltip content="撤回" effect="dark" placement="top-end" v-if="row.showRecall">
+            <el-tooltip content="撤回" effect="dark" placement="top-end" v-if="row.showBack">
               <i class="el-icon-back" @click="handleRecall(row)"></i>
             </el-tooltip>
             <el-tooltip content="删除" effect="dark" placement="top-end">
@@ -61,7 +61,6 @@
     </Table>
   </div>
 </template>
-
 <script>
 import Table from '@/pages/common/table';
 import { tableHeader } from './DataConfig';

+ 1 - 1
src/pages/service-delegate/index.vue

@@ -90,7 +90,7 @@ export default {
                 {label: "创建时间", prop: "createTime"}
             ],
             optList: [
-                // {icon: "el-icon-edit", tooltip: "修改", on: that.handleEditor},
+                {icon: "el-icon-edit", tooltip: "修改", on: that.handleEditor},
                 {icon: "el-icon-document", tooltip: "详情", on: that.handleDetail},
                 {icon: "el-icon-delete", tooltip: "删除", on: that.handleDelete}
             ],

+ 0 - 1
src/pages/user-manage/police-manage/index.vue

@@ -18,7 +18,6 @@
                 <el-form
                     ref="form"
                     label-width="75px"
-                    f
                     label-suffix=":"
                     label-position="left"
                     class="police-form"

+ 2 - 2
src/router/index.js

@@ -122,13 +122,13 @@ export const asyncRouterMap = [
     path: '/permission-selfhelp-manage',
     component: Layout,
     redirect: '/permission-selfhelp-manage/init',
-    meta: { title: '权限自助管理', icon: 'el-icon-goods', noCache: true, permission: ['QXGL_QXZUGL'] },
+    meta: { title: '权限自助管理', icon: 'el-icon-goods', noCache: true},
     children: [
       {
         path: 'init',
         component: () => import('@/pages/permission-selfhelp-manage'),
         name: 'permission-selfhelp-manage',
-        meta: { title: '权限自助管理', noCache: true, permission: ['QXGL_QXZUGL'] }
+        meta: { title: '权限自助管理', noCache: true}
       }
     ]
   },