Index.vue 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <template>
  2. <app-view>
  3. <template #header>
  4. <app-navbar title="掉期挂牌大厅" />
  5. </template>
  6. <Tabs v-model:active="tabIndex" @change="tabChange">
  7. <Tab title="卖大厅">
  8. </Tab>
  9. <Tab title="买大厅">
  10. </Tab>
  11. </Tabs>
  12. <div class="trade">
  13. <div class="trade-section sell" v-if="dataList.length">
  14. <app-list :columns="columns" :data-list="dataList">
  15. <template #operate="{ row }">
  16. <Button size="small" round @click="delisting(row)">摘牌</Button>
  17. </template>
  18. </app-list>
  19. </div>
  20. </div>
  21. <component ref="componentRef" :is="components.delisting" v-bind="{ selectedRow }" @closed="closeComponent"
  22. v-if="componentId" />
  23. </app-view>
  24. </template>
  25. <script lang="ts" setup>
  26. import { shallowRef, defineAsyncComponent } from 'vue'
  27. import { Tab, Tabs, Button } from 'vant'
  28. import { useRequest } from '@/hooks/request'
  29. import { useNavigation } from '@/hooks/navigation'
  30. import { useComponent } from '@/hooks/component'
  31. import AppList from '@mobile/components/base/list/index.vue'
  32. import { queryTjmdTradeOrderDetail } from '@/services/api/swap'
  33. const components = {
  34. delisting: defineAsyncComponent(() => import('./components/delisting/Index.vue')),
  35. listing: defineAsyncComponent(() => import('./components/listing/Index.vue')),
  36. }
  37. const { getQueryStringToNumber } = useNavigation()
  38. const { componentRef, componentId, openComponent, closeComponent } = useComponent()
  39. const goodsId = getQueryStringToNumber('id')
  40. const tabIndex = shallowRef(0)
  41. const selectedRow = shallowRef<Model.TjmdTradeOrderDetailRsp>()
  42. const error = shallowRef(false)
  43. const showModal = shallowRef(true)
  44. const dataList = shallowRef<Model.TjmdTradeOrderDetailRsp[]>([])
  45. const { pageIndex } = useRequest(queryTjmdTradeOrderDetail, {
  46. params: {
  47. goodsid: goodsId,
  48. buyorsell: tabIndex.value
  49. },
  50. onSuccess: (res) => {
  51. if (pageIndex.value === 1) {
  52. dataList.value = []
  53. }
  54. dataList.value.push(...res.data)
  55. },
  56. onError: () => {
  57. error.value = true
  58. }
  59. })
  60. const columns: Model.TableColumn[] = [
  61. { prop: 'fixedprice', label: '价格' },
  62. { prop: 'orderqty', label: '数量' },
  63. { prop: 'username', label: '挂牌方' },
  64. ]
  65. const tabChange = (index: number) => {
  66. console.log('切换列表', index)
  67. }
  68. const delisting = (row: Model.TjmdTradeOrderDetailRsp) => {
  69. selectedRow.value = row
  70. openComponent('delisting')
  71. }
  72. </script>