goods.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { toRefs, computed, reactive } from 'vue'
  2. import { queryQuoteGoodsList } from '@/services/api/swap'
  3. import { defineStore } from '../store'
  4. import { useUserStore } from './user'
  5. /**
  6. * 订单交易存储对象
  7. * @returns
  8. */
  9. export const useGoodsStore = defineStore(() => {
  10. const userStore = useUserStore()
  11. const state = reactive({
  12. loading: false,
  13. quoteGoodsList: <Model.QuoteGoodsListRsp[]>[],
  14. goodsId: 0,
  15. })
  16. // 当前选中的商品信息
  17. const goodsInfo = computed(() => {
  18. return {
  19. ...state.quoteGoodsList.find((e) => e.goodsid === state.goodsId)
  20. }
  21. })
  22. // 当前选中的商品代码
  23. const goodsCode = computed(() => {
  24. return goodsInfo.value.goodscode ?? ''
  25. })
  26. // 获取商品列表
  27. const getQuoteGoodsList = async () => {
  28. try {
  29. state.loading = true
  30. const res = await queryQuoteGoodsList({
  31. data: {
  32. usertype: userStore.userType ?? 0,
  33. marketids: '50101'
  34. }
  35. })
  36. const data = res.data
  37. state.quoteGoodsList = data
  38. // 查找当前选中的商品
  39. if (!data.every((e) => e.goodsid === state.goodsId)) {
  40. state.goodsId = data[0]?.goodsid ?? 0
  41. }
  42. } finally {
  43. state.loading = false
  44. }
  45. }
  46. return {
  47. ...toRefs(state),
  48. goodsInfo,
  49. goodsCode,
  50. getQuoteGoodsList,
  51. }
  52. })