refactor: 对接新的 mock api

This commit is contained in:
pany 2022-09-14 18:44:32 +08:00
parent 5fc44f85ee
commit ef74023f3e
7 changed files with 39 additions and 33 deletions

View File

@ -4,7 +4,7 @@ NODE_ENV = development
# 下面是自定义的环境变量,可以修改(命名必须以 VITE_ 开头) # 下面是自定义的环境变量,可以修改(命名必须以 VITE_ 开头)
# 后端接口公共路径 # 后端接口公共路径
VITE_BASE_API = 'https://vue-typescript-admin-mock-server-armour.vercel.app/mock-api/v1' VITE_BASE_API = 'https://mock.mengxuegu.com/mock/63218b5fb4c53348ed2bc212/api/v1'
# 路由模式 hash 或 html5 # 路由模式 hash 或 html5
VITE_ROUTER_HISTORY = 'hash' VITE_ROUTER_HISTORY = 'hash'

View File

@ -4,7 +4,7 @@ NODE_ENV = production
# 下面是自定义的环境变量,可以修改(命名必须以 VITE_ 开头) # 下面是自定义的环境变量,可以修改(命名必须以 VITE_ 开头)
# 后端接口公共路径 # 后端接口公共路径
VITE_BASE_API = 'https://vue-typescript-admin-mock-server-armour.vercel.app/mock-api/v1' VITE_BASE_API = 'https://mock.mengxuegu.com/mock/63218b5fb4c53348ed2bc212/api/v1'
# 路由模式 hash 或 html5 # 路由模式 hash 或 html5
VITE_ROUTER_HISTORY = 'hash' VITE_ROUTER_HISTORY = 'hash'

View File

@ -4,7 +4,7 @@ NODE_ENV = production
# 下面是自定义的环境变量,可以修改(命名必须以 VITE_ 开头) # 下面是自定义的环境变量,可以修改(命名必须以 VITE_ 开头)
# 后端接口公共路径 # 后端接口公共路径
VITE_BASE_API = 'https://vue-typescript-admin-mock-server-armour.vercel.app/mock-api/v1' VITE_BASE_API = 'https://mock.mengxuegu.com/mock/63218b5fb4c53348ed2bc212/api/v1'
# 路由模式 hash 或 html5 # 路由模式 hash 或 html5
VITE_ROUTER_HISTORY = 'hash' VITE_ROUTER_HISTORY = 'hash'

View File

@ -1,10 +1,21 @@
import { request } from "@/utils/service" import { request } from "@/utils/service"
interface ILoginData { export interface ILoginData {
username: string /** admin 或 editor */
username: "admin" | "editor"
/** 密码 */
password: string password: string
/** 验证码 */
code: string
} }
/** 获取登录验证码 */
export function getLoginCodeApi() {
return request({
url: "login/code",
method: "get"
})
}
/** 登录并返回 Token */ /** 登录并返回 Token */
export function loginApi(data: ILoginData) { export function loginApi(data: ILoginData) {
return request({ return request({

View File

@ -5,6 +5,7 @@ import { usePermissionStore } from "./permission"
import { getToken, removeToken, setToken } from "@/utils/cache/cookies" import { getToken, removeToken, setToken } from "@/utils/cache/cookies"
import router, { resetRouter } from "@/router" import router, { resetRouter } from "@/router"
import { loginApi, getUserInfoApi } from "@/api/login" import { loginApi, getUserInfoApi } from "@/api/login"
import type { ILoginData } from "@/api/login"
import type { RouteRecordRaw } from "vue-router" import type { RouteRecordRaw } from "vue-router"
export const useUserStore = defineStore("user", () => { export const useUserStore = defineStore("user", () => {
@ -16,15 +17,16 @@ export const useUserStore = defineStore("user", () => {
roles.value = value roles.value = value
} }
/** 登录 */ /** 登录 */
const login = (userInfo: { username: string; password: string }) => { const login = (loginData: ILoginData) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
loginApi({ loginApi({
username: userInfo.username, username: loginData.username,
password: userInfo.password password: loginData.password,
code: loginData.code
}) })
.then((res: any) => { .then((res: any) => {
setToken(res.data.accessToken) setToken(res.data.token)
token.value = res.data.accessToken token.value = res.data.token
resolve(true) resolve(true)
}) })
.catch((error) => { .catch((error) => {
@ -37,7 +39,7 @@ export const useUserStore = defineStore("user", () => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
getUserInfoApi() getUserInfoApi()
.then((res: any) => { .then((res: any) => {
roles.value = res.data.user.roles roles.value = res.data.roles
resolve(res) resolve(res)
}) })
.catch((error) => { .catch((error) => {
@ -47,7 +49,7 @@ export const useUserStore = defineStore("user", () => {
} }
/** 切换角色 */ /** 切换角色 */
const changeRoles = async (role: string) => { const changeRoles = async (role: string) => {
const newToken = role + "-token" const newToken = "token-" + role
token.value = newToken token.value = newToken
setToken(newToken) setToken(newToken)
await getInfo() await getInfo()

View File

@ -31,12 +31,9 @@ function createService() {
case 0: case 0:
// code === 0 代表没有错误 // code === 0 代表没有错误
return apiData return apiData
case 20000:
// code === 20000 代表没有错误
return apiData
default: default:
// 不是正确的 Code // 不是正确的 Code
ElMessage.error(apiData.msg || "Error") ElMessage.error(apiData.message || "Error")
return Promise.reject(new Error("Error")) return Promise.reject(new Error("Error"))
} }
} }
@ -96,7 +93,7 @@ function createRequestFunction(service: AxiosInstance) {
const configDefault = { const configDefault = {
headers: { headers: {
// 携带 Token // 携带 Token
"X-Access-Token": getToken(), Authorization: "Bearer " + getToken(),
"Content-Type": get(config, "headers.Content-Type", "application/json") "Content-Type": get(config, "headers.Content-Type", "application/json")
}, },
timeout: 5000, timeout: 5000,

View File

@ -5,15 +5,8 @@ import { useUserStore } from "@/store/modules/user"
import { User, Lock, Key } from "@element-plus/icons-vue" import { User, Lock, Key } from "@element-plus/icons-vue"
import ThemeSwitch from "@/components/ThemeSwitch/index.vue" import ThemeSwitch from "@/components/ThemeSwitch/index.vue"
import type { FormInstance, FormRules } from "element-plus" import type { FormInstance, FormRules } from "element-plus"
import { getLoginCodeApi } from "@/api/login"
interface ILoginForm { import type { ILoginData } from "@/api/login"
/** admin 或 editor */
username: "admin" | "editor"
/** 密码 */
password: string
/** 验证码 */
code: string
}
const router = useRouter() const router = useRouter()
const loginFormRef = ref<FormInstance | null>(null) const loginFormRef = ref<FormInstance | null>(null)
@ -23,10 +16,10 @@ const loading = ref(false)
/** 验证码图片 URL */ /** 验证码图片 URL */
const codeUrl = ref("") const codeUrl = ref("")
/** 登录表单数据 */ /** 登录表单数据 */
const loginForm: ILoginForm = reactive({ const loginForm: ILoginData = reactive({
username: "admin", username: "admin",
password: "12345678", password: "12345678",
code: "abcd" code: ""
}) })
/** 登录表单校验规则 */ /** 登录表单校验规则 */
const loginFormRules: FormRules = { const loginFormRules: FormRules = {
@ -45,7 +38,8 @@ const handleLogin = () => {
useUserStore() useUserStore()
.login({ .login({
username: loginForm.username, username: loginForm.username,
password: loginForm.password password: loginForm.password,
code: loginForm.code
}) })
.then(() => { .then(() => {
router.push({ path: "/" }) router.push({ path: "/" })
@ -66,12 +60,14 @@ const handleLogin = () => {
const createCode = () => { const createCode = () => {
// //
loginForm.code = "" loginForm.code = ""
// //
codeUrl.value = `/api/v1/login/code?${Math.random() * 1000}` getLoginCodeApi().then((res: any) => {
codeUrl.value = res.data
})
} }
/** 初始化验证码 */ /** 初始化验证码 */
// createCode() createCode()
</script> </script>
<template> <template>
@ -111,7 +107,7 @@ const createCode = () => {
type="text" type="text"
tabindex="3" tabindex="3"
:prefix-icon="Key" :prefix-icon="Key"
maxlength="4" maxlength="7"
size="large" size="large"
/> />
<span class="show-code"> <span class="show-code">