| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- import { reactive, computed, toRefs } from 'vue'
- import { getFileUrl } from '@/filters'
- import { queryLoginData } from '@/services/api/account'
- import { useLoginStore } from './login'
- import { defineStore } from '../store'
- import eventBus from '@/services/bus'
- import { ETradeMode } from '@/constants/client'
- /**
- * 用户存储对象
- * @returns
- */
- export const useUserStore = defineStore(() => {
- const loginStore = useLoginStore()
- const state = reactive({
- loading: false,
- userData: <Model.LoginQueryRsp>{
- arearole: [],
- externalExchanges: [],
- goodsgroups: [],
- markets: [],
- systemParams: []
- },
- })
- // 用户信息
- const userInfo = computed(() => state.userData.userInfo)
- // 登录机构名称
- const accountName = computed(() => {
- const { userAccount } = state.userData
- return userAccount?.accountname
- })
- // 账户类型
- const userType = computed(() => {
- const { userAccount } = state.userData
- return userAccount?.usertype
- })
- // 用户头像
- const userAvatar = computed(() => {
- const file = userInfo.value?.headurl
- return file ? getFileUrl(file) : ''
- })
- // 是否已实名认证
- const hasAuth = computed(() => {
- const { userAccount } = state.userData
- return userAccount?.hasauth === 1
- })
- // 获取用户数据
- const getUserData = async () => {
- try {
- state.loading = true
- const res = await queryLoginData({
- data: {
- loginID: loginStore.loginId
- }
- })
- state.userData = res.data
- } finally {
- state.loading = false
- }
- }
- // 获取市场ID
- const getMarketId = (tradeMode: keyof typeof ETradeMode) => {
- const { marketid } = state.userData.markets.find(obj => obj.trademode === ETradeMode[tradeMode]) ?? {}
- return marketid ?? 0
- }
- // 获取用户数据
- const getUserDataInfo = <K extends keyof Model.LoginQueryRsp>(key: K) => {
- return state.userData[key]!
- }
- // 获取对应系统参数的对应值
- const getSystemParamValue = (paramcode: string) => {
- const { systemParams } = state.userData
- return systemParams.find(obj => {
- return obj.paramcode === paramcode
- })?.paramvalue
- }
- // 接收账户变更通知
- const userChangeNtf = eventBus.$on('UserChangeNtf', () => getUserData())
- return {
- ...toRefs(state),
- userInfo,
- accountName,
- userType,
- userAvatar,
- hasAuth,
- getUserData,
- getUserDataInfo,
- getSystemParamValue,
- userChangeNtf,
- getMarketId
- }
- })
|