diff --git a/Yi.Pure.Vue3/.env.development b/Yi.Pure.Vue3/.env.development index 0405b42d..aa557120 100644 --- a/Yi.Pure.Vue3/.env.development +++ b/Yi.Pure.Vue3/.env.development @@ -15,7 +15,7 @@ VITE_APP_BASE_API = '/dev-api' VITE_APP_BASE_WS = '/dev-ws' #RBAC -# VITE_APP_BASE_URL='http://localhost:19001/api' +VITE_APP_BASE_URL='http://localhost:19001/api/app' #长连接 VITE_APP_BASE_URL_WS='http://localhost:19001/hub' diff --git a/Yi.Pure.Vue3/mock/asyncRoutes.ts b/Yi.Pure.Vue3/mock/asyncRoutes.ts index 83468576..4b8a2730 100644 --- a/Yi.Pure.Vue3/mock/asyncRoutes.ts +++ b/Yi.Pure.Vue3/mock/asyncRoutes.ts @@ -325,16 +325,13 @@ export default defineFakeRoute([ url: `/dev-api/get-async-routes`, method: "get", response: () => { - return { - success: true, - data: [ - systemManagementRouter, - systemMonitorRouter, - permissionRouter, - frameRouter, - tabsRouter - ] - }; + return [ + systemManagementRouter, + systemMonitorRouter, + permissionRouter, + frameRouter, + tabsRouter + ]; } } ]); diff --git a/Yi.Pure.Vue3/public/platform-config.json b/Yi.Pure.Vue3/public/platform-config.json index ff128f9d..085249b1 100644 --- a/Yi.Pure.Vue3/public/platform-config.json +++ b/Yi.Pure.Vue3/public/platform-config.json @@ -1,6 +1,6 @@ { "Version": "5.8.0", - "Title": "PureAdmin", + "Title": "Yi-PureAdmin", "FixedHeader": true, "HiddenSideBar": false, "MultiTagsCache": false, diff --git a/Yi.Pure.Vue3/src/api/user.ts b/Yi.Pure.Vue3/src/api/user.ts index 3cc6ade4..aff4d92e 100644 --- a/Yi.Pure.Vue3/src/api/user.ts +++ b/Yi.Pure.Vue3/src/api/user.ts @@ -1,21 +1,32 @@ import { http } from "@/utils/http"; export type imageCaptcha = { - //uuid - uuid: string; // 使用字符串表示 Guid - //验证码图片字节数值 - img: Uint8Array | null; + status: number; + data: { + //uuid + uuid: string; // 使用字符串表示 Guid + //验证码图片字节数值 + img: Uint8Array | null; + }; +}; + +export type LoginResult = { + status: number; + data: { + token: string; + refreshToken: string; + }; }; export type UserResult = { - success: boolean; + status: number; data: { /** 头像 */ avatar: string; /** 用户名 */ username: string; /** 昵称 */ - nickname: string; + nick: string; /** 当前登录用户的角色 */ roles: Array; /** 按钮级别权限 */ @@ -77,7 +88,11 @@ type ResultTable = { /** 登录 */ export const getLogin = (data?: object) => { - return http.request("post", "/account/login", { data }); + return http.request("post", "/account/login", { data }); +}; + +export const getUserInfo = () => { + return http.request("get", "/account"); }; /** 获取验证码 */ diff --git a/Yi.Pure.Vue3/src/store/modules/user.ts b/Yi.Pure.Vue3/src/store/modules/user.ts index fac9f929..4c15d830 100644 --- a/Yi.Pure.Vue3/src/store/modules/user.ts +++ b/Yi.Pure.Vue3/src/store/modules/user.ts @@ -11,6 +11,7 @@ import { type UserResult, type RefreshTokenResult, getLogin, + getUserInfo, refreshTokenApi } from "@/api/user"; import { useMultiTagsStoreHook } from "./multiTags"; @@ -81,8 +82,23 @@ export const useUserStore = defineStore({ return new Promise((resolve, reject) => { getLogin(data) .then(data => { - if (data?.success) setToken(data.data); - resolve(data); + if (data.status == 200) { + const storeData: DataInfo = { + expires: undefined, + refreshToken: data.data.refreshToken, + accessToken: data.data.token + }; + setToken(storeData); + getUserInfo().then(resInfo => { + storeData.username = resInfo.data.username; + storeData.avatar = resInfo.data.avatar; + storeData.nickname = resInfo.data.nick; + storeData.roles = resInfo.data.roles; + storeData.accessToken = resInfo.data.accessToken; + setToken(storeData); + resolve(resInfo); + }); + } }) .catch(error => { reject(error); diff --git a/Yi.Pure.Vue3/src/utils/http/index.ts b/Yi.Pure.Vue3/src/utils/http/index.ts index 62722696..e1cd9252 100644 --- a/Yi.Pure.Vue3/src/utils/http/index.ts +++ b/Yi.Pure.Vue3/src/utils/http/index.ts @@ -6,7 +6,6 @@ import Axios, { import type { PureHttpError, RequestMethods, - PureHttpResponse, PureHttpRequestConfig } from "./types.d"; import { stringify } from "qs"; @@ -120,20 +119,20 @@ class PureHttp { private httpInterceptorsResponse(): void { const instance = PureHttp.axiosInstance; instance.interceptors.response.use( - (response: PureHttpResponse) => { + (response: any) => { const $config = response.config; // 关闭进度条动画 NProgress.done(); // 优先判断post/get等方法是否传入回调,否则执行初始化设置等回调 if (typeof $config.beforeResponseCallback === "function") { $config.beforeResponseCallback(response); - return response.data; + return response; } if (PureHttp.initConfig.beforeResponseCallback) { PureHttp.initConfig.beforeResponseCallback(response); - return response.data; + return response; } - return response.data; + return response; }, (error: PureHttpError) => { const $error = error; diff --git a/Yi.Pure.Vue3/src/views/login/index.vue b/Yi.Pure.Vue3/src/views/login/index.vue index 0002b762..d05f0f48 100644 --- a/Yi.Pure.Vue3/src/views/login/index.vue +++ b/Yi.Pure.Vue3/src/views/login/index.vue @@ -68,8 +68,8 @@ const ruleForm = reactive({ //获取验证码 const getCode = () => { getCodeImg().then(res => { - codeUrl.value = "data:image/gif;base64," + res.img; - ruleForm.uuid = res.uuid; + codeUrl.value = "data:image/gif;base64," + res.data.img; + ruleForm.uuid = res.data.uuid; }); }; @@ -81,10 +81,12 @@ const onLogin = async (formEl: FormInstance | undefined) => { useUserStoreHook() .loginByUsername({ username: ruleForm.username, - password: ruleForm.password + password: ruleForm.password, + uuid: ruleForm.uuid, + code: ruleForm.verifyCode }) .then(res => { - if (res.success) { + if (res.status == 200) { // 获取后端路由 return initRouter().then(() => { disabled.value = true; @@ -239,10 +241,10 @@ getCode(); :prefix-icon="useRenderIcon('ri:shield-keyhole-line')" > diff --git a/Yi.Pure.Vue3/src/views/login/utils/rule.ts b/Yi.Pure.Vue3/src/views/login/utils/rule.ts index 2d1f3f3b..1fb9ac72 100644 --- a/Yi.Pure.Vue3/src/views/login/utils/rule.ts +++ b/Yi.Pure.Vue3/src/views/login/utils/rule.ts @@ -2,7 +2,6 @@ import { reactive } from "vue"; import { isPhone } from "@pureadmin/utils"; import type { FormRules } from "element-plus"; import { $t, transformI18n } from "@/plugins/i18n"; -import { useUserStoreHook } from "@/store/modules/user"; /** 6位数字验证码正则 */ export const REGEXP_SIX = /^\d{6}$/; @@ -32,10 +31,6 @@ const loginRules = reactive({ validator: (rule, value, callback) => { if (value === "") { callback(new Error(transformI18n($t("login.pureVerifyCodeReg")))); - } else if (useUserStoreHook().verifyCode !== value) { - callback( - new Error(transformI18n($t("login.pureVerifyCodeCorrectReg"))) - ); } else { callback(); } diff --git a/Yi.Pure.Vue3/src/views/permission/page/index.vue b/Yi.Pure.Vue3/src/views/permission/page/index.vue index cd602c6f..5d50b2e0 100644 --- a/Yi.Pure.Vue3/src/views/permission/page/index.vue +++ b/Yi.Pure.Vue3/src/views/permission/page/index.vue @@ -33,7 +33,7 @@ function onChange() { useUserStoreHook() .loginByUsername({ username: username.value, password: "admin123" }) .then(res => { - if (res.success) { + if (res.status == 200) { storageLocal().removeItem("async-routes"); usePermissionStoreHook().clearAllCachePage(); initRouter();