| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- 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>Object.create({
- arearole: [],
- exchangeRateConfigs: [],
- externalExchanges: [],
- goodsgroups: [],
- loginAccount: {},
- markets: [],
- systemParams: [],
- userAccount: {},
- userInfo: {},
- username: '',
- }),
- })
- // 用户信息
- const userInfo = computed(() => state.userData.userInfo)
- // 用户信息
- const userAccount = computed(() => state.userData.userAccount)
- // 登录机构名称
- const accountName = computed(() => {
- const { userAccount } = state.userData
- return userAccount?.accountname
- })
- // 客户名称
- const customerName = computed(() => {
- const { userInfo } = state.userData
- return userInfo?.customername
- })
- // 账户类型
- 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
- })
- // 所属会员ID
- const memberUserId = computed(() => {
- const { userAccount } = state.userData
- return userAccount?.memberuserid ?? 0
- })
- // 获取用户数据
- 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 hasMarket = (tradeMode: keyof typeof ETradeMode) => {
- return state.userData.markets.some((e) => e.trademode === ETradeMode[tradeMode])
- }
- // 获取用户数据
- 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,
- userAccount,
- accountName,
- customerName,
- userType,
- userAvatar,
- hasAuth,
- memberUserId,
- getUserData,
- getUserDataInfo,
- getSystemParamValue,
- userChangeNtf,
- getMarketId,
- hasMarket
- }
- })
|