diff --git a/src/api/v1/adminUser.ts b/src/api/v1/adminUser.ts index dc8fee3..3a6f96e 100644 --- a/src/api/v1/adminUser.ts +++ b/src/api/v1/adminUser.ts @@ -29,17 +29,12 @@ export interface RefreshTokenResult { 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' } }); }; @@ -49,90 +44,67 @@ 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 }); + return http.request>('post', 'user/noManage/logout', { data }); }; -/** - * 用户信息---获取用户信息列表 - */ +/** 获取用户信息,根据当前token获取 */ +export const fetchGetUserinfo = () => { + return http.request>('get', 'user/noManage/getUserinfo'); +}; + +/** 用户信息---获取用户信息列表 */ export const fetchGetAdminUserList = (data: any) => { return http.request>('get', `user/getAdminUserList/${data.currentPage}/${data.pageSize}`, { params: data }); }; -/** - * 查询用户 - * @param data - */ +/** 用户信息---查询用户 */ export const fetchQueryUser = (data: any) => { - return http.request>('get', 'user/queryUser', { params: data }); + return http.request>('get', 'user/noManage/queryUser', { params: data }); }; -/** - * 用户信息---添加用户信息 - */ +/** 用户信息---添加用户信息 */ export const fetchAddAdminUser = (data: any) => { return http.request>('post', 'user/addAdminUser', { data }); }; -/** - * 用户信息---更新用户信息 - */ +/** 用户信息---更新用户信息 */ export const fetchUpdateAdminUser = (data: any) => { return http.request>('put', 'user/updateAdminUser', { data }); }; -/** - * 用户信息---删除用户信息 - */ +/** 用户信息---删除用户信息 */ 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/dept.ts b/src/api/v1/dept.ts index c1de5c2..af41d03 100644 --- a/src/api/v1/dept.ts +++ b/src/api/v1/dept.ts @@ -1,37 +1,27 @@ import { http } from '@/api/service/request'; import type { BaseResult, ResultTable } from '@/api/service/types'; -/** - * 部门管理---获取部门管理列表 - */ +/** 部门管理---获取部门管理列表 */ export const fetchGetDeptList = (data: any) => { return http.request>('get', `dept/getDeptList/${data.currentPage}/${data.pageSize}`, { params: data }); }; -/** - * 部门管理---获取所有部门管理列表 - */ +/** 部门管理---获取所有部门管理列表 */ export const fetchGetAllDeptList = () => { return http.request>('get', 'dept/getAllDeptList'); }; -/** - * 部门管理---添加部门管理 - */ +/** 部门管理---添加部门管理 */ export const fetchAddDept = (data: any) => { return http.request>('post', 'dept/addDept', { data }); }; -/** - * 部门管理---更新部门管理 - */ +/** 部门管理---更新部门管理 */ export const fetchUpdateDept = (data: any) => { return http.request>('put', 'dept/updateDept', { data }); }; -/** - * 部门管理---删除部门管理 - */ +/** 部门管理---删除部门管理 */ export const fetchDeleteDept = (data: any) => { return http.request>('delete', 'dept/deleteDept', { data }); }; diff --git a/src/api/v1/emailUsers.ts b/src/api/v1/emailUsers.ts index 52ab334..d6efedb 100644 --- a/src/api/v1/emailUsers.ts +++ b/src/api/v1/emailUsers.ts @@ -8,7 +8,7 @@ export const fetchGetEmailUsersList = (data: any) => { /** 邮箱用户发送配置管理---获取所有邮箱配置用户 */ export const fetchGetAllMailboxConfigurationUsers = () => { - return http.request>('get', 'emailUsers/getAllMailboxConfigurationUsers'); + return http.request>('get', 'emailUsers/noManage/getAllMailboxConfigurationUsers'); }; /** 邮箱用户发送配置管理---添加邮箱用户发送配置管理 */ diff --git a/src/api/v1/files.ts b/src/api/v1/files.ts index d2eb845..2ca4fbc 100644 --- a/src/api/v1/files.ts +++ b/src/api/v1/files.ts @@ -18,10 +18,10 @@ export const downloadFilesByFilepath = (data: any) => { /** 系统文件管理---获取所有文件类型 */ export const fetchGetAllMediaTypes = () => { - return http.request>('get', `files/getAllMediaTypes`); + return http.request>('get', `files/noManage/getAllMediaTypes`); }; -/** 系统文件管理---获取所有文件类型 */ +/** 系统文件管理---获取所有文件存储基础路径 */ export const fetchGetAllFilesStoragePath = () => { return http.request>('get', `files/getAllFilesStoragePath`); }; diff --git a/src/api/v1/i18n.ts b/src/api/v1/i18n.ts index 4d6db35..6764ae8 100644 --- a/src/api/v1/i18n.ts +++ b/src/api/v1/i18n.ts @@ -1,65 +1,47 @@ import { http } from '@/api/service/request'; import type { BaseResult, ResultTable } from '@/api/service/types'; -/** - * * 获取多语言内容 - */ +/** 多语言类型管理---获取多语言内容 */ export const fetchGetI18n = () => { return http.request>('get', 'i18n/getI18n'); }; -/** - * 多语言管理---获取多语言列表 - */ +/** 多语言类型管理---获取多语言列表 */ export const fetchGetI18nList = (data: any) => { return http.request>('get', `i18n/getI18nList/${data.currentPage}/${data.pageSize}`, { params: data }); }; -/** - * 多语言管理---添加多语言 - */ +/** 多语言类型管理---添加多语言 */ export const fetchAddI18n = (data: any) => { return http.request>('post', 'i18n/addI18n', { data }); }; -/** - * 多语言管理---更新多语言 - */ +/** 多语言类型管理---更新多语言 */ export const fetchUpdateI18n = (data: any) => { return http.request>('put', 'i18n/updateI18n', { data }); }; -/** - * 多语言管理---删除多语言 - */ +/** 多语言类型管理---删除多语言 */ export const fetchDeleteI18n = (data: any) => { return http.request>('delete', 'i18n/deleteI18n', { data }); }; -/** - * 多语言类型管理---获取多语言类型列表 - */ +/** 多语言类型管理---获取多语言类型列表 */ export const fetchGetI18nTypeList = () => { return http.request>('get', 'i18nType/noAuth/getI18nTypeList'); }; -/** - * 多语言类型管理---添加多语言类型 - */ +/** 多语言类型管理---添加多语言类型 */ export const fetchAddI18nType = (data: any) => { return http.request>('post', 'i18nType/addI18nType', { data }); }; -/** - * 多语言类型管理---更新多语言类型 - */ +/** 多语言类型管理---更新多语言类型 */ export const fetchUpdateI18nType = (data: any) => { return http.request>('put', 'i18nType/updateI18nType', { data }); }; -/** - * 多语言类型管理---删除多语言类型 - */ +/** 多语言类型管理---删除多语言类型 */ export const fetchDeleteI18nType = (data: any) => { return http.request>('delete', 'i18nType/deleteI18nType', { data }); }; diff --git a/src/api/v1/menuIcon.ts b/src/api/v1/menuIcon.ts index b408df2..8edf7ab 100644 --- a/src/api/v1/menuIcon.ts +++ b/src/api/v1/menuIcon.ts @@ -1,38 +1,27 @@ import { http } from '@/api/service/request'; import type { BaseResult, ResultTable } from '@/api/service/types'; -/** - * 系统菜单图标---获取多语言列表 - */ +/** 系统菜单图标---获取多语言列表 */ export const fetchGetMenuIconList = (data: any) => { return http.request>('get', `menuIcon/getMenuIconList/${data.currentPage}/${data.pageSize}`, { params: data }); }; -/** - * 系统菜单图标---添加多语言 - */ +/** 系统菜单图标---添加多语言 */ export const fetchAddMenuIcon = (data: any) => { return http.request>('post', 'menuIcon/addMenuIcon', { data }); }; -/** - * 系统菜单图标---更新多语言 - */ +/** 系统菜单图标---更新多语言 */ export const fetchUpdateMenuIcon = (data: any) => { return http.request>('put', 'menuIcon/updateMenuIcon', { data }); }; -/** - * 系统菜单图标---删除多语言 - */ +/** 系统菜单图标---删除多语言 */ export const fetchDeleteMenuIcon = (data: any) => { return http.request>('delete', 'menuIcon/deleteMenuIcon', { data }); }; -/** - * 系统菜单图标---根据iconName搜索menuIc - * @param data - */ +/** 系统菜单图标---根据iconName搜索menuIc */ export const fetchGetIconNameList = (data: any) => { - return http.request>('get', 'menuIcon/getIconNameList', { params: data }); + return http.request>('get', 'menuIcon/noManage/getIconNameList', { params: data }); }; diff --git a/src/api/v1/power.ts b/src/api/v1/power.ts index 9684042..1960fa4 100644 --- a/src/api/v1/power.ts +++ b/src/api/v1/power.ts @@ -8,10 +8,10 @@ export const fetchGetPowerList = (data: any) => { /** 权限---根据角色id获取权限内容 */ export const fetchGetPowerListByRoleId = (data: any) => { - return http.request>('get', 'rolePower/getPowerListByRoleId', { params: data }); + return http.request>('get', 'rolePower/noManage/getPowerListByRoleId', { params: data }); }; -/** 获取所有权限 */ +/** 权限---获取所有权限 */ export const fetchGetAllPowers = () => { return http.request>('get', `power/getAllPowers`); }; diff --git a/src/api/v1/role.ts b/src/api/v1/role.ts index 953f695..860f4fb 100644 --- a/src/api/v1/role.ts +++ b/src/api/v1/role.ts @@ -1,51 +1,37 @@ import { http } from '@/api/service/request'; import type { BaseResult, ResultTable } from '@/api/service/types'; -/** - * 角色---获取角色列表 - */ +/** 角色---获取角色列表 */ export const fetchGetRoleList = (data: any) => { return http.request>('get', `role/getRoleList/${data.currentPage}/${data.pageSize}`, { params: data }); }; -/** - * 获取所有角色 - */ +/** 角色---获取所有角色 */ export const fetchGetAllRoles = () => { - return http.request>('get', `role/getAllRoles`); + return http.request>('get', `role/noManage/getAllRoles`); }; -/** - * 根据用户id获取所有角色 - */ +/** 角色---根据用户id获取所有角色 */ export const fetchGetRoleListByUserId = data => { return http.request>('get', `userRole/getRoleListByUserId`, { params: data }); }; -/** - * 角色---添加角色 - */ +/** 角色---添加角色 */ export const fetchAddRole = (data: any) => { return http.request>('post', 'role/addRole', { data }); }; -/** - * 角色---为角色分配权限 - */ +/** 角色---为角色分配权限 */ export const fetchAssignPowersToRole = (data: any) => { return http.request>('post', 'rolePower/assignPowersToRole', { data }); }; -/** - * 角色---更新角色 - */ +/** 角色---更新角色 */ export const fetchUpdateRole = (data: any) => { return http.request>('put', 'role/updateRole', { data }); }; -/** - * 角色---删除角色 - */ +/** 角色---删除角色 */ export const fetchDeleteRole = (data: any) => { return http.request>('delete', 'role/deleteRole', { data }); }; diff --git a/src/api/v1/schedulers.ts b/src/api/v1/schedulers.ts index 20c69aa..04d7e6b 100644 --- a/src/api/v1/schedulers.ts +++ b/src/api/v1/schedulers.ts @@ -8,7 +8,7 @@ export const fetchGetSchedulersList = (data: any) => { /** Schedulers视图---获取所有可用调度任务 */ export const fetchGetAllScheduleJobList = () => { - return http.request>('get', 'schedulers/getAllScheduleJobList'); + return http.request>('get', 'schedulers/noManage/getAllScheduleJobList'); }; /** Schedulers视图---添加Schedulers视图 */ diff --git a/src/api/v1/system.ts b/src/api/v1/system.ts index 6ebeb89..b47d8be 100644 --- a/src/api/v1/system.ts +++ b/src/api/v1/system.ts @@ -3,7 +3,7 @@ import type { BaseResult } from '@/api/service/types'; /** 系统管理-用户路由获取 */ export const getRouterAsync = () => { - return http.request>('get', 'router/getRouterAsync'); + return http.request>('get', 'router/noManage/getRouterAsync'); }; /** 上传文件 */ diff --git a/src/api/v1/userLoginLog.ts b/src/api/v1/userLoginLog.ts index 9a77de2..f6fc924 100644 --- a/src/api/v1/userLoginLog.ts +++ b/src/api/v1/userLoginLog.ts @@ -6,6 +6,11 @@ export const fetchGetUserLoginLogList = (data: any) => { return http.request>('get', `userLoginLog/getUserLoginLogList/${data.currentPage}/${data.pageSize}`, { params: data }); }; +/** 用户登录日志---获取用户登录日志列表 */ +export const fetchGetUserLoginLogListByLocalUser = (data: any) => { + return http.request>('get', `userLoginLog/noManage/getUserLoginLogListByLocalUser/${data.currentPage}/${data.pageSize}`); +}; + /** 用户登录日志---删除用户登录日志 */ export const fetchDeleteUserLoginLog = (data: any) => { return http.request>('delete', 'userLoginLog/deleteUserLoginLog', { data }); diff --git a/src/components/error/403.vue b/src/components/Error/403.vue similarity index 100% rename from src/components/error/403.vue rename to src/components/Error/403.vue diff --git a/src/components/error/404.vue b/src/components/Error/404.vue similarity index 100% rename from src/components/error/404.vue rename to src/components/Error/404.vue diff --git a/src/components/error/500.vue b/src/components/Error/500.vue similarity index 100% rename from src/components/error/500.vue rename to src/components/Error/500.vue diff --git a/src/components/Text/index.ts b/src/components/Text/index.ts index 6213566..702b357 100644 --- a/src/components/Text/index.ts +++ b/src/components/Text/index.ts @@ -1,7 +1,7 @@ -import reText from "./src/index.vue"; -import { withInstall } from "@pureadmin/utils"; +import reText from './src/index.vue'; +import { withInstall } from '@pureadmin/utils'; /** 支持`Tooltip`提示的文本省略组件 */ -export const ReText = withInstall(reText); +export const Text = withInstall(reText); -export default ReText; +export default Text; diff --git a/src/layout/components/lay-navbar/dropdown-menu.vue b/src/layout/components/lay-navbar/dropdown-menu.vue new file mode 100644 index 0000000..6bd3166 --- /dev/null +++ b/src/layout/components/lay-navbar/dropdown-menu.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/src/layout/components/lay-navbar/index.vue b/src/layout/components/lay-navbar/index.vue index 69d30cc..e2d97ec 100644 --- a/src/layout/components/lay-navbar/index.vue +++ b/src/layout/components/lay-navbar/index.vue @@ -9,12 +9,12 @@ import LaySidebarBreadCrumb from '../lay-sidebar/components/SidebarBreadCrumb.vu import LaySidebarTopCollapse from '../lay-sidebar/components/SidebarTopCollapse.vue'; import GlobalizationIcon from '@/assets/svg/globalization.svg?component'; -import LogoutCircleRLine from '@iconify-icons/ri/logout-circle-r-line'; import Setting from '@iconify-icons/ri/settings-3-line'; import Check from '@iconify-icons/ep/check'; import { $t } from '@/plugins/i18n'; import { userI18nTypeStore } from '@/store/i18n/i18nType'; import { onMounted } from 'vue'; +import DropdownMenu from '@/layout/components/lay-navbar/dropdown-menu.vue'; const { layout, device, logout, onPanel, pureApp, username, userAvatar, avatarsStyle, toggleSideBar, getDropdownItemStyle, getDropdownItemClass } = useNav(); @@ -63,20 +63,8 @@ onMounted(() => { - - - -

{{ username }}

-
- -
+ + @@ -104,26 +92,6 @@ onMounted(() => { min-width: 280px; height: 48px; color: #000000d9; - - .el-dropdown-link { - display: flex; - align-items: center; - justify-content: space-around; - height: 48px; - padding: 10px; - color: #000000d9; - cursor: pointer; - - p { - font-size: 14px; - } - - img { - width: 22px; - height: 22px; - border-radius: 50%; - } - } } .breadcrumb-container { diff --git a/src/layout/components/lay-setting/index.vue b/src/layout/components/lay-setting/index.vue index 1cfc7b8..2deebc4 100644 --- a/src/layout/components/lay-setting/index.vue +++ b/src/layout/components/lay-setting/index.vue @@ -64,7 +64,7 @@ const getThemeColorStyle = computed(() => { /** 当网页整体为暗色风格时不显示亮白色主题配色切换选项 */ const showThemeColors = computed(() => { return themeColor => { - return themeColor === 'light' && isDark.value ? false : true; + return !(themeColor === 'light' && isDark.value); }; }); diff --git a/src/layout/components/lay-sidebar/components/SidebarItem.vue b/src/layout/components/lay-sidebar/components/SidebarItem.vue index b3eb270..6e7ad9c 100644 --- a/src/layout/components/lay-sidebar/components/SidebarItem.vue +++ b/src/layout/components/lay-sidebar/components/SidebarItem.vue @@ -1,223 +1,150 @@ diff --git a/src/router/index.ts b/src/router/index.ts index c5f03d8..20e73d7 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -102,11 +102,11 @@ router.beforeEach((to: ToRouteType, _from, next) => { if (Cookies.get(multipleTabsKey) && userInfo) { // 无权限跳转403页面 if (to.meta?.roles && !isOneOfArray(to.meta?.roles, userInfo?.roles)) { - next({ path: '/error/403' }); + next({ path: '/Error/403' }); } // 开启隐藏首页后在浏览器地址栏手动输入首页welcome路由则跳转到404页面 if (VITE_HIDE_HOME === 'true' && to.fullPath === '/welcome') { - next({ path: '/error/404' }); + next({ path: '/Error/404' }); } if (_from?.name) { // name为超链接 diff --git a/src/router/modules/error.ts b/src/router/modules/error.ts index 0083cba..669c5a3 100644 --- a/src/router/modules/error.ts +++ b/src/router/modules/error.ts @@ -1,8 +1,8 @@ import { $t } from '@/plugins/i18n'; export default { - path: '/error', - redirect: '/error/403', + path: '/Error', + redirect: '/Error/403', meta: { icon: 'ri:information-line', showLink: false, @@ -11,25 +11,25 @@ export default { }, children: [ { - path: '/error/403', + path: '/Error/403', name: '403', - component: () => import('@/components/error/403.vue'), + component: () => import('@/components/Error/403.vue'), meta: { title: $t('menus.pureFourZeroOne'), }, }, { - path: '/error/404', + path: '/Error/404', name: '404', - component: () => import('@/components/error/404.vue'), + component: () => import('@/components/Error/404.vue'), meta: { title: $t('menus.pureFourZeroFour'), }, }, { - path: '/error/500', + path: '/Error/500', name: '500', - component: () => import('@/components/error/500.vue'), + component: () => import('@/components/Error/500.vue'), meta: { title: $t('menus.pureFive'), }, diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts index 17b6ef0..e206d36 100644 --- a/src/router/modules/remaining.ts +++ b/src/router/modules/remaining.ts @@ -27,4 +27,14 @@ export default [ }, ], }, + { + path: '/account-settings', + name: 'AccountSettings', + component: () => import('@/views/account-settings/index.vue'), + meta: { + title: 'buttons.accountSettings', + showLink: false, + rank: 104, + }, + }, ] satisfies Array; diff --git a/src/router/utils.ts b/src/router/utils.ts index 4675104..b30075f 100644 --- a/src/router/utils.ts +++ b/src/router/utils.ts @@ -107,7 +107,7 @@ function addPathMatch() { router.addRoute({ path: '/:pathMatch(.*)', name: 'pathMatch', - redirect: '/error/404', + redirect: '/Error/404', }); } } diff --git a/src/store/monitor/userLoginLog.ts b/src/store/monitor/userLoginLog.ts index c6f11a5..bf20a94 100644 --- a/src/store/monitor/userLoginLog.ts +++ b/src/store/monitor/userLoginLog.ts @@ -1,5 +1,5 @@ import { defineStore } from 'pinia'; -import { fetchDeleteUserLoginLog, fetchGetUserLoginLogList } from '@/api/v1/userLoginLog'; +import { fetchDeleteUserLoginLog, fetchGetUserLoginLogList, fetchGetUserLoginLogListByLocalUser } from '@/api/v1/userLoginLog'; import { pageSizes } from '@/enums/baseConstant'; import { storeMessage } from '@/utils/message'; import { storePagination } from '@/store/useStorePagination'; @@ -66,6 +66,14 @@ export const useUserLoginLogStore = defineStore('userLoginLogStore', { return pagination(result); }, + /** 分页查询根据用户Id用户登录日志内容 */ + async getUserLoginLogListByLocalUser(data: any) { + const baseResult = await fetchGetUserLoginLogListByLocalUser(data); + if (baseResult.code === 200) { + return baseResult.data; + } + }, + /** 删除用户登录日志 */ async deleteUserLoginLog(data: any) { const result = await fetchDeleteUserLoginLog(data); diff --git a/src/store/system/user.ts b/src/store/system/user.ts index d442be4..46baa21 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/adminUser'; +import { fetchAssignRolesToUsers, fetchGetUserinfo, 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'; @@ -79,6 +79,15 @@ export const useUserStore = defineStore({ return false; }, + /** 获取用户信息 */ + async getUserinfo() { + const result = await fetchGetUserinfo(); + if (result.code === 200) { + return result.data; + } + return {}; + }, + /** 根据用户id获取角色列表 */ async getRoleListByUserId(data: any) { const result = await fetchGetRoleListByUserId(data); diff --git a/src/views/account-settings/account-management.vue b/src/views/account-settings/account-management.vue new file mode 100644 index 0000000..0d4277e --- /dev/null +++ b/src/views/account-settings/account-management.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/src/views/account-settings/index.vue b/src/views/account-settings/index.vue new file mode 100644 index 0000000..f504c7d --- /dev/null +++ b/src/views/account-settings/index.vue @@ -0,0 +1,162 @@ + + + + + + + diff --git a/src/views/account-settings/profile.vue b/src/views/account-settings/profile.vue new file mode 100644 index 0000000..14b43cc --- /dev/null +++ b/src/views/account-settings/profile.vue @@ -0,0 +1,118 @@ + + + diff --git a/src/views/account-settings/references.vue b/src/views/account-settings/references.vue new file mode 100644 index 0000000..93a510a --- /dev/null +++ b/src/views/account-settings/references.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/src/views/account-settings/security-log.vue b/src/views/account-settings/security-log.vue new file mode 100644 index 0000000..b7e281d --- /dev/null +++ b/src/views/account-settings/security-log.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/views/account-settings/utils/columns.ts b/src/views/account-settings/utils/columns.ts new file mode 100644 index 0000000..018456c --- /dev/null +++ b/src/views/account-settings/utils/columns.ts @@ -0,0 +1,41 @@ +import dayjs from 'dayjs'; +import { reactive } from 'vue'; +import type { FormRules } from 'element-plus'; + +export const columns: TableColumnList = [ + { + label: '详情', + prop: 'summary', + minWidth: 140, + }, + { + label: 'IP 地址', + prop: 'ip', + minWidth: 100, + }, + { + label: '地点', + prop: 'address', + minWidth: 140, + }, + { + label: '操作系统', + prop: 'system', + minWidth: 100, + }, + { + label: '浏览器类型', + prop: 'browser', + minWidth: 100, + }, + { + label: '时间', + prop: 'operatingTime', + minWidth: 180, + formatter: ({ operatingTime }) => dayjs(operatingTime).format('YYYY-MM-DD HH:mm:ss'), + }, +]; + +export const rules = reactive>({ + nickname: [{ required: true, message: '昵称必填', trigger: 'blur' }], +}); diff --git a/src/views/account-settings/utils/hooks.ts b/src/views/account-settings/utils/hooks.ts new file mode 100644 index 0000000..dfdacad --- /dev/null +++ b/src/views/account-settings/utils/hooks.ts @@ -0,0 +1,18 @@ +import { useUserStore } from '@/store/system/user'; +import { reactive } from 'vue'; + +const userStore = useUserStore(); +export const userInfos = reactive({ + avatar: '', + username: '', + nickname: '', + email: '', + phone: '', + description: '', +}); + +export const onSearch = async () => { + const data = await userStore.getUserinfo(); + Object.assign(userInfos, data); + userInfos.description = data.personDescription; +}; diff --git a/src/views/hooks.ts b/src/views/hooks.ts index fd9a87f..f073c46 100644 --- a/src/views/hooks.ts +++ b/src/views/hooks.ts @@ -27,7 +27,6 @@ export function usePublicHooks() { }; }; }); - return { /** 当前网页是否为`dark`模式 */ isDark,