zhudie hace 2 años
padre
commit
1820213b9e
Se han modificado 3 ficheros con 152 adiciones y 31 borrados
  1. 38 3
      src/api/system/role.ts
  2. 111 26
      src/views/system/role/CreateUserDrawer.vue
  3. 3 2
      src/views/system/role/role.vue

+ 38 - 3
src/api/system/role.ts

@@ -11,19 +11,43 @@ export function addAdminRole(params) {
   });
 }
 
+export interface RoleType<T> {
+  permissionList?: T[];
+  remark?: string;
+  roleName?: string;
+  roleCode?: string;
+  roleId?: number;
+}
+
+export interface PermissionType {
+  workshopCode: string;
+  permissionId: string;
+}
+
 /**
  * @description: 添加用户角色
  */
-export function addRole(params) {
+export function addRole(params: RoleType<PermissionType>) {
   return http.request({
-    url: '/role/addAdmin',
+    url: '/role/add',
     method: 'POST',
     params,
   });
 }
 
 /**
- * @description: 查询角色信息
+ * @description: 修改用户角色
+ */
+export function updateRole(params: RoleType<PermissionType>) {
+  return http.request({
+    url: '/role/update',
+    method: 'POST',
+    params,
+  });
+}
+
+/**
+ * @description: 查询管理角色信息
  */
 export function roleAdminInfo(params) {
   return http.request({
@@ -33,6 +57,17 @@ export function roleAdminInfo(params) {
   });
 }
 
+/**
+ * @description: 查询用户角色信息
+ */
+export function roleUserInfo(params) {
+  return http.request({
+    url: '/role/info',
+    method: 'GET',
+    params,
+  });
+}
+
 /**
  * @description: 编辑管理角色
  */

+ 111 - 26
src/views/system/role/CreateUserDrawer.vue

@@ -85,7 +85,14 @@
   import { ElMessage } from 'element-plus';
   import type { formParamsType, userFormParamsType } from './types';
 
-  import { addAdminRole, editAdminRole, roleAdminInfo } from '@/api/system/role';
+  import {
+    addAdminRole,
+    addRole,
+    editAdminRole,
+    roleAdminInfo,
+    roleUserInfo,
+    updateRole,
+  } from '@/api/system/role';
   import { getTreeValues } from '@/utils/helper/treeHelper';
   import useScene from '@/views/system-config/scene-manage/use-scene';
 
@@ -187,6 +194,15 @@
     permissionKeys: [],
   });
 
+  const defaultTreeValueRef = () => ({
+    roleId: null,
+    roleName: '',
+    roleCode: '',
+    remark: '',
+    permissionList: [],
+    permissionKeys: [],
+  });
+
   const message = ElMessage;
   const checkedKeys = ref<number[]>([]);
   const formRef: any = ref(null);
@@ -199,9 +215,12 @@
   const selectedNodeKey = ref<string>('');
   const modeTreeData = computed(() => (selectedNodeKey.value ? modeList : []));
 
-  const formParams = ref<userFormParamsType>(defaultValueRef());
+  const formParams = ref<userFormParamsType>(defaultTreeValueRef());
 
   function clickNode(tree, nodeInfo, _, __) {
+    console.log('tree', tree);
+    console.log('nodeInfo', nodeInfo.isShop);
+
     if (nodeInfo.isShop) {
       selectedNodeKey.value = tree.code;
     } else {
@@ -252,25 +271,38 @@
 
     const nodes = checkedInfo.checkedNodes;
     const halfKeys = checkedInfo.halfCheckedKeys;
-    formParams.value.permissions = checkedInfo.halfCheckedKeys;
-    formParams.value.permissions = nodes
+    formParams.value.permissionList = checkedInfo.halfCheckedKeys;
+    formParams.value.permissionList = nodes
       .filter((item) => item.isShop)
       .map((node) => {
         return {
           workshopCode: node.code,
-          permissionId: 0,
+          permissionId: '0',
         };
       });
-    checkedKeys.value = keys;
+    // console.log('formParams.value.permissions', formParams.value.permissions);
+
+    // checkedKeys.value = keys;
+
+    // 获取所有已选中节点的键值
+    // const selectedKeys = nodes.filter((item) => item.isShop).map((node) => node.code);
+
+    // // 设置已选中节点
+    // treeRef.value.setCheckedKeys(selectNodes.value);
+    // checkedKeys.value = selectedKeys;
     formParams.value.permissionKeys = halfKeys;
+
+    // formParams.value.permissionKeys = halfKeys;
   }
 
   function checkedModeTree() {}
 
-  function openDrawer(roleId?) {
+  // const roleId = ref<number>();
+
+  function openDrawer(roleId?, roleType?) {
     if (roleId) {
       formParams.value.roleId = roleId;
-      getInfo();
+      getInfo(roleType);
       return;
     }
     isDrawer.value = true;
@@ -286,19 +318,50 @@
         return message.error('请填写完整信息');
       }
       if (formParams.value.roleId) {
-        editAdminRole(formParams.value).then((_) => {
+        console.log('bianji');
+
+        const updateData = {
+          permissionList: formParams.value.permissionList,
+          remark: formParams.value.remark,
+          roleName: formParams.value.roleName,
+          roleCode: formParams.value.roleCode,
+          roleType: 3,
+          roleId: formParams.value.roleId,
+        };
+        updateRole(updateData).then((_) => {
           message.success('编辑成功');
           emit('change');
           handleReset();
           closeDrawer();
         });
+
+        // editAdminRole(formParams.value).then((_) => {
+        //   message.success('编辑成功');
+        //   emit('change');
+        //   handleReset();
+        //   closeDrawer();
+        // });
       } else {
-        addAdminRole(formParams.value).then((_) => {
+        const addData = {
+          permissionList: formParams.value.permissionList,
+          remark: formParams.value.remark,
+          roleName: formParams.value.roleName,
+          roleCode: formParams.value.roleCode,
+          roleType: 3,
+        };
+        addRole(addData).then((_) => {
           message.success('添加成功');
           emit('change');
           handleReset();
           closeDrawer();
         });
+
+        // addAdminRole(formParams.value).then((_) => {
+        //   message.success('添加成功');
+        //   emit('change');
+        //   handleReset();
+        //   closeDrawer();
+        // });
       }
     });
   }
@@ -308,23 +371,45 @@
     formParams.value = Object.assign(formParams.value, defaultValueRef());
     treeRef.value!.setCheckedKeys([]);
   }
-
-  function getInfo() {
-    roleAdminInfo({ roleId: formParams.value.roleId }).then((res) => {
-      const info = {
-        roleId: res.id,
-        roleName: res.roleName,
-        roleCode: res.roleCode,
-        remark: res.remark,
-        permissions: res.permissionIds || [],
-        permissionKeys: res.permissionKeys || [],
-      };
-      formParams.value = info;
-      isDrawer.value = true;
-      nextTick(() => {
-        treeRef.value?.setCheckedKeys(res.permissionIds);
+  const selectNodes = ref<string[]>([]);
+  function getInfo(roleType) {
+    if (roleType === 3) {
+      roleUserInfo({ roleId: formParams.value.roleId }).then((res) => {
+        const info = {
+          roleId: res.id,
+          roleName: res.roleName,
+          roleCode: res.roleCode,
+          remark: res.remark,
+          permissionList: res.permissionIds || [],
+          permissionKeys: res.permissionKeys || [],
+          // permissionList: res.permissionMap.map((item) => item.permissionId),
+          // permissionKeys: res.permissionMap.map((item) => item.workshopId),
+        };
+        formParams.value = info;
+        isDrawer.value = true;
+        nextTick(() => {
+          selectNodes.value = res.permissionMap.map((item) => item.workshopCode);
+          // 将匹配到的节点的键值数组传递给 setCheckedKeys 方法
+          treeRef.value.setCheckedKeys(selectNodes.value);
+        });
       });
-    });
+    } else {
+      roleAdminInfo({ roleId: formParams.value.roleId }).then((res) => {
+        const info = {
+          roleId: res.id,
+          roleName: res.roleName,
+          roleCode: res.roleCode,
+          remark: res.remark,
+          permissionList: res.permissionIds || [],
+          permissionKeys: res.permissionKeys || [],
+        };
+        formParams.value = info;
+        isDrawer.value = true;
+        nextTick(() => {
+          treeRef.value?.setCheckedKeys(res.permissionIds);
+        });
+      });
+    }
   }
 
   onMounted(() => {

+ 3 - 2
src/views/system/role/role.vue

@@ -152,9 +152,10 @@
 
   function handleEdit(record: Recordable) {
     console.log('点击了编辑', record);
+    console.log('record.roleType', record.role_type);
     drawerTitle.value = '编辑角色';
-    const { openDrawer } = createDrawerRef.value;
-    openDrawer(record.roleId);
+    const { openDrawer } = createUserDrawerRef.value;
+    openDrawer(record.roleId, record.role_type);
   }
 
   function handleDelete(record: Recordable) {