|
|
@@ -30,18 +30,16 @@
|
|
|
<div class="permission-name">场景权限</div>
|
|
|
<el-space>
|
|
|
<el-checkbox v-model:checked="isSpread" @change="packHandle">展开/收起</el-checkbox>
|
|
|
- <el-checkbox v-model="isAll" @change="handleCheckAll">全选/全不选</el-checkbox>
|
|
|
</el-space>
|
|
|
<el-divider />
|
|
|
<div style="height: 25vh">
|
|
|
<el-scrollbar>
|
|
|
<el-tree
|
|
|
ref="treeRef"
|
|
|
- show-checkbox
|
|
|
node-key="code"
|
|
|
+ :highlight-current="true"
|
|
|
:data="treeData"
|
|
|
:props="treeProps"
|
|
|
- @check="checkedTree"
|
|
|
@node-click="clickNode"
|
|
|
/>
|
|
|
</el-scrollbar>
|
|
|
@@ -51,6 +49,9 @@
|
|
|
<div class="mark-left"></div>
|
|
|
<el-card shadow="hover" class="permission-card">
|
|
|
<div class="permission-name">功能权限</div>
|
|
|
+ <el-space>
|
|
|
+ <el-checkbox v-model="isAll" @change="handleCheckAll">全选/全不选</el-checkbox>
|
|
|
+ </el-space>
|
|
|
<el-divider />
|
|
|
<div style="height: 10vh">
|
|
|
<el-scrollbar>
|
|
|
@@ -92,7 +93,7 @@
|
|
|
const { tableData, getSceneDetail } = sceneInfos;
|
|
|
|
|
|
// 默认功能权限全部勾选,有未勾选的添加至excludeFeaturePermissionMap中:[workdshopCode]: [permission数组]
|
|
|
- const excludeFeaturePermissionMap = {};
|
|
|
+ const featurePermissionMap = {};
|
|
|
|
|
|
const rules = {
|
|
|
roleCode: {
|
|
|
@@ -184,6 +185,7 @@
|
|
|
|
|
|
const message = ElMessage;
|
|
|
const formRef: any = ref(null);
|
|
|
+ const modeTreeRef = ref();
|
|
|
const isDrawer = ref(false);
|
|
|
const subLoading = ref(false);
|
|
|
const isSpread = ref(false);
|
|
|
@@ -201,6 +203,9 @@
|
|
|
|
|
|
if (nodeInfo.data.isShop) {
|
|
|
selectedNodeKey.value = tree.code;
|
|
|
+ const checkedNodes = featurePermissionMap[selectedNodeKey.value] || [];
|
|
|
+ isAll.value = checkedNodes.length === modeList.value.length;
|
|
|
+ modeTreeRef.value.setCheckedKeys(checkedNodes);
|
|
|
} else {
|
|
|
selectedNodeKey.value = '';
|
|
|
}
|
|
|
@@ -223,58 +228,67 @@
|
|
|
}
|
|
|
|
|
|
function handleCheckAll(value) {
|
|
|
+ // if (!value) {
|
|
|
+ // formParams.value.permissions = [];
|
|
|
+ // treeRef.value!.setCheckedKeys([]);
|
|
|
+ // } else {
|
|
|
+ // const allTreeNodes = treeRef.value.store._getAllNodes().map((item) => item.data.code);
|
|
|
+ // console.log('allTreeNodes', allTreeNodes.length);
|
|
|
+
|
|
|
+ // treeRef.value!.setCheckedKeys(allTreeNodes);
|
|
|
+ // }
|
|
|
if (!value) {
|
|
|
- formParams.value.permissions = [];
|
|
|
- treeRef.value!.setCheckedKeys([]);
|
|
|
+ featurePermissionMap[selectedNodeKey.value] = [];
|
|
|
} else {
|
|
|
- const allTreeNodes = treeRef.value.store._getAllNodes().map((item) => item.data.code);
|
|
|
- console.log('allTreeNodes', allTreeNodes.length);
|
|
|
-
|
|
|
- treeRef.value!.setCheckedKeys(allTreeNodes);
|
|
|
+ featurePermissionMap[selectedNodeKey.value] = modeList.value.map((item) => item.key);
|
|
|
+ modeTreeRef.value.setCheckedKeys(featurePermissionMap[selectedNodeKey.value]);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- function checkedTree(tree, checkedInfo) {
|
|
|
- console.log(tree);
|
|
|
- console.log(checkedInfo);
|
|
|
-
|
|
|
- const nodes = checkedInfo.checkedNodes;
|
|
|
- console.log('nodes', nodes);
|
|
|
-
|
|
|
- const halfKeys = checkedInfo.halfCheckedKeys;
|
|
|
- formParams.value.permissionList = checkedInfo.halfCheckedKeys;
|
|
|
- // const permissionShopNodes = nodes.filter((item) => item.isShop);
|
|
|
- // const newPerm = [] as any[];
|
|
|
- // permissionShopNodes.forEach((node) => {
|
|
|
- // modeList.value.forEach((item) => {
|
|
|
- // newPerm.push({
|
|
|
- // workshopCode: node.code,
|
|
|
- // permissionId: item.key,
|
|
|
- // });
|
|
|
- // });
|
|
|
- // });
|
|
|
- // formParams.value.permissionList = newPerm;
|
|
|
-
|
|
|
- // formParams.value.permissionList = nodes
|
|
|
- // .filter((item) => item.isShop)
|
|
|
- // .map((node) => {
|
|
|
- // return {
|
|
|
- // workshopCode: node.code,
|
|
|
- // permissionId: '0',
|
|
|
- // };
|
|
|
- // });
|
|
|
- formParams.value.permissionKeys = halfKeys;
|
|
|
- const allTreeNodes = treeRef.value.store._getAllNodes().map((item) => item.data.code);
|
|
|
- if (nodes.length < allTreeNodes.length) {
|
|
|
- isAll.value = false;
|
|
|
- } else {
|
|
|
- isAll.value = true;
|
|
|
- }
|
|
|
- }
|
|
|
+ // function checkedTree(tree, checkedInfo) {
|
|
|
+ // console.log(tree);
|
|
|
+ // console.log(checkedInfo);
|
|
|
+
|
|
|
+ // const nodes = checkedInfo.checkedNodes;
|
|
|
+ // console.log('nodes', nodes);
|
|
|
+
|
|
|
+ // const halfKeys = checkedInfo.halfCheckedKeys;
|
|
|
+ // formParams.value.permissionList = checkedInfo.halfCheckedKeys;
|
|
|
+ // formParams.value.permissionList = nodes
|
|
|
+ // .filter((item) => item.isShop)
|
|
|
+ // .map((node) => {
|
|
|
+ // return {
|
|
|
+ // workshopCode: node.code,
|
|
|
+ // permissionId: '0',
|
|
|
+ // };
|
|
|
+ // });
|
|
|
+ // formParams.value.permissionKeys = halfKeys;
|
|
|
+ // const allTreeNodes = treeRef.value.store._getAllNodes().map((item) => item.data.code);
|
|
|
+ // if (nodes.length < allTreeNodes.length) {
|
|
|
+ // isAll.value = false;
|
|
|
+ // } else {
|
|
|
+ // isAll.value = true;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ const getPermissionList = () => {
|
|
|
+ const newPerm = [] as any[];
|
|
|
+ Object.entries(featurePermissionMap).forEach((item) => {
|
|
|
+ (item[1] as number[]).forEach((key) => {
|
|
|
+ newPerm.push({
|
|
|
+ workshopCode: item[0],
|
|
|
+ permissionId: key + '',
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+ console.log(newPerm);
|
|
|
+
|
|
|
+ return newPerm;
|
|
|
+ };
|
|
|
|
|
|
function checkedModeTree(_, tree) {
|
|
|
- console.log('feat===', tree);
|
|
|
- excludeFeaturePermissionMap[selectedNodeKey.value] = tree.setCheckedKeys;
|
|
|
+ isAll.value = tree.checkedKeys.length === modeList.value.length;
|
|
|
+ featurePermissionMap[selectedNodeKey.value] = tree.checkedKeys;
|
|
|
}
|
|
|
|
|
|
function openDrawer(roleId?) {
|
|
|
@@ -296,9 +310,9 @@
|
|
|
if (!valid) {
|
|
|
return message.error('请填写完整信息');
|
|
|
}
|
|
|
- if (formParams.value.roleId) {
|
|
|
- console.log('bianji');
|
|
|
+ formParams.value.permissionList = getPermissionList();
|
|
|
|
|
|
+ if (formParams.value.roleId) {
|
|
|
const updateData = {
|
|
|
permissionList: formParams.value.permissionList,
|
|
|
remark: formParams.value.remark,
|
|
|
@@ -337,7 +351,18 @@
|
|
|
treeRef.value!.setCheckedKeys([]);
|
|
|
// isAll.value = false;
|
|
|
}
|
|
|
- const selectNodes = ref<string[]>([]);
|
|
|
+ function setFeaturePermission(permissionList) {
|
|
|
+ for (const item of permissionList) {
|
|
|
+ console.log(item);
|
|
|
+
|
|
|
+ if (featurePermissionMap[item.workshopCode]) {
|
|
|
+ featurePermissionMap[item.workshopCode].push(item.permissionId);
|
|
|
+ } else {
|
|
|
+ featurePermissionMap[item.workshopCode] = [item.permissionId];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // const selectNodes = ref<string[]>([]);
|
|
|
function getInfo() {
|
|
|
roleUserInfo({ roleId: formParams.value.roleId }).then((res) => {
|
|
|
const info = {
|
|
|
@@ -350,11 +375,12 @@
|
|
|
};
|
|
|
formParams.value = info;
|
|
|
isDrawer.value = true;
|
|
|
- nextTick(() => {
|
|
|
- selectNodes.value = res.permissionMap.map((item) => item.workshopCode);
|
|
|
- // 将匹配到的节点的键值数组传递给 setCheckedKeys 方法
|
|
|
- treeRef.value.setCheckedKeys(selectNodes.value);
|
|
|
- });
|
|
|
+ setFeaturePermission(res.permissionMap);
|
|
|
+ // nextTick(() => {
|
|
|
+ // selectNodes.value = res.permissionMap.map((item) => item.workshopCode);
|
|
|
+ // // 将匹配到的节点的键值数组传递给 setCheckedKeys 方法
|
|
|
+ // treeRef.value.setCheckedKeys(selectNodes.value);
|
|
|
+ // });
|
|
|
});
|
|
|
}
|
|
|
|
|
|
@@ -400,4 +426,7 @@
|
|
|
:deep(.permission-card .el-card__body) {
|
|
|
padding-top: 0;
|
|
|
}
|
|
|
+ :deep(.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content) {
|
|
|
+ color: #409eff;
|
|
|
+ }
|
|
|
</style>
|