Parcourir la source

Merge branch 'dev' into dev-shangfei

louhangfei il y a 1 an
Parent
commit
e7f19ff0d8

+ 1 - 0
src/api/scene/sceneOperate.ts

@@ -201,6 +201,7 @@ export interface GetListWorkshop<U, A> {
   updatedAt?: string;
   children?: U[]; //工位信息
   workshopModule?: A; //车间模板
+  workshopFuncPermissions: number[];
   // tag?: string; //场景标签  自定义  后面需要修改
 }
 

+ 3 - 1
src/components/Upload/src/BasicUpload.vue

@@ -133,7 +133,9 @@
   //组装完整图片地址
   function getImgUrl(url: string): string {
     const { imgUrl } = globSetting;
-    return /(^http|https:\/\/)/g.test(url) ? url : `${imgUrl}${url}`;
+    return /(^http|https:\/\/)/g.test(url) || url.includes('skyeye-file-upload')
+      ? url
+      : `${imgUrl}${url}`;
   }
 
   function checkFileType(fileType: string) {

+ 3 - 1
src/views/map-config/mini-map/MapBase/KonvaMap.vue

@@ -353,7 +353,9 @@
   const addBg = (imgBg) => {
     return new Promise((resolve) => {
       bgImgUrl.value = imgBg;
-      bgImg.src = urlJoin(globSetting.imgUrl!, imgBg) as string;
+      bgImg.src = imgBg.includes('skyeye-file-upload')
+        ? imgBg
+        : (urlJoin(globSetting.imgUrl!, imgBg) as string);
       bgImg.onload = () => {
         bgConfig.value.width = bgImg.width;
         bgConfig.value.height = bgImg.height;

+ 3 - 2
src/views/page-config/component/mapContainer/MapContainerSmall.vue

@@ -52,8 +52,9 @@
 
   const addBg = () => {
     return new Promise((resolve) => {
-      const imgUrl = urlJoin(globSetting.imgUrl!, props.bgImageUrl);
-      console.log('imgUrlPromise', imgUrl);
+      const imgUrl = props.bgImageUrl.includes('skyeye-file-upload')
+        ? props.bgImageUrl
+        : urlJoin(globSetting.imgUrl!, props.bgImageUrl);
 
       const tempImg = new Image();
       tempImg.src = imgUrl;

+ 3 - 1
src/views/page-config/stores/useMapEditor.ts

@@ -47,7 +47,9 @@ export const useMapEditor = defineStore('home-map-ediotr', () => {
 
   const addBg = () => {
     return new Promise((resolve) => {
-      const imgUrl = urlJoin(globSetting.imgUrl!, bgImg.value);
+      const imgUrl = bgImg.value.includes('skyeye-file-upload')
+        ? bgImg.value
+        : urlJoin(globSetting.imgUrl!, bgImg.value);
 
       const tempImg = new Image();
       tempImg.onload = () => {

+ 1 - 1
src/views/system-config/scene-manage/CompanyDrawer.vue

@@ -26,7 +26,7 @@
         <el-form-item label="上级场景" prop="seniorScene">
           <el-input v-model="ruleForm.seniorScene" style="width: 200px" disabled />
         </el-form-item>
-        <el-form-item label="公司代码" prop="code">
+        <el-form-item v-if="!props.comEdit" label="公司代码" prop="code">
           <el-input v-model="ruleForm.code" style="width: 200px" />
         </el-form-item>
         <el-form-item label="标签&模板" required>

+ 4 - 3
src/views/system-config/scene-manage/use-method.tsx

@@ -10,12 +10,13 @@ import { useGlobSetting } from '@/hooks/setting';
 const { appPCUrl } = useGlobSetting()
 
 export const colomns = [
-  { label: '场景名称', prop: 'name', width: 300 },
-  { label: '场景标签', prop: 'labelName', width: 300 },
-  { label: '代码', prop: 'code' },
+  { label: '场景名称', prop: 'name', minWidth: 300 },
+  { label: '场景标签', prop: 'labelName', minWidth: 300 },
+  // { label: '代码', prop: 'code' },
   {
     label: '预览',
     prop: 'preview',
+    minWidth: 300,
     render: ({ row, column }) => {
       if (!row.parent && row.labelList?.[0]?.id) {
         return (

+ 4 - 1
src/views/system-config/template/CardCommon.vue

@@ -6,6 +6,7 @@
       :pagesize="currentPageSize"
       :pagenumber="currentPage"
       :drawer="cardaddDrawer"
+      :tab="props.tab"
       @find-data-by-name="searchDataByName"
       @submit-drawer="addData"
       @add-form="clickAddData"
@@ -17,7 +18,7 @@
     <div style="margin-top: 20px">
       <el-table style="width: 100%" :data="tableData" highlight-current-row>
         <el-table-column :label="props.type + `名称`" prop="name" />
-        <el-table-column :label="props.type + `代码`" prop="code" />
+        <!-- <el-table-column :label="props.type + `代码`" prop="code" /> -->
 
         <el-table-column prop="status" label="状态">
           <template #default="scope">
@@ -88,6 +89,7 @@
   import { Records, SceneModule } from '@/api/template/template';
   import del from '@/assets/icons/del.png';
   import edit from '@/assets/icons/edit.png';
+  import { LabelType } from './constant';
 
   // const currentFormType = ref('场景');
 
@@ -121,6 +123,7 @@
 
   const props = defineProps<{
     type: string;
+    tab: LabelType;
     addData: (d: SceneModule) => Promise<unknown>;
     searchDataByName: (d: DataCommon) => Promise<unknown>;
     deleteTableData: (d: TableModel) => Promise<unknown>;

+ 6 - 1
src/views/system-config/template/DrawerCommon.vue

@@ -16,6 +16,11 @@
       </el-form-item>
 
       <el-form-item
+        v-if="
+          isEqual(props.detail, {}) ||
+          !props.detail.code ||
+          (props.detail.code && props.detail.code == '')
+        "
         :label="props.type === '模板' ? '模板代码' : '标签代码'"
         prop="code"
         :rules="[
@@ -57,7 +62,7 @@
   import { ref, watch } from 'vue';
   import { FormInstance } from 'element-plus';
   import { onMounted } from 'vue';
-  import { cloneDeep } from 'lodash-es';
+  import { cloneDeep, isEqual } from 'lodash-es';
 
   export interface FormModelCommon {
     id?: number;

+ 117 - 100
src/views/system-config/template/LabelManager.vue

@@ -1,121 +1,138 @@
 <template>
-    <div>
-
-        <CardCommon :type='type' :search-data-by-name="findSceneLabelFun" :get-data="getSceneLabelListFun"
-            :delete-table-data="deleteSceneLabelFun" :submit-drawer="updateSceneLabelFun" :add-data="saveSceneLabelFun">
-        </CardCommon>
-
-    </div>
+  <div>
+    <CardCommon
+      :type="type"
+      :tab="props.tab"
+      :search-data-by-name="findSceneLabelFun"
+      :get-data="getSceneLabelListFun"
+      :delete-table-data="deleteSceneLabelFun"
+      :submit-drawer="updateSceneLabelFun"
+      :add-data="saveSceneLabelFun"
+    >
+    </CardCommon>
+  </div>
 </template>
 
 <script setup lang="ts">
-import { updateSceneLabel, getSceneLabelList, deleteSceneLabel, findSceneLabelByName, saveSceneLabel, SceneLabel } from '@/api/template/template';
-import { ElMessage, ElMessageBox } from 'element-plus';
-import CardCommon, { TableModel } from './CardCommon.vue'
-import { DataCommon } from './TitleCommon.vue';
-import { ref } from 'vue';
-const type = ref('标签');
-
-
-// 添加数据
-function saveSceneLabelFun(data: SceneLabel) {
-    return saveSceneLabel(data).then(res => {
+  import {
+    updateSceneLabel,
+    getSceneLabelList,
+    deleteSceneLabel,
+    findSceneLabelByName,
+    saveSceneLabel,
+    SceneLabel,
+  } from '@/api/template/template';
+  import { ElMessage, ElMessageBox } from 'element-plus';
+  import CardCommon, { TableModel } from './CardCommon.vue';
+  import { DataCommon } from './TitleCommon.vue';
+  import { ref } from 'vue';
+  const type = ref('标签');
+
+  const props = defineProps<{
+    tab: LabelType;
+  }>();
+
+  // 添加数据
+  function saveSceneLabelFun(data: SceneLabel) {
+    return saveSceneLabel(data)
+      .then((res) => {
         console.log(res);
         return res;
-
-    }).catch(error => {
+      })
+      .catch((error) => {
         ElMessageBox.alert(error, '异常', {
-            confirmButtonText: 'OK',
-            callback: () => {
-                ElMessage({
-                    type: 'info',
-                    message: `添加数据失败`,
-                })
-            },
-        })
-    });
-};
-
-// 根据名称查找
-function findSceneLabelFun(data: DataCommon) {
+          confirmButtonText: 'OK',
+          callback: () => {
+            ElMessage({
+              type: 'info',
+              message: `添加数据失败`,
+            });
+          },
+        });
+      });
+  }
+
+  // 根据名称查找
+  function findSceneLabelFun(data: DataCommon) {
     console.log('findSceneLabelByName', data.name, data.page, data.size);
-    return findSceneLabelByName(data.name, data.page, data.size).then((res) => {
-        console.log(res)
+    return findSceneLabelByName(data.name, data.page, data.size)
+      .then((res) => {
+        console.log(res);
         return res;
-    }).catch(error => {
+      })
+      .catch((error) => {
         ElMessageBox.alert(error, '异常', {
-            confirmButtonText: 'OK',
-            callback: () => {
-                ElMessage({
-                    type: 'info',
-                    message: `查询数据失败`,
-                })
-            },
-        })
-    });
-}
-
-// 查找数据列表-finish
-function getSceneLabelListFun(data) {
-    return getSceneLabelList(data.page, data.size).then((res) => {
-        return res
-    }).catch(error => {
+          confirmButtonText: 'OK',
+          callback: () => {
+            ElMessage({
+              type: 'info',
+              message: `查询数据失败`,
+            });
+          },
+        });
+      });
+  }
+
+  // 查找数据列表-finish
+  function getSceneLabelListFun(data) {
+    return getSceneLabelList(data.page, data.size)
+      .then((res) => {
+        return res;
+      })
+      .catch((error) => {
         ElMessageBox.alert(error.message, '异常', {
-            confirmButtonText: 'OK',
-            callback: () => {
-                ElMessage({
-                    type: 'info',
-                    message: `查询数据失败`,
-                })
-            },
-        })
-    });
-}
-
-// 删除数据
-function deleteSceneLabelFun(data: TableModel) {
+          confirmButtonText: 'OK',
+          callback: () => {
+            ElMessage({
+              type: 'info',
+              message: `查询数据失败`,
+            });
+          },
+        });
+      });
+  }
+
+  // 删除数据
+  function deleteSceneLabelFun(data: TableModel) {
     console.log('detele', data);
-    return deleteSceneLabel(data.id).then(res => {
+    return deleteSceneLabel(data.id)
+      .then((res) => {
         console.log(res);
         return res;
-
-    }).catch(error => {
+      })
+      .catch((error) => {
         ElMessageBox.alert(error, '异常', {
-            confirmButtonText: 'OK',
-            callback: () => {
-                ElMessage({
-                    type: 'info',
-                    message: `删除数据失败`,
-                })
-            },
-        })
-    });
-}
-
-// 编辑数据
-function updateSceneLabelFun(data: SceneLabel) {
+          confirmButtonText: 'OK',
+          callback: () => {
+            ElMessage({
+              type: 'info',
+              message: `删除数据失败`,
+            });
+          },
+        });
+      });
+  }
+
+  // 编辑数据
+  function updateSceneLabelFun(data: SceneLabel) {
     console.log('edit', data);
-    return updateSceneLabel(data).then(res => {
+    return updateSceneLabel(data)
+      .then((res) => {
         console.log(res);
         return res;
-
-    }).catch(error => {
+      })
+      .catch((error) => {
         ElMessageBox.alert(error, '异常', {
-            confirmButtonText: 'OK',
-            callback: () => {
-                ElMessage({
-                    type: 'info',
-                    message: `编辑数据失败`,
-                })
-            },
-        })
-    });
-}
-
-
-
-
-
+          confirmButtonText: 'OK',
+          callback: () => {
+            ElMessage({
+              type: 'info',
+              message: `编辑数据失败`,
+            });
+          },
+        });
+      });
+  }
 </script>
 
-<style scoped></style>
+<style scoped></style>

+ 6 - 0
src/views/system-config/template/SceneManager.vue

@@ -2,6 +2,7 @@
   <div>
     <CardCommon
       :type="type"
+      :tab="props.tab"
       :search-data-by-name="findSceneModuleFun"
       :get-data="getSceneLabelListFun"
       :delete-table-data="deleteSceneModuleFun"
@@ -25,8 +26,13 @@
   import CardCommon, { TableModel } from './CardCommon.vue';
   import { DataCommon } from './TitleCommon.vue';
   import { ref } from 'vue';
+  import { LabelType } from './constant';
   const type = ref('模板');
 
+  const props = defineProps<{
+    tab: LabelType;
+  }>();
+
   // 添加数据
   function saveSceneModuleFun(data: SceneModule) {
     return saveSceneModule(data)

+ 12 - 8
src/views/system-config/template/TemplateManager.vue

@@ -3,13 +3,13 @@
     <div>
       <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
         <el-tab-pane label="公司模板" name="scene">
-          <SceneManagerVue />
+          <SceneManagerVue tab="scene" />
         </el-tab-pane>
         <el-tab-pane label="场景标签" name="label">
-          <LabelManagerVue />
+          <LabelManagerVue tab="label" />
         </el-tab-pane>
         <el-tab-pane label="车间模板" name="workspace">
-          <WorkspaceManagerVue />
+          <WorkspaceManagerVue tab="workspace" />
         </el-tab-pane>
       </el-tabs>
     </div>
@@ -22,9 +22,9 @@
   import LabelManagerVue from './LabelManager.vue';
   import WorkspaceManagerVue from './WorkspaceManager.vue';
   import SceneManagerVue from './SceneManager.vue';
+  import { LabelType } from './constant';
 
   const activeName = ref('scene');
-  export type LabelType = 'scene' | 'label' | 'workspace';
   const currentLabel = ref<LabelType>('scene');
 
   const handleClick = (tab: TabsPaneContext) => {
@@ -41,22 +41,26 @@
   };
 </script>
 
-<style>
-  .demo-tabs > .el-tabs__content {
+<style scoped>
+  :deep(.demo-tabs > .el-tabs__content) {
     padding: 32px;
     color: #6b778c;
     font-size: 32px;
     font-weight: 600;
   }
 
-  .el-tabs__item:hover {
+  :deep(.el-tabs__item:hover) {
     /* color: rgb(53, 120, 220); */
     background-color: rgb(53, 120, 220);
   }
 
-  .el-tabs__item.is-active {
+  :deep(.el-tabs__item.is-active) {
     /* color: rgb(221, 239, 255); */
     background-color: rgb(221, 239, 255);
     border: 3px solid #4693f1 !important;
   }
+
+  :deep(.el-tabs__header) {
+    margin: 0;
+  }
 </style>

+ 16 - 2
src/views/system-config/template/TitleCommon.vue

@@ -1,7 +1,8 @@
 <template>
   <div>
+    <div class="form-tip">{{ '提示:' + getTipByTab(props.tab) }}</div>
     <el-form inline ref="ruleFormRef" :model="form">
-      <el-form-item style="margin-top: 20px">
+      <el-form-item style="margin-top: 0px">
         <el-input
           v-model="form.name"
           :placeholder="`请输入` + props.type + `名称`"
@@ -43,12 +44,15 @@
   import { ElMessageBox, FormInstance } from 'element-plus';
   import DrawerCommonVue, { FormModelCommon } from './DrawerCommon.vue';
   import { useKeyPress } from 'vue-hooks-plus';
+  import { LabelType, getTipByTab } from './constant';
+
   export type CreateType = '添加模板' | '修改模板';
   const props = defineProps<{
     type: string;
     pagesize: number;
     pagenumber: number;
     drawer: boolean;
+    tab: LabelType;
   }>();
   const emit = defineEmits([
     'findDataByName',
@@ -125,4 +129,14 @@
   onMounted(() => {});
 </script>
 
-<style scoped></style>
+<style scoped>
+  .form-tip {
+    font-family: PingFangSC, PingFang SC;
+    font-weight: 400;
+    font-size: 12px;
+    color: #909399;
+    line-height: 38px;
+    text-align: left;
+    font-style: normal;
+  }
+</style>

+ 117 - 101
src/views/system-config/template/WorkspaceManager.vue

@@ -1,122 +1,138 @@
 <template>
-    <div>
-
-        <CardCommon :type='type' :search-data-by-name="findWorkshopModuleFun" :get-data="getWorkshopModuleListFun"
-            :delete-table-data="deleteWorkshopModuleFun" :submit-drawer="updateWorkshopModuleFun"
-            :add-data="saveWorkshopModuleFun">
-        </CardCommon>
-
-    </div>
+  <div>
+    <CardCommon
+      :type="type"
+      :tab="props.tab"
+      :search-data-by-name="findWorkshopModuleFun"
+      :get-data="getWorkshopModuleListFun"
+      :delete-table-data="deleteWorkshopModuleFun"
+      :submit-drawer="updateWorkshopModuleFun"
+      :add-data="saveWorkshopModuleFun"
+    >
+    </CardCommon>
+  </div>
 </template>
 
 <script setup lang="ts">
-import { updateWorkshopModule, getWorkshopModuleList, deleteWorkshopModule, findWorkshopModuleByName, saveWorkshopModule, WorkshopModule } from '@/api/template/template';
-import { ElMessage, ElMessageBox } from 'element-plus';
-import CardCommon, { TableModel } from './CardCommon.vue'
-import { DataCommon } from './TitleCommon.vue';
-import { ref } from 'vue';
-const type = ref('模板');
-
-
-// 添加数据
-function saveWorkshopModuleFun(data: WorkshopModule) {
-    return saveWorkshopModule(data).then(res => {
+  import {
+    updateWorkshopModule,
+    getWorkshopModuleList,
+    deleteWorkshopModule,
+    findWorkshopModuleByName,
+    saveWorkshopModule,
+    WorkshopModule,
+  } from '@/api/template/template';
+  import { ElMessage, ElMessageBox } from 'element-plus';
+  import CardCommon, { TableModel } from './CardCommon.vue';
+  import { DataCommon } from './TitleCommon.vue';
+  import { ref } from 'vue';
+  const type = ref('模板');
+
+  const props = defineProps<{
+    tab: LabelType;
+  }>();
+
+  // 添加数据
+  function saveWorkshopModuleFun(data: WorkshopModule) {
+    return saveWorkshopModule(data)
+      .then((res) => {
         console.log(res);
         return res;
-
-    }).catch(error => {
+      })
+      .catch((error) => {
         ElMessageBox.alert(error, '异常', {
-            confirmButtonText: 'OK',
-            callback: () => {
-                ElMessage({
-                    type: 'info',
-                    message: `添加数据失败`,
-                })
-            },
-        })
-    });
-};
-
-// 根据名称查找
-function findWorkshopModuleFun(data: DataCommon) {
+          confirmButtonText: 'OK',
+          callback: () => {
+            ElMessage({
+              type: 'info',
+              message: `添加数据失败`,
+            });
+          },
+        });
+      });
+  }
+
+  // 根据名称查找
+  function findWorkshopModuleFun(data: DataCommon) {
     console.log('findWorkshopModuleByName', data.name, data.page, data.size);
-    return findWorkshopModuleByName(data.name, data.page, data.size).then((res) => {
-        console.log(res)
+    return findWorkshopModuleByName(data.name, data.page, data.size)
+      .then((res) => {
+        console.log(res);
         return res;
-    }).catch(error => {
+      })
+      .catch((error) => {
         ElMessageBox.alert(error, '异常', {
-            confirmButtonText: 'OK',
-            callback: () => {
-                ElMessage({
-                    type: 'info',
-                    message: `查询数据失败`,
-                })
-            },
-        })
-    });
-}
-
-// 查找数据列表-finish
-function getWorkshopModuleListFun(data) {
-    return getWorkshopModuleList(data.page, data.size).then((res) => {
-        return res
-    }).catch(error => {
+          confirmButtonText: 'OK',
+          callback: () => {
+            ElMessage({
+              type: 'info',
+              message: `查询数据失败`,
+            });
+          },
+        });
+      });
+  }
+
+  // 查找数据列表-finish
+  function getWorkshopModuleListFun(data) {
+    return getWorkshopModuleList(data.page, data.size)
+      .then((res) => {
+        return res;
+      })
+      .catch((error) => {
         ElMessageBox.alert(error.message, '异常', {
-            confirmButtonText: 'OK',
-            callback: () => {
-                ElMessage({
-                    type: 'info',
-                    message: `查询数据失败`,
-                })
-            },
-        })
-    });
-}
-
-// 删除数据
-function deleteWorkshopModuleFun(data: TableModel) {
+          confirmButtonText: 'OK',
+          callback: () => {
+            ElMessage({
+              type: 'info',
+              message: `查询数据失败`,
+            });
+          },
+        });
+      });
+  }
+
+  // 删除数据
+  function deleteWorkshopModuleFun(data: TableModel) {
     console.log('detele', data);
-    return deleteWorkshopModule(data.id).then(res => {
+    return deleteWorkshopModule(data.id)
+      .then((res) => {
         console.log(res);
         return res;
-
-    }).catch(error => {
+      })
+      .catch((error) => {
         ElMessageBox.alert(error, '异常', {
-            confirmButtonText: 'OK',
-            callback: () => {
-                ElMessage({
-                    type: 'info',
-                    message: `删除数据失败`,
-                })
-            },
-        })
-    });
-}
-
-// 编辑数据
-function updateWorkshopModuleFun(data: WorkshopModule) {
+          confirmButtonText: 'OK',
+          callback: () => {
+            ElMessage({
+              type: 'info',
+              message: `删除数据失败`,
+            });
+          },
+        });
+      });
+  }
+
+  // 编辑数据
+  function updateWorkshopModuleFun(data: WorkshopModule) {
     console.log('edit', data);
-    return updateWorkshopModule(data).then(res => {
+    return updateWorkshopModule(data)
+      .then((res) => {
         console.log(res);
         return res;
-
-    }).catch(error => {
+      })
+      .catch((error) => {
         ElMessageBox.alert(error, '异常', {
-            confirmButtonText: 'OK',
-            callback: () => {
-                ElMessage({
-                    type: 'info',
-                    message: `编辑数据失败`,
-                })
-            },
-        })
-    });
-}
-
-
-
-
-
+          confirmButtonText: 'OK',
+          callback: () => {
+            ElMessage({
+              type: 'info',
+              message: `编辑数据失败`,
+            });
+          },
+        });
+      });
+  }
 </script>
 
-<style scoped></style>
+<style scoped></style>

+ 19 - 0
src/views/system-config/template/constant.ts

@@ -0,0 +1,19 @@
+export type LabelType = 'scene' | 'label' | 'workspace';
+
+export const templateTips = [
+  {
+    tab: 'scene',
+    tip: '决定了平台主页的页面布局、功能模块、监测数据类型,系统已进行初始化配置,请勿修改、删除。',
+  },
+  {
+    tab: 'label',
+    tip: '用于关联公司场景与模板之间的关系,实现模板的实例化。为系统底层能力,请勿修改、删除。',
+  },
+  {
+    tab: 'workspace',
+    tip: '决定了每个车间的页面布局、功能模块、监测数据类型,系统已进行初始化配置,请勿修改、删除。',
+  },
+];
+
+export const getTipByTab = (tab: LabelType) =>
+  templateTips.find((item) => item.tab === tab)?.tip || '';

+ 1 - 1
src/views/system/role/CreateDrawer.vue

@@ -13,7 +13,7 @@
       label-placement="left"
       :label-width="80"
     >
-      <el-form-item label="角色编码" prop="roleCode">
+      <el-form-item v-if="!formParams.roleId" label="角色编码" prop="roleCode">
         <el-input
           placeholder="请输入角色编码"
           v-model="formParams.roleCode"

+ 27 - 2
src/views/system/role/CreateUserDrawer.vue

@@ -13,7 +13,7 @@
       label-placement="left"
       :label-width="80"
     >
-      <el-form-item label="角色编码" prop="roleCode">
+      <el-form-item v-if="!formParams.roleId" label="角色编码" prop="roleCode">
         <el-input
           placeholder="请输入角色编码"
           v-model="formParams.roleCode"
@@ -95,6 +95,24 @@
   const { tableData } = storeToRefs(sceneInfos);
   const { getSceneDetail } = sceneInfos;
 
+  const workshopFuncPermissionMap = computed(() => {
+    const tempMap = {};
+    tableData.value.forEach((company) => {
+      const shops = company.children;
+      if (shops && shops.length) {
+        shops.forEach((shop) => {
+          let permList = [] as number[];
+          const perms = shop.workshopFuncPermissions;
+          if (perms && perms.length) {
+            permList = permList.concat(perms);
+          }
+          tempMap[shop.code!] = permList;
+        });
+      }
+    });
+    return tempMap;
+  });
+
   // 默认功能权限全部勾选,有未勾选的添加至excludeFeaturePermissionMap中:[workdshopCode]: [permission数组]
   const featurePermissionMap = {};
 
@@ -196,7 +214,14 @@
   const treeRef = ref();
   const expandedKeys = ref();
   const selectedNodeKey = ref<string>('');
-  const modeTreeData = computed(() => (selectedNodeKey.value ? modeList.value : []));
+  const modeTreeData = computed(() => {
+    const perms = workshopFuncPermissionMap.value[selectedNodeKey.value];
+    if (selectedNodeKey.value && perms && perms.length) {
+      return modeList.value.filter((item) => perms.includes(item.key));
+    } else {
+      return [];
+    }
+  });
 
   const formParams = ref<userFormParamsType>(defaultTreeValueRef());
 

+ 4 - 4
src/views/system/role/columns.ts

@@ -20,10 +20,10 @@ export const columns: BasicColumn[] = [
       );
     },
   },
-  {
-    label: '角色编码',
-    prop: 'roleCode',
-  },
+  // {
+  //   label: '角色编码',
+  //   prop: 'roleCode',
+  // },
   {
     label: '角色名称',
     prop: 'roleName',