diff --git a/.env.development b/.env.development index 2ad4d0b..89219d7 100644 --- a/.env.development +++ b/.env.development @@ -5,4 +5,4 @@ NODE_ENV='development' VITE_APP_TITLE = 'Metavatar-PC' VITE_APP_PORT = 3000 -VITE_APP_BASE_API = '/dev-api' +VITE_APP_BASE_API = 'https://photo.metavatar.cc/C' diff --git a/.env.production b/.env.production index b5d9d81..6c3e95c 100644 --- a/.env.production +++ b/.env.production @@ -2,4 +2,4 @@ VITE_APP_TITLE = 'Metavatar-PC' VITE_APP_PORT = 3000 -VITE_APP_BASE_API = '/prod-api' +VITE_APP_BASE_API = 'https://photo.metavatar.cc/C' diff --git a/.env.staging b/.env.staging deleted file mode 100644 index 7a0b3d3..0000000 --- a/.env.staging +++ /dev/null @@ -1,6 +0,0 @@ -## 模拟环境 -NODE_ENV='staging' - -VITE_APP_TITLE = 'vue3-element-admin' -VITE_APP_PORT = 3000 -VITE_APP_BASE_API = '/prod--api' diff --git a/package.json b/package.json index c0dd0f2..7fb4951 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "screenfull": "^6.0.0", "vue": "^3.2.45", "vue-i18n": "9", - "vue-router": "^4.1.6" + "vue-router": "^4.0.13" }, "devDependencies": { "@commitlint/cli": "^17.5.1", @@ -71,4 +71,4 @@ "repository": "https://gitee.com/youlaiorg/vue3-element-admin.git", "author": "有来开源组织", "license": "MIT" -} \ No newline at end of file +} diff --git a/src/apis/login.js b/src/apis/login.js new file mode 100644 index 0000000..67b146f --- /dev/null +++ b/src/apis/login.js @@ -0,0 +1,23 @@ +import request from "@/utils/request.js"; + +const baseURL = import.meta.env.VITE_APP_BASE_API + +/** + * @description 注册 + * @params email,password + * @returns data + */ +export function register(data) { + return request({ + url: `/api/user/doRegisterByEmail`, + method: 'post', + data + }) +} + +/** +* @description:获取图形验证码 +* @return: 验证码地址 +*/ +export const getCodeImgUrl = baseURL + '/api/user/captcha.jpg' + diff --git a/src/assets/video/loginVideo.mp4 b/src/assets/video/loginVideo.mp4 deleted file mode 100644 index c8b5f4a..0000000 Binary files a/src/assets/video/loginVideo.mp4 and /dev/null differ diff --git a/src/lang/package/en.ts b/src/lang/package/en.ts index c351075..638ae1a 100644 --- a/src/lang/package/en.ts +++ b/src/lang/package/en.ts @@ -7,11 +7,15 @@ export default { // 登录页面国际化 login: { - title: "Metavatar-PC Sign in", + title: "Metavatar-PC", username: "Username", password: "Password", login: "Sign in", + register: "Sign up", + loginBtn: "Sign in", + registerBtn: "Sign up", verifyCode: "Verify Code", + signIn: "Already got an account? Sign in here", signUp: "Don't have an account? Sign up here", forgetPwd: "I forgot my password", }, @@ -79,4 +83,7 @@ export default { WeChatPay: "WeChatPay", Alipay: "Alipay", }, + signSucceed: { + title: "Sign Succeed !", + }, }; diff --git a/src/lang/package/zh-cn.ts b/src/lang/package/zh-cn.ts index a2ea865..b6b34a5 100644 --- a/src/lang/package/zh-cn.ts +++ b/src/lang/package/zh-cn.ts @@ -7,11 +7,15 @@ export default { // 登录页面国际化 login: { - title: "Metavatar-PC 登录", + title: "Metavatar-PC", username: "用户名", password: "密码", - login: "登 录", + login: "登录", + register: "注册", + loginBtn: "登 录", + registerBtn: "注 册", verifyCode: "验证码", + signIn: "已有账号?现在登录!", signUp: "没有账号?现在加入!", forgetPwd: "忘记密码", }, @@ -79,4 +83,7 @@ export default { WeChatPay: "微信支付", Alipay: "支付宝支付", }, + signSucceed: { + title: "注册成功!", + }, }; diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index 7060603..fb5fb08 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -123,14 +123,15 @@ function logout() { confirmButtonText: confirm, cancelButtonText: cancel, }).then(() => { - userStore - .logout() - .then(() => { - tagsViewStore.delAllViews(); - }) - .then(() => { - router.push(`/login?redirect=${route.fullPath}`); - }); + router.push(`/login`); + // userStore + // .logout() + // .then(() => { + // tagsViewStore.delAllViews(); + // }) + // .then(() => { + // router.push(`/login?redirect=${route.fullPath}`); + // }); }); } diff --git a/src/permission.ts b/src/permission.ts index 6b1203e..a2f118e 100644 --- a/src/permission.ts +++ b/src/permission.ts @@ -11,51 +11,51 @@ const permissionStore = usePermissionStoreHook(); // 白名单路由 const whiteList = ["/login"]; -router.beforeEach(async (to, from, next) => { - NProgress.start(); - const hasToken = localStorage.getItem("accessToken"); - if (hasToken) { - if (to.path === "/login") { - // 如果已登录,跳转首页 - next({ path: "/" }); - NProgress.done(); - } else { - const userStore = useUserStoreHook(); - const hasRoles = userStore.roles && userStore.roles.length > 0; - if (hasRoles) { - // 未匹配到任何路由,跳转404 - if (to.matched.length === 0) { - from.name ? next({ name: from.name }) : next("/404"); - } else { - next(); - } - } else { - try { - const { roles } = await userStore.getInfo(); - const accessRoutes = await permissionStore.generateRoutes(roles); - accessRoutes.forEach((route) => { - router.addRoute(route); - }); - next({ ...to, replace: true }); - } catch (error) { - // 移除 token 并跳转登录页 - await userStore.resetToken(); - next(`/login?redirect=${to.path}`); - NProgress.done(); - } - } - } - } else { - // 未登录可以访问白名单页面 - if (whiteList.indexOf(to.path) !== -1) { - next(); - } else { - next(`/login?redirect=${to.path}`); - NProgress.done(); - } - } -}); +// router.beforeEach(async (to, from, next) => { +// NProgress.start(); +// const hasToken = localStorage.getItem("accessToken"); +// if (hasToken) { +// if (to.path === "/login") { +// // 如果已登录,跳转首页 +// next({ path: "/" }); +// NProgress.done(); +// } else { +// const userStore = useUserStoreHook(); +// const hasRoles = userStore.roles && userStore.roles.length > 0; +// if (hasRoles) { +// // 未匹配到任何路由,跳转404 +// if (to.matched.length === 0) { +// from.name ? next({ name: from.name }) : next("/404"); +// } else { +// next(); +// } +// } else { +// try { +// const { roles } = await userStore.getInfo(); +// const accessRoutes = await permissionStore.generateRoutes(roles); +// accessRoutes.forEach((route) => { +// router.addRoute(route); +// }); +// next({ ...to, replace: true }); +// } catch (error) { +// // 移除 token 并跳转登录页 +// await userStore.resetToken(); +// next(`/login?redirect=${to.path}`); +// NProgress.done(); +// } +// } +// } +// } else { +// // 未登录可以访问白名单页面 +// if (whiteList.indexOf(to.path) !== -1) { +// next(); +// } else { +// next(`/login?redirect=${to.path}`); +// NProgress.done(); +// } +// } +// }); -router.afterEach(() => { - NProgress.done(); -}); +// router.afterEach(() => { +// NProgress.done(); +// }); diff --git a/src/router/index.ts b/src/router/index.ts index aba41e7..1810ade 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -78,7 +78,7 @@ export const constantRoutes: RouteRecordRaw[] = [ }, }, ], - },// 修改密码 + }, // 修改密码 { path: "/", component: Layout, @@ -116,6 +116,25 @@ export const constantRoutes: RouteRecordRaw[] = [ }, ], }, + // 商店 + { + path: "/", + component: Layout, + redirect: "/signSucceed", + children: [ + { + path: "signSucceed", + component: () => import("@/views/signSucceed/index.vue"), + name: "signSucceed", + meta: { + title: "signSucceed", + icon: "homepage", + affix: true, + name: "signSucceed.title", + }, + }, + ], + }, // { // path: "/dashboard", // component: Layout, diff --git a/src/utils/request.js b/src/utils/request.js new file mode 100644 index 0000000..c108c8e --- /dev/null +++ b/src/utils/request.js @@ -0,0 +1,65 @@ +import axios from 'axios' +import router from '@/router' +import { ElMessage } from 'element-plus' +ElMessage + +/** +* @description:发送Axios请求 +*/ +const request = axios.create({ + baseURL: '/api', + timeout: 5000 +}) + +// 请求拦截器 +request.interceptors.request.use( + function (config) { + // 给所有授权的请求提供token + const AccessToken = localStorage.getItem("AccessToken") + if (AccessToken) { + config.headers.token = AccessToken + } + return config + }, + function (error) { + // 操作 + return Promise.reject(error) + } +) + +// 响应拦截器 +request.interceptors.response.use( + function (response) { + let code = response.data.code + // 当token过期或损坏时 + if (code == 1052) { + router.push("/login"); + ElMessage.error("登录过期,请重新登录!"); + return + + // 弹出错误 + } else if (code != 200) { + if (code == 1053) { + router.push("/login"); + // Toast.fail("请您先登录!"); + return + + } else if (code == 500) { + ElMessage.error("系统异常,请稍后再试"); + + // 其他错误 + } else { + + return Promise.reject(response.data) + } + } else { + // 正常返回 + return response.data + } + + }, + function (error) { + } +) + +export default request \ No newline at end of file diff --git a/src/utils/request.ts b/src/utils/request.ts index 5c7a95b..8cc6393 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -1,11 +1,11 @@ -import axios, { InternalAxiosRequestConfig, AxiosResponse } from 'axios'; -import { useUserStoreHook } from '@/store/modules/user'; +import axios, { InternalAxiosRequestConfig, AxiosResponse } from "axios"; +import { useUserStoreHook } from "@/store/modules/user"; // 创建 axios 实例 const service = axios.create({ baseURL: import.meta.env.VITE_APP_BASE_API, timeout: 50000, - headers: { 'Content-Type': 'application/json;charset=utf-8' } + headers: { "Content-Type": "application/json;charset=utf-8" }, }); // 请求拦截器 @@ -26,7 +26,7 @@ service.interceptors.request.use( service.interceptors.response.use( (response: AxiosResponse) => { const { code, msg } = response.data; - if (code === '00000') { + if (code === "00000") { return response.data; } // 响应数据为二进制流处理(Excel导出) @@ -34,23 +34,23 @@ service.interceptors.response.use( return response; } - ElMessage.error(msg || '系统出错'); - return Promise.reject(new Error(msg || 'Error')); + ElMessage.error(msg || "系统出错"); + return Promise.reject(new Error(msg || "Error")); }, (error: any) => { if (error.response.data) { const { code, msg } = error.response.data; // token 过期,重新登录 - if (code === 'A0230') { - ElMessageBox.confirm('当前页面已失效,请重新登录', '提示', { - confirmButtonText: '确定', - type: 'warning' + if (code === "A0230") { + ElMessageBox.confirm("当前页面已失效,请重新登录", "提示", { + confirmButtonText: "确定", + type: "warning", }).then(() => { localStorage.clear(); - window.location.href = '/'; + window.location.href = "/"; }); } else { - ElMessage.error(msg || '系统出错'); + ElMessage.error(msg || "系统出错"); } } return Promise.reject(error.message); diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 6dc1cd1..5f8ec7b 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -2,7 +2,7 @@