index.vue 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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 #header>
  6. <el-button type="primary" v-if="authStatus === AuthStatus.Certified"
  7. @click="openComponent('sign')">添加签约账户</el-button>
  8. <el-button type="warning" v-else @click="openComponent('certification')">实名认证</el-button>
  9. </template>
  10. <!-- 证件类型 -->
  11. <template #cardtype="{ value }">
  12. {{ getCertificateTypeCodeName(Number(value)) }}
  13. </template>
  14. <!-- 状态 -->
  15. <template #signstatus="{ value }">
  16. {{ getSignStatusName(value) }}
  17. </template>
  18. <!-- 展开行 -->
  19. <template #expand="{ row }">
  20. <div class="buttonbar">
  21. <el-button v-if="row.signstatus === SignStatus.Signed" type="danger" size="small"
  22. @click="openComponent('cancel')">解约</el-button>
  23. <el-button v-if="[SignStatus.Unsigned, SignStatus.Refuse, SignStatus.Signed].includes(row.signstatus)"
  24. type="primary" size="small" @click="openComponent('sign')">修改</el-button>
  25. </div>
  26. </template>
  27. </app-table>
  28. <component ref="componentRef" v-bind="{ selectedRow }" :is="componentMap.get(componentId)" @closed="closeComponent"
  29. v-if="componentId" />
  30. </template>
  31. <script lang="ts" setup>
  32. import { shallowRef, defineAsyncComponent, onMounted } from 'vue'
  33. import { useComponent } from '@/hooks/component'
  34. import { useComposeTable } from '@pc/components/base/table'
  35. import { useRequest } from '@/hooks/request'
  36. import { queryBankAccountSign } from '@/services/api/bank'
  37. import { getSignStatusName, SignStatus } from '@/constants/bank'
  38. import { getCertificateTypeCodeName } from '@/constants/account'
  39. import { queryUserAccount } from '@/services/api/account'
  40. import { AuthStatus } from '@/constants/account'
  41. import AppTable from '@pc/components/base/table/index.vue'
  42. const componentMap = new Map<string, unknown>([
  43. ['cancel', defineAsyncComponent(() => import('./components/cancel/index.vue'))],
  44. ['sign', defineAsyncComponent(() => import('./components/sign/index.vue'))],
  45. ['certification', defineAsyncComponent(() => import('./components/certification/index.vue'))], // 实名认证
  46. ])
  47. const { rowKey, expandKeys, rowClick, selectedRow } = useComposeTable<Model.BankAccountSignRsp>({ rowKey: 'applyexchticket' })
  48. const { loading, dataList, run } = useRequest(queryBankAccountSign, {})
  49. const authStatus = shallowRef(AuthStatus.Uncertified) // 实名认证状态
  50. const { componentRef, componentId, openComponent, closeComponent } = useComponent(() => {
  51. run()
  52. })
  53. const tableColumns = shallowRef<Model.TableColumn[]>([
  54. { prop: 'accountcode', label: '资金账号' },
  55. { prop: 'accountname', label: '账号名' },
  56. { prop: 'cardtype', label: '证件类型' },
  57. { prop: 'cardno', label: '证件号码' },
  58. { prop: 'cusbankname', label: '托管银行' },
  59. { prop: 'bankname', label: '签约银行' },
  60. { prop: 'bankaccountno', label: '签约银行账号' },
  61. { prop: 'currency', label: '币种' },
  62. { prop: 'signstatus', label: '状态' },
  63. ])
  64. onMounted(() => {
  65. if (authStatus.value !== AuthStatus.Certified) {
  66. // 获取用户账号信息
  67. queryUserAccount().then((res) => {
  68. authStatus.value = res.data.hasauth
  69. })
  70. }
  71. })
  72. </script>