diff --git a/.env.development b/.env.development index 3a3adad..5d2653c 100644 --- a/.env.development +++ b/.env.development @@ -1,7 +1,10 @@ # 开发环境 VITE_USER_NODE_ENV = development -# 开发环境地址前缀 (一般 '/' 或 './' 都可以,如果开发环境 '/' 打包预览白屏,请使用 './') +# 打包路径 开发环境地址前缀 (一般 '/' 或 './' 都可以,如果开发环境 '/' 打包预览白屏,请使用 './') VITE_PUBLIC_PATH = './' +# 请求路径 管理系统/开发环境 +VITE_APP_BASE_URL = '/your-request-path' + VITE_GLOB_APP_TITLE = SnowAdmin \ No newline at end of file diff --git a/.env.production b/.env.production index bbfa6b5..899679f 100644 --- a/.env.production +++ b/.env.production @@ -4,4 +4,7 @@ VITE_USER_NODE_ENV = production # 打包路径 (就是网站前缀, 例如部署到 http://dcodes.gitee.io/SnowAdmin/ 域名下, 就需要填写 /SnowAdmin/), 一般填一个斜杠 / VITE_PUBLIC_PATH = '/' +# 请求路径 管理系统/开发环境 +VITE_APP_BASE_URL = '/' + VITE_GLOB_APP_TITLE = SnowAdmin diff --git a/.env.test b/.env.test index 2075598..3a8c45b 100644 --- a/.env.test +++ b/.env.test @@ -1,7 +1,10 @@ # 开发环境 -VITE_USER_NODE_ENV = development +VITE_USER_NODE_ENV = test # 开发环境地址前缀 (一般 '/' 或 './' 都可以) VITE_PUBLIC_PATH = '/test' +# 请求路径 管理系统/开发环境 +VITE_APP_BASE_URL = '/' + VITE_GLOB_APP_TITLE = SnowAdmin \ No newline at end of file diff --git a/index.html b/index.html index 3b536a6..9c43e06 100644 --- a/index.html +++ b/index.html @@ -2,7 +2,7 @@ - + <%= title %> diff --git a/src/api/index.ts b/src/api/index.ts index ba40802..7c0b478 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -1,17 +1,15 @@ import axios from "axios"; -import { useRouter } from "vue-router"; -const router = useRouter(); +import router from "@/router"; +import { Message } from "@arco-design/web-vue"; // 创建axios实例 const service = axios.create({ - baseURL: "https://mock.apifox.com/m1/4457302-4103374-default", - timeout: 5000 + baseURL: "/api" }); // 请求拦截器 service.interceptors.request.use( function (config: any) { // 发送请求之前做什么 // 获取token鉴权 - console.log("token?", localStorage.getItem("user-info")); let userInfo: any = {}; if (localStorage.getItem("user-info")) { userInfo = JSON.parse(localStorage.getItem("user-info") as string); @@ -19,12 +17,6 @@ service.interceptors.request.use( if (userInfo.token) { // 有token,在请求头中携带token config.headers.Authorization = userInfo.token; - } else { - // 如果没有token,则不允许发送请求,并且跳转至登录页要求登录,获取对应的token - if (config.url !== "/login") { - router.push("/login"); - Promise.reject("未登录"); - } } return config; }, @@ -37,11 +29,27 @@ service.interceptors.request.use( // 响应拦截器 service.interceptors.response.use( function (response: any) { - return response.data; + if (response.status != 200) { + Message.error("服务器异常,请联系管理员"); + return Promise.reject(response.data); + } + let res = response.data; + if (res.code == 401) { + Message.error("登录状态已过期"); + router.push("/login"); + return Promise.reject(res); + } else if (res.code == 404) { + Message.error("请求连接超时"); + return Promise.reject(res); + } else if (res.code != 200) { + Message.error(res.msg); + return Promise.reject(res); + } else { + // 返回数据 + return Promise.resolve(res); + } }, function (error: any) { - console.log("响应拦截", error, router); - console.log("身份信息过期"); localStorage.removeItem("user-info"); router.push("/login"); return Promise.reject(error); diff --git a/src/api/modules/home.ts b/src/api/modules/home.ts deleted file mode 100644 index 86e8813..0000000 --- a/src/api/modules/home.ts +++ /dev/null @@ -1,4 +0,0 @@ -import axios from "@/api"; - -// 第三板指标 -export const getTargetAPI = () => axios.get("/notice-list"); diff --git a/src/api/modules/login.ts b/src/api/modules/login.ts new file mode 100644 index 0000000..5e17545 --- /dev/null +++ b/src/api/modules/login.ts @@ -0,0 +1,10 @@ +import axios from "@/api"; + +// 登录 +export const LoginAPI = (data: any) => { + return axios({ + url: "store/store.php?action=Login", + method: "post", + data + }); +}; diff --git a/src/assets/logo/snow.svg b/src/assets/logo/snow.svg new file mode 100644 index 0000000..3390a7d --- /dev/null +++ b/src/assets/logo/snow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/views/login/components/login-form.vue b/src/views/login/components/login-form.vue index 8cb8a66..dab96eb 100644 --- a/src/views/login/components/login-form.vue +++ b/src/views/login/components/login-form.vue @@ -41,6 +41,7 @@ import { Message } from "@arco-design/web-vue"; import { useRouter } from "vue-router"; import { useUserInfoStore } from "@/store/modules/user-info"; + const router = useRouter(); const form = ref({ username: "admin", @@ -102,16 +103,19 @@ const verify = ref({ }); const verifyCodeChange = (code: string) => (verify.value.verifyCode = code); -const onSubmit = ({ errors }: any) => { +const onSubmit = async ({ errors }: any) => { if (errors) return; - // 存储用户信息 + // 你的登录请求 + // ...... + + // 登录成功-存储用户信息 let stores = useUserInfoStore(); let account = { - username: form.value.username, - roles: ["admin"] + username: form.value.username, // 用户名 + roles: ["admin"] // 角色权限 }; - stores.setAccount(account); - stores.setToken("DC-Admin"); + stores.setAccount(account); // 存储用户信息 + stores.setToken("Your-Token"); Message.success("登录成功"); router.replace("/home"); }; diff --git a/vite.config.ts b/vite.config.ts index 2deb6d1..2343f07 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -18,12 +18,19 @@ export default defineConfig(({ mode }) => { // 获取跟路径对应的文件 const env = loadEnv(mode, root); return { - // 开发或生产环境服务的公共基础路径 + // 生产环境服务的公共基础路径-用于生出环境的代理的路径 base: env.VITE_PUBLIC_PATH, server: { - // host: "0.0.0.0", - // open: true, - proxy: {} + host: "0.0.0.0", + open: true, + // 为开发服务器配置自定义代理规则-用于开发时的代理 + proxy: { + "/api": { + target: env.VITE_APP_BASE_URL, + changeOrigin: true, + rewrite: path => path.replace(/^\/api/, "") + } + } }, plugins: [ vue(),