Bladeren bron

用户管理修改

sujunling 2 jaren geleden
bovenliggende
commit
edd14b96d2

+ 2 - 1
src/api/ruleengine/ruleengineApi.ts

@@ -15,7 +15,8 @@ enum ScreenManagerApi {
   SCREEN_ADD_URL = '/scene_linkage',
   SCREEN_DELETE_URL = '/scene_linkage',
   SCREEN_UPDATE_URL = '/scene_linkage/update',
-  SCREEN_ORGANIZATION_URL = '/organization/me/list',
+  // SCREEN_ORGANIZATION_URL = '/organization/me/list',//获取用户信息
+  SCREEN_ORGANIZATION_URL = '/user-center/user/getUserInfoByLoginCode',
   SCREEN_CHANGE_STATUS = '/convert/update/scene',
   SCREEN_GET_BY_DEPTID = '/scene_linkage/device/',
   // GET_ATTRBUTELIST = '/device/keys',

+ 66 - 3
src/api/sys/menu.ts

@@ -20,8 +20,9 @@ enum Api {
   GetMenuTreeData = "/base-center/newmenu/getMenuTreeData",
   DeleteMenuData = '/base-center/newmenu/deleteMenuData',
   DeleteMenuDataList = '/base-center/newmenu/deleteMenuDataList',
-  GetRoleMenus = "/base-center/newmenu/getRoleMenus"
-
+  GetRoleMenus = "/base-center/newmenu/getRoleMenus",
+  GetUserMenus = "/base-center/newmenu/getUserMenus",
+  SelectMHRoleByUserId = "/user-center/role/selectMHRoleByUserId"
 }
 
 
@@ -160,7 +161,7 @@ export const getMenusIdsByRoleId2 = (roleId: string) => {
   })
 };
 
-export const getMenusIdsByRoleId = () => {
+export const getMenusIdsByRoleId3 = () => {
   var params = {
     menusId: true,
     systemId: '1',
@@ -180,6 +181,68 @@ export const getMenusIdsByRoleId = () => {
 };
 
 
+export const getMenusIdsByRoleId = () => {
+
+  var p1 = new Promise((resolve, reject) => {
+    defHttp.post<Array<string>>({
+      url: Api.GetRoleMenus, params: {
+        menusId: true,
+        systemId: '1',
+        roleIds: session.getItem("roles"),//'FB264E2A-BBEN-FB9T-9CEU-FF94AF30DB87',
+      }
+    }).then(r => {
+      resolve(r.datas.map(i => i.id))
+    })
+  })
+  var p2 = new Promise((resolve, reject) => {
+    defHttp.post<Array<string>>({
+      url: Api.GetUserMenus, params: {
+        getMenuId: true,
+        getUserConfigMenu: true,
+        systemId: "1",
+        useOneRole: true,
+        userId: session.getItem('userId'),
+      }
+    }).then(r => {
+      resolve(r.datas)
+    })
+  })
+
+
+  return Promise.all([p1, p2]).then((res) => {
+    console.log("权限汇总:", res)
+    var arr = Array.from(new Set(res[0].concat(res[1])));
+    return arr
+  }).catch((error) => {
+    console.log(error)
+  })
+};
+
+/**
+ * @description: 根据用户登录名称获取用户角色
+ */
+
+export const getUserRoleList = (id) => {
+  return new Promise((resolve, reject) => {
+    defHttp.post<Array<string>>({
+      url: Api.SelectMHRoleByUserId, params: {
+        getRoleIds: true,
+        userId: id
+      }
+    }).then(r => {
+      resolve(r.datas)
+    })
+  })
+};
+
+
+
+// return new Promise<void>((resolve, reject) => {
+//   defHttp.post({ url: Api.GetUserMenus, params })
+//     .then((r) => resolve(r.datas)).catch(e => resolve())
+// })
+
+
 /**
  * @description: 根据用户ID获取菜单权限
  */

+ 47 - 2
src/api/sys/user.ts

@@ -33,8 +33,11 @@ enum Api {
   SelectGroupList = "/user-center/role/selectGroupList",
   AddLoginRecord = "/base-center/syslog/AddLogin",
   SaveRoleMenu = "/base-center/newmenu/saveRoleMenu",
+  SaveUserMenu = "/base-center/newmenu/saveUserMenu",
   GetRoleMenus = "/base-center/newmenu/getRoleMenus",
-  allSys = '/datastore/dir/sys/list'
+  GetUserMenus = "/base-center/newmenu/getUserMenus",
+  allSys = '/datastore/dir/sys/list',
+  GetUserDetailInfo = '/user-center/role/selectMHRoleByUserId'
 }
 
 const client = {
@@ -99,7 +102,7 @@ export function getMyInfo() {
       url: Api.GetMyInfo,
       params: formData,
       ...interfaceType,
-    }, { joinPrefix: false }).then((i) => {
+    }, { joinPrefix: false }).then(async (i) => {
       var u = JSON.parse(i.result);
 
       //插入登录日志记录
@@ -135,6 +138,7 @@ export function getMyInfo() {
           }
         ]
       }
+      await getUserIdInfo(u.EMPLOYEE_MIS.EMPLOYEE_ID);
       resolve(a);
       session.setItem("userInfo", u);
       session.setItem('tokenV2', u.tokenV2);
@@ -142,6 +146,24 @@ export function getMyInfo() {
     })
   })
 }
+
+/**
+ * @description: 根据用户id获取详细信息
+ */
+export const getUserIdInfo = (id) => {
+  return defHttp.post<Array<string>>({
+    url: Api.GetUserDetailInfo, params: {
+      userId: id,
+      getRoleIds: true
+    }
+  }).then(r => {
+    if (r.resp_code == 0 && r.datas && r.datas.length) {
+      session.setItem("roles", r.datas.join(","));
+    }
+  })
+};
+
+
 /**
  * @description: 获取所有组织
  */
@@ -192,6 +214,17 @@ export const saveRoleMenu = (params) => {
   })
 }
 
+/**
+ * @description: 保存角色和菜单的关系
+ */
+export const saveUserMenu = (params) => {
+  return new Promise<void>((resolve, reject) => {
+    defHttp.post({ url: Api.SaveUserMenu, params })
+      .then((r) => resolve(r.datas && r.resp_code == 0)).catch(e => resolve())
+  })
+}
+
+
 /**
  * @description: 获取角色和菜单的关系
  */
@@ -202,6 +235,18 @@ export const getRoleMenus = (params) => {
   })
 }
 
+/**
+ * @description: 获取角色和菜单的关系
+ */
+export const getUserMenus = (params) => {
+  return new Promise<void>((resolve, reject) => {
+    defHttp.post({ url: Api.GetUserMenus, params })
+      .then((r) => resolve(r.datas)).catch(e => resolve())
+  })
+}
+
+
+
 /**
  * @description: 获取角色和菜单的关系
  */

+ 23 - 1
src/api/system/system.ts

@@ -38,7 +38,8 @@ enum Api {
   BaseUserUrl = '/user-center/user/EditUser',
   BaseOrganization = '/organization',
   SelectGroupList = "/user-center/role/selectGroupList",
-  DeleteUser = '/user-center/user/DeleteUser'
+  DeleteUser = '/user-center/user/DeleteUser',
+  GetUserInfoByLoginCode = '/user-center/user/getUserInfoByLoginCode'
 }
 
 export const getAccountInfo = (userId: string) =>
@@ -61,6 +62,26 @@ export const getAccountList = (params: AccountParams) => {
   })
 }
 
+export const getUserInfoByLoginCode = (keyWord) => {
+  var params = {
+    keyWord: keyWord,
+    depId: null
+  }
+  const formData = new FormData();
+  Object.keys(params).forEach((key) => formData.append(key, params[key]))
+  return new Promise<void>((resolve, reject) => {
+    defHttp.post<RolePageListGetResultModel>({
+      url: Api.GetUserInfoByLoginCode, params: formData
+    }).then(r => {
+      if (r.resp_code == 0 && r.datas.length) {
+        resolve(r.datas[0])
+      } else {
+        resolve(false)
+      }
+    })
+  })
+}
+
 
 export const alterUnlock = (userId: string) =>
   defHttp.post<AccountListGetResultModel>({ url: `/user/` + userId + `/unlock` });
@@ -136,6 +157,7 @@ export const filterRoleList = async () => {
   return Promise.resolve<RoleListItem[]>(options);
 };
 
+
 export const setRoleStatus = (id: number, status: number) => {
   return defHttp.put({ url: Api.setRoleStatus + id + '/' + status });
 };

+ 37 - 26
src/views/systemAdmin/system/account/AccountModal.vue

@@ -9,14 +9,14 @@
         <template #roleSlot="{ model, field }">
           <a-select mode="multiple" allowClear placeholder="请选择角色" v-model:value="model[field]"
             :options="roleOptions.map((item) => ({ value: item.value, label: item.label }))">
-            <template #dropdownRender="{ menuNode: menu }">
+            <!-- <template #dropdownRender="{ menuNode: menu }">
               <v-nodes :vnodes="menu" />
               <a-divider style="margin: 4px 0" />
               <div @click="handleOpenRole" style="padding: 4px 0; cursor: pointer">
                 <plus-outlined />
                 新增角色
               </div>
-            </template>
+            </template> -->
           </a-select>
         </template>
       </BasicForm>
@@ -33,6 +33,8 @@ import {
   findCurrentUserRelation,
   SaveOrUpdateUserInfo,
   filterRoleList,
+  getUserInfoByLoginCode,
+
 } from '/@/api/system/system';
 import { BasicTree, TreeItem } from '/@/components/Tree';
 import { findCurrentUserGroups } from '/@/api/system/group';
@@ -45,6 +47,10 @@ import { useDrawer } from '/@/components/Drawer';
 import RoleDrawer from '../role/RoleDrawer.vue';
 import { v4 as uuidv4 } from 'uuid';
 import md5 from 'js-md5';
+import { roleList } from '/@/api/sys/user';
+import { getUserRoleList } from '/@/api/sys/menu';
+
+
 
 
 export default defineComponent({
@@ -74,17 +80,10 @@ export default defineComponent({
       phoneNumber: '',
     });
     const getRoleList = async () => {
-      const res = await filterRoleList();
-      console.log(res);
-      roleOptions.value = res.map((m) => {
-        return {
-          label: m.name,
-          value: m.id,
-        };
-      });
+      roleOptions.value = await roleList();
     };
     onMounted(async () => {
-      // await getRoleList();sjl注释掉的
+      await getRoleList();//sjl注释掉的
     });
     const [registerRoleDrawer, { openDrawer }] = useDrawer();
 
@@ -119,27 +118,38 @@ export default defineComponent({
       await resetFields();
       setModalProps({ confirmLoading: false });
       isUpdate.value = !!data?.isUpdate;
-      const groupListModel = await findCurrentUserGroups();
+      // const groupListModel = await findCurrentUserGroups();
       if (!unref(organizationTreeData).length) {
-        copyTransTreeFun(groupListModel);
-        organizationTreeData.value = groupListModel;
-        const getAllIds = findForAllId(organizationTreeData.value as any, []);
+        // copyTransTreeFun(groupListModel);
+        // organizationTreeData.value = groupListModel;
+        // const getAllIds = findForAllId(organizationTreeData.value as any, []);
         //设置要展开的id
-        treeExpandData.value = getAllIds;
+        // treeExpandData.value = getAllIds;
       }
       if (unref(isUpdate)) {
-        rowId.value = data.record.id;
-        const roleParams = new RoleOrOrganizationParam(rowId.value, true, false);
-        olderPhoneNumber.value = data.record.phoneNumber;
-        singleEditPostPhoneNumber.phoneNumber = data.record.phoneNumber;
-        findCurrentUserRelation(roleParams).then((result) => {
-          Reflect.set(data.record, 'roleIds', result);
-          Reflect.set(data.record, 'password', '******');
-          setFieldsValue(data.record);
+        // rowId.value = data.record.id;
+        // const roleParams = new RoleOrOrganizationParam(rowId.value, true, false);
+        // olderPhoneNumber.value = data.record.phoneNumber;
+        // singleEditPostPhoneNumber.phoneNumber = data.record.phoneNumber;
+
+        getUserInfoByLoginCode(data.record.LOGIN_NAME).then(async (r) => {
+          console.log("用户详细信息:", r)
+          var result = await getUserRoleList(data.record.id)
+          r.user.pwd = 'Aa111111!';
+          r.user.userjs = result;
+          setFieldsValue(r.user)
         });
-        const organizationParams = new RoleOrOrganizationParam(rowId.value, false, true);
-        checkGroup.value = await findCurrentUserRelation(organizationParams);
+        // const organizationParams = new RoleOrOrganizationParam(rowId.value, false, true);
+        // checkGroup.value = await findCurrentUserRelation(organizationParams);
+        data.record.userName = data.record.NAME
+        data.record.loginName = data.record.LOGIN_NAME
+        data.record.sex = data.record.SEX
+        setFieldsValue(data.record);
       }
+
+
+
+
       await updateSchema([
         {
           field: 'username',
@@ -162,6 +172,7 @@ export default defineComponent({
         }
         const values = await validate(['loginName', 'userName', 'pwd', 'mobile', 'sex', 'sszw', 'ssgw', 'userjs']);
         Object.assign(postData, values);
+        postData.userjs = values.userjs.join(';');
         postData.userid = uuidv4();
         postData.loginName = postData.loginName.toUpperCase();
         postData.pwd = md5(postData.pwd)

+ 11 - 9
src/views/systemAdmin/system/account/PowerDrawer.vue

@@ -50,7 +50,7 @@ import { useUserStore } from '/@/store/modules/user';
 import { session } from '/@/utils/Memory';
 import { BasicTable, useTable } from '/@/components/Table';
 import { onMounted } from 'vue';
-import { saveRoleMenu, getRoleMenus } from '/@/api/sys/user';
+import { getUserMenus, saveUserMenu } from '/@/api/sys/user';
 
 
 
@@ -88,7 +88,7 @@ export default defineComponent({
     const userStore = useUserStore();
     const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
       console.log('data', data);
-      var arr = await getRoleMenusWay(data.record.id)
+      var arr = await getRoleMenusWay(data.record.EMPLOYEE_ID)
 
       // expandedKeys.value = arr;
       // selectedKeys.value = arr;
@@ -136,10 +136,10 @@ export default defineComponent({
     async function handleSubmit() {
       setDrawerProps({ confirmLoading: true });
       const values = await validate()
-      saveRoleMenu({
+      saveUserMenu({
         menusId: menusIds.join(","),
         systemId: "1",
-        roleId: values.groupid,
+        userId: values.EMPLOYEE_ID,
       }).then(r => {
         closeDrawer();
         if (r) {
@@ -280,12 +280,14 @@ export default defineComponent({
 
     function getRoleMenusWay(id) {
       return new Promise<void>((resolve, reject) => {
-        getRoleMenus({
-          menusId: true,
-          systemId: '1',
-          roleIds: id || 'FB264E2A-BBEN-FB9T-9CEU-FF94AF30DB87',//values.groupid,
+        getUserMenus({
+          getMenuId: true,
+          getUserConfigMenu: true,
+          systemId: "1",
+          useOneRole: true,
+          userId: id,
         }).then(r => {
-          resolve(r.map(i => i.id))
+          resolve(r)
         }).catch(e => {
           reject(false)
         })

+ 28 - 13
src/views/systemAdmin/system/account/account.data.ts

@@ -186,9 +186,9 @@ export const accountFormSchema: FormSchema[] = [
   {
     field: 'sszw',
     component: 'ApiTreeSelect',
-    label: '选择',
+    label: '所属职位',
     componentProps: {
-      placeholder: '请选择组织',
+      placeholder: '请选择职位',
       api: async () => {
         var data = await appointment();
         copyTransFun(data as any as any[]);
@@ -217,19 +217,34 @@ export const accountFormSchema: FormSchema[] = [
       }
     }
   },
+  // {
+  //   field: 'userjs',
+  //   component: 'ApiTreeSelect',
+  //   label: '角色列表',
+  //   componentProps: {
+  //     placeholder: '请选择角色',
+  //     api: async () => {
+  //       var data = await roleList();
+  //       return data;
+  //     },
+  //     onChange(value) {
+  //       userjs.value = value;
+  //     },
+  //   },
+  // },
+
   {
+    label: '角色',
     field: 'userjs',
-    component: 'ApiTreeSelect',
-    label: '角色列表',
-    componentProps: {
-      placeholder: '请选择角色',
-      api: async () => {
-        var data = await roleList();
-        return data;
-      },
-      onChange(value) {
-        userjs.value = value;
+    component: 'Select',
+    colProps: { span: 24 },
+    slot: 'roleSlot',
+    rules: [
+      {
+        required: true,
+        message: '请选择角色',
+        type: 'array',
       },
-    },
+    ],
   },
 ];

+ 8 - 8
src/views/systemAdmin/system/account/index.vue

@@ -51,14 +51,14 @@
             //   onClick: handleView.bind(null, record),
             //   ifShow: record.level != 0,
             // },
-            {
-              label: '编辑',
-              // auth: 'api:yt:user:update',
-              icon: 'clarity:note-edit-line',
-              tooltip: '编辑',
-              onClick: handleEdit.bind(null, record),
-              ifShow: record.level != 0,
-            },
+            // {
+            //   label: '编辑',
+            //   // auth: 'api:yt:user:update',
+            //   icon: 'clarity:note-edit-line',
+            //   tooltip: '编辑',
+            //   onClick: handleEdit.bind(null, record),
+            //   ifShow: record.level != 0,
+            // },
             {
               label: '权限设置',
               icon: 'ant-design:key-outlined',

+ 11 - 0
src/views/systemAdmin/system/account/role.data.ts

@@ -112,6 +112,17 @@ export const powerSchema: FormSchema[] = [
       disabled: true,
       placeholder: '请输入角色名称',
     },
+  },
+  {
+    field: 'EMPLOYEE_ID',
+    label: '用户ID',
+    required: true,
+    component: 'Input',
+    componentProps: {
+      maxLength: 255,
+      disabled: true,
+      placeholder: '请输入角色名称',
+    },
   }
 ];