import { Apis } from '@/gen/Apis' import { defineStore } from 'pinia' import { ref } from 'vue' import { getApiLoading } from '../libraries/apiLoading' import { setTabBar } from '../libraries/setTabBar' type DataType = { user?: { id: number username: string } orgs?: { id?: number; name?: string }[] selectedOrg?: { id?: number; name?: string; is_show_procedure?: number } } export const useWeAppAuthStore = defineStore('we_app_auth', () => { const loading = ref(true) const hasError = ref(false) const data = ref({ user: { id: 0, username: '' } }) function login(app: any) { const res = uni.getSystemInfoSync() if (res?.environment === 'wxwork') { uni?.qy?.login({ success: function (loginRes) { console.log(loginRes) getWorkToken(app, loginRes.code) } }) } else { uni?.login({ provider: 'weixin', //使用微信登录 success: function (loginRes) { console.log(loginRes) getWXToken(app, loginRes.code) } }) } } const getWorkToken = (app: any, code: string) => { Apis.Login.Auth.WorkLogin({ code: code, app_id: 'ww8e14f3d20774c997' }) .then(res => { console.log('登录', res?.data) data.value.user = res.data?.user loading.value = false uni.setStorageSync(import.meta.env.VITE_ACCESS_TOKEN_KEY, res?.data?.token?.token) app?.appContext.config.globalProperties.$isResolve() if (!res.data?.user) { //未绑定账号 uni.redirectTo({ url: '/pages/login' }) return false } }) .catch(() => { loading.value = false hasError.value = true }) } const getWXToken = (app: any, code: string) => { Apis.Login.Auth.Login({ code: code, app_id: 'wx09b52ea34b5e8855' }) .then(res => { console.log('登录', res?.data) data.value.user = res.data?.user loading.value = false uni.setStorageSync(import.meta.env.VITE_ACCESS_TOKEN_KEY, res?.data?.token?.token) app?.appContext.config.globalProperties.$isResolve() if (!res.data?.user) { //未绑定账号 uni.redirectTo({ url: '/pages/login' }) return false } }) .catch(() => { loading.value = false hasError.value = true }) } function me() { getApiLoading(Apis.Login.Auth.Me, {}).then(res => { data.value.user = res.data.user console.log('me', res.data) loading.value = false hasError.value = false }) } const handleUserLogin = async (from_data: { code?: string phone?: string phone_validate_code?: string }) => { getApiLoading(Apis.Login.Auth.BindPhoneNumber, { app_id: 'wx09b52ea34b5e8855', ...from_data }).then(res => { me() }) } return { loading, hasError, data, login, me, handleUserLogin } })