Browse Source

feat(系统模块-用户管理): 完善用户设置角色功能

shizhongming 2 years ago
parent
commit
a9c7144b56

+ 9 - 0
src/modules/system/views/user/UserListView.api.ts

@@ -15,6 +15,7 @@ enum Api {
   deptTreeList = 'sys/dept/list',
   unlockUserAccount = 'sys/user/unlockUserAccount',
   resetPassword = 'sys/user/resetPassword',
+  setUserRole = 'sys/user/setRole',
 }
 
 export const listApi = (ajaxParameter) => {
@@ -136,3 +137,11 @@ export const resetPassword = (id: number) => {
     },
   });
 };
+
+export const setUserRoleApi = (data: Recordable) => {
+  return defHttp.post({
+    service: ApiServiceEnum.SMART_SYSTEM,
+    url: Api.setUserRole,
+    data,
+  });
+};

+ 48 - 7
src/modules/system/views/user/components/UserSetRole.vue

@@ -1,5 +1,9 @@
 <template>
-  <BasicModal @register="registerModal" :title="t('system.views.user.button.setRole')">
+  <BasicModal
+    @register="registerModal"
+    :title="t('system.views.user.button.setRole')"
+    @ok="handleSaveUserRole"
+  >
     <SmartTable @register="registerTable" />
   </BasicModal>
 </template>
@@ -7,28 +11,65 @@
 <script setup lang="ts">
   import { BasicModal, useModalInner } from '@/components/Modal';
   import { SmartTable, useSmartTable } from '@/components/SmartTable';
-  import { ref } from 'vue';
+  import { ref, unref } from 'vue';
   import { useI18n } from '@/hooks/web/useI18n';
   import { ApiServiceEnum, defHttp } from '@/utils/http/axios';
 
+  import { setUserRoleApi } from '../UserListView.api';
+  import { successMessage } from '@/utils/message/SystemNotice';
+
   const { t } = useI18n();
 
   const currentUserId = ref<number | null>(null);
 
-  const [registerModal] = useModalInner(async (userId: number) => {
+  const [registerModal, { changeOkLoading, closeModal }] = useModalInner(async ({ userId }) => {
     currentUserId.value = userId;
     await query();
+    await setSelectRole();
   });
 
-  // const setSelectRole = () => {
-  //   const userId = unref(currentUserId)!;
-  // };
+  const setSelectRole = async () => {
+    const userId = unref(currentUserId)!;
+    const roleList: any[] = await defHttp.post({
+      service: ApiServiceEnum.SMART_SYSTEM,
+      url: 'sys/user/listUserRole',
+      data: { id: userId },
+    });
+    const tableInstance = getTableInstance();
+    tableInstance.clearCheckboxRow();
+    tableInstance.setCheckboxRow(
+      roleList.map((item) => ({ roleId: item.roleId })),
+      true,
+    );
+  };
+
+  const handleSaveUserRole = async () => {
+    const tableInstance = getTableInstance();
+    const roleIdList = tableInstance.getCheckboxRecords().map((item) => item.roleId);
+    try {
+      changeOkLoading(true);
+      await setUserRoleApi({
+        userId: unref(currentUserId),
+        roleIdList,
+      });
+      successMessage(t('system.views.user.message.setRoleSuccess'));
+      closeModal();
+    } finally {
+      changeOkLoading(false);
+    }
+  };
 
-  const [registerTable, { query }] = useSmartTable({
+  const [registerTable, { query, getTableInstance }] = useSmartTable({
     border: true,
     size: 'small',
+    rowConfig: {
+      isHover: true,
+      keyField: 'roleId',
+    },
+    stripe: true,
     checkboxConfig: {
       rowTrigger: 'multiple',
+      highlight: true,
     },
     proxyConfig: {
       autoLoad: false,

+ 4 - 0
src/modules/system/views/user/lang/en_US.ts

@@ -27,6 +27,7 @@ export default {
           unlockUserAccount: 'Unlock account',
           resetPassword: 'Rest password',
           setRole: 'Set role',
+          copyPassword: 'Copy password',
         },
         account: {
           title: 'Account info',
@@ -64,6 +65,7 @@ export default {
           selectDept: 'Please select dept',
           selectDataScope: 'Please select data scope',
           selectUserType: 'Please select user type',
+          resetPassword: 'Are you sure you want to reset your password?',
         },
         message: {
           deleteUserNotCreateAccount: 'Deleted user cannot create account',
@@ -71,6 +73,8 @@ export default {
           createAccountSuccess: 'Account created successfully',
           deleteValidate: 'Are you sure you want to {msg} this user?',
           noAccount: 'The user has not created an account',
+          resetSavePassword: 'Please save password!',
+          setRoleSuccess: 'Set role success!',
         },
       },
     },

+ 1 - 0
src/modules/system/views/user/lang/zh_CN.ts

@@ -77,6 +77,7 @@ export default {
           confirmUnlockUserAccount: '确定要解锁账户吗?',
           unlockUserAccountSuccess: '账户解锁成功',
           resetSavePassword: '请保存密码!',
+          setRoleSuccess: '设置角色成功!',
         },
       },
     },