接口配置

This commit is contained in:
李志鹏
2026-05-21 10:48:53 +08:00
parent de6295f2af
commit 26dfbd9bb5
8 changed files with 162 additions and 151 deletions

View File

@@ -1,3 +1 @@
# VITE_APP_URL = http://192.168.31.82:8771 VITE_APP_URL = http://192.168.31.82:10094
# VITE_APP_URL = http://18.167.251.121:10095
VITE_APP_URL = https://www.lc-api.aida.com.hk

View File

@@ -1,2 +1 @@
VITE_APP_URL = https://www.lc-api.aida.com.hk VITE_APP_URL = http://192.168.31.82:10094
# VITE_APP_URL = http://18.167.251.121:10095

63
src/api/account.ts Normal file
View File

@@ -0,0 +1,63 @@
import request from '@/utils/request'
/**
* 登录发送验证码
* @param data - 包含邮箱的参数
* @param data.email - 邮箱
* @param data.password - 密码
*/
export const AccountSendLoginCode = (data) => {
return request({
url: '/buyer/account/preLogin',
method: 'post',
data,
loading: true
})
}
/**
* 登录
* @param data - 包含邮箱的参数
* @param data.email - 邮箱
* @param data.password - 密码
* @param data.emailVerifyCode - 验证码
*/
export const AccountLogin = (data) => {
return request({
url: '/buyer/account/login',
method: 'post',
data,
loading: true
})
}
/**
* 注册
* @param data - 包含注册信息的参数
* @param data.email - 邮箱
* @param data.password - 密码
* @param data.username - 用户名
* @param data.emailVerifyCode - 验证码
*/
export const AccountRegister = (data) => {
return request({
url: '/buyer/account/register',
method: 'post',
data,
loading: true
})
}
/**
* 注册||忘记密码:发送邮箱验证码
* @param data - 包含邮箱的参数
* @param data.email - 邮箱
* @param data.operationType - 操作类型FORGET_PWD, REGISTER
*/
export const AccountSendVerifyCode = (data) => {
return request({
url: '/buyer/account/sendCode',
method: 'post',
data,
loading: true
})
}

View File

@@ -1,77 +0,0 @@
import request from '@/utils/request'
interface LoginParamsType {
name?: string // 姓名
email: string // 邮箱
password?: string // 密码
operationType: 'REGISTER' | 'LOGIN' | 'FORGET_PWD'
verifyCode?: string // 验证码
}
// 发送验证码
export const precheckEmail = (params: { email: string }): Promise<ApiResponse> => {
return request({
url: '/api/auth/precheckEmail',
method: 'get',
params
})
}
export const fetchRegisterOrLogin = (data: LoginParamsType): Promise<LoginResponse> => {
return request({
url: '/api/auth/registerOrLogin',
method: 'post',
data
})
}
export const resetPassword = (data: LoginParamsType): Promise<ApiResponse> => {
return request({
url: '/api/auth/forgotPwd',
method: 'post',
data
})
}
export const checkLoginStatus = (): Promise<ApiResponse<LoginResponse>> => {
return request({
url: '/api/auth/checkLoginStatus',
method: 'get',
meta: { responseAll: true }
})
}
export const LogOut = (): Promise<ApiResponse> => {
return request({
url: '/api/auth/logout',
method: 'get'
})
}
// Google登录/注册参数类型
interface GoogleAuthParamsType {
accessToken?: string // Google ID Token (用于One Tap登录)
}
export const googleAuth = (data: GoogleAuthParamsType): Promise<LoginResponse> => {
return request({
url: '/api/auth/parseGoogleAccessToken',
method: 'get',
params: data
})
}
/** 更改用户信息
* @param data 包含用户信息的对象
* @param data.username 用户名
* @param data.email 邮箱
* @param data.password 密码
* @returns 包含更新后的用户信息的对象
*/
export const updateUserInfo = (data: any) => {
return request({
url: '/api/auth/updateUserInfo',
method: 'post',
data
})
}

View File

@@ -4,67 +4,68 @@ import { ref, computed } from 'vue'
import { removeLocal, setLocal } from '@/utils/local' import { removeLocal, setLocal } from '@/utils/local'
import MyEvent from '@/utils/myEvent' import MyEvent from '@/utils/myEvent'
export const useUserInfoStore = defineStore('userInfo', () => { export const useUserInfoStore = defineStore('userInfo', () => {
const state = ref({ const state = ref({
userInfo: {}, userInfo: {},
token: '', token: '',
generateParams: { generateParams: {
stylist: '', stylist: '',
sex: '', sex: '',
stylistImage: '' stylistImage: ''
} }
}) })
// getters // getters
const getUserInfo = computed(() => state.value.userInfo) const getUserInfo = computed(() => state.value.userInfo)
// actions // actions
const setUserInfo = (data: any) => { const setUserInfo = (data: any) => {
state.value.userInfo = data state.value.userInfo = data
} state.value.token = data.accessToken
}
const setToken = (data: string) => { const setToken = (data: string) => {
state.value.token = data state.value.token = data
setLocal(data, 'token') setLocal(data, 'token')
} }
const getGenerateParams = () => { const getGenerateParams = () => {
return state.value.generateParams return state.value.generateParams
} }
const setGenerateParams = (data: any) => { const setGenerateParams = (data: any) => {
state.value.generateParams = data state.value.generateParams = data
} }
const resetGenerateParams = () => { const resetGenerateParams = () => {
state.value.generateParams = { state.value.generateParams = {
stylist: '', stylist: '',
sex: '', sex: '',
stylistImage: '' stylistImage: ''
} }
} }
const logOut = () => { const logOut = () => {
// 处理退出登录的一些逻辑 // 处理退出登录的一些逻辑
return new Promise((resolve) => { return new Promise((resolve) => {
state.value.token = '' state.value.token = ''
state.value.userInfo = {} state.value.userInfo = {}
removeLocal('token') removeLocal('token')
resetGenerateParams() resetGenerateParams()
MyEvent.emit('clear-generate-state') MyEvent.emit('clear-generate-state')
MyEvent.emit('clear-client-state') MyEvent.emit('clear-client-state')
MyEvent.emit('clearAllCache') MyEvent.emit('clearAllCache')
resolve('') resolve('')
}) })
} }
return { return {
state, state,
getUserInfo, getUserInfo,
setToken, setToken,
setUserInfo, setUserInfo,
setGenerateParams, setGenerateParams,
getGenerateParams, getGenerateParams,
resetGenerateParams, resetGenerateParams,
logOut logOut
} }
}) })

View File

@@ -75,7 +75,7 @@ service.interceptors.response.use(
const res = response.data const res = response.data
// 处理异常的情况 // 处理异常的情况
// console.log(res) // console.log(res)
if (res.code != 200) { if (res.errCode != 0) {
ElMessage.error(res.message) ElMessage.error(res.message)
return Promise.reject(new Error(res.errMsg || res.message || 'error')) return Promise.reject(new Error(res.errMsg || res.message || 'error'))
} else { } else {

View File

@@ -55,6 +55,12 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {
AccountSendLoginCode,
AccountLogin,
AccountRegister,
AccountSendVerifyCode
} from '@/api/account'
import { computed, ref, markRaw, watch, onBeforeUnmount } from 'vue' import { computed, ref, markRaw, watch, onBeforeUnmount } from 'vue'
import md5 from 'md5' import md5 from 'md5'
import login from './login.vue' import login from './login.vue'
@@ -63,6 +69,8 @@
import registerSuccess from './register-success.vue' import registerSuccess from './register-success.vue'
import retrievePassword from './retrieve-password.vue' import retrievePassword from './retrieve-password.vue'
import myEvent from '@/utils/myEvent' import myEvent from '@/utils/myEvent'
import { useUserInfoStore } from '@/stores/userInfo'
const userStore = useUserInfoStore()
const data = ref({ const data = ref({
name: '', name: '',
email: '', email: '',
@@ -121,22 +129,42 @@
}) })
const onLogin = (res: any) => { const onLogin = (res: any) => {
data.value = res AccountSendLoginCode({
data.value.type = TabNames.login email: res.email,
currentTab.value = TabNames.email_verify password: md5(res.password)
}).then((v) => {
data.value = res
data.value.type = TabNames.login
currentTab.value = TabNames.email_verify
})
} }
const onRegister = (res: any) => { const onRegister = (res: any) => {
data.value = res const value = {
data.value.type = TabNames.register email: res.email,
currentTab.value = TabNames.email_verify operationType: 'REGISTER'
}
AccountSendVerifyCode(value).then((v) => {
data.value = res
data.value.type = TabNames.register
currentTab.value = TabNames.email_verify
})
} }
const onSubmitEmailCode = (code: string) => { const onSubmitEmailCode = (code: string) => {
const value = {
email: data.value.email,
password: md5(data.value.password),
emailVerifyCode: code
}
if (data.value.type === TabNames.login) { if (data.value.type === TabNames.login) {
console.log('登录', code) AccountLogin(value).then((v) => {
show.value = false userStore.setUserInfo(v)
show.value = false
})
} else { } else {
console.log('注册', code) value['username'] = data.value.name
currentTab.value = TabNames.register_success AccountRegister(value).then((v) => {
currentTab.value = TabNames.register_success
})
} }
} }
</script> </script>

View File

@@ -66,11 +66,10 @@ export default defineConfig(({ mode }) => {
overlay: true overlay: true
}, },
proxy: { proxy: {
'/api': { '/buyer': {
//'/api'是自行设置的请求前缀
target: env.VITE_APP_URL, target: env.VITE_APP_URL,
changeOrigin: true, //用于控制请求头中的host值 changeOrigin: true, //用于控制请求头中的host值
rewrite: (path) => path.replace(/^\/api/, '/api') //路径重写正则匹配以api开头的路径为空将请求前缀删除 rewrite: (path) => path.replace(/^\/buyer/, '/buyer') //路径重写正则匹配以api开头的路径为空将请求前缀删除
} }
} }
} }