index.vue 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <template>
  2. <!-- 套期交易-执行中 -->
  3. <mtp-table-scroll>
  4. <template #header>
  5. <Filter @search="updateColumn">
  6. <mtp-table-button class="btn-list-sticky" :buttons="headerButtons" @click="openComponent" />
  7. </Filter>
  8. </template>
  9. <template #default="{ scroll }">
  10. <a-table :columns="columns" class="srcollYTable" :pagination="false" :loading="loading"
  11. :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record, index) => index"
  12. :data-source="tableList" :scroll="scroll">
  13. <template #expandedRowRender="{ record }">
  14. <mtp-table-button class="btn-list-sticky" :buttons="tableButtons" :record="record"
  15. @click="openComponent" />
  16. </template>
  17. </a-table>
  18. </template>
  19. </mtp-table-scroll>
  20. <mtp-tab-component :options="{ selectedRow }" />
  21. <component :is="componentId" v-if="componentId" v-bind="{ selectedRow }" @cancel="closeComponent"></component>
  22. </template>
  23. <script lang="ts">
  24. import { queryTableList, MtpTableButton, defineAsyncComponent, defineComponent, handleComposeTable } from '@/common/export/commonTable'
  25. import { Ermcp2HedgedItemRsp } from '@/services/go/ermcp/hedgedItem/interface'
  26. import { queryErmcp2HedgedItem } from '@/services/go/ermcp/hedgedItem'
  27. import { useMenu } from '@/@next/hooks/common'
  28. import MtpTableScroll from '@/common/components/tableScroll/index.vue'
  29. import MtpTabComponent from '@/@next/components/base/tab-component/index.vue'
  30. import Filter from '../components/filter/index.vue'
  31. export default defineComponent({
  32. components: {
  33. MtpTabComponent,
  34. MtpTableButton,
  35. MtpTableScroll,
  36. Filter,
  37. add: defineAsyncComponent(() => import('../components/add/index.vue')), // 新增
  38. trade: defineAsyncComponent(() => import('@/views/market/futures/compoments/futures-trade/index.vue')), // 期货交易
  39. ending: defineAsyncComponent(() => import('../components/ending/index.vue')), // 完结项目
  40. },
  41. setup() {
  42. const { authFilter } = useMenu();
  43. const { loading, tableList, queryTable } = queryTableList<Ermcp2HedgedItemRsp>(true, 2); // 表格列表数据
  44. const headerButtons = authFilter(['add']);
  45. const tableButtons = authFilter(['add'], true);
  46. const queryFn = () => queryTable(queryErmcp2HedgedItem, { hedgeditemstatus: 3 }).then((res) => {
  47. if (res.length) {
  48. composeTable.selectedRow.value = res[0];
  49. }
  50. })
  51. // 表格通用逻辑
  52. const composeTable = handleComposeTable<Ermcp2HedgedItemRsp>({
  53. queryFn,
  54. tableName: 'table_pcweb_hedgeditem_trade_finish',
  55. })
  56. return {
  57. ...composeTable,
  58. loading,
  59. tableList,
  60. headerButtons,
  61. tableButtons
  62. }
  63. }
  64. })
  65. </script>