feat: 添加用户姓名字段并实现token登录功能
在订单提交请求中添加用户姓名字段,并实现通过token进行登录的功能。同时优化了路由守卫中的登录状态检查逻辑。
This commit is contained in:
parent
e777d1e931
commit
55ba35230e
21
src/App.vue
21
src/App.vue
|
@ -3,10 +3,14 @@ import Layout from "@/layout/index.vue"
|
||||||
import { useUserStore } from "@/pinia/stores/user"
|
import { useUserStore } from "@/pinia/stores/user"
|
||||||
import { useDark } from "@@/composables/useDark"
|
import { useDark } from "@@/composables/useDark"
|
||||||
import { useWxStore } from "@/pinia/stores/wx"
|
import { useWxStore } from "@/pinia/stores/wx"
|
||||||
|
import { tokenLogin } from '@/common/apis/ab98'
|
||||||
|
import { useAb98UserStore } from '@/pinia/stores/ab98-user'
|
||||||
|
|
||||||
// const userStore = useUserStore()
|
// const userStore = useUserStore()
|
||||||
const wxStore = useWxStore()
|
const wxStore = useWxStore()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
const router = useRouter()
|
||||||
|
const ab98UserStore = useAb98UserStore()
|
||||||
|
|
||||||
const { isDark, initDark } = useDark()
|
const { isDark, initDark } = useDark()
|
||||||
|
|
||||||
|
@ -31,6 +35,23 @@ onMounted(() => {
|
||||||
const state = urlParams.get('state') || undefined;
|
const state = urlParams.get('state') || undefined;
|
||||||
const corpid = urlParams.get('corpid') || undefined;
|
const corpid = urlParams.get('corpid') || undefined;
|
||||||
const isAdmin = urlParams.get('isAdmin') || 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') {
|
if (isAdmin == '1') {
|
||||||
wxStore.setIsCabinetAdmin(true);
|
wxStore.setIsCabinetAdmin(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,3 +53,12 @@ export function logoutApi(token: string) {
|
||||||
params: { token }
|
params: { token }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** ab98Token登录 */
|
||||||
|
export function tokenLogin(token: string) {
|
||||||
|
return request<ApiResponseData<LoginData>>({
|
||||||
|
url: '/wx/login/tokenLogin',
|
||||||
|
method: 'get',
|
||||||
|
params: { token }
|
||||||
|
})
|
||||||
|
}
|
|
@ -26,6 +26,8 @@ export interface SubmitOrderRequestData {
|
||||||
paymentType: 'wechat' | 'balance';
|
paymentType: 'wechat' | 'balance';
|
||||||
/** 联系电话 */
|
/** 联系电话 */
|
||||||
mobile: string;
|
mobile: string;
|
||||||
|
/** 用户姓名 */
|
||||||
|
name: string;
|
||||||
/** 企业微信用户ID或汇邦云用户ID */
|
/** 企业微信用户ID或汇邦云用户ID */
|
||||||
qyUserid: string;
|
qyUserid: string;
|
||||||
/** 是否内部订单 0否 1汇邦云用户 2企业微信用户 */
|
/** 是否内部订单 0否 1汇邦云用户 2企业微信用户 */
|
||||||
|
|
|
@ -17,7 +17,7 @@ const wxStore = useWxStore()
|
||||||
const { openid, balance, corpidLogin, userid: qyUserid } = storeToRefs(wxStore)
|
const { openid, balance, corpidLogin, userid: qyUserid } = storeToRefs(wxStore)
|
||||||
|
|
||||||
const ab98UserStore = useAb98UserStore()
|
const ab98UserStore = useAb98UserStore()
|
||||||
const { tel, userid: ab98Userid } = storeToRefs(ab98UserStore)
|
const { tel, userid: ab98Userid, name } = storeToRefs(ab98UserStore)
|
||||||
|
|
||||||
const selectedPayment = ref<'wechat' | 'balance'>('wechat')
|
const selectedPayment = ref<'wechat' | 'balance'>('wechat')
|
||||||
const contact = ref("")
|
const contact = ref("")
|
||||||
|
@ -101,6 +101,7 @@ async function handleSubmit() {
|
||||||
})),
|
})),
|
||||||
paymentType: selectedPayment.value,
|
paymentType: selectedPayment.value,
|
||||||
mobile: tel.value,
|
mobile: tel.value,
|
||||||
|
name: name.value,
|
||||||
qyUserid: isInternal === 2 ? qyUserid.value : ab98Userid.value,
|
qyUserid: isInternal === 2 ? qyUserid.value : ab98Userid.value,
|
||||||
isInternal: isInternal
|
isInternal: isInternal
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,9 @@ export const useAb98UserStore = defineStore("ab98User", () => {
|
||||||
const tel = ref<string>(storedTel ? decodeURIComponent(storedTel) : "")
|
const tel = ref<string>(storedTel ? decodeURIComponent(storedTel) : "")
|
||||||
// 用户认证令牌
|
// 用户认证令牌
|
||||||
const storedToken = localStorage.getItem(STORAGE_KEYS.TOKEN)
|
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);
|
const isLogin = ref<boolean>(false);
|
||||||
isLogin.value = tel.value ? true : false;
|
isLogin.value = tel.value ? true : false;
|
||||||
|
@ -98,6 +100,10 @@ export const useAb98UserStore = defineStore("ab98User", () => {
|
||||||
isLogin.value = value;
|
isLogin.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const setTokenLogin = (value: string) => {
|
||||||
|
tokenLogin.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
face_img,
|
face_img,
|
||||||
sex,
|
sex,
|
||||||
|
@ -107,11 +113,13 @@ export const useAb98UserStore = defineStore("ab98User", () => {
|
||||||
tel,
|
tel,
|
||||||
token,
|
token,
|
||||||
isLogin,
|
isLogin,
|
||||||
|
tokenLogin,
|
||||||
setUserInfo,
|
setUserInfo,
|
||||||
setToken,
|
setToken,
|
||||||
setTel,
|
setTel,
|
||||||
setIsLogin,
|
setIsLogin,
|
||||||
clearUserInfo
|
clearUserInfo,
|
||||||
|
setTokenLogin
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import { getToken } from "@@/utils/cache/cookies"
|
||||||
import NProgress from "nprogress"
|
import NProgress from "nprogress"
|
||||||
import { useAb98UserStore } from '@/pinia/stores/ab98-user'
|
import { useAb98UserStore } from '@/pinia/stores/ab98-user'
|
||||||
|
|
||||||
|
const ab98UserStore = useAb98UserStore()
|
||||||
|
|
||||||
NProgress.configure({ showSpinner: false })
|
NProgress.configure({ showSpinner: false })
|
||||||
|
|
||||||
|
@ -26,8 +27,7 @@ export function registerNavigationGuard(router: Router) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const userStore = useAb98UserStore()
|
if (!ab98UserStore.isLogin) {
|
||||||
if (!userStore.isLogin) {
|
|
||||||
// 如果在免登录的白名单中,则直接进入
|
// 如果在免登录的白名单中,则直接进入
|
||||||
if (isWhiteList(to)) return true
|
if (isWhiteList(to)) return true
|
||||||
// 其他没有访问权限的页面将被重定向到登录页面
|
// 其他没有访问权限的页面将被重定向到登录页面
|
||||||
|
|
Loading…
Reference in New Issue