From ede79f40b0607d5cd33f1999d8a241a04b092dc0 Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Sat, 5 Oct 2024 15:20:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=9A=80=20=E5=BC=BA=E5=88=B6?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=B8=8B=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/v1/user.ts | 8 + src/assets/svg/airplane.svg | 5 + src/assets/svg/expand.svg | 1 + src/assets/svg/unexpand.svg | 1 + src/views/system/adminUser/index.vue | 257 +++++++++--------- src/views/system/adminUser/tree.vue | 155 +++++++++++ src/views/system/adminUser/utils/hooks.tsx | 21 +- src/views/system/dept/dept-dialog.vue | 5 - src/views/system/dept/index.vue | 19 +- src/views/system/dept/utils/columns.ts | 4 +- src/views/system/dept/utils/hooks.ts | 23 +- src/views/system/menu/index.vue | 1 - src/views/system/menuIcon/index.vue | 3 + .../system/menuIcon/menu-icon-dialog.vue | 7 +- src/views/system/menuIcon/utils/columns.ts | 4 + src/views/system/menuIcon/utils/hooks.ts | 4 +- 16 files changed, 375 insertions(+), 143 deletions(-) create mode 100644 src/assets/svg/airplane.svg create mode 100644 src/assets/svg/expand.svg create mode 100644 src/assets/svg/unexpand.svg create mode 100644 src/views/system/adminUser/tree.vue diff --git a/src/api/v1/user.ts b/src/api/v1/user.ts index 08ea2cf..8072c6e 100644 --- a/src/api/v1/user.ts +++ b/src/api/v1/user.ts @@ -79,3 +79,11 @@ export const fetchUpdateUserPasswordByAdmin = (data: any) => { export const fetchUploadAvatarByAdmin = (data: any) => { return http.request>('put', 'user/uploadAvatarByAdmin', { data }, { headers: { 'Content-Type': 'multipart/form-data' } }); }; + +/** + * 强制用户下线 + * @param data + */ +export const fetchForcedOffline = (data: any) => { + return http.request>('put', 'user/forcedOffline', { data }); +}; diff --git a/src/assets/svg/airplane.svg b/src/assets/svg/airplane.svg new file mode 100644 index 0000000..cacd439 --- /dev/null +++ b/src/assets/svg/airplane.svg @@ -0,0 +1,5 @@ + diff --git a/src/assets/svg/expand.svg b/src/assets/svg/expand.svg new file mode 100644 index 0000000..bb41c35 --- /dev/null +++ b/src/assets/svg/expand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/unexpand.svg b/src/assets/svg/unexpand.svg new file mode 100644 index 0000000..04b3e9d --- /dev/null +++ b/src/assets/svg/unexpand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/views/system/adminUser/index.vue b/src/views/system/adminUser/index.vue index b739186..fb8fea4 100644 --- a/src/views/system/adminUser/index.vue +++ b/src/views/system/adminUser/index.vue @@ -4,7 +4,7 @@ import { columns } from '@/views/system/adminUser/utils/columns'; import PureTableBar from '@/components/TableBar/src/bar'; import AddFill from '@iconify-icons/ri/add-circle-line'; import PureTable from '@pureadmin/table'; -import { onAdd, onAssignRolesToUser, onDelete, onResetPassword, onSearch, onUpdate, onUploadAvatar, updateUserStatus } from '@/views/system/adminUser/utils/hooks'; +import { onAdd, onAssignRolesToUser, onDelete, onForcedOffline, onResetPassword, onSearch, onUpdate, onUploadAvatar, updateUserStatus } from '@/views/system/adminUser/utils/hooks'; import Delete from '@iconify-icons/ep/delete'; import EditPen from '@iconify-icons/ep/edit-pen'; import Refresh from '@iconify-icons/ep/refresh'; @@ -18,6 +18,9 @@ import Password from '@iconify-icons/ri/lock-password-line'; import More from '@iconify-icons/ep/more-filled'; import { useAdminUserStore } from '@/store/system/adminUser'; import { sexConstant, userStatus } from '@/enums/baseConstant'; +import { deviceDetection } from '@pureadmin/utils'; +import Tree from '@/views/system/adminUser/tree.vue'; +import Airplane from '@/assets/svg/airplane.svg'; const tableRef = ref(); const formRef = ref(); @@ -57,146 +60,152 @@ onMounted(() => { + + diff --git a/src/views/system/adminUser/tree.vue b/src/views/system/adminUser/tree.vue new file mode 100644 index 0000000..43edf83 --- /dev/null +++ b/src/views/system/adminUser/tree.vue @@ -0,0 +1,155 @@ + + + + + diff --git a/src/views/system/adminUser/utils/hooks.tsx b/src/views/system/adminUser/utils/hooks.tsx index 1cb701c..930908c 100644 --- a/src/views/system/adminUser/utils/hooks.tsx +++ b/src/views/system/adminUser/utils/hooks.tsx @@ -12,7 +12,7 @@ import { deviceDetection } from '@pureadmin/utils'; import CropperPreview from '@/components/CropperPreview'; import AssignUserToRole from '@/views/system/adminUser/assign-user-to-role.vue'; import userAvatar from '@/assets/user.jpg'; -import { fetchUploadAvatarByAdmin } from '@/api/v1/user'; +import { fetchForcedOffline, fetchUploadAvatarByAdmin } from '@/api/v1/user'; export const formRef = ref(); const cropRef = ref(); @@ -240,3 +240,22 @@ export const onAssignRolesToUser = (row: any) => { }, }); }; + +/** + * * 强制下线 + * @param row + */ +export const onForcedOffline = async (row: any) => { + const id = row.id; + const confirm = await messageBox({ + title: $t('confirm_forcedOffline'), + showMessage: false, + confirmMessage: undefined, + cancelMessage: $t('cancel'), + }); + if (!confirm) return; + + const result = await fetchForcedOffline(id); + if (result.code !== 200) return; + message(result.message, { type: 'success' }); +}; diff --git a/src/views/system/dept/dept-dialog.vue b/src/views/system/dept/dept-dialog.vue index e965e95..cf3016b 100644 --- a/src/views/system/dept/dept-dialog.vue +++ b/src/views/system/dept/dept-dialog.vue @@ -15,8 +15,6 @@ const props = withDefaults(defineProps(), { deptName: undefined, // 部门简介 summary: undefined, - // 备注信息 - remarks: undefined, }), }); @@ -40,8 +38,5 @@ defineExpose({ formRef }); - - - diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue index ebc3629..bc37994 100644 --- a/src/views/system/dept/index.vue +++ b/src/views/system/dept/index.vue @@ -4,7 +4,7 @@ import { columns } from '@/views/system/dept/utils/columns'; import PureTableBar from '@/components/TableBar/src/bar'; import AddFill from '@iconify-icons/ri/add-circle-line'; import PureTable from '@pureadmin/table'; -import { onAdd, onDelete, onSearch, onUpdate } from '@/views/system/dept/utils/hooks'; +import { deleteIds, onAdd, onDelete, onDeleteBatch, onSearch, onUpdate } from '@/views/system/dept/utils/hooks'; import Delete from '@iconify-icons/ep/delete'; import EditPen from '@iconify-icons/ep/edit-pen'; import Refresh from '@iconify-icons/ep/refresh'; @@ -34,6 +34,14 @@ const onPageSizeChange = async (value: number) => { await onSearch(); }; +/** + * * 选择多行 + * @param rows + */ +const onSelectionChange = (rows: Array) => { + deleteIds.value = rows.map((row: any) => row.id); +}; + /** * 重置表单 * @param formEl @@ -61,9 +69,6 @@ onMounted(() => { - - - {{ $t('search') }} {{ $t('buttons.reset') }} @@ -73,6 +78,11 @@ onMounted(() => {