Explorar o código

提交相关代码

Lijy hai 11 meses
pai
achega
62795cb5ab

+ 6 - 6
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/index.vue

@@ -47,14 +47,14 @@
     <div class="flex-1 p-5 overflow-auto">
       <div class="bg-white w-full h-full p-3 shadow-md rounded-md flex flex-col">
         <div class="flex justify-end pb-3">
-          <el-button type="primary" @click="editNewBusiness(false)">新建商机</el-button>
+          <el-button v-permission="['businessAddAnEdit']" type="primary" @click="editNewBusiness(false)">新建商机</el-button>
           <el-button type="primary" @click="showVisible('batchTransferVisible')"
             :disabled="batchTableData.length <= 0">批量转移</el-button>
           <el-button type="primary" @click="batchDeteleItem()" :disabled="batchTableData.length <= 0">批量删除</el-button>
           <el-button type="primary" @click="showVisible('stageSetVisible')">阶段设置</el-button>
           <el-button type="primary" @click="showVisible('deteleBusinessVisible')">回收站</el-button>
-          <el-button type="primary" @click="showVisible('importVisible')">导入</el-button>
-          <el-button type="primary" @click="exportBusinessTableList()" :loading="allLoading.exoprtLoading">导出</el-button>
+          <el-button v-permission="['businessImport']" type="primary" @click="showVisible('importVisible')">导入</el-button>
+          <el-button v-permission="['businessExport']" type="primary" @click="exportBusinessTableList()" :loading="allLoading.exoprtLoading">导出</el-button>
         </div>
         <div class="flex-1 w-full overflow-hidden">
           <el-table ref="businessTableRef" :data="businessTable" border v-loading="allLoading.businessTableLading"
@@ -70,10 +70,10 @@
             </el-table-column>
             <el-table-column label="操作" fixed="right" width="200">
               <template #default="scope">
-                <el-button link type="primary" size="large" @click="editNewBusiness(scope.row)">编辑</el-button>
-                <el-button link type="primary" size="large" @click="newTask(scope.row)">新建任务</el-button>
+                <el-button link type="primary" size="large" @click="editNewBusiness(scope.row)" v-permission="['businessAddAnEdit']">编辑</el-button>
+                <el-button link type="primary" size="large" @click="newTask(scope.row)" v-permission="['tasksAdd']">新建任务</el-button>
                 <el-button link type="danger" size="large"
-                  @click="businessDeteleItem(scope.row.id, scope.row.name)">删除</el-button>
+                  @click="businessDeteleItem(scope.row.id, scope.row.name)" v-permission="['businessAddAnEdit']">删除</el-button>
               </template>
             </el-table-column>
           </el-table>

+ 17 - 13
fhKeeper/formulahousekeeper/customerBuler-crm/src/utils/customInstructions.ts

@@ -3,22 +3,26 @@ import { Directive, ObjectDirective } from 'vue';
 // 权限控制
 const PermissionDirective: Directive = {
     mounted(el: HTMLElement, binding: { value: string[] }, vnode: any) {
-        const routePath = vnode.ctx.appContext.config.globalProperties.$route.path;
-        console.log(extractPath(routePath))
-        // const currentRoute = getCurrentInstance()?.appContext.config.globalProperties.$route;
-        // console.log('Current Route:', currentRoute);
-
-        // const permissions = binding.value;
-        // if (!Array.isArray(permissions)) {
-        //     console.error('Permissions must be provided as an array.');
-        //     return;
-        // }
-        // if (!permissions.some((permission: string) => permission === 'admin')) {
-        //     el.parentNode && el.parentNode.removeChild(el)
-        // }
+        const routePath: string = vnode.ctx.appContext.config.globalProperties.$route.path;
+        const userInfo: { userInfo: { functionList: { code: string }[] } } | null = JSON.parse(localStorage.getItem('storeInfo') || '');
+        const authorityCodes: string[] = (userInfo?.userInfo?.functionList || []).map(({ code }) => code);
+        const permissions: string[] = binding.value;
+
+        if (!Array.isArray(permissions)) {
+            console.error('权限必须以数组形式提供');
+            return;
+        }
+
+        if (!permissions.every(permission => authorityCodes.includes(permission))) {
+            el.parentNode && el.parentNode.removeChild(el);
+        }
+
+        console.log(extractPath(routePath), authorityCodes);
+        console.log(permissions, !permissions.every(permission => authorityCodes.includes(permission)))
     }
 };
 
+// input 字符串数字
 const PositiveIntegerDirective: ObjectDirective = {
     mounted(el: HTMLElement) {
         el.addEventListener('input', handleInput);