diff --git a/src/api/v1/adminUser.ts b/src/api/v1/adminUser.ts index 083e9ab..dc8fee3 100644 --- a/src/api/v1/adminUser.ts +++ b/src/api/v1/adminUser.ts @@ -1,6 +1,62 @@ import { http } from '@/api/service/request'; import type { BaseResult, ResultTable } from '@/api/service/types'; +export interface UserResult { + /** 头像 */ + avatar: string; + /** 用户名 */ + username: string; + /** 昵称 */ + nickname: string; + /** 当前登录用户的角色 */ + roles: Array; + /** 按钮级别权限 */ + permissions: Array; + /** `token` */ + accessToken: string; + /** 用于调用刷新`accessToken`的接口时所需的`token` */ + refreshToken: string; + /** `accessToken`的过期时间(格式'xxxx/xx/xx xx:xx:xx') */ + expires: Date; +} + +export interface RefreshTokenResult { + /** `token` */ + accessToken: string; + /** 用于调用刷新`accessToken`的接口时所需的`token` */ + refreshToken: string; + /** `accessToken`的过期时间(格式'xxxx/xx/xx xx:xx:xx') */ + expires: Date; +} + +/** + * 登录 + */ +export const fetchLogin = (data?: object) => { + return http.request>('post', '/login', { data }); +}; + +/** + * * 发送邮件 + * @param data + */ +export const fetchPostEmailCode = (data: any) => { + return http.request>('post', '/user/noAuth/sendLoginEmail', { data }, { headers: { 'Content-Type': 'multipart/form-data' } }); +}; + +/** 刷新`token` */ +export const refreshTokenApi = (data?: object) => { + return http.request>('post', 'user/noAuth/refreshToken', { data }); +}; + +/** + * * 退出内容 + * @param data + */ +export const fetchLogout = (data?: object) => { + return http.request>('post', 'user/logout', { data }); +}; + /** * 用户信息---获取用户信息列表 */ @@ -36,3 +92,47 @@ export const fetchUpdateAdminUser = (data: any) => { export const fetchDeleteAdminUser = (data: any) => { return http.request>('delete', 'user/deleteAdminUser', { data }); }; + +/** + * 获取用户信息 + */ +export const fetchGetUserinfoById = (data?: object) => { + return http.request>('get', 'user/getUserinfoById', { params: data }); +}; + +/** 修改用户状态 */ +export const fetchUpdateUserStatusByAdmin = (data?: object) => { + return http.request>('put', 'user/updateUserStatusByAdmin', { data }); +}; + +/** + * 管理员修改管理员用户密码 + * @param data + */ +export const fetchUpdateUserPasswordByAdmin = (data: any) => { + return http.request>('put', 'user/updateUserPasswordByAdmin', { data }); +}; + +/** + * 管理员修改管理员用户头像 + * @param data + */ +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 }); +}; + +/** + * 为用户分配角色 + * @param data + */ +export const fetchAssignRolesToUsers = (data: object) => { + return http.request>('post', 'userRole/assignRolesToUsers', { data }); +}; diff --git a/src/api/v1/system.ts b/src/api/v1/system.ts index 225badf..1d3e5e2 100644 --- a/src/api/v1/system.ts +++ b/src/api/v1/system.ts @@ -8,5 +8,5 @@ export const getRouterAsync = () => { /** 上传文件 */ export const fetchUploadFile = (data: any) => { - return http.post>('/files/upload', { data }, { headers: { 'Content-Type': 'multipart/form-data' } }); + return http.request>('post', '/files/upload', { data }, { headers: { 'Content-Type': 'multipart/form-data' } }); }; diff --git a/src/api/v1/user.ts b/src/api/v1/user.ts deleted file mode 100644 index 6405193..0000000 --- a/src/api/v1/user.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { http } from '@/api/service/request'; -import type { BaseResult } from '@/api/service/types'; - -export interface UserResult { - /** 头像 */ - avatar: string; - /** 用户名 */ - username: string; - /** 昵称 */ - nickname: string; - /** 当前登录用户的角色 */ - roles: Array; - /** 按钮级别权限 */ - permissions: Array; - /** `token` */ - accessToken: string; - /** 用于调用刷新`accessToken`的接口时所需的`token` */ - refreshToken: string; - /** `accessToken`的过期时间(格式'xxxx/xx/xx xx:xx:xx') */ - expires: Date; -} - -export interface RefreshTokenResult { - /** `token` */ - accessToken: string; - /** 用于调用刷新`accessToken`的接口时所需的`token` */ - refreshToken: string; - /** `accessToken`的过期时间(格式'xxxx/xx/xx xx:xx:xx') */ - expires: Date; -} - -/** - * 登录 - */ -export const fetchLogin = (data?: object) => { - return http.request>('post', '/login', { data }); -}; - -/** - * * 发送邮件 - * @param data - */ -export const fetchPostEmailCode = (data: any) => { - return http.request>('post', '/user/noAuth/sendLoginEmail', { data }, { headers: { 'Content-Type': 'multipart/form-data' } }); -}; - -/** 刷新`token` */ -export const refreshTokenApi = (data?: object) => { - return http.request>('post', 'user/noAuth/refreshToken', { data }); -}; - -/** - * * 退出内容 - * @param data - */ -export const fetchLogout = (data?: object) => { - return http.request>('post', 'user/logout', { data }); -}; - -/** - * 获取用户信息 - */ -export const fetchGetUserinfoById = (data?: object) => { - return http.request>('get', 'user/getUserinfoById', { params: data }); -}; - -/** - * 管理员修改管理员用户密码 - * @param data - */ -export const fetchUpdateUserPasswordByAdmin = (data: any) => { - return http.request>('put', 'user/updateUserPasswordByAdmin', { data }); -}; - -/** - * 管理员修改管理员用户头像 - * @param data - */ -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 }); -}; - -/** - * 为用户分配角色 - * @param data - */ -export const fetchAssignRolesToUsers = (data: object) => { - return http.request>('post', 'userRole/assignRolesToUsers', { data }); -}; diff --git a/src/components/Table/Userinfo/UserinfoDialog.vue b/src/components/Table/Userinfo/UserinfoDialog.vue index 677ce69..597125f 100644 --- a/src/components/Table/Userinfo/UserinfoDialog.vue +++ b/src/components/Table/Userinfo/UserinfoDialog.vue @@ -3,7 +3,7 @@ import userAvatarIcon from '@/assets/svg/user_avatar.svg?component'; import { columns } from './columns'; import TablePlus from '@/components/TableBar/src/TablePlus.vue'; import { onMounted, ref } from 'vue'; -import { fetchGetUserinfoById } from '@/api/v1/user'; +import { fetchGetUserinfoById } from '@/api/v1/adminUser'; import { $t } from '@/plugins/i18n'; const props = defineProps({ diff --git a/src/store/system/adminUser.ts b/src/store/system/adminUser.ts index 12dfb7f..c751e3a 100644 --- a/src/store/system/adminUser.ts +++ b/src/store/system/adminUser.ts @@ -1,9 +1,8 @@ import { defineStore } from 'pinia'; -import { fetchAddAdminUser, fetchDeleteAdminUser, fetchGetAdminUserList, fetchQueryUser, fetchUpdateAdminUser } from '@/api/v1/adminUser'; import { pageSizes } from '@/enums/baseConstant'; import { storeMessage } from '@/utils/message'; import { storePagination } from '@/store/useStorePagination'; -import { fetchUpdateUserPasswordByAdmin } from '@/api/v1/user'; +import { fetchAddAdminUser, fetchDeleteAdminUser, fetchGetAdminUserList, fetchQueryUser, fetchUpdateAdminUser, fetchUpdateUserPasswordByAdmin, fetchUpdateUserStatusByAdmin } from '@/api/v1/adminUser'; /** * 用户信息 Store @@ -29,6 +28,8 @@ export const useAdminUserStore = defineStore('adminUserStore', { summary: undefined, // 状态 status: undefined, + // 部门Id查询 + deptIds: undefined, }, // 分页查询结果 pagination: { @@ -46,7 +47,7 @@ export const useAdminUserStore = defineStore('adminUserStore', { /** * * 获取用户信息 */ - async getAdminUserList() { + getAdminUserList: async function () { // 整理请求参数 const data = { ...this.pagination, ...this.form }; delete data.pageSizes; @@ -99,5 +100,14 @@ export const useAdminUserStore = defineStore('adminUserStore', { const result: any = await fetchUpdateUserPasswordByAdmin(data); return storeMessage(result); }, + + /** + * * 修改用户状态 + * @param data + */ + async updateUserStatusByAdmin(data: any) { + const result = await fetchUpdateUserStatusByAdmin(data); + return storeMessage(result); + }, }, }); diff --git a/src/store/system/user.ts b/src/store/system/user.ts index 63c48af..b905120 100644 --- a/src/store/system/user.ts +++ b/src/store/system/user.ts @@ -1,6 +1,6 @@ import { defineStore } from 'pinia'; import { resetRouter, router, routerArrays, storageLocal, store, type userType } from '../utils'; -import { fetchAssignRolesToUsers, fetchLogin, fetchLogout, fetchPostEmailCode, refreshTokenApi } from '@/api/v1/user'; +import { fetchAssignRolesToUsers, fetchLogin, fetchLogout, fetchPostEmailCode, refreshTokenApi } from '@/api/v1/adminUser'; import { useMultiTagsStoreHook } from '../multiTags'; import { type DataInfo, removeToken, setToken, userKey } from '@/utils/auth'; import { message, storeMessage } from '@/utils/message'; diff --git a/src/views/hooks.ts b/src/views/hooks.ts index 5465d94..fd9a87f 100644 --- a/src/views/hooks.ts +++ b/src/views/hooks.ts @@ -1,39 +1,39 @@ // 抽离可公用的工具函数等用于系统管理页面逻辑 -import { computed } from "vue"; -import { useDark } from "@pureadmin/utils"; +import { computed } from 'vue'; +import { useDark } from '@pureadmin/utils'; export function usePublicHooks() { - const { isDark } = useDark(); + const { isDark } = useDark(); - const switchStyle = computed(() => { - return { - "--el-switch-on-color": "#6abe39", - "--el-switch-off-color": "#e84749" - }; - }); + const switchStyle = computed(() => { + return { + '--el-switch-on-color': '#6abe39', + '--el-switch-off-color': '#e84749', + }; + }); - const tagStyle = computed(() => { - return (status: number) => { - return status === 1 - ? { - "--el-tag-text-color": isDark.value ? "#6abe39" : "#389e0d", - "--el-tag-bg-color": isDark.value ? "#172412" : "#f6ffed", - "--el-tag-border-color": isDark.value ? "#274a17" : "#b7eb8f" - } - : { - "--el-tag-text-color": isDark.value ? "#e84749" : "#cf1322", - "--el-tag-bg-color": isDark.value ? "#2b1316" : "#fff1f0", - "--el-tag-border-color": isDark.value ? "#58191c" : "#ffa39e" - }; - }; - }); + const tagStyle = computed(() => { + return (status: number) => { + return status === 1 + ? { + '--el-tag-text-color': isDark.value ? '#6abe39' : '#389e0d', + '--el-tag-bg-color': isDark.value ? '#172412' : '#f6ffed', + '--el-tag-border-color': isDark.value ? '#274a17' : '#b7eb8f', + } + : { + '--el-tag-text-color': isDark.value ? '#e84749' : '#cf1322', + '--el-tag-bg-color': isDark.value ? '#2b1316' : '#fff1f0', + '--el-tag-border-color': isDark.value ? '#58191c' : '#ffa39e', + }; + }; + }); - return { - /** 当前网页是否为`dark`模式 */ - isDark, - /** 表现更鲜明的`el-switch`组件 */ - switchStyle, - /** 表现更鲜明的`el-tag`组件 */ - tagStyle - }; + return { + /** 当前网页是否为`dark`模式 */ + isDark, + /** 表现更鲜明的`el-switch`组件 */ + switchStyle, + /** 表现更鲜明的`el-tag`组件 */ + tagStyle, + }; } diff --git a/src/views/system/adminUser/admin-user-dialog.vue b/src/views/system/adminUser/admin-user-dialog.vue index 8ab527b..78206bd 100644 --- a/src/views/system/adminUser/admin-user-dialog.vue +++ b/src/views/system/adminUser/admin-user-dialog.vue @@ -6,6 +6,9 @@ import { FormProps } from '@/views/system/adminUser/utils/types'; import { $t } from '@/plugins/i18n'; import ReCol from '@/components/MyCol'; import { sexConstant } from '@/enums/baseConstant'; +import { deptSelector } from '@/views/system/dept/utils/columns'; +import { deptList } from '@/views/system/adminUser/utils/hooks'; +import { usePublicHooks } from '@/views/hooks'; const props = withDefaults(defineProps(), { formInline: () => ({ @@ -27,20 +30,15 @@ const props = withDefaults(defineProps(), { summary: undefined, // 状态 status: undefined, + // 部门 + deptIds: undefined, }), }); const formRef = ref(); const form = ref(props.formInline); - -/** - * * 上传头像回调 - * @param data - */ -const onUploadCallback = ({ data }) => { - console.log('value=>', data); - form.value.avatar = data.filepath; -}; +// 用户是否停用样式 +const { switchStyle } = usePublicHooks(); defineExpose({ formRef }); @@ -92,17 +90,28 @@ defineExpose({ formRef }); - - - - + + + + + - + + + + + + + + diff --git a/src/views/system/adminUser/index.vue b/src/views/system/adminUser/index.vue index 5d0800f..bc5ff25 100644 --- a/src/views/system/adminUser/index.vue +++ b/src/views/system/adminUser/index.vue @@ -1,11 +1,12 @@