store.ts 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { reactive } from 'vue'
  2. import * as api from '@/service/user'
  3. import { getOrderInfo } from '@/service/order'
  4. export const state = reactive({
  5. bgWhite: false,
  6. userInfo: null as ApiUser.Info.Response | null,
  7. // 拉新优惠券信息
  8. coupon: {} as any,
  9. currentOrder: null as any,
  10. })
  11. export async function getUserInfo(reportError?: boolean) {
  12. const { results } = await api.getUserInfo(reportError)
  13. state.userInfo = results
  14. return results
  15. }
  16. export async function updateUserInfo(data: ApiUser.Update.Request) {
  17. await api.updateUserInfo(data)
  18. Object.assign(state.userInfo as ApiUser.Info.Response, data)
  19. }
  20. export async function logout() {
  21. await api.logout()
  22. state.userInfo = null
  23. }
  24. export function bootstrap() {
  25. api.getInviteCoupon().then(({ results }) => (state.coupon = results))
  26. return getUserInfo(false)
  27. }
  28. export async function getCurrentOrder(id: string | number) {
  29. if (!state.currentOrder || +state.currentOrder.id !== +id) {
  30. state.currentOrder = (await getOrderInfo(+id)).results
  31. }
  32. }