index.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <template>
  2. <div class="exposure">
  3. <mtp-tabbar class="mtp-tabbar--top" :data-source="marketsSetion" label="marketsectionname" @change="selectSection" />
  4. <component :is="componentId" v-if="componentId"></component>
  5. <mtp-tabbar class="mtp-tabbar--bottom" :data-source="markets" v-model:selectedIndex="selctedMarketIndex" label="marketname" @change="onSelectMarket" />
  6. </div>
  7. </template>
  8. <script lang="ts">
  9. import { TradeMode, ListingMode, AuctionwrType } from '@/common/constants/enumCommon';
  10. import { contextMenu, defineAsyncComponent, defineComponent } from '@/common/export/commonTable';
  11. import { initData } from '@/common/methods';
  12. import APP from '@/services';
  13. import { TjmdMarketSection, TjmdMarketSectionConfig } from '@/services/go/Tjmd/interface';
  14. import { ref } from 'vue';
  15. import { setMarketId } from './setup'
  16. import MtpTabbar from '@/@next/components/base/tabbar/index.vue'
  17. export default defineComponent({
  18. components: {
  19. MtpTabbar,
  20. contextMenu,
  21. // 仓单贸易 有仓单 一口价
  22. [`${TradeMode.WarehouseReceiptTrade}-${AuctionwrType.hasWr}-${ListingMode.fix}`]: defineAsyncComponent(() => import('./warehouse_receipt_trade/warehouse_receipt_trade_price/index.vue')),
  23. // 仓单贸易 有仓单 浮动价
  24. [`${TradeMode.WarehouseReceiptTrade}-${AuctionwrType.hasWr}-${ListingMode.float}`]: defineAsyncComponent(() => import('./warehouse_receipt_trade/warehouse_receipt_trade_floating_price/index.vue')),
  25. // 仓单贸易 有仓单 贸易圈
  26. [`${TradeMode.WarehouseReceiptTrade}-${AuctionwrType.hasWr}-${ListingMode.blocs}`]: defineAsyncComponent(() => import('./warehouse_receipt_trade/warehouse_receipt_trade_blocs/index.vue')),
  27. // 仓单贸易 有仓单 协议指定
  28. [`${TradeMode.WarehouseReceiptTrade}-${AuctionwrType.hasWr}-${ListingMode.designate}`]: defineAsyncComponent(() => import('./warehouse_receipt_trade/warehouse_receipt_trade_designate/index.vue')),
  29. // 仓单贸易 无仓单 一口价
  30. [`${TradeMode.WarehouseReceiptTrade}-${AuctionwrType.noWr}-${ListingMode.fix}`]: defineAsyncComponent(() => import('./warehouse_pre_sale/warehouse_pre_sale_price/index.vue')),
  31. // 仓单贸易 无仓单 浮动价
  32. [`${TradeMode.WarehouseReceiptTrade}-${AuctionwrType.noWr}-${ListingMode.float}`]: defineAsyncComponent(() => import('./warehouse_pre_sale/warehouse_pre_sale_floating_price/index.vue')),
  33. // 仓单贸易 无仓单 贸易圈
  34. [`${TradeMode.WarehouseReceiptTrade}-${AuctionwrType.noWr}-${ListingMode.blocs}`]: defineAsyncComponent(() => import('./warehouse_pre_sale/warehouse_pre_sale_blocs/index.vue')),
  35. // 仓单贸易 无仓单 协议指定
  36. [`${TradeMode.WarehouseReceiptTrade}-${AuctionwrType.noWr}-${ListingMode.designate}`]: defineAsyncComponent(() => import('./warehouse_pre_sale/warehouse_pre_sale_designate/index.vue')),
  37. // 参考行情
  38. [TradeMode.quote99]: defineAsyncComponent(() => import('./spot_trade_reference_market/index.vue')),
  39. // 挂牌点选
  40. [TradeMode.ListingAndSelection]: defineAsyncComponent(() => import('./spot_trade_order_transaction/spot_trade_order_transaction_basis_difference/index.vue')),
  41. // 掉期贸易
  42. [TradeMode.DiaoQi]: defineAsyncComponent(() => import('./spot_trade_order_transaction/spot_trade_order_transaction_swap/index.vue')),
  43. },
  44. setup() {
  45. // 市场板块
  46. const marketsSetion = APP.getRef('marketsSection')
  47. // 市场
  48. const markets = ref<TjmdMarketSectionConfig[]>([])
  49. // 选中的市场
  50. const selctedMarketIndex = ref(0)
  51. const componentId = ref<string>('')
  52. initData(() => {
  53. if (marketsSetion.value.length) {
  54. selectSection(marketsSetion.value[0])
  55. }
  56. })
  57. // 切换市场板块
  58. function selectSection(value: TjmdMarketSection) {
  59. markets.value = value.mlist
  60. const index = marketsSetion.value.findIndex((el: TjmdMarketSection) => el.marketsectionid === value.marketsectionid)
  61. if (index > -1 && value.mlist.length) {
  62. selctedMarketIndex.value = 0
  63. onSelectMarket(value.mlist[0])
  64. }
  65. }
  66. // 切换市场
  67. function onSelectMarket(value: TjmdMarketSectionConfig) {
  68. const { trademode, auctionwrtype, listingmode } = value
  69. // 仓单贸易
  70. if (value.trademode === TradeMode.WarehouseReceiptTrade) {
  71. componentId.value = `${trademode}-${auctionwrtype}-${listingmode}`
  72. } else {
  73. componentId.value = value.trademode.toString()
  74. }
  75. // 缓存 当前市场 交易模式 是否有仓单,挂牌方式信息
  76. setMarketId(componentId.value)
  77. }
  78. return {
  79. marketsSetion,
  80. selectSection,
  81. markets,
  82. selctedMarketIndex,
  83. onSelectMarket,
  84. componentId
  85. }
  86. }
  87. })
  88. </script>
  89. <style lang="less">
  90. .home {
  91. .withus {
  92. cursor: pointer;
  93. margin-top: 35px;
  94. padding-bottom: 25px;
  95. }
  96. }
  97. </style>