index.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <!-- 签约账号管理 -->
  2. <template>
  3. <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading" :row-key="rowKey" :expand-row-keys="expandKeys" @row-click="rowClick">
  4. <template #header>
  5. <el-button type="danger" size="small" @click="openComponent('')">添加签约账户</el-button>
  6. </template>
  7. <!-- 证件类型 -->
  8. <template #cardtype="{ value }">
  9. {{ getCertificateTypeCodeName(value) }}
  10. </template>
  11. <!-- 状态 -->
  12. <template #signstatus="{ value }">
  13. {{ getSignStatusName(value) }}
  14. </template>
  15. <!-- 展开行 -->
  16. <template #expand="{ row }">
  17. <div class="buttonbar">
  18. <el-button v-if="row.signstatus === SignStatus.Signed" type="danger" size="small" @click="showComponent('cancel', row)">解约</el-button>
  19. <el-button v-if="[SignStatus.Unsigned, SignStatus.Refuse, SignStatus.Signed].includes(row.signstatus)" type="danger" size="small" @click="showComponent('cancel', row)">修改</el-button>
  20. </div>
  21. </template>
  22. </app-table>
  23. <component ref="componentRef" v-bind="{ selectedRow }" :is="componentMap.get(componentId)" @closed="closeComponent"
  24. v-if="componentId" />
  25. </template>
  26. <script lang="ts" setup>
  27. import { shallowRef, defineAsyncComponent } from 'vue'
  28. import { useComponent } from '@/hooks/component'
  29. import { useComposeTable } from '@pc/components/base/table'
  30. import { useRequest } from '@/hooks/request'
  31. import AppTable from '@pc/components/base/table/index.vue'
  32. import { queryBankAccountSign } from '@/services/api/bank'
  33. import { getSignStatusName, SignStatus } from '@/constants/bank'
  34. import { getCertificateTypeCodeName } from '@/constants/account'
  35. const { rowKey, expandKeys, rowClick, selectedRow } = useComposeTable<Model.BankAccountSignRsp>({ rowKey: 'applyexchticket' })
  36. defineProps({
  37. code: String
  38. })
  39. const componentMap = new Map<string, unknown>([
  40. ['cancel', defineAsyncComponent(() => import('./components/cancel/index.vue'))],
  41. ])
  42. const { loading, dataList, run } = useRequest(queryBankAccountSign, {})
  43. const { componentRef, componentId, openComponent, closeComponent } = useComponent(() => {
  44. run()
  45. })
  46. const tableColumns = shallowRef<Model.TableColumn[]>([
  47. { prop: 'accountcode', label: '资金账号' },
  48. { prop: 'accountname', label: '账号名' },
  49. { prop: 'cardtype', label: '证件类型' },
  50. { prop: 'cardno', label: '证件号码' },
  51. { prop: 'cusbankname', label: '托管银行' },
  52. { prop: 'bankname', label: '签约银行' },
  53. { prop: 'bankaccountno', label: '签约银行账号' },
  54. { prop: 'currency', label: '币种' },
  55. { prop: 'signstatus', label: '状态' },
  56. ])
  57. const showComponent = (componentName: string, row: Model.BankAccountSignRsp) => {
  58. selectedRow.value = row
  59. openComponent(componentName)
  60. }
  61. </script>