diff --git a/src/App.vue b/src/App.vue index 081fad3..3910c3d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -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); } diff --git a/src/common/apis/ab98/index.ts b/src/common/apis/ab98/index.ts index 3774630..27e0df8 100644 --- a/src/common/apis/ab98/index.ts +++ b/src/common/apis/ab98/index.ts @@ -52,4 +52,13 @@ export function logoutApi(token: string) { method: 'post', params: { token } }) +} + +/** ab98Token登录 */ +export function tokenLogin(token: string) { + return request>({ + url: '/wx/login/tokenLogin', + method: 'get', + params: { token } + }) } \ No newline at end of file diff --git a/src/common/apis/shop/type.ts b/src/common/apis/shop/type.ts index 41c9525..d810719 100644 --- a/src/common/apis/shop/type.ts +++ b/src/common/apis/shop/type.ts @@ -26,6 +26,8 @@ export interface SubmitOrderRequestData { paymentType: 'wechat' | 'balance'; /** 联系电话 */ mobile: string; + /** 用户姓名 */ + name: string; /** 企业微信用户ID或汇邦云用户ID */ qyUserid: string; /** 是否内部订单 0否 1汇邦云用户 2企业微信用户 */ diff --git a/src/pages/product/components/checkout.vue b/src/pages/product/components/checkout.vue index f83b64f..90e1ed9 100644 --- a/src/pages/product/components/checkout.vue +++ b/src/pages/product/components/checkout.vue @@ -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 } diff --git a/src/pinia/stores/ab98-user.ts b/src/pinia/stores/ab98-user.ts index 9e7cad5..98e50c7 100644 --- a/src/pinia/stores/ab98-user.ts +++ b/src/pinia/stores/ab98-user.ts @@ -36,7 +36,9 @@ export const useAb98UserStore = defineStore("ab98User", () => { const tel = ref(storedTel ? decodeURIComponent(storedTel) : "") // 用户认证令牌 const storedToken = localStorage.getItem(STORAGE_KEYS.TOKEN) - const token = ref(storedToken ? decodeURIComponent(storedToken) : "") + const token = ref(storedToken ? decodeURIComponent(storedToken) : ""); + + const tokenLogin = ref(""); // 用户登录状态 const isLogin = ref(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 } }) diff --git a/src/router/guard.ts b/src/router/guard.ts index 58e89dc..bc614da 100644 --- a/src/router/guard.ts +++ b/src/router/guard.ts @@ -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 // 其他没有访问权限的页面将被重定向到登录页面