index.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <!-- 会员中心-资金流水 -->
  2. <template>
  3. <app-view>
  4. <template #header>
  5. <app-filter :options="filterOptons" :loading="loading">
  6. <template #before>
  7. <el-select v-model="isHistory" :disabled="loading" @change="onRefresh">
  8. <el-option :value="false" label="当前" />
  9. <el-option :value="true" label="历史" />
  10. </el-select>
  11. </template>
  12. <template #after v-if="isHistory">
  13. <el-date-picker type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
  14. value-format="YYYYMMDD" v-model="filterDate" />
  15. </template>
  16. </app-filter>
  17. </template>
  18. <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
  19. <!-- 时间 -->
  20. <template #createtime="{ value }">
  21. {{ formatDate(value) }}
  22. </template>
  23. <template #footer>
  24. <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
  25. @change="onRefresh" />
  26. </template>
  27. </app-table>
  28. </app-view>
  29. </template>
  30. <script lang="ts" setup>
  31. import { shallowRef } from 'vue'
  32. import { ElMessage } from 'element-plus'
  33. import { formatDate } from '@/filters'
  34. import { useDataTable } from '@/hooks/datatable'
  35. import { useDataFilter } from '@/hooks/datatable'
  36. import { queryAmountLog, queryHisAmountLog } from '@/services/api/bank'
  37. import AppTable from '@pc/components/base/table/index.vue'
  38. import AppFilter from '@pc/components/base/table-filter/index.vue'
  39. import AppPagination from '@pc/components/base/pagination/index.vue'
  40. const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.AmountLogRsp | Ermcp.HisAmountLogRsp>()
  41. const { filterOptons, getQueryParams } = useDataFilter<Ermcp.AmountLogReq | Ermcp.HisAmountLogReq>()
  42. const loading = shallowRef(false)
  43. const isHistory = shallowRef(false) // 是否历史流水
  44. const filterDate = shallowRef<string[]>([])
  45. const tableColumns = shallowRef<Ermcp.TableColumn[]>([
  46. { prop: 'createtime', label: '时间' },
  47. { prop: 'businesscode', label: '操作类型' },
  48. { prop: 'amount', label: '金额' },
  49. ])
  50. // 获取数据列表
  51. const getDataList = async (params: Partial<(Ermcp.AmountLogReq | Ermcp.HisAmountLogReq)> = {}) => {
  52. loading.value = true
  53. dataList.value = []
  54. const payload: Ermcp.AmountLogReq | Ermcp.HisAmountLogReq = {
  55. page: pageIndex.value,
  56. pagesize: pageSize.value,
  57. ...params
  58. }
  59. if (isHistory.value) {
  60. const [startDate, endDate] = filterDate.value || []
  61. filterOptons.buttonList = [
  62. { lable: '重置', onClick: () => onSearch(true) },
  63. { lable: '查询', className: 'el-button--primary', onClick: () => onSearch() }
  64. ]
  65. queryHisAmountLog({
  66. ...payload,
  67. startDate,
  68. endDate
  69. }).then((res) => {
  70. total.value = res.total
  71. dataList.value = res.data
  72. }).catch((err) => {
  73. ElMessage.error(err)
  74. }).finally(() => {
  75. loading.value = false
  76. })
  77. } else {
  78. filterOptons.buttonList = []
  79. queryAmountLog(payload).then((res) => {
  80. total.value = res.total
  81. dataList.value = res.data
  82. }).catch((err) => {
  83. ElMessage.error(err)
  84. }).finally(() => {
  85. loading.value = false
  86. })
  87. }
  88. }
  89. const onSearch = (clear = false) => {
  90. if (clear) {
  91. filterDate.value = []
  92. }
  93. getQueryParams((qs) => {
  94. pageIndex.value = 1
  95. getDataList(qs)
  96. }, clear)
  97. }
  98. const onRefresh = () => {
  99. getQueryParams((qs) => {
  100. getDataList(qs).catch((err) => ElMessage.error(err))
  101. })
  102. }
  103. onRefresh()
  104. </script>