index.vue 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. <el-button type="primary" size="small"
  7. v-if="[SignStatus.Unsigned, SignStatus.Rescinded].includes(signStatus)"
  8. @click="showComponent('sign')">代扣签约申请</el-button>
  9. </template>
  10. <!-- 状态 -->
  11. <template #accountsignstatus="{ value }">
  12. {{ getSignStatusName(value) }}
  13. </template>
  14. <!-- 扣款时间单位 -->
  15. <template #kksjdw="{ value }">
  16. {{ getGt_kksjdwName(value) }}
  17. </template>
  18. <!-- 展开行 -->
  19. <template #expand="{ row }">
  20. <div class="buttonbar">
  21. <el-button v-if="row.accountsignstatus === SignStatus.Signed" type="danger"
  22. size="small" @click="openComponent('cancel')">解约</el-button>
  23. </div>
  24. </template>
  25. </app-table>
  26. <component ref="componentRef" v-bind="{ selectedRow }" :is="componentMap.get(componentId)" @closed="closeComponent"
  27. v-if="componentId" />
  28. </template>
  29. <script lang="ts" setup>
  30. import { shallowRef, defineAsyncComponent, ref } from 'vue'
  31. import { useComponent } from '@/hooks/component'
  32. import { useComposeTable } from '@pc/components/base/table'
  33. import { useRequest } from '@/hooks/request'
  34. import { queryGetGtwithholdsigninfo, queryBankAccountSign } from '@/services/api/bank'
  35. import { getGt_kksjdwName, getSignStatusName, SignStatus } from '@/constants/bank'
  36. import { ElMessage } from 'element-plus'
  37. import AppTable from '@pc/components/base/table/index.vue'
  38. const componentMap = new Map<string, unknown>([
  39. ['cancel', defineAsyncComponent(() => import('./components/cancel/index.vue'))],
  40. ['sign', defineAsyncComponent(() => import('./components/sign/index.vue'))],
  41. ])
  42. const signStatus = shallowRef(SignStatus.Unsigned)
  43. /// 判断是否能签约
  44. const canBankSign = ref(false)
  45. const { rowKey, expandKeys, rowClick, selectedRow } = useComposeTable<Model.GTWithHoldSignInfoRsp>({ rowKey: 'accountid' })
  46. const { loading, dataList, run } = useRequest(queryGetGtwithholdsigninfo, {
  47. onSuccess: (res) => {
  48. /// 签约状态
  49. if (res.data.length != 0) {
  50. signStatus.value = res.data[0].accountsignstatus
  51. }
  52. }
  53. })
  54. /// 查询托管银行信息
  55. useRequest(queryBankAccountSign, {
  56. onSuccess: (res) => {
  57. /// 签约状态
  58. if (res.data.length != 0) {
  59. canBankSign.value = res.data[0].signstatus === 4
  60. }
  61. }
  62. })
  63. const { componentRef, componentId, openComponent, closeComponent } = useComponent(() => {
  64. run()
  65. })
  66. const showComponent = ((componentName: string) => {
  67. /// 认证请求中 不能操作
  68. if (!canBankSign.value) {
  69. ElMessage.error('请先进行银行签约')
  70. return
  71. }
  72. openComponent(componentName)
  73. })
  74. const tableColumns = shallowRef<Model.TableColumn[]>([
  75. { prop: 'jfhm', label: ' 用户编号' },
  76. { prop: 'accountsignstatus', label: '账户签约状态' },
  77. // { prop: 'yckfxe', label: '一次扣费限额' },
  78. { prop: 'xyqsrq', label: '协议签署日期' },
  79. { prop: 'xysxrq', label: '协议生效日期' },
  80. { prop: 'xydqrq', label: '协议到期日期' },
  81. { prop: 'kksjdw', label: '扣款单位时间' },
  82. { prop: 'kksjbc', label: '扣款时间步长' },
  83. // { prop: 'kkzqnkfxe', label: '扣款周期内扣费限额' },
  84. // { prop: 'kkzqnxzbs', label: '扣费周期内限制笔数' },
  85. ])
  86. </script>