feat: 添加用户姓名字段并实现token登录功能

在订单提交请求中添加用户姓名字段,并实现通过token进行登录的功能。同时优化了路由守卫中的登录状态检查逻辑。
This commit is contained in:
dzq 2025-04-18 09:01:44 +08:00
parent e777d1e931
commit 55ba35230e
6 changed files with 46 additions and 5 deletions

View File

@ -3,10 +3,14 @@ import Layout from "@/layout/index.vue"
import { useUserStore } from "@/pinia/stores/user"
import { useDark } from "@@/composables/useDark"
import { useWxStore } from "@/pinia/stores/wx"
import { tokenLogin } from '@/common/apis/ab98'
import { useAb98UserStore } from '@/pinia/stores/ab98-user'
// const userStore = useUserStore()
const wxStore = useWxStore()
const route = useRoute()
const router = useRouter()
const ab98UserStore = useAb98UserStore()
const { isDark, initDark } = useDark()
@ -31,6 +35,23 @@ onMounted(() => {
const state = urlParams.get('state') || undefined;
const corpid = urlParams.get('corpid') || undefined;
const isAdmin = urlParams.get('isAdmin') || undefined;
if (state && state.indexOf('token') !== -1) {
const token = state.split('token_')[1];
ab98UserStore.setTokenLogin(token);
tokenLogin(token).then(res => {
if (res && res.code == 0) {
if (res.data.success) {
ab98UserStore.setTel(res.data.tel)
ab98UserStore.setUserInfo(res.data)
ab98UserStore.setIsLogin(true)
router.push('/')
}
}
})
}
if (isAdmin == '1') {
wxStore.setIsCabinetAdmin(true);
}

View File

@ -52,4 +52,13 @@ export function logoutApi(token: string) {
method: 'post',
params: { token }
})
}
/** ab98Token登录 */
export function tokenLogin(token: string) {
return request<ApiResponseData<LoginData>>({
url: '/wx/login/tokenLogin',
method: 'get',
params: { token }
})
}

View File

@ -26,6 +26,8 @@ export interface SubmitOrderRequestData {
paymentType: 'wechat' | 'balance';
/** 联系电话 */
mobile: string;
/** 用户姓名 */
name: string;
/** 企业微信用户ID或汇邦云用户ID */
qyUserid: string;
/** 是否内部订单 0否 1汇邦云用户 2企业微信用户 */

View File

@ -17,7 +17,7 @@ const wxStore = useWxStore()
const { openid, balance, corpidLogin, userid: qyUserid } = storeToRefs(wxStore)
const ab98UserStore = useAb98UserStore()
const { tel, userid: ab98Userid } = storeToRefs(ab98UserStore)
const { tel, userid: ab98Userid, name } = storeToRefs(ab98UserStore)
const selectedPayment = ref<'wechat' | 'balance'>('wechat')
const contact = ref("")
@ -101,6 +101,7 @@ async function handleSubmit() {
})),
paymentType: selectedPayment.value,
mobile: tel.value,
name: name.value,
qyUserid: isInternal === 2 ? qyUserid.value : ab98Userid.value,
isInternal: isInternal
}

View File

@ -36,7 +36,9 @@ export const useAb98UserStore = defineStore("ab98User", () => {
const tel = ref<string>(storedTel ? decodeURIComponent(storedTel) : "")
// 用户认证令牌
const storedToken = localStorage.getItem(STORAGE_KEYS.TOKEN)
const token = ref<string>(storedToken ? decodeURIComponent(storedToken) : "")
const token = ref<string>(storedToken ? decodeURIComponent(storedToken) : "");
const tokenLogin = ref<string>("");
// 用户登录状态
const isLogin = ref<boolean>(false);
isLogin.value = tel.value ? true : false;
@ -98,6 +100,10 @@ export const useAb98UserStore = defineStore("ab98User", () => {
isLogin.value = value;
}
const setTokenLogin = (value: string) => {
tokenLogin.value = value;
}
return {
face_img,
sex,
@ -107,11 +113,13 @@ export const useAb98UserStore = defineStore("ab98User", () => {
tel,
token,
isLogin,
tokenLogin,
setUserInfo,
setToken,
setTel,
setIsLogin,
clearUserInfo
clearUserInfo,
setTokenLogin
}
})

View File

@ -7,6 +7,7 @@ import { getToken } from "@@/utils/cache/cookies"
import NProgress from "nprogress"
import { useAb98UserStore } from '@/pinia/stores/ab98-user'
const ab98UserStore = useAb98UserStore()
NProgress.configure({ showSpinner: false })
@ -26,8 +27,7 @@ export function registerNavigationGuard(router: Router) {
return true;
}
const userStore = useAb98UserStore()
if (!userStore.isLogin) {
if (!ab98UserStore.isLogin) {
// 如果在免登录的白名单中,则直接进入
if (isWhiteList(to)) return true
// 其他没有访问权限的页面将被重定向到登录页面