index.ts 2.22 KB
import {defineStore} from 'pinia'
import {setToken, getToken, removeToken} from '../utils/auth'

export const loginMain = defineStore('loginMain', {
  // 相当于data
  state: () => {
    return {
      // 所有这些属性都将自动推断其类型,如果推断失败可以试下 as xxx
      userInfo: {},
      token: null,
    }
  },
  // 相当于计算属性
  getters: {
    getUserInfo: (state: Object) => {
      return state.userInfo
    },
    getStoreToken: (state: Object) => {
      return state.token
    },
  },
  // 相当于vuex的 mutation + action,可以同时写同步和异步的代码
  actions: {
    setUserInfo(userInfo: Object) {
      this.token = getToken()
      localStorage.setItem('userInfo', JSON.stringify(userInfo))
      window.sessionStorage.setItem('userInfo', JSON.stringify(userInfo))
      this.userInfo = userInfo
    },
    refreshUserInfo() {
      this.token = getToken()
      /*if (window.sessionStorage.getItem('userInfo')) {
        this.userInfo = JSON.parse(<string>window.sessionStorage.getItem('userInfo'))
      } else {
        this.removeUserInfo()
      }*/
      if (localStorage.getItem('userInfo')) {
        this.userInfo = JSON.parse(<string>localStorage.getItem('userInfo'))
      } else {
        this.removeUserInfo()
      }
    },
    removeUserInfo() {
      // window.sessionStorage.removeItem('userInfo')
      localStorage.removeItem("userInfo")
      this.userInfo = null
      this.token = null
      removeToken()
    }
  },
})

export const orderInfo = defineStore('orderInfo', {
  state: () => {
    return {
      reportOrder: {
        reportInfo: {},
        projectInfo: "",
      }
    }
  },
  getters: {
    getReportOrder: (state: Object) => {
      return state.reportOrder
    }
  },
  actions: {
    setReportInfo(reportInfo: any) {
      this.reportOrder.reportInfo = reportInfo
    },
    setProjectInfo(projectInfo: any) {
      this.reportOrder.projectInfo = projectInfo
    }
  }
})

export const creditInfo = defineStore('creditInfo', {
  state: () => {
    return {
      creditId: ""
    }
  },
  getters: {
    getCreditId: (state: object) => {
      return state.creditId
    }
  },
  actions: {
    setCreditId(creditId: any) {
      this.creditId = creditId
    },
  }
})