diff --git a/src/api/profile.ts b/src/api/profile.ts index 63295ed3..3e52e664 100644 --- a/src/api/profile.ts +++ b/src/api/profile.ts @@ -37,3 +37,16 @@ export function updateUserPassword(oldPassword: string, newPassword: string) { data: { oldPassword, newPassword }, }); } + +/** + * 用户强制重置密码 + * @param password 密码 + * @returns object + */ +export function updateUserPasswordForce(password: string) { + return request({ + url: '/system/user/profile/password-force', + method: 'PUT', + data: { password }, + }); +} diff --git a/src/components/ForcePasswdChange/index.vue b/src/components/ForcePasswdChange/index.vue new file mode 100644 index 00000000..bd9c0ec4 --- /dev/null +++ b/src/components/ForcePasswdChange/index.vue @@ -0,0 +1,198 @@ + + + + diff --git a/src/layouts/BasicLayout.vue b/src/layouts/BasicLayout.vue index 2d5dddcc..f9bd2e0d 100644 --- a/src/layouts/BasicLayout.vue +++ b/src/layouts/BasicLayout.vue @@ -8,6 +8,7 @@ import { import RightContent from './components/RightContent.vue'; import Tabs from './components/Tabs.vue'; import GlobalMask from '@/components/GlobalMask/index.vue'; +import ForcePasswdChange from '@/components/ForcePasswdChange/index.vue'; import { scriptUrl } from '@/assets/js/icon_font_8d5l8fzk5b87iudi'; import { computed, @@ -362,6 +363,8 @@ onUnmounted(() => { + + diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 14a3011a..003ac7e9 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -9,6 +9,8 @@ import { parseUrlPath } from '@/plugins/file-static-url'; /**用户信息类型 */ type UserInfo = { + /**用户ID */ + forcePasswdChange: boolean; /**用户ID */ userId: string; /**登录账号 */ @@ -33,6 +35,7 @@ type UserInfo = { const useUserStore = defineStore('user', { state: (): UserInfo => ({ + forcePasswdChange: false, userId: '', userName: '', roles: [], @@ -104,6 +107,9 @@ const useUserStore = defineStore('user', { if (res.code === RESULT_CODE_SUCCESS && res.data) { const token = res.data[TOKEN_RESPONSE_FIELD]; setToken(token); + if (res.data?.forcePasswdChange) { + this.forcePasswdChange = true; + } } return res; }, @@ -139,6 +145,10 @@ const useUserStore = defineStore('user', { // } // useLayoutStore().changeWaterMark(waterMarkContent); useLayoutStore().changeWaterMark(''); + // 强制修改密码 + if (res.data?.forcePasswdChange) { + this.forcePasswdChange = true; + } } // 网络错误时退出登录状态 if (res.code === 0) {