index.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <!-- 收益查询 -->
  2. <template>
  3. <app-view>
  4. <template #header>
  5. <app-filter :options="filterOptons" :loading="loading" />
  6. </template>
  7. <!-- 表格数据 -->
  8. <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
  9. <!-- 成交时间 -->
  10. <template #tradetimedisplay="{ value }">
  11. {{ formatDate(value) }}
  12. </template>
  13. <template #footer>
  14. <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
  15. @change="onRefresh" />
  16. </template>
  17. </app-table>
  18. </app-view>
  19. </template>
  20. <script lang="ts" setup>
  21. import { shallowRef } from 'vue'
  22. import { ElMessage } from 'element-plus'
  23. import { formatDate } from '@/filters'
  24. import { getTHJMarketList } from '@/constants/market'
  25. import { getTHJProfitRoleTypeName } from '@/constants/account'
  26. import { useDataTable, useDataFilter } from '@/hooks/datatable'
  27. import { queryTHJProfits } from '@/services/api/common'
  28. import { loginStore } from '@/stores'
  29. import AppTable from '@pc/components/base/table/index.vue'
  30. import AppFilter from '@pc/components/base/table-filter/index.vue'
  31. import AppPagination from '@pc/components/base/pagination/index.vue'
  32. const { userId } = loginStore.$mapGetters()
  33. const { dataList, total, pageIndex, pageSize } = useDataTable<Model.THJProfitsRsp>()
  34. const { filterOptons, getQueryParams } = useDataFilter<Model.THJProfitsReq>()
  35. const loading = shallowRef(false)
  36. const tableColumns = shallowRef<Model.TableColumn[]>([
  37. { prop: 'marketname', label: '市场' },
  38. { prop: 'firend', label: '下单好友' },
  39. { prop: 'buyorselldisplay', label: '方向' },
  40. { prop: 'wrstandardname', label: '商品', width: 140 },
  41. { prop: 'tradeqty', label: '成交数量' },
  42. { prop: 'chargeamount', label: '手续费总额' },
  43. { prop: 'profitamount', label: '分润金额' },
  44. { prop: 'profitroletypedisplay', label: '分润角色' },
  45. { prop: 'brokerrate', label: '会员比例' },
  46. { prop: 'brokerprofitrate', label: '会员释出比例' },
  47. { prop: 'levelonevalue', label: '一级比例' },
  48. { prop: 'leveltwovalue', label: '二级比例' },
  49. { prop: 'tradeid', label: '成交单号', width: 200 },
  50. { prop: 'tradetimedisplay', label: '成交时间', width: 180 },
  51. ])
  52. filterOptons.selectList = [
  53. {
  54. label: '市场',
  55. key: 'marketid',
  56. options: getTHJMarketList(),
  57. },
  58. {
  59. label: '角色',
  60. key: 'profitroletype',
  61. options: [
  62. { label: getTHJProfitRoleTypeName(3), value: 3 },
  63. { label: getTHJProfitRoleTypeName(4), value: 4 }
  64. ],
  65. },
  66. ]
  67. filterOptons.inputList = [
  68. { label: '好友', keys: ['accountname'] },
  69. { label: '商品', keys: ['goods'] },
  70. ]
  71. filterOptons.buttonList = [
  72. { lable: '重置', onClick: () => onSearch(true) },
  73. { lable: '查询', className: 'el-button--primary', onClick: () => onSearch() }
  74. ]
  75. const getTHJProfits = (params: Partial<Model.THJProfitsReq> = {}) => {
  76. loading.value = true
  77. return queryTHJProfits({
  78. data: {
  79. userid: userId.value,
  80. page: pageIndex.value,
  81. pagesize: pageSize.value,
  82. ...params,
  83. },
  84. success: (res) => {
  85. total.value = res.total
  86. dataList.value = res.data
  87. },
  88. complete: () => {
  89. loading.value = false
  90. }
  91. })
  92. }
  93. const onSearch = (clear = false) => {
  94. getQueryParams((qs) => {
  95. pageIndex.value = 1
  96. getTHJProfits(qs)
  97. }, clear)
  98. }
  99. const onRefresh = () => {
  100. getQueryParams((qs) => {
  101. getTHJProfits(qs).catch((err) => ElMessage.error(err))
  102. })
  103. }
  104. onRefresh()
  105. </script>