import { defineStore } from 'pinia' import { ref } from 'vue' import { login, getInfo, logout } from '@/api/login.js' import { getUserInfo, getSession, setSession } from '@/utils/auth' import { reLogin, keepSession } from '@/api/login.js' import $modal from '@/plugins/modal.js' import config from '@/config.js' export const useUserStore = defineStore('user', () => { const user = ref(getUserInfo()) // 用户信息 const useId = ref(0) // staffId const timer = ref(true) //定时器 function keep() { keepSession().then(res => { setTimeout(() => { if (timer.value) { keep() } }, 600000) }) } // 登录方法 function Login(userInfo) { let username = userInfo.username const password = userInfo.password const loginInfo = { username, password } return new Promise((resolve, reject) => { if (username.includes('@')) { username = username.split('@')[0] } username = username.trim() + '@' +config.companyCode // 强制使用配置的公司代码 login(username, password) .then(res => { useId.value = res.returnParams.useId // 设置staffId // user.value = res.returnParams //保存账号密码 uni.setStorageSync('loginInfo', loginInfo) if (config.saas != 1) { // 多租户时需要携带公司代码 username = username.split('@')[0] // 获取session时不需要公司代码 } reLogin(username, password).then((res) => { if ("ok" === res.data) { setSession(res.cookies[0].split("=")[1].split(";")[0]); timer.value = true keep() } }) resolve(res) }) .catch(error => { reject(error) }) }) } function GetInfo(index) { const roleIndex = index || 0 if (useId.value == 0) { useId.value = uni.getStorageSync('userInfo').useId } return new Promise((resolve, reject) => { getInfo(useId.value).then(res => { if ("Exception" == res.returnMsg) { $modal.msgError(res.returnParams) reject(res.returnParams) } user.value = res.returnParams[roleIndex] // 保存 用户信息 uni.setStorageSync('userInfo', user.value) resolve(res) }) .catch(error => { reject(error) }) }) } function LogOut() { return new Promise((resolve, reject) => { // logout().then(() => { user.value = {} useId.value = 0 timer.value = false uni.clearStorageSync() resolve() }).catch(error => { reject(error) }) // }) } return { user, useId, Login, GetInfo, LogOut } })