index.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <!-- 账户管理-入金代扣申请流水 -->
  2. <template>
  3. <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading" :row-key="rowKey"
  4. :expand-row-keys="expandKeys" @row-click="rowClick">
  5. <template #headerLeft>
  6. <app-filter :options="filterOptons">
  7. <template #after>
  8. <el-date-picker type="daterange" effect="dark" start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYYMMDD"
  9. v-model="filterDate" />
  10. </template>
  11. </app-filter>
  12. </template>
  13. <!-- 状态 -->
  14. <template #updatetime="{ value }">
  15. {{ formatDate(value, 'YYYY/MM/DD HH:MM:SS') }}
  16. </template>
  17. </app-table>
  18. <component ref="componentRef" v-bind="{ selectedRow }" :is="componentMap.get(componentId)" @closed="closeComponent"
  19. v-if="componentId" />
  20. </template>
  21. <script lang="ts" setup>
  22. import { shallowRef, defineAsyncComponent } from 'vue'
  23. import { ElMessage } from 'element-plus'
  24. import { useDataFilter } from '@/hooks/datatable'
  25. import { useComponent } from '@/hooks/component'
  26. import { useComposeTable } from '@pc/components/base/table'
  27. import { useRequest } from '@/hooks/request'
  28. import { queryGtwithholddepositapply, queryGetGtwithholdsigninfo } from '@/services/api/bank'
  29. import { SignStatus } from '@/constants/bank'
  30. import AppTable from '@pc/components/base/table/index.vue'
  31. import AppFilter from '@pc/components/base/table-filter/index.vue'
  32. import { formatDate } from '@/filters'
  33. const componentMap = new Map<string, unknown>([
  34. ['deposit', defineAsyncComponent(() => import('./components/deposit/index.vue'))],
  35. ])
  36. const { filterOptons, getQueryParams } = useDataFilter<Model.GTWithHoldDepositApplyReq>()
  37. const filterDate = shallowRef<string[]>([])
  38. filterOptons.buttonList = [
  39. { lable: '重置', className: 'el-button--info', onClick: () => onSearch(true) },
  40. { lable: '查询', className: 'el-button--info', onClick: () => onSearch() },
  41. { lable: '入金代扣申请', className: 'el-button--primary', onClick: () => showComponent() }
  42. ]
  43. filterOptons.selectList = [
  44. {
  45. key: 'billresult',
  46. selectedValue: undefined,
  47. options: [
  48. { label: '扣费成功', value: 0 },
  49. { label: '扣费失败', value: 1 },
  50. ]
  51. }
  52. ]
  53. const signStatus = shallowRef(SignStatus.Unsigned)
  54. const { rowKey, expandKeys, rowClick, selectedRow } = useComposeTable<Model.GTWithHoldDepositApplyRsp>({ rowKey: 'billingsnum' })
  55. const { loading, dataList, run } = useRequest(queryGtwithholddepositapply)
  56. /// 查询已经入金代扣申请签约
  57. useRequest(queryGetGtwithholdsigninfo, {
  58. onSuccess: (res) => {
  59. /// 签约状态
  60. if (res.data.length != 0) {
  61. signStatus.value = res.data[0].accountsignstatus
  62. }
  63. }
  64. })
  65. const showComponent = () => {
  66. if (signStatus.value != SignStatus.Signed) {
  67. ElMessage.error('未进行入金代扣签约申请')
  68. return
  69. }
  70. openComponent('deposit')
  71. }
  72. const { componentRef, componentId, openComponent, closeComponent } = useComponent(() => {
  73. run()
  74. })
  75. const tableColumns = shallowRef<Model.TableColumn[]>([
  76. { prop: 'billingsnum', label: '流水号' },
  77. { prop: 'dgjfhm', label: '扣费账号' },
  78. { prop: 'deductionbnum', label: '扣费批次号' },
  79. { prop: 'billamount', label: '入金代扣金额' },
  80. { prop: 'updatetime', label: '申请时间' },
  81. { prop: 'billresult', label: '状态' },
  82. { prop: 'message', label: '备注' },
  83. ])
  84. const onSearch = (clear = false) => {
  85. if (clear) {
  86. filterDate.value = []
  87. }
  88. getQueryParams((qs) => {
  89. qs.begindate = filterDate.value[0]
  90. qs.enddate = filterDate.value[1]
  91. run(qs)
  92. }, clear)
  93. }
  94. </script>