Browse Source

解决冲突

marymelisa 4 năm trước cách đây
mục cha
commit
75f8e427b9
98 tập tin đã thay đổi với 3535 bổ sung1318 xóa
  1. 281 185
      src/assets/styles/index.css
  2. 11 0
      src/assets/styles/index.less
  3. 3 3
      src/common/components/btnList/index.vue
  4. 2 1
      src/common/components/btnList/interface.ts
  5. 13 8
      src/common/components/contextMenu/temp.vue
  6. 132 131
      src/common/methods/table/interface.ts
  7. 2 2
      src/common/setup/asyncComponent/index.ts
  8. 35 0
      src/common/setup/iframe/index.ts
  9. 8 0
      src/common/setup/iframe/interface.ts
  10. 12 12
      src/common/setup/table/button.ts
  11. 48 1
      src/common/setup/table/clolumn.ts
  12. 64 4
      src/common/setup/table/compose.ts
  13. 1 1
      src/common/setup/table/event.ts
  14. 8 1
      src/common/setup/table/interface.ts
  15. 16 0
      src/common/setup/table/tableQuote.ts
  16. 366 0
      src/router/index.ts
  17. 33 0
      src/services/bus/goods.ts
  18. 34 0
      src/services/socket/quota/adapter/index.ts
  19. 3 4
      src/utils/qt/common.ts
  20. 1 1
      src/views/business/plan/list/uncommitted/index.vue
  21. 3 4
      src/views/information/account_info/list/setup.ts
  22. 1 1
      src/views/manage/business-review/list/settlement/index.vue
  23. 1 1
      src/views/manage/business-review/list/someprice/index.vue
  24. 1 1
      src/views/manage/finance-review/list/funds/index.vue
  25. 1 1
      src/views/manage/finance-review/list/invoice/index.vue
  26. 1 1
      src/views/manage/inventory-review/list/checkin/index.vue
  27. 1 1
      src/views/manage/inventory-review/list/checkout/index.vue
  28. 2 2
      src/views/market/spot_trade/components/buy-sell-market/components/buy/index.vue
  29. 2 2
      src/views/market/spot_trade/components/buy-sell-market/components/sell/index.vue
  30. 104 101
      src/views/market/spot_trade/components/buy-sell-market/index.vue
  31. 3 3
      src/views/market/spot_trade/setup.ts
  32. 118 0
      src/views/market/spot_trade/spot_trade_order_transaction/components/buy-market/index.vue
  33. 0 411
      src/views/market/spot_trade/spot_trade_order_transaction/components/buy-sell-market/components/delisting/index.vue
  34. 0 154
      src/views/market/spot_trade/spot_trade_order_transaction/components/buy-sell-market/components/delisting/setup.ts
  35. 23 94
      src/views/market/spot_trade/spot_trade_order_transaction/components/buy-sell-market/index.vue
  36. 354 0
      src/views/market/spot_trade/spot_trade_order_transaction/components/delisting/index.vue
  37. 0 0
      src/views/market/spot_trade/spot_trade_order_transaction/components/delisting/interface.ts
  38. 19 0
      src/views/market/spot_trade/spot_trade_order_transaction/components/delisting/setup.ts
  39. 170 0
      src/views/market/spot_trade/spot_trade_order_transaction/components/detail/index.vue
  40. 333 0
      src/views/market/spot_trade/spot_trade_order_transaction/components/listing/index.vue
  41. 6 0
      src/views/market/spot_trade/spot_trade_order_transaction/components/listing/interface.ts
  42. 19 0
      src/views/market/spot_trade/spot_trade_order_transaction/components/listing/setup.ts
  43. 24 40
      src/views/market/spot_trade/spot_trade_order_transaction/components/sell-market/index.vue
  44. 18 1
      src/views/market/spot_trade/spot_trade_order_transaction/setup.ts
  45. 25 34
      src/views/market/spot_trade/spot_trade_order_transaction/spot_trade_order_transaction_basis_difference/index.vue
  46. 25 39
      src/views/market/spot_trade/spot_trade_order_transaction/spot_trade_order_transaction_listing_transfer/index.vue
  47. 106 11
      src/views/market/spot_trade/spot_trade_reference_market/index.vue
  48. 10 15
      src/views/order/financing_manager/components/financing_manager_apply_order/index.vue
  49. 5 5
      src/views/order/financing_manager/components/financing_manager_contract/index.vue
  50. 1 1
      src/views/order/performance_information/components/performance_information_buy_performance/index.vue
  51. 1 1
      src/views/order/performance_information/components/performance_information_sell_performance/index.vue
  52. 2 2
      src/views/order/pre_sale_warehouse_receipt/components/pre_sale_warehouse_receipt_pending_order/index.vue
  53. 11 11
      src/views/order/spot_warran/components/spot_warrant_in_and_out_warehouse/index.vue
  54. 2 2
      src/views/order/spot_warran/components/spot_warrant_pending_order/index.vue
  55. 36 0
      src/views/platinum/platinum_account_manager/index.vue
  56. 2 2
      src/views/platinum/platinum_agreement/setup.ts
  57. 33 0
      src/views/platinum/platinum_asset_management_signing/platinum_asset_management_signing_finish/index.vue
  58. 35 0
      src/views/platinum/platinum_asset_management_signing/platinum_asset_management_signing_normal/index.vue
  59. 34 0
      src/views/platinum/platinum_asset_management_signing/platinum_asset_management_signing_pending_review/index.vue
  60. 36 0
      src/views/platinum/platinum_asset_management_signing/platinum_asset_management_signing_unsubmitted/index.vue
  61. 1 1
      src/views/platinum/platinum_broker_management/normal/index.vue
  62. 1 1
      src/views/platinum/platinum_broker_management/refuse/index.vue
  63. 1 1
      src/views/platinum/platinum_broker_management/waiting/index.vue
  64. 9 12
      src/views/platinum/platinum_capital_flow/platinum_capital_flow_tab/index.vue
  65. 34 0
      src/views/platinum/platinum_financial_payment/platinum_financial_payment_all_tab/index.vue
  66. 34 0
      src/views/platinum/platinum_financial_payment/platinum_financial_payment_in_waiting_payment_tab/index.vue
  67. 33 0
      src/views/platinum/platinum_financial_payment/platinum_financial_payment_payment_tab/index.vue
  68. 34 0
      src/views/platinum/platinum_financial_payment/platinum_financial_payment_waiting_payment_cash_tab/index.vue
  69. 34 0
      src/views/platinum/platinum_financial_payment/platinum_financial_payment_waiting_payment_tab/index.vue
  70. 2 1
      src/views/platinum/platinum_pick_query/list/tab/index.vue
  71. 2 2
      src/views/platinum/platinum_pick_query/list/tab/setup.ts
  72. 36 0
      src/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_all/index.vue
  73. 38 0
      src/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_normal/index.vue
  74. 34 0
      src/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_pending_review/index.vue
  75. 33 0
      src/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_refunded/index.vue
  76. 34 0
      src/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_repurchase_pending_review/index.vue
  77. 30 0
      src/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_success/index.vue
  78. 36 0
      src/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_unsubmitted/index.vue
  79. 1 1
      src/views/platinum/platinum_recharge_withdrawal_review/list/recharge/index.vue
  80. 1 1
      src/views/platinum/platinum_recharge_withdrawal_review/list/withdrawal/index.vue
  81. 36 0
      src/views/platinum/platinum_signing_settings/index.vue
  82. 37 0
      src/views/platinum/platinum_team_settings/index.vue
  83. 30 0
      src/views/report/platinum_asset_management_sale_report/platinum_asset_management_sale_report_company_day_tab/index.vue
  84. 30 0
      src/views/report/platinum_asset_management_sale_report/platinum_asset_management_sale_report_company_month_tab/index.vue
  85. 30 0
      src/views/report/platinum_asset_management_sale_report/platinum_asset_management_sale_report_company_week_tab/index.vue
  86. 30 0
      src/views/report/platinum_asset_management_sale_report/platinum_precious_metal_sales_report_departmental_month_tab/index.vue
  87. 30 0
      src/views/report/platinum_asset_management_sale_report/platinum_precious_metal_sales_report_departmental_week_tab/index.vue
  88. 30 0
      src/views/report/platinum_asset_management_sale_report/platinum_precious_metal_sales_report_product_month_tab/index.vue
  89. 30 0
      src/views/report/platinum_customer_service_report/platinum_customer_service_report_personal_annualized_performance_ranking_report_tab/index.vue
  90. 30 0
      src/views/report/platinum_customer_service_report/platinum_customer_service_report_reach_rate_report_tab/index.vue
  91. 30 0
      src/views/report/platinum_customer_service_report/platinum_customer_service_report_team_annualized_performance_ranking_report_tab/index.vue
  92. 30 0
      src/views/report/platinum_customer_service_report/platinum_customer_service_report_team_manager_annual_performance_ranking_report_tab/index.vue
  93. 30 0
      src/views/report/platinum_precious_metal_sales_report/platinum_precious_metal_sales_report_company_tab/index.vue
  94. 30 0
      src/views/report/platinum_precious_metal_sales_report/platinum_precious_metal_sales_report_departmental_tab/index.vue
  95. 30 0
      src/views/report/platinum_salesman_performance_report/platinum_salesman_performance_report_tab/index.vue
  96. 1 1
      src/views/search/search_document_records/search_pre_sale_warehouse_receipt/search_pre_sale_warehouse_receipt_commission_record/index.vue
  97. 1 1
      src/views/search/search_document_records/search_spot_warrant/search_spot_warrant_listing_record/index.vue
  98. 1 1
      src/views/search/search_performance_query/search_performance_query_buy_performance/index.vue

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 281 - 185
src/assets/styles/index.css


+ 11 - 0
src/assets/styles/index.less

@@ -308,4 +308,15 @@ body {
         width: 100%;
         height: 100%;
     }
+}
+
+// 行情涨跌颜色
+.default-quote-color {
+    color: @m-white5;
+}
+.up-quote-color {
+    color: @m-red1;
+}
+.down-quote-color {
+    color: @m-green4;
 }

+ 3 - 3
src/common/components/btnList/index.vue

@@ -11,14 +11,14 @@
 
 <script lang="ts">
 import { defineComponent, PropType } from 'vue';
-import { BtnList } from './interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 
 export default defineComponent({
     props: {
         btnList: {
             // 按钮列表数据
             default: [],
-            type: Array as PropType<BtnList[]>,
+            type: Array as PropType<BtnListType[]>,
         },
         record: {
             default: {},
@@ -26,7 +26,7 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        function onClick(item: BtnList) {
+        function onClick(item: BtnListType) {
             console.log(`${item.lable}:${item.code}`);
             context.emit('click', item, props.record);
         }

+ 2 - 1
src/common/components/btnList/interface.ts

@@ -1,6 +1,7 @@
 export type BtnClassName = 'btnDeafault' | 'btnPrimary' | 'btnDanger' | 'operBtn'
-export interface BtnList {
+export interface BtnListType {
     lable: string;  // 按钮名字
     code: string;   //
+    callback?: Function;
     className: BtnClassName    // 按钮 class 名字
 }

+ 13 - 8
src/common/components/contextMenu/temp.vue

@@ -1,15 +1,20 @@
 <template>
-    <div class="context-menus-container" v-if="contextMenu.show" @click="close">
-        <ul class="context-menu" :style="styleParam">
-            <li v-for="(item, index) in list" :key="index" @click.stop="choose(item)">{{item.lable}}</li>
-        </ul>
-    </div>
+  <div class="context-menus-container"
+       v-if="contextMenu.show"
+       @click="close">
+    <ul class="context-menu"
+        :style="styleParam">
+      <li v-for="(item, index) in list"
+          :key="index"
+          @click.stop="choose(item)">{{item.lable}}</li>
+    </ul>
+  </div>
 </template>
 
 <script lang="ts">
 import { defineComponent, PropType, computed, watch, watchEffect, ref, reactive } from 'vue';
 import { ContextMenuTemp } from './interface';
-import { BtnList } from '../btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 
 export default defineComponent({
     name: 'context-menu',
@@ -23,11 +28,11 @@ export default defineComponent({
         },
         list: {
             default: [],
-            type: Array as PropType<BtnList[]>,
+            type: Array as PropType<BtnListType[]>,
         },
     },
     setup(props, context) {
-        function choose(item: BtnList) {
+        function choose(item: BtnListType) {
             console.log(`${item.lable}:${item.code}`);
             context.emit('cancel', item);
         }

+ 132 - 131
src/common/methods/table/interface.ts

@@ -1,132 +1,133 @@
 
-	interface CustomRender {
-		customRender: string;
-	}
-	// 动态表头类型
-	export interface ColumnType {
-		key: string;
-		dataIndex: string;
-		title: string;
-		width?: number;
-		align: string; //  AlignType 对齐方式 - 1:居中对齐 2:左对齐 3:右对齐
-		filteredValue?: string | null;
-		slots?: CustomRender;
-		onFilter?: Function;
-		sorter?: Function;
-		render?: Function;
-		customRender?: Function;
-	}
-	export interface TableKey {table_pcweb_delivery:string, // 现货合同
-table_pcweb_userinfo:string, // 客户资料
-table_pcweb_warehouse:string, // 仓库信息
-table_pcweb_purchase_pointprice:string, // 采购_待点价
-table_pcweb_purchase_settle:string, // 采购_履约交收
-table_pcweb_purchase_all:string, // 采购_全部
-table_pcweb_sales_pointprice:string, // 销售_待点价
-table_pcweb_sales_settle:string, // 销售_履约交收
-table_pcweb_sales_all:string, // 销售_全部
-table_pcweb_exposure:string, // 实时敞口
-table_pcweb_exposure_spotposition:string, // 敞口--现货头寸
-table_pcweb_exposure_spotposition_detail:string, // 敞口--现货头寸--现货明细
-table_pcweb_exposure_futuresposition:string, // 敞口--期货头寸
-table_pcweb_exposure_futuresposition_detail:string, // 敞口--现货头寸--期货明细
-table_pcweb_report_spot_detail_day:string, // 现货日报表-详情
-table_pcweb_exposure_detail:string, // 实时敞口--现货明细
-table_pcweb_exposure_futures_detail:string, // 实时敞口--期货明细
-table_pcweb_report_spot_detail_month:string, // 现货月报表-详情
-table_pcweb_report_fincial_payment_day:string, // 报表-财务报表-款项-日报表
-table_pcweb_report_fincial_invoice_day:string, // 报表-财务报表-发票-日报表
-table_pcweb_report_fincial_month:string, // 报表-财务报表-月报表
-table_pcweb_business_aduit_dj:string, // 业务审核-点价
-table_pcweb_business_aduit_js:string, // 业务审核-交收
-table_pcweb_fincial_aduit_fp:string, // 业务审核-发票
-table_pcweb_fincial_aduit_kx:string, // 财务审核-款项
-table_pcweb_stock_aduit_in:string, // 库存审核-入库
-table_pcweb_stock_aduit_out:string, // 库存审核-出库
-table_pcweb_manager_warehouse_manager:string, // 库存管理-库存管理
-table_pcweb_manager_warehouse_manager_in:string, // 库存管理-入库明细
-table_pcweb_manager_warehouse_manager_out:string, // 库存管理-出库明细
-table_pcweb_stock_manage_current:string, // 库存管理-当前库存
-table_pcweb_stock_manage_applylog:string, // 库存管理-当前库存
-table_pcweb_hedging_plan:string, // 业务-套保计划
-table_pcweb_current_inventory:string, // 库存查询-当前库存
-table_pcweb_application_record:string, // 库存查询-申请记录
-table_pcweb_someprice_detail_dj:string, // 现货合同详情-点价记录
-table_pcweb_someprice_detail_js:string, // 现货合同详情-交收记录
-table_pcweb_someprice_detail_kx:string, // 现货合同详情-款项记录
-table_pcweb_someprice_detail_fp:string, // 现货合同详情-发票记录
-table_pcweb_someprice_detail_stock:string, // 现货合同详情-入库记录
-table_pcweb_someprice_detail_stock_out:string, // 现货合同详情-出库记录
-table_pcweb_someprice_detail_change:string, // 现货合同详情-变更记录
-table_pcweb_exposure_report:string, // 报表-敞口报表
-table_pcweb_futures_report:string, // 报表-期货报表
-table_pcweb_spot_report:string, // 报表-现货报表
-table_pcweb_finance_report:string, // 报表-财务报表
-table_pcweb_warehouse_category_report:string, // 报表-库存报表
-table_pcweb_warehouse_report:string, // 报表-库存报表
-table_pcweb_aggregate_profit_and_loss:string, // 报表-汇总损益报表
-table_pcweb_change_in_spot_contract:string, // 报表-敞口报表-现货合同变动量明细
-table_pcweb_change_in_hedging_plan:string, // 报表-敞口报表-套保计划变动量明细
-table_pcweb_change_in_future:string, // 报表-敞口报表-期货变动量明细
-table_pcweb_change_in_parameter_adjustment:string, // 报表-敞口报表-参数调整变动量明细
-table_pcweb_spot_report_details:string, // 报表-现货报表-现货明细
-table_pcweb_financial_statement_category_breakdown:string, // 报表-财务报表-品类明细
-table_pcweb_financial_statement_brand_details:string, // 报表-财务报表-品类明细
-table_pcweb_futures_statement_account_details:string, // 报表-期货报表-账户明细
-table_pcweb_inventory_commodity_report_brand_details:string, // 报表-库存(商品)报表-品牌明细
-table_pcweb_inventory_commodity_report_warehouse_details:string, // 报表-库存(商品)报表-仓库明细
-table_pcweb_inventory_warehouse_report_warehouse_details:string, // 报表-库存(仓库)报表-仓库明细
-table_pcweb_inventory_summary_profit_and_loss_details:string, // 报表-汇总损益报表-损益明细
-table_pcweb_qhj_recharge_review:string, // 铂金宝-充值提现审核-充值审核
-table_pcweb_qhj_withdrawal_review:string, // 铂金宝-充值提现审核-提现审核
-table_pcweb_qhj_pickup_query:string, // 铂金宝-提货查询
-table_pcweb_qhj_fixed_investment_price_query:string, // 铂金宝-定投价查询
-table_pcweb_qhj_fixed_investment_plan_query:string, // 铂金宝-定投查询-定投计划查询
-table_pcweb_qhj_fixed_investment_flow_query:string, // 铂金宝-定投查询-定投流水查询
-table_pcweb_qhj_fixed_financing_information:string, // 铂金宝-融资信息
-table_pcweb_qhj_customer_info:string, // 铂金宝-客户资料
-table_pcweb_qhj_holder_order:string, // 铂金宝-单据查询-持仓单
-table_pcweb_qhj_order:string, // 铂金宝-单据查询-委托单
-table_pcweb_qhj_pay_bill:string, // 铂金宝-单据查询-待付单
-table_pcweb_qhj_deal_order:string, // 铂金宝-单据查询-成交单
-table_pcweb_spot_and_price:string, // 铂金宝-现货市价
-table_pcweb_agreement:string, // 铂金宝-协议管理
-table_pcweb_spot_trade_warehouse_price:string, // 现货贸易-仓单贸易-一口价
-table_pcweb_spot_trade_warehouse_float:string, // 现货贸易-仓单贸易
-table_pcweb_spot_trade_warehouse_sale_price:string, // 现货贸易-仓单预售
-table_pcweb_spot_trade_warehouse_sale_float:string, // 现货贸易-仓单预售
-table_pcweb_spot_trade_warehouse_price_trading_hall_sale:string, // 现货贸易-仓单贸易-买卖大厅
-table_pcweb_spot_trade_warehouse_price_trading_hall_buy:string, // 现货贸易-仓单贸易-买卖大厅
-table_pcweb_spot_trade_warehouse_float_trading_hall_sale:string, // 现货贸易-仓单贸易-买卖大厅
-table_pcweb_spot_trade_warehouse_float_trading_hall_buy:string, // 现货贸易-仓单贸易-买卖大厅
-table_pcweb_spot_trade_warehouse_presale_price_trading_hall_sale:string, // 现货贸易-仓单预售-买卖大厅
-table_pcweb_spot_trade_warehouse_presale_price_trading_hall_buy:string, // 现货贸易-仓单预售-买卖大厅
-table_pcweb_spot_trade_warehouse_presale_float_trading_hall_sale:string, // 现货贸易-仓单预售-买卖大厅
-table_pcweb_spot_trade_warehouse_presale_float_trading_hall_buy:string, // 现货贸易-仓单预售-买卖大厅
-table_pcweb_spot_trade_bottom_spot_warrant_spot_summary:string, // 底部栏-现货仓单
-table_pcweb_spot_trade_bottom_spot_warrant_inventory_summary:string, // 底部栏-现货仓单
-table_pcweb_spot_trade_bottom_spot_warrant_spot_detail:string, // 底部栏-现货仓单
-table_pcweb_spot_trade_bottom_spot_warrant_pending_order:string, // 底部栏-现货仓单
-table_pcweb_spot_trade_bottom_spot_warrant_deal:string, // 底部栏-现货仓单
-table_pcweb_spot_trade_bottom_spot_warrant_designated_deal:string, // 底部栏-现货仓单
-table_pcweb_spot_trade_bottom_spot_warrant_pick_up:string, // 底部栏-现货仓单
-table_pcweb_spot_trade_bottom_pre_sale_order_summary:string, // 底部栏-预售仓单
-table_pcweb_spot_trade_bottom_pre_sale_pending_order:string, // 底部栏-预售仓单
-table_pcweb_spot_trade_bottom_pre_sale_make_deal:string, // 底部栏-预售仓单
-table_pcweb_spot_trade_bottom_commodity_contract_summary:string, // 底部栏-商品合约
-table_pcweb_spot_trade_bottom_commodity_contract_commission:string, // 底部栏-商品合约
-table_pcweb_spot_trade_bottom_commodity_contract_make_deal:string, // 底部栏-商品合约
-table_pcweb_spot_trade_bottom_commodity_contract_settlement:string, // 底部栏-商品合约
-table_pcweb_spot_trade_bottom_performance_info_buy:string, // 底部栏-履约信息
-table_pcweb_spot_trade_bottom_performance_info_sale:string, // 底部栏-履约信息
-table_pcweb_spot_trade_bottom_funding_info_summary:string, // 底部栏-资金信息
-table_pcweb_spot_trade_bottom_funding_info_log:string, // 底部栏-资金信息
-table_pcweb_financing_manage_bottom_apply_order:string, // 底部栏-融资管理
-table_pcweb_financing_manage_bottom_contract:string, // 底部栏-融资管理
-table_pcweb_financing_manage_bottom_commodity_order_summary:string, // 底部栏-商品订单
-table_pcweb_financing_manage_bottom_commodity_order_entrust:string, // 底部栏-商品订单
-table_pcweb_financing_manage_bottom_commodity_order_deal:string, // 底部栏-商品订单
-table_pcweb_financing_manage_bottom_commodity_order_settlement:string, // 底部栏-商品订单
-table_pcweb_financing_manage_order_transaction:string, // 现货贸易-订单交易
-table_pcweb_financing_manage_reference_market:string, // 现货贸易-参考行情 
- }
+interface CustomRender {
+	customRender: string;
+}
+// 动态表头类型
+export interface ColumnType {
+	key: string;
+	dataIndex?: string;
+	title: string;
+	width?: number;
+	align?: string; //  AlignType 对齐方式 - 1:居中对齐 2:左对齐 3:右对齐
+	filteredValue?: string | null;
+	slots?: CustomRender;
+	onFilter?: Function;
+	sorter?: Function;
+	render?: Function;
+	customRender?: Function;
+}
+export interface TableKey {
+	table_pcweb_delivery: string, // 现货合同
+	table_pcweb_userinfo: string, // 客户资料
+	table_pcweb_warehouse: string, // 仓库信息
+	table_pcweb_purchase_pointprice: string, // 采购_待点价
+	table_pcweb_purchase_settle: string, // 采购_履约交收
+	table_pcweb_purchase_all: string, // 采购_全部
+	table_pcweb_sales_pointprice: string, // 销售_待点价
+	table_pcweb_sales_settle: string, // 销售_履约交收
+	table_pcweb_sales_all: string, // 销售_全部
+	table_pcweb_exposure: string, // 实时敞口
+	table_pcweb_exposure_spotposition: string, // 敞口--现货头寸
+	table_pcweb_exposure_spotposition_detail: string, // 敞口--现货头寸--现货明细
+	table_pcweb_exposure_futuresposition: string, // 敞口--期货头寸
+	table_pcweb_exposure_futuresposition_detail: string, // 敞口--现货头寸--期货明细
+	table_pcweb_report_spot_detail_day: string, // 现货日报表-详情
+	table_pcweb_exposure_detail: string, // 实时敞口--现货明细
+	table_pcweb_exposure_futures_detail: string, // 实时敞口--期货明细
+	table_pcweb_report_spot_detail_month: string, // 现货月报表-详情
+	table_pcweb_report_fincial_payment_day: string, // 报表-财务报表-款项-日报表
+	table_pcweb_report_fincial_invoice_day: string, // 报表-财务报表-发票-日报表
+	table_pcweb_report_fincial_month: string, // 报表-财务报表-月报表
+	table_pcweb_business_aduit_dj: string, // 业务审核-点价
+	table_pcweb_business_aduit_js: string, // 业务审核-交收
+	table_pcweb_fincial_aduit_fp: string, // 业务审核-发票
+	table_pcweb_fincial_aduit_kx: string, // 财务审核-款项
+	table_pcweb_stock_aduit_in: string, // 库存审核-入库
+	table_pcweb_stock_aduit_out: string, // 库存审核-出库
+	table_pcweb_manager_warehouse_manager: string, // 库存管理-库存管理
+	table_pcweb_manager_warehouse_manager_in: string, // 库存管理-入库明细
+	table_pcweb_manager_warehouse_manager_out: string, // 库存管理-出库明细
+	table_pcweb_stock_manage_current: string, // 库存管理-当前库存
+	table_pcweb_stock_manage_applylog: string, // 库存管理-当前库存
+	table_pcweb_hedging_plan: string, // 业务-套保计划
+	table_pcweb_current_inventory: string, // 库存查询-当前库存
+	table_pcweb_application_record: string, // 库存查询-申请记录
+	table_pcweb_someprice_detail_dj: string, // 现货合同详情-点价记录
+	table_pcweb_someprice_detail_js: string, // 现货合同详情-交收记录
+	table_pcweb_someprice_detail_kx: string, // 现货合同详情-款项记录
+	table_pcweb_someprice_detail_fp: string, // 现货合同详情-发票记录
+	table_pcweb_someprice_detail_stock: string, // 现货合同详情-入库记录
+	table_pcweb_someprice_detail_stock_out: string, // 现货合同详情-出库记录
+	table_pcweb_someprice_detail_change: string, // 现货合同详情-变更记录
+	table_pcweb_exposure_report: string, // 报表-敞口报表
+	table_pcweb_futures_report: string, // 报表-期货报表
+	table_pcweb_spot_report: string, // 报表-现货报表
+	table_pcweb_finance_report: string, // 报表-财务报表
+	table_pcweb_warehouse_category_report: string, // 报表-库存报表
+	table_pcweb_warehouse_report: string, // 报表-库存报表
+	table_pcweb_aggregate_profit_and_loss: string, // 报表-汇总损益报表
+	table_pcweb_change_in_spot_contract: string, // 报表-敞口报表-现货合同变动量明细
+	table_pcweb_change_in_hedging_plan: string, // 报表-敞口报表-套保计划变动量明细
+	table_pcweb_change_in_future: string, // 报表-敞口报表-期货变动量明细
+	table_pcweb_change_in_parameter_adjustment: string, // 报表-敞口报表-参数调整变动量明细
+	table_pcweb_spot_report_details: string, // 报表-现货报表-现货明细
+	table_pcweb_financial_statement_category_breakdown: string, // 报表-财务报表-品类明细
+	table_pcweb_financial_statement_brand_details: string, // 报表-财务报表-品类明细
+	table_pcweb_futures_statement_account_details: string, // 报表-期货报表-账户明细
+	table_pcweb_inventory_commodity_report_brand_details: string, // 报表-库存(商品)报表-品牌明细
+	table_pcweb_inventory_commodity_report_warehouse_details: string, // 报表-库存(商品)报表-仓库明细
+	table_pcweb_inventory_warehouse_report_warehouse_details: string, // 报表-库存(仓库)报表-仓库明细
+	table_pcweb_inventory_summary_profit_and_loss_details: string, // 报表-汇总损益报表-损益明细
+	table_pcweb_qhj_recharge_review: string, // 铂金宝-充值提现审核-充值审核
+	table_pcweb_qhj_withdrawal_review: string, // 铂金宝-充值提现审核-提现审核
+	table_pcweb_qhj_pickup_query: string, // 铂金宝-提货查询
+	table_pcweb_qhj_fixed_investment_price_query: string, // 铂金宝-定投价查询
+	table_pcweb_qhj_fixed_investment_plan_query: string, // 铂金宝-定投查询-定投计划查询
+	table_pcweb_qhj_fixed_investment_flow_query: string, // 铂金宝-定投查询-定投流水查询
+	table_pcweb_qhj_fixed_financing_information: string, // 铂金宝-融资信息
+	table_pcweb_qhj_customer_info: string, // 铂金宝-客户资料
+	table_pcweb_qhj_holder_order: string, // 铂金宝-单据查询-持仓单
+	table_pcweb_qhj_order: string, // 铂金宝-单据查询-委托单
+	table_pcweb_qhj_pay_bill: string, // 铂金宝-单据查询-待付单
+	table_pcweb_qhj_deal_order: string, // 铂金宝-单据查询-成交单
+	table_pcweb_spot_and_price: string, // 铂金宝-现货市价
+	table_pcweb_agreement: string, // 铂金宝-协议管理
+	table_pcweb_spot_trade_warehouse_price: string, // 现货贸易-仓单贸易-一口价
+	table_pcweb_spot_trade_warehouse_float: string, // 现货贸易-仓单贸易
+	table_pcweb_spot_trade_warehouse_sale_price: string, // 现货贸易-仓单预售
+	table_pcweb_spot_trade_warehouse_sale_float: string, // 现货贸易-仓单预售
+	table_pcweb_spot_trade_warehouse_price_trading_hall_sale: string, // 现货贸易-仓单贸易-买卖大厅
+	table_pcweb_spot_trade_warehouse_price_trading_hall_buy: string, // 现货贸易-仓单贸易-买卖大厅
+	table_pcweb_spot_trade_warehouse_float_trading_hall_sale: string, // 现货贸易-仓单贸易-买卖大厅
+	table_pcweb_spot_trade_warehouse_float_trading_hall_buy: string, // 现货贸易-仓单贸易-买卖大厅
+	table_pcweb_spot_trade_warehouse_presale_price_trading_hall_sale: string, // 现货贸易-仓单预售-买卖大厅
+	table_pcweb_spot_trade_warehouse_presale_price_trading_hall_buy: string, // 现货贸易-仓单预售-买卖大厅
+	table_pcweb_spot_trade_warehouse_presale_float_trading_hall_sale: string, // 现货贸易-仓单预售-买卖大厅
+	table_pcweb_spot_trade_warehouse_presale_float_trading_hall_buy: string, // 现货贸易-仓单预售-买卖大厅
+	table_pcweb_spot_trade_bottom_spot_warrant_spot_summary: string, // 底部栏-现货仓单
+	table_pcweb_spot_trade_bottom_spot_warrant_inventory_summary: string, // 底部栏-现货仓单
+	table_pcweb_spot_trade_bottom_spot_warrant_spot_detail: string, // 底部栏-现货仓单
+	table_pcweb_spot_trade_bottom_spot_warrant_pending_order: string, // 底部栏-现货仓单
+	table_pcweb_spot_trade_bottom_spot_warrant_deal: string, // 底部栏-现货仓单
+	table_pcweb_spot_trade_bottom_spot_warrant_designated_deal: string, // 底部栏-现货仓单
+	table_pcweb_spot_trade_bottom_spot_warrant_pick_up: string, // 底部栏-现货仓单
+	table_pcweb_spot_trade_bottom_pre_sale_order_summary: string, // 底部栏-预售仓单
+	table_pcweb_spot_trade_bottom_pre_sale_pending_order: string, // 底部栏-预售仓单
+	table_pcweb_spot_trade_bottom_pre_sale_make_deal: string, // 底部栏-预售仓单
+	table_pcweb_spot_trade_bottom_commodity_contract_summary: string, // 底部栏-商品合约
+	table_pcweb_spot_trade_bottom_commodity_contract_commission: string, // 底部栏-商品合约
+	table_pcweb_spot_trade_bottom_commodity_contract_make_deal: string, // 底部栏-商品合约
+	table_pcweb_spot_trade_bottom_commodity_contract_settlement: string, // 底部栏-商品合约
+	table_pcweb_spot_trade_bottom_performance_info_buy: string, // 底部栏-履约信息
+	table_pcweb_spot_trade_bottom_performance_info_sale: string, // 底部栏-履约信息
+	table_pcweb_spot_trade_bottom_funding_info_summary: string, // 底部栏-资金信息
+	table_pcweb_spot_trade_bottom_funding_info_log: string, // 底部栏-资金信息
+	table_pcweb_financing_manage_bottom_apply_order: string, // 底部栏-融资管理
+	table_pcweb_financing_manage_bottom_contract: string, // 底部栏-融资管理
+	table_pcweb_financing_manage_bottom_commodity_order_summary: string, // 底部栏-商品订单
+	table_pcweb_financing_manage_bottom_commodity_order_entrust: string, // 底部栏-商品订单
+	table_pcweb_financing_manage_bottom_commodity_order_deal: string, // 底部栏-商品订单
+	table_pcweb_financing_manage_bottom_commodity_order_settlement: string, // 底部栏-商品订单
+	table_pcweb_financing_manage_order_transaction: string, // 现货贸易-订单交易
+	table_pcweb_financing_manage_reference_market: string, // 现货贸易-参考行情
+}

+ 2 - 2
src/common/setup/asyncComponent/index.ts

@@ -1,4 +1,4 @@
-import { BtnList as btnType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { Ref, ref } from "vue";
 
 // 控制异步组件的关闭功能
@@ -19,7 +19,7 @@ export function handleModalComponent<T>(callback: Function, selectedRow: Ref<T>)
      * @param item
      * @param record
      */
-    function openComponent(item: btnType, record: T) {
+    function openComponent(item: BtnListType, record: T) {
         console.log('打开组件: ', item.code)
         // 更新点击的数据,处理例如,修改之后,再次打开页面是之前的数据的问题
         if (record && selectedRow) {

+ 35 - 0
src/common/setup/iframe/index.ts

@@ -0,0 +1,35 @@
+import { initData } from "@/common/methods";
+import { getThirdMenuData } from '@/common/setup/table/button';
+import { getToken } from "@/services/bus/token";
+import { serviceURL } from "@/services/request";
+import { ref } from "vue";
+import { IfameRouteParam } from "./interface";
+
+
+
+export function handleIfameRouter({ code, btnCodeList, tabIndex }: IfameRouteParam) {
+    const token = getToken();
+    const url = ref<string>('');
+    // 获取当前tab页数据
+    const list = getThirdMenuData();
+    initData(() => {
+        let resourcePCMenu = 'resourcepcmenu=';
+        // const children = list[0].children;
+        // console.log('获取当前tab页数据', children)
+        const tabData = list.find((e) => e.code === code);
+        if (tabData) {
+            const fn = (code: string) => tabData.children.find((e) => e.code === code);
+            //  权限按钮
+            btnCodeList.forEach(el => {
+                const { btnCode, urlCode } = el
+                if (btnCode === 'info') {
+                    resourcePCMenu += `:${urlCode}`;
+                } else if (fn(btnCode)) {
+                    resourcePCMenu += `:${urlCode}`;
+                }
+            });
+        }
+        url.value = `${serviceURL.pcMangerUrl}${list[0].url}?token=${token}&tabindex=${tabIndex}&${resourcePCMenu}`;
+    });
+    return { url };
+}

+ 8 - 0
src/common/setup/iframe/interface.ts

@@ -0,0 +1,8 @@
+export interface IfameRouteParam {
+    code: string; // 当前页面对应的code
+    btnCodeList: {
+        btnCode: string, // 按钮code
+        urlCode: string  // 管理端 权限对应的code
+    }[],
+    tabIndex: number; // 当前tab的索引,例如 1, 2, 3
+}

+ 12 - 12
src/common/setup/table/button.ts

@@ -1,11 +1,11 @@
-import { BtnList as btnType } from '@/common/components/btnList/interface';
+import { BtnClassName, BtnListType } from '@/common/components/btnList/interface';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
 import { ModalName } from '@/common/constants/modalName';
 import { OperationTabMenu } from '@/services/go/commonService/interface';
 import { sessionStorageUtil } from "@/utils/storage";
 import { inject, ref, Ref, toRaw, unref } from 'vue';
 import { openModal } from "../modal";
-import { BtnClassName, BtnList, ButtonListKey } from './interface';
+import { ButtonListKey } from './interface';
 
 /**
  * 获取class 名
@@ -44,14 +44,14 @@ export function getThirdMenuData(): OperationTabMenu[] {
 }
 // 旧的获取配置按钮逻辑,
 export function handleBtnList(list: OperationTabMenu | undefined, menuType: keyof ButtonListKey, hasDetail: boolean, commonName: string[] = ['新增']) {
-    const commonBtn = ref<BtnList[]>([]); // 通用按钮列表,不用选中数据才显示
-    const forDataBtn = ref<BtnList[]>([]); // 针对数据按钮列表,选中某条数据才显示
+    const commonBtn = ref<BtnListType[]>([]); // 通用按钮列表,不用选中数据才显示
+    const forDataBtn = ref<BtnListType[]>([]); // 针对数据按钮列表,选中某条数据才显示
     if (list && list.children) {
         list.children.forEach(e => {
             const { code, type, title, isshow } = e;
             if (type === 2 && isshow) { // 按钮类型
                 const { openAction } = openModal(code as keyof ModalName);
-                const item = { lable: title, callback: openAction, className: getClassName(code) }
+                const item = { lable: title, callback: openAction, className: getClassName(code), code: code }
                 if (commonName.includes(title)) { //
                     commonBtn.value.push(item)
                 } else {
@@ -65,14 +65,14 @@ export function handleBtnList(list: OperationTabMenu | undefined, menuType: keyo
     // 详情
     if (hasDetail) {
         const { openAction } = openModal('detail')
-        forDataBtn.value.push({ lable: '详情', callback: openAction, className: getClassName('') })
+        forDataBtn.value.push({ lable: '详情', callback: openAction, className: getClassName(''), code: 'detail' })
     }
     return { commonBtn, forDataBtn }
 }
 
 // 新的获取按钮逻辑,有时间把旧的都替换掉
 export function _handleBtnList_(list: OperationTabMenu | undefined, hasDetail: boolean,) {
-    const result = ref<btnType[][]>([])
+    const result = ref<BtnListType[][]>([])
     const temp: [number, OperationTabMenu[] | undefined] = [0, list?.children]
     while (temp[1] && temp[1].length) {
         temp[1].forEach((e) => {
@@ -117,7 +117,7 @@ export function _handleBtnList_(list: OperationTabMenu | undefined, hasDetail: b
 }
 
 export function _handleBtnList(list: OperationTabMenu | undefined, hasDetail: boolean,) {
-    const result = ref<BtnList[][]>([])
+    const result = ref<BtnListType[][]>([])
     const temp: [number, OperationTabMenu[] | undefined] = [0, list?.children]
     while (temp[1] && temp[1].length) {
         temp[1].forEach((e) => {
@@ -128,7 +128,7 @@ export function _handleBtnList(list: OperationTabMenu | undefined, hasDetail: bo
             }
             if (type === 2 && isshow) { // 按钮类型 并且显示
                 const { openAction } = openModal(code as keyof ModalName);
-                const item = { lable: title, callback: openAction, className: getClassName(code) }
+                const item = { lable: title, callback: openAction, className: getClassName(code), code: code }
                 result.value[index].push(item)
             }
         })
@@ -143,7 +143,7 @@ export function _handleBtnList(list: OperationTabMenu | undefined, hasDetail: bo
     // 详情
     if (hasDetail) {
         const { openAction } = openModal('detail')
-        const item = { lable: '详情', callback: openAction, className: getClassName('') }
+        const item = { lable: '详情', callback: openAction, className: getClassName(''), code: 'detail' }
         const len = result.value.length;
         if (len) {
             result.value[len - 1].push(item)
@@ -158,7 +158,7 @@ export function _handleBtnList(list: OperationTabMenu | undefined, hasDetail: bo
 
 // 获取单据按钮列表
 export function getOrderBtnList(list: OperationTabMenu[], hasDetail = false) {
-    const result = ref<btnType[]>([])
+    const result = ref<BtnListType[]>([])
     list.forEach(el => {
         const { code, type, title, isshow } = el;
         if (type === 2 && isshow) {
@@ -187,7 +187,7 @@ export function getBtnList(menuType: keyof ButtonListKey, hasDetail: boolean, co
     return handleBtnList(list, menuType, hasDetail, commonName)
 }
 
-export function _getBtnList(menuType: keyof ButtonListKey, hasDetail: boolean): Ref<BtnList[][]> {
+export function _getBtnList(menuType: keyof ButtonListKey, hasDetail: boolean): Ref<BtnListType[][]> {
     const data = getThirdMenuData()
     const list = data.find((e) => e.code === menuType);
     return _handleBtnList(list, hasDetail)

+ 48 - 1
src/common/setup/table/clolumn.ts

@@ -87,7 +87,7 @@ export function getTableColumns() {
         console.log('过滤参数', value);
 
         filteredInfo.value = value
-        registerColumn(cacheTableKey, cacheFilterKeyList, cacheColumnCB)
+        registerColumn(cacheTableKey, cacheFilterKeyList)
     }
     return { columns, registerColumn, updateColumn }
 }
@@ -142,3 +142,50 @@ function getFromatterFn(val: string) {
 export function expandIcon(props: any) {
     return null
 }
+
+export function handleTableColums(columnsParam: ColumnType[], filterKeyList: string[] = []) {
+    // 表头数据
+    const columns = ref<ColumnType[]>([]);
+    // 过滤信息
+    const filteredInfo = ref();
+    function registerColumn() {
+        const filtered = filteredInfo.value || {};
+        columns.value.length = 0
+        columnsParam.forEach((item, index) => {
+            const { key, title, width, align, } = item;
+            const obj: ColumnType = { key, title, dataIndex: key, slots: { customRender: key } }
+            // 过滤
+            if (filterKeyList.includes(key)) {
+                obj.onFilter = (value: string, record: any) => record[key].toString().includes(String(value))
+                obj.filteredValue = filtered[key] || null;
+            }
+            // 宽度
+            if (width) {
+                obj.width = width
+            } else {
+                if (title.includes('时间') || title.includes('编号')) {
+                    obj.width = 200
+                } else {
+                    const len = title.length
+                    if (len > 4) {
+                        obj.width = 120 + 10 * (len - 4)
+                    } else {
+                        obj.width = 120 // 默认120
+                    }
+                }
+            }
+            align ? (obj.align = align) : (obj.align = 'center')
+            columns.value.push(obj)
+        })
+        console.log('columns', columns)
+    }
+    registerColumn()
+    /**
+     * 更新动态表头
+     */
+    function updateColumn(value: object) {
+        filteredInfo.value = value
+        registerColumn()
+    }
+    return { columns, updateColumn }
+}

+ 64 - 4
src/common/setup/table/compose.ts

@@ -1,4 +1,4 @@
-import { BtnList } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { ContextMenuTemp } from "@/common/components/contextMenu/interface";
 import { handleContextMenu } from "@/common/components/contextMenu/setup";
 import { TabList } from '@/common/components/description/interface';
@@ -6,8 +6,9 @@ import { getTableColumns, getTableEvent, initData } from "@/common/export/table"
 import { handleModalComponent } from '@/common/setup/asyncComponent';
 import { onUnmounted, ref, Ref } from "vue";
 import { getBtnList_, getOrderBtnList, getThirdMenuData } from "./button";
+import { handleTableColums } from './clolumn';
 import { handleTableDrawer } from "./drawer";
-import { ComposeOrderTableParam, ComposeTableDetailParam, ComposeTableParam, TableEventCB } from "./interface";
+import { ComposeOrderTableParam, ComposeTableDetailParam, ComposeTableParam, TableEventCB, TableParam } from "./interface";
 
 export type { ComposeTableParam, ComposeTableDetailParam };
 
@@ -31,7 +32,7 @@ export function handleComposeTable<T>({ queryFn, menuType, isDetail, tableName,
     // 控制异步组件
     const { componentId, closeComponent, openComponent } = handleModalComponent(queryFn, selectedRow);
     // 关闭右键
-    function closeContext(value: BtnList | null) {
+    function closeContext(value: BtnListType | null) {
         // 打开对应的弹窗组件
         if (value) openComponent(value, selectedRow.value)
         // 关闭右键
@@ -131,7 +132,7 @@ export function handleComposeOrderTable<T>({ queryFn, recordList, isDetail, tabl
     // 控制异步组件
     const { componentId, closeComponent, openComponent } = handleModalComponent(queryFn, selectedRow);
     // 关闭右键
-    function closeContext(value: BtnList | null) {
+    function closeContext(value: BtnListType | null) {
         // 打开对应的弹窗组件
         if (value) openComponent(value, selectedRow.value)
         // 关闭右键
@@ -153,4 +154,63 @@ export function handleComposeOrderTable<T>({ queryFn, recordList, isDetail, tabl
         componentId, closeComponent, openComponent,  // 控制异步组件
         btnList, // 表格按钮
     }
+}
+
+
+export function handleTableEventAndData<T>({ queryFn, columnsList, clickName }: TableParam) {
+    // 右键逻辑
+    const { contextMenu, openContext, closeContext: closeContextAction } = handleContextMenu();
+    // 表头
+    const { columns, updateColumn } = handleTableColums(columnsList);
+    // 控制异步组件
+    const componentId = ref<string>('');
+    // 关闭组件
+    function closeComponent(isRefresh: boolean) {
+        componentId.value = '';
+        if (isRefresh) {
+            queryFn()
+        }
+    }
+    /**
+ * 打开组件
+ * @param item
+ * @param record
+ */
+    function openComponent(item: BtnListType, record: T) {
+        console.log('打开组件: ', item.code)
+        // 更新点击的数据,处理例如,修改之后,再次打开页面是之前的数据的问题
+        if (record && selectedRow) {
+            selectedRow.value = record
+        }
+        componentId.value = item.code;
+    }
+    // 右键回调函数
+    const eventsCB: TableEventCB = {
+        contextmenuCB: (record: T, value: ContextMenuTemp) => {
+            // 控制打开右键
+            contextMenu.value = value
+        },
+        clickCB: (record: T) => {
+            clickName && (componentId.value = clickName)
+        }
+    }
+    initData(() => {
+        // 获取列表数据
+        queryFn();
+    })
+    // 表格事件
+    const { expandedRowKeys, selectedRow, Rowclick } = getTableEvent<T>(eventsCB);
+    // 关闭右键
+    function closeContext(value: BtnListType | null) {
+        // 打开对应的弹窗组件
+        if (value) componentId.value = value.code;
+        // 关闭右键
+        closeContextAction()
+    }
+    return {
+        contextMenu, openContext, closeContext, // 右键
+        columns, updateColumn,  // 表头
+        expandedRowKeys, selectedRow, Rowclick, // 表格折腾面板数据与单击、双击事件
+        componentId, closeComponent, openComponent,  // 控制异步组件
+    }
 }

+ 1 - 1
src/common/setup/table/event.ts

@@ -7,7 +7,7 @@ import { TableEventCB } from './interface';
  * @param param TableEventCB
  * @returns
  */
-export function getTableEvent<T>(param: TableEventCB) {
+export function getTableEvent<T>(param: TableEventCB = {}) {
     // 表格展开行
     const expandedRowKeys = ref<string[]>([]);
     // 表格选中的数据

+ 8 - 1
src/common/setup/table/interface.ts

@@ -1,5 +1,5 @@
 import { EnumRouterName } from "@/common/constants/enumRouterName";
-import { TableKey } from "@/common/methods/table/interface";
+import { ColumnType, TableKey } from "@/common/methods/table/interface";
 import { OperationTabMenu } from "@/services/go/commonService/interface";
 
 export interface TableEventCB {
@@ -37,6 +37,13 @@ export interface ComposeTableDetailParam {
     menuType: EnumRouterName
 }
 
+export interface TableParam {
+    queryFn: Function,
+    columnsList: ColumnType[],
+    clickName?: string,
+}
+
+
 export interface ComposeOrderTableParam {
     queryFn: Function,  // 查询表格数据
     recordList: OperationTabMenu[], // 当前tab页配置数据

+ 16 - 0
src/common/setup/table/tableQuote.ts

@@ -85,4 +85,20 @@ export function handleSubcriteQuote<T extends object>(tableList: Ref<T[]>, codeK
         console.log('开始订阅', result)
         addSubscribeQuotation(uuid, result);
     }
+}
+
+/**
+ * 处理行情价格颜色
+ * @param price1
+ * @param price2
+ * @returns
+ */
+export function handleQuotePriceColor(price1: number, price2: number) {
+    if (price1 === price2) {
+        return 'default-quote-color'
+    } else if (price1 > price2) {
+        return 'up-quote-color'
+    } else {
+        return 'down-quote-color'
+    }
 }

+ 366 - 0
src/router/index.ts

@@ -899,6 +899,372 @@ const routes: Array<RouteRecordRaw> = [
                 ]
             },
             {
+                path: '/platinum_signing_settings',
+                name: 'platinum_signing_settings',
+                component: Main,
+                meta: {
+                    requireAuth: true,
+                },
+                redirect: { name: 'platinum_signing_settings_tab' },
+                children: [
+                    {
+                        path: '/platinum_signing_settings/platinum_signing_settings_tab',
+                        name: 'platinum_signing_settings_tab',
+                        component: () => import('@/views/platinum/platinum_signing_settings/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                ]
+            },
+            {
+                path: '/platinum_team_settings',
+                name: 'platinum_team_settings',
+                component: Main,
+                meta: {
+                    requireAuth: true,
+                },
+                redirect: { name: 'platinum_team_settings_tab' },
+                children: [
+                    {
+                        path: '/platinum_team_settings/platinum_team_settings_tab',
+                        name: 'platinum_team_settings_tab',
+                        component: () => import('@/views/platinum/platinum_team_settings/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                ]
+            },
+            {
+                path: '/platinum_account_manager',
+                name: 'platinum_account_manager',
+                component: Main,
+                meta: {
+                    requireAuth: true,
+                },
+                redirect: { name: 'platinum_account_manager_tab' },
+                children: [
+                    {
+                        path: '/platinum_account_manager/platinum_account_manager_tab',
+                        name: 'platinum_account_manager_tab',
+                        component: () => import('@/views/platinum/platinum_account_manager/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                ]
+            },
+            {
+                path: '/platinum_salesman_performance_report',
+                name: 'platinum_salesman_performance_report',
+                component: Main,
+                meta: {
+                    requireAuth: true,
+                },
+                redirect: { name: 'platinum_salesman_performance_report_tab' },
+                children: [
+                    {
+                        path: '/platinum_salesman_performance_report/platinum_salesman_performance_report_tab',
+                        name: 'platinum_salesman_performance_report_tab',
+                        component: () => import('@/views/report/platinum_salesman_performance_report/platinum_salesman_performance_report_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                ]
+            },
+            {
+                path: '/platinum_customer_service_report',
+                name: 'platinum_customer_service_report',
+                component: Main,
+                meta: {
+                    requireAuth: true,
+                },
+                redirect: { name: 'platinum_customer_service_report_reach_rate_report_tab' },
+                children: [
+                    {
+                        path: '/platinum_customer_service_report/platinum_customer_service_report_reach_rate_report_tab',
+                        name: 'platinum_customer_service_report_reach_rate_report_tab',
+                        component: () => import('@/views/report/platinum_customer_service_report/platinum_customer_service_report_reach_rate_report_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_customer_service_report/platinum_customer_service_report_team_annualized_performance_ranking_report_tab',
+                        name: 'platinum_customer_service_report_team_annualized_performance_ranking_report_tab',
+                        component: () => import('@/views/report/platinum_customer_service_report/platinum_customer_service_report_team_annualized_performance_ranking_report_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_customer_service_report/platinum_customer_service_report_personal_annualized_performance_ranking_report_tab',
+                        name: 'platinum_customer_service_report_personal_annualized_performance_ranking_report_tab',
+                        component: () => import('@/views/report/platinum_customer_service_report/platinum_customer_service_report_personal_annualized_performance_ranking_report_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_customer_service_report/platinum_customer_service_report_team_manager_annual_performance_ranking_report_tab',
+                        name: 'platinum_customer_service_report_team_manager_annual_performance_ranking_report_tab',
+                        component: () => import('@/views/report/platinum_customer_service_report/platinum_customer_service_report_team_manager_annual_performance_ranking_report_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                ]
+            },
+            {
+                path: '/platinum_asset_management_sale_report',
+                name: 'platinum_asset_management_sale_report',
+                component: Main,
+                meta: {
+                    requireAuth: true,
+                },
+                redirect: { name: 'platinum_asset_management_sale_report_company_day_tab' },
+                children: [
+                    {
+                        path: '/platinum_asset_management_sale_report/platinum_asset_management_sale_report_company_day_tab',
+                        name: 'platinum_asset_management_sale_report_company_day_tab',
+                        component: () => import('@/views/report/platinum_asset_management_sale_report/platinum_asset_management_sale_report_company_day_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_asset_management_sale_report/platinum_asset_management_sale_report_company_week_tab',
+                        name: 'platinum_asset_management_sale_report_company_week_tab',
+                        component: () => import('@/views/report/platinum_asset_management_sale_report/platinum_asset_management_sale_report_company_week_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_asset_management_sale_report/platinum_asset_management_sale_report_company_month_tab',
+                        name: 'platinum_asset_management_sale_report_company_month_tab',
+                        component: () => import('@/views/report/platinum_asset_management_sale_report/platinum_asset_management_sale_report_company_month_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_asset_management_sale_report/platinum_precious_metal_sales_report_departmental_week_tab',
+                        name: 'platinum_precious_metal_sales_report_departmental_week_tab',
+                        component: () => import('@/views/report/platinum_asset_management_sale_report/platinum_precious_metal_sales_report_departmental_week_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_asset_management_sale_report/platinum_precious_metal_sales_report_departmental_month_tab',
+                        name: 'platinum_precious_metal_sales_report_departmental_month_tab',
+                        component: () => import('@/views/report/platinum_asset_management_sale_report/platinum_precious_metal_sales_report_departmental_month_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_asset_management_sale_report/platinum_precious_metal_sales_report_product_month_tab',
+                        name: 'platinum_precious_metal_sales_report_product_month_tab',
+                        component: () => import('@/views/report/platinum_asset_management_sale_report/platinum_precious_metal_sales_report_product_month_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                ]
+            },
+            {
+                path: '/platinum_precious_metal_sales_report',
+                name: 'platinum_precious_metal_sales_report',
+                component: Main,
+                meta: {
+                    requireAuth: true,
+                },
+                redirect: { name: 'platinum_precious_metal_sales_report_company_tab' },
+                children: [
+                    {
+                        path: '/platinum_precious_metal_sales_report/platinum_precious_metal_sales_report_company_tab',
+                        name: 'platinum_precious_metal_sales_report_company_tab',
+                        component: () => import('@/views/report/platinum_precious_metal_sales_report/platinum_precious_metal_sales_report_company_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_precious_metal_sales_report/platinum_precious_metal_sales_report_departmental_tab',
+                        name: 'platinum_precious_metal_sales_report_departmental_tab',
+                        component: () => import('@/views/report/platinum_precious_metal_sales_report/platinum_precious_metal_sales_report_departmental_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                ]
+            },
+            {
+                path: '/platinum_financial_payment',
+                name: 'platinum_financial_payment',
+                component: Main,
+                meta: {
+                    requireAuth: true,
+                },
+                redirect: { name: 'platinum_financial_payment_waiting_payment_tab' },
+                children: [
+                    {
+                        path: '/platinum_financial_payment/platinum_financial_payment_waiting_payment_tab',
+                        name: 'platinum_financial_payment_waiting_payment_tab',
+                        component: () => import('@/views/platinum/platinum_financial_payment/platinum_financial_payment_waiting_payment_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_financial_payment/platinum_financial_payment_in_waiting_payment_tab',
+                        name: 'platinum_financial_payment_in_waiting_payment_tab',
+                        component: () => import('@/views/platinum/platinum_financial_payment/platinum_financial_payment_in_waiting_payment_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_financial_payment/platinum_financial_payment_waiting_payment_cash_tab',
+                        name: 'platinum_financial_payment_waiting_payment_cash_tab',
+                        component: () => import('@/views/platinum/platinum_financial_payment/platinum_financial_payment_waiting_payment_cash_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_financial_payment/platinum_financial_payment_payment_tab',
+                        name: 'platinum_financial_payment_payment_tab',
+                        component: () => import('@/views/platinum/platinum_financial_payment/platinum_financial_payment_payment_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_financial_payment/platinum_financial_payment_all_tab',
+                        name: 'platinum_financial_payment_all_tab',
+                        component: () => import('@/views/platinum/platinum_financial_payment/platinum_financial_payment_all_tab/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                ]
+            },
+            {
+                path: '/platinum_precious_metal_signing',
+                name: 'platinum_precious_metal_signing',
+                component: Main,
+                meta: {
+                    requireAuth: true,
+                },
+                redirect: { name: 'platinum_precious_metal_signing_unsubmitted' },
+                children: [
+                    {
+                        path: '/platinum_precious_metal_signing/platinum_precious_metal_signing_unsubmitted',
+                        name: 'platinum_precious_metal_signing_unsubmitted',
+                        component: () => import('@/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_unsubmitted/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_precious_metal_signing/platinum_precious_metal_signing_pending_review',
+                        name: 'platinum_precious_metal_signing_pending_review',
+                        component: () => import('@/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_pending_review/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_precious_metal_signing/platinum_precious_metal_signing_repurchase_pending_review',
+                        name: 'platinum_precious_metal_signing_repurchase_pending_review',
+                        component: () => import('@/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_repurchase_pending_review/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_precious_metal_signing/platinum_precious_metal_signing_normal',
+                        name: 'platinum_precious_metal_signing_normal',
+                        component: () => import('@/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_normal/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_precious_metal_signing/platinum_precious_metal_signing_success',
+                        name: 'platinum_precious_metal_signing_success',
+                        component: () => import('@/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_success/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_precious_metal_signing/platinum_precious_metal_signing_refunded',
+                        name: 'platinum_precious_metal_signing_refunded',
+                        component: () => import('@/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_refunded/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_precious_metal_signing/platinum_precious_metal_signing_all',
+                        name: 'platinum_precious_metal_signing_all',
+                        component: () => import('@/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_all/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                ]
+            },
+            {
+                path: '/platinum_asset_management_signing',
+                name: 'platinum_asset_management_signing',
+                component: Main,
+                meta: {
+                    requireAuth: true,
+                },
+                redirect: { name: 'platinum_asset_management_signing_unsubmitted' },
+                children: [
+                    {
+                        path: '/platinum_asset_management_signing/platinum_asset_management_signing_unsubmitted',
+                        name: 'platinum_asset_management_signing_unsubmitted',
+                        component: () => import('@/views/platinum/platinum_asset_management_signing/platinum_asset_management_signing_unsubmitted/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_asset_management_signing/platinum_asset_management_signing_pending_review',
+                        name: 'platinum_asset_management_signing_pending_review',
+                        component: () => import('@/views/platinum/platinum_asset_management_signing/platinum_asset_management_signing_pending_review/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_asset_management_signing/platinum_asset_management_signing_finish',
+                        name: 'platinum_asset_management_signing_finish',
+                        component: () => import('@/views/platinum/platinum_asset_management_signing/platinum_asset_management_signing_finish/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/platinum_asset_management_signing/platinum_asset_management_signing_normal',
+                        name: 'platinum_asset_management_signing_normal',
+                        component: () => import('@/views/platinum/platinum_asset_management_signing/platinum_asset_management_signing_normal/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                ]
+            },
+            {
                 path: '/platinum_broker_management',
                 name: 'platinum_broker_management',
                 component: Main,

+ 33 - 0
src/services/bus/goods.ts

@@ -1,5 +1,7 @@
 import { TradeMode } from '@/common/constants/enumCommon';
+import { initData } from '@/common/methods';
 import APP from '@/services';
+import { Ref, ref } from 'vue';
 import { Goods } from '../go/ermcp/goodsInfo/interface';
 import { QueryQuoteDayRsp } from '../go/quote/interface';
 import { Goodsgroup } from '../go/useInfo/interface';
@@ -10,6 +12,37 @@ export function getGoodsList(): Goods[] {
     return APP.get('Goods')
 }
 
+// 通过trademode 获取商品
+export function getGoodsListByTrade(trademode: TradeMode): Ref<Goods[]> {
+    const result = ref<Goods[]>([])
+    initData(() => {
+        const marketInfo = getMarketByTradeMode(trademode)
+        if (marketInfo) {
+            result.value = getGoodsList().filter(e => e.marketid === marketInfo.marketid)
+        }
+    })
+    return result
+}
+
+// 通过trademode 获取行情,并获取goodsname
+export function getQutoGoodsByTradeMode(trademode: TradeMode) {
+    const result = ref<QueryQuoteDayRsp[]>([])
+    initData(() => {
+        const marketInfo = getMarketByTradeMode(trademode)
+        if (marketInfo) {
+            const goodsList = getGoodsList().filter(e => e.marketid === marketInfo.marketid)
+            goodsList.forEach(el => {
+                const quote = getQuoteDayInfoByCode(el.goodscode);
+                if (quote) {
+                    Object.assign(quote, { goodsname: el.goodsname })
+                    result.value.push(quote)
+                }
+            })
+        }
+    })
+    return result
+}
+
 export function getGoodsByCode(goodsCode: string): Goods | undefined {
     return getGoodsList().find(e => e.goodscode === goodsCode)
 }

+ 34 - 0
src/services/socket/quota/adapter/index.ts

@@ -130,6 +130,40 @@ export function parseReceivePush(quotationData: any) {
                 goodsQuoteTik.last && (goodsQuoteTik.last = fn(goodsQuoteTik.last))
                 goodsQuoteTik.settle && (goodsQuoteTik.settle = fn(goodsQuoteTik.settle))
                 goodsQuoteTik.presettle && (goodsQuoteTik.presettle = fn(goodsQuoteTik.presettle))
+                goodsQuoteTik.ask && (goodsQuoteTik.ask = fn(goodsQuoteTik.ask))
+                goodsQuoteTik.ask2 && (goodsQuoteTik.ask2 = fn(goodsQuoteTik.ask2))
+                goodsQuoteTik.ask3 && (goodsQuoteTik.ask3 = fn(goodsQuoteTik.ask3))
+                goodsQuoteTik.ask4 && (goodsQuoteTik.ask4 = fn(goodsQuoteTik.ask4))
+                goodsQuoteTik.ask5 && (goodsQuoteTik.ask5 = fn(goodsQuoteTik.ask5))
+                goodsQuoteTik.ask6 && (goodsQuoteTik.ask6 = fn(goodsQuoteTik.ask6))
+                goodsQuoteTik.ask7 && (goodsQuoteTik.ask7 = fn(goodsQuoteTik.ask7))
+                goodsQuoteTik.ask8 && (goodsQuoteTik.ask8 = fn(goodsQuoteTik.ask8))
+                goodsQuoteTik.ask9 && (goodsQuoteTik.ask9 = fn(goodsQuoteTik.ask9))
+                goodsQuoteTik.ask10 && (goodsQuoteTik.ask10 = fn(goodsQuoteTik.ask10))
+                goodsQuoteTik.bid && (goodsQuoteTik.bid = fn(goodsQuoteTik.bid))
+                goodsQuoteTik.bid2 && (goodsQuoteTik.bid2 = fn(goodsQuoteTik.bid2))
+                goodsQuoteTik.bid3 && (goodsQuoteTik.bid3 = fn(goodsQuoteTik.bid3))
+                goodsQuoteTik.bid4 && (goodsQuoteTik.bid4 = fn(goodsQuoteTik.bid4))
+                goodsQuoteTik.bid5 && (goodsQuoteTik.bid5 = fn(goodsQuoteTik.bid5))
+                goodsQuoteTik.bid6 && (goodsQuoteTik.bid6 = fn(goodsQuoteTik.bid6))
+                goodsQuoteTik.bid7 && (goodsQuoteTik.bid7 = fn(goodsQuoteTik.bid7))
+                goodsQuoteTik.bid8 && (goodsQuoteTik.bid8 = fn(goodsQuoteTik.bid8))
+                goodsQuoteTik.bid9 && (goodsQuoteTik.bid9 = fn(goodsQuoteTik.bid9))
+                goodsQuoteTik.bid10 && (goodsQuoteTik.bid10 = fn(goodsQuoteTik.bid10))
+                goodsQuoteTik.averageprice && (goodsQuoteTik.averageprice = fn(goodsQuoteTik.averageprice))
+                goodsQuoteTik.grepmarketprice && (goodsQuoteTik.grepmarketprice = fn(goodsQuoteTik.grepmarketprice))
+                goodsQuoteTik.highest && (goodsQuoteTik.highest = fn(goodsQuoteTik.highest))
+                goodsQuoteTik.iep && (goodsQuoteTik.iep = fn(goodsQuoteTik.iep))
+                goodsQuoteTik.last && (goodsQuoteTik.last = fn(goodsQuoteTik.last))
+                goodsQuoteTik.limitdown && (goodsQuoteTik.limitdown = fn(goodsQuoteTik.limitdown))
+                goodsQuoteTik.limitup && (goodsQuoteTik.limitup = fn(goodsQuoteTik.limitup))
+                goodsQuoteTik.lowest && (goodsQuoteTik.lowest = fn(goodsQuoteTik.lowest))
+                goodsQuoteTik.opened && (goodsQuoteTik.opened = fn(goodsQuoteTik.opened))
+                goodsQuoteTik.preclose && (goodsQuoteTik.preclose = fn(goodsQuoteTik.preclose))
+                goodsQuoteTik.presettle && (goodsQuoteTik.presettle = fn(goodsQuoteTik.presettle))
+                goodsQuoteTik.settle && (goodsQuoteTik.settle = fn(goodsQuoteTik.settle))
+                goodsQuoteTik.strikeprice && (goodsQuoteTik.strikeprice = fn(goodsQuoteTik.strikeprice))
+
             } else {
                 console.warn(`行情推送的商品goods:${itemQuote.goodscode}在商品列表里不存在`)
             }

+ 3 - 4
src/utils/qt/common.ts

@@ -1,5 +1,4 @@
-import timerUtil from '@/utils/timer/timerUtil';
-import { TimeoutTimerNames } from '@/utils/timer/timerUtil';
+import timerUtil, { TimeoutTimerNames } from '@/utils/timer/timerUtil';
 /**
  * 防抖(debounce)
  * @param fn 需要防抖的函数
@@ -7,7 +6,7 @@ import { TimeoutTimerNames } from '@/utils/timer/timerUtil';
  * @returns
  */
 export function debounce(fn: () => void, wait: number, timer: keyof TimeoutTimerNames = 'debounce'): void {
-    return (function() {
+    return (function () {
         timerUtil.clearTimeout(timer);
         timerUtil.setTimeout(fn, wait, timer);
     })();
@@ -79,7 +78,7 @@ export function changeUnit(value: number, decimals = 3): string {
             fm = 1000000000000000;
         }
         newValue[1] = text1;
-        newValue[0] = parseInt((value / fm).toFixed(decimals)) + '';
+        newValue[0] = (value / fm).toFixed(decimals) + '';
     }
     if (value < 1000) {
         newValue[1] = '';

+ 1 - 1
src/views/business/plan/list/uncommitted/index.vue

@@ -46,7 +46,7 @@ import { queryTableList, BtnList, contextMenu, defineAsyncComponent, defineCompo
 
 import { Filter } from '../../components';
 import { getPlanContractType, getPlanStatusName } from '@/views/business/plan/setup';
-import { BtnList as BtnListType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { Ermcp3HedgePlan } from '@/services/go/ermcp/plan/interface';
 import { QueryHedgePlan } from '@/services/go/ermcp/plan';
 import { EnumRouterName } from '@/common/constants/enumRouterName';

+ 3 - 4
src/views/information/account_info/list/setup.ts

@@ -1,5 +1,4 @@
-import { BtnList } from '@/common/components/btnList/interface';
-import { BtnList as OldBtnType } from "@/common/setup/table/interface";
+import { BtnListType } from '@/common/components/btnList/interface';
 import { ErmcpLoginUserEx } from "@/services/go/ermcp/account/interface";
 import { reactive, ref, Ref } from "vue";
 
@@ -97,7 +96,7 @@ export function handleModalData<T extends object>() {
     return { selectedData, openAction }
 }
 
-export function _handleTableList(fn: Function, tableList: Ref<ErmcpLoginUserEx[]>, btnList: BtnList[]) {
+export function _handleTableList(fn: Function, tableList: Ref<ErmcpLoginUserEx[]>, btnList: BtnListType[]) {
     fn().then(() => {
         tableList.value.forEach((el) => {
             // 过滤无效
@@ -119,7 +118,7 @@ export function _handleTableList(fn: Function, tableList: Ref<ErmcpLoginUserEx[]
     });
 }
 
-export function handleTableList(fn: Function, tableList: Ref<ErmcpLoginUserEx[]>, btnList: OldBtnType[]) {
+export function handleTableList(fn: Function, tableList: Ref<ErmcpLoginUserEx[]>, btnList: BtnListType[]) {
     fn().then(() => {
         tableList.value.forEach((el) => {
             // 过滤无效

+ 1 - 1
src/views/manage/business-review/list/settlement/index.vue

@@ -64,7 +64,7 @@ import { Column, ColumnType } from '@/common/setup/table';
 import { getPriceTypeName, getContractTypeName, getApplyStatusName } from '@/common/constants/enumsName';
 import { getAnalogueName } from '@/views/information/spot-contract/setup';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
-import { BtnList as BtnListType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 const Detail = defineAsyncComponent(() => import('../../components/settlementDetail/index.vue'));
 const Audit = defineAsyncComponent(() => import('../../components/settlementAudit/index.vue'));
 const Cancel = defineAsyncComponent(() => import('../../components/settlementCancel/index.vue'));

+ 1 - 1
src/views/manage/business-review/list/someprice/index.vue

@@ -61,7 +61,7 @@ import { getPriceTypeName, getContractStatusName, getContractTypeName, getApplyS
 import { getAnalogueName } from '@/views/information/spot-contract/setup';
 import { Column, ColumnType } from '@/common/setup/table';
 import { ref } from 'vue';
-import { BtnList as BtnListType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
 const Detail = defineAsyncComponent(() => import('../../components/somepriceDetail/index.vue'));
 const Audit = defineAsyncComponent(() => import('../../components/somepriceAudit/index.vue'));

+ 1 - 1
src/views/manage/finance-review/list/funds/index.vue

@@ -72,7 +72,7 @@ import { invoiceStatusName, operateApplyTypeName, stateName } from '@/views/mana
 import { getContractTypeName, getApplyStatusName } from '@/common/constants/enumsName';
 import { Column, ColumnType } from '@/common/setup/table';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
-import { BtnList as BtnListType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 
 const Detail = defineAsyncComponent(() => import('../../components/fundsDetail/index.vue'));
 const Audit = defineAsyncComponent(() => import('../../components/fundsAudit/index.vue'));

+ 1 - 1
src/views/manage/finance-review/list/invoice/index.vue

@@ -62,7 +62,7 @@ import { invoiceStatusName, operateApplyTypeName } from '@/views/manage/finance-
 import { Column, ColumnType } from '@/common/setup/table';
 import { getContractTypeName, getApplyStatusName } from '@/common/constants/enumsName';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
-import { BtnList as BtnListType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 
 const Detail = defineAsyncComponent(() => import('../../components/invoiceDetail/index.vue'));
 const Audit = defineAsyncComponent(() => import('../../components/invoiceAudit/index.vue'));

+ 1 - 1
src/views/manage/inventory-review/list/checkin/index.vue

@@ -64,7 +64,7 @@ import { operateApplyTypeName } from '@/views/manage/finance-review/setup';
 import { InOutTypeName } from '@/views/manage/inventory-review/setup';
 import { Column, ColumnType } from '@/common/setup/table';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
-import { BtnList as BtnListType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 const Detail = defineAsyncComponent(() => import('../../components/checkinDetail/index.vue'));
 const Audit = defineAsyncComponent(() => import('../../components/checkinAudit/index.vue'));
 const Cancel = defineAsyncComponent(() => import('../../components/checkinCancel/index.vue'));

+ 1 - 1
src/views/manage/inventory-review/list/checkout/index.vue

@@ -63,7 +63,7 @@ import { operateApplyTypeName } from '@/views/manage/finance-review/setup';
 import { InOutTypeName } from '@/views/manage/inventory-review/setup';
 import { Column, ColumnType } from '@/common/setup/table';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
-import { BtnList as BtnListType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 const Detail = defineAsyncComponent(() => import('../../components/checkoutDetail/index.vue'));
 const Audit = defineAsyncComponent(() => import('../../components/checkoutAudit/index.vue'));
 const Cancel = defineAsyncComponent(() => import('../../components/checkoutCancel/index.vue'));

+ 2 - 2
src/views/market/spot_trade/components/buy-sell-market/components/buy/index.vue

@@ -45,7 +45,7 @@ import { _closeModal } from '@/common/setup/modal/modal';
 import { queryOrderQuoteDetail } from '@/services/go/wrtrade';
 import { QueryOrderQuoteDetailReq, WrOrderQuote, WrOrderQuoteDetail } from '@/services/go/wrtrade/interface';
 import { defineAsyncComponent, PropType } from 'vue';
-import { BtnList as btnListType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { getBuyMarketParam } from '../../setup';
 import { BuyOrSell } from '@/common/constants/enumCommon';
 import { expandIcon } from '@/common/setup/table/clolumn';
@@ -64,7 +64,7 @@ export default defineComponent({
         },
         btnList: {
             default: [],
-            type: Array as PropType<btnListType[]>,
+            type: Array as PropType<BtnListType[]>,
         },
         parantSelectedRow: {
             type: Object as PropType<WrOrderQuote>,

+ 2 - 2
src/views/market/spot_trade/components/buy-sell-market/components/sell/index.vue

@@ -39,7 +39,7 @@ import { _closeModal } from '@/common/setup/modal/modal';
 import { queryOrderQuoteDetail } from '@/services/go/wrtrade';
 import { QueryOrderQuoteDetailReq, WrOrderQuote, WrOrderQuoteDetail } from '@/services/go/wrtrade/interface';
 import { defineAsyncComponent, PropType } from 'vue';
-import { BtnList as btnListType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { getSellMarketParam } from '../../setup';
 import { BuyOrSell } from '@/common/constants/enumCommon';
 import { expandIcon } from '@/common/setup/table/clolumn';
@@ -58,7 +58,7 @@ export default defineComponent({
         },
         btnList: {
             default: [],
-            type: Array as PropType<btnListType[]>,
+            type: Array as PropType<BtnListType[]>,
         },
         parantSelectedRow: {
             type: Object as PropType<WrOrderQuote>,

+ 104 - 101
src/views/market/spot_trade/components/buy-sell-market/index.vue

@@ -1,109 +1,112 @@
 <template>
-    <!-- 买卖大厅 -->
-    <div class="buy-sell-market">
-        <div class="buy-sell-market-title">
-            <a class="backIcon" @click="cancel">
-                <LeftOutlined />
-            </a>
-            <div class="titleBtn">
-                <div class="name">{{selectedRow.deliverygoodsname}}</div>
-                <div class="arrowRightIcon"></div>
-            </div>
-            <div class="titleBtn titleBtn2">
-                <div class="arrowLeftIcon"></div>
-                <div class="name">{{selectedRow.wrgoodsname}}</div>
-                <div class="arrowRightIcon"></div>
-            </div>
-            <div class="titleBtn titleBtn2">
-                <div class="arrowLeftIcon"></div>
-                <div class="name">{{selectedRow.warehousename}}</div>
-                <div class="arrowRightIcon"></div>
-            </div>
-            <div class="titleBtn titleBtn3" v-if="!isWR(enumName)">
-                <div class="arrowLeftIcon"></div>
-                <div class="name">
-                    <a-month-picker
-                        :allowClear="false"
-                        v-model:value="time"
-                        @change="timeChange"
-                        class="commonDatePicker conditionPicker"
-                    />
-                </div>
-                <DownOutlined />
-            </div>
+  <!-- 买卖大厅 -->
+  <div class="buy-sell-market">
+    <div class="buy-sell-market-title">
+      <a class="backIcon"
+         @click="cancel">
+        <LeftOutlined />
+      </a>
+      <div class="titleBtn">
+        <div class="name">{{selectedRow.deliverygoodsname}}</div>
+        <div class="arrowRightIcon"></div>
+      </div>
+      <div class="titleBtn titleBtn2">
+        <div class="arrowLeftIcon"></div>
+        <div class="name">{{selectedRow.wrgoodsname}}</div>
+        <div class="arrowRightIcon"></div>
+      </div>
+      <div class="titleBtn titleBtn2">
+        <div class="arrowLeftIcon"></div>
+        <div class="name">{{selectedRow.warehousename}}</div>
+        <div class="arrowRightIcon"></div>
+      </div>
+      <div class="titleBtn titleBtn3"
+           v-if="!isWR(enumName)">
+        <div class="arrowLeftIcon"></div>
+        <div class="name">
+          <a-month-picker :allowClear="false"
+                          v-model:value="time"
+                          @change="timeChange"
+                          class="commonDatePicker conditionPicker" />
+        </div>
+        <DownOutlined />
+      </div>
 
-            <div class="priceBar bdf1 ml20">
-                <div class="greenBar green">
-                    <div class="numBlock" v-if="isFloat()">
-                        <div class="first">卖基差</div>
-                        <div class="last">{{selectedRow.sellpricemove}}</div>
-                    </div>
-                    <div class="numBlock" v-else>
-                        <div class="first">卖价</div>
-                        <div class="last">{{selectedRow.sellprice}}</div>
-                    </div>
-                    <div class="numBlock">
-                        <div class="first">卖量</div>
-                        <div class="last">{{selectedRow.sellqty}}</div>
-                    </div>
-                </div>
-                <div class="redBar red">
-                    <div class="numBlock" v-if="isFloat()">
-                        <div class="first">买基差</div>
-                        <div class="last">{{selectedRow.buypricemove}}</div>
-                    </div>
-                    <div class="numBlock ml15" v-else>
-                        <div class="first">买价</div>
-                        <div class="last">{{selectedRow.buyprice}}</div>
-                    </div>
-                    <div class="numBlock">
-                        <div class="first">买量</div>
-                        <div class="last">{{selectedRow.buyqty}}</div>
-                    </div>
-                </div>
-            </div>
-            <div class="market" v-if="isFloat()">
-                <div class="first">{{selectedRow.goodscode}}</div>
-                <div class="last red">{{getGoodsPrice()}}</div>
-                <LineChartOutlined />
-            </div>
-            <!-- 历史走势按钮 -->
-            <!-- <a-button class="historyBtn">
+      <div class="priceBar bdf1 ml20">
+        <div class="greenBar green">
+          <div class="numBlock"
+               v-if="isFloat()">
+            <div class="first">卖基差</div>
+            <div class="last">{{selectedRow.sellpricemove}}</div>
+          </div>
+          <div class="numBlock"
+               v-else>
+            <div class="first">卖价</div>
+            <div class="last">{{selectedRow.sellprice}}</div>
+          </div>
+          <div class="numBlock">
+            <div class="first">卖量</div>
+            <div class="last">{{selectedRow.sellqty}}</div>
+          </div>
+        </div>
+        <div class="redBar red">
+          <div class="numBlock"
+               v-if="isFloat()">
+            <div class="first">买基差</div>
+            <div class="last">{{selectedRow.buypricemove}}</div>
+          </div>
+          <div class="numBlock ml15"
+               v-else>
+            <div class="first">买价</div>
+            <div class="last">{{selectedRow.buyprice}}</div>
+          </div>
+          <div class="numBlock">
+            <div class="first">买量</div>
+            <div class="last">{{selectedRow.buyqty}}</div>
+          </div>
+        </div>
+      </div>
+      <div class="market"
+           v-if="isFloat()">
+        <div class="first">{{selectedRow.goodscode}}</div>
+        <div class="last red">{{getGoodsPrice()}}</div>
+        <LineChartOutlined />
+      </div>
+      <!-- 历史走势按钮 -->
+      <!-- <a-button class="historyBtn">
                 历史走势
                 <LineChartOutlined />
             </a-button>-->
-            <BtnList :btnList="firstBtn" :record="selectedRow" @click="openComponent" />
-        </div>
-        <a-row class="buySellHall">
-            <a-col :span="12" v-if="sellMarket.isMarket">
-                <Sell
-                    :enumName="enumName"
-                    ref="sellRef"
-                    :parantSelectedRow="selectedRow"
-                    :time="time"
-                    :btnList="handleBtnList(sellMarket.btnList)"
-                />
-            </a-col>
-            <a-col :span="12" v-if="buyMarket.isMarket">
-                <Buy
-                    :enumName="enumName"
-                    ref="buyRef"
-                    :time="time"
-                    :parantSelectedRow="selectedRow"
-                    :btnList="handleBtnList(buyMarket.btnList)"
-                />
-            </a-col>
-        </a-row>
-        <component
-            :is="componentId"
-            v-if="componentId"
-            :selectedRow="selectedRow"
-            :goodsPrice="getGoodsPrice()"
-            :enumName="enumName"
-            :time="time"
-            @cancel="closeComponent"
-        ></component>
+      <BtnList :btnList="firstBtn"
+               :record="selectedRow"
+               @click="openComponent" />
     </div>
+    <a-row class="buySellHall">
+      <a-col :span="12"
+             v-if="sellMarket.isMarket">
+        <Sell :enumName="enumName"
+              ref="sellRef"
+              :parantSelectedRow="selectedRow"
+              :time="time"
+              :btnList="handleBtnList(sellMarket.btnList)" />
+      </a-col>
+      <a-col :span="12"
+             v-if="buyMarket.isMarket">
+        <Buy :enumName="enumName"
+             ref="buyRef"
+             :time="time"
+             :parantSelectedRow="selectedRow"
+             :btnList="handleBtnList(buyMarket.btnList)" />
+      </a-col>
+    </a-row>
+    <component :is="componentId"
+               v-if="componentId"
+               :selectedRow="selectedRow"
+               :goodsPrice="getGoodsPrice()"
+               :enumName="enumName"
+               :time="time"
+               @cancel="closeComponent"></component>
+  </div>
 </template>
 
 <script lang="ts">
@@ -124,7 +127,7 @@ import { addSubscribeQuotation, removeSubscribeQuotation } from '@/services/sock
 import Bus from '@/utils/eventBus/index';
 import { getQuoteDayInfoByCodeFindPrice } from '@/services/bus/goods';
 import TimerUtils from '@/utils/timer/timerUtil';
-import { BtnList as BtnListType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import moment, { Moment } from 'moment';
 import { BuyOrSell } from '@/common/constants/enumCommon';
 

+ 3 - 3
src/views/market/spot_trade/setup.ts

@@ -1,4 +1,4 @@
-import { BtnList } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { ContextMenuTemp } from "@/common/components/contextMenu/interface";
 import { handleContextMenu } from "@/common/components/contextMenu/setup";
 import { EnumRouterName } from '@/common/constants/enumRouterName';
@@ -15,7 +15,7 @@ import { BuyAndSellMarket, TreeDataItem } from './interface';
 const buyAndSellEunm = 'buyAndSell'
 
 export function handleSpotBtnList(menuType: EnumRouterName) {
-    let firstBtn: BtnList[] = []
+    let firstBtn: BtnListType[] = []
     // 买大厅数据
     const buyMarket: BuyAndSellMarket = {
         isMarket: true,
@@ -91,7 +91,7 @@ export function handleComposeTable<T>({ queryFn, menuType, isDetail, tableName,
     firstBtn.push({ lable: '买卖大厅', code: buyAndSellEunm, className: 'btnPrimary' })
 
     // 关闭右键
-    function closeContext(value: BtnList | null) {
+    function closeContext(value: BtnListType | null) {
         // 打开对应的弹窗组件
         if (value) componentId.value = value.code;
         // 关闭右键

+ 118 - 0
src/views/market/spot_trade/spot_trade_order_transaction/components/buy-market/index.vue

@@ -0,0 +1,118 @@
+<template>
+  <!--  现货贸易 - 买卖大厅 - 卖报价牌 -->
+  <a-table :columns="handleColumn(columns)"
+           :class="['buyHallTable', isBottom ? '' : 'buyHallTableHigh', tableList.length ? '' : 'noDataTable']"
+           :scroll="{ x: '100%', y: isBottom ? 'calc(100vh- 470px)' : 'calc(100vh - 180px)' }"
+           :pagination="false"
+           :loading="loading"
+           :expandedRowKeys="expandedRowKeys"
+           :customRow="Rowclick"
+           :expandIcon="expandIcon"
+           :expandIconAsCell="false"
+           rowKey="key"
+           :data-source="tableList">
+    <!-- ,  -->
+    <!-- 额外的展开行 -->
+    <template #expandedRowRender="{ record }">
+      <BtnList :btnList="btnListData"
+               :record="record"
+               class="btn-list-sticky"
+               @click="openComponent" />
+    </template>
+    <template #fixedprice="{record }">
+      <span>{{record.useorderpricerid }}</span>
+    </template>
+    <template #username="{text, record }">
+      <span>{{record.userid + " "}}{{text}}</span>
+    </template>
+  </a-table>
+  <component :is="componentId"
+             v-if="componentId"
+             :selectedRow="selectedRow"
+             :buyOrSell="BuyOrSell.buy"
+             :parantSelectedRow="parantSelectedRow"
+             @cancel="closeComponent"></component>
+</template>
+
+<script lang="ts">
+import { BtnList, defineComponent, queryTableList } from '@/common/export/commonTable';
+import { _closeModal } from '@/common/setup/modal/modal';
+import { queryWrTradeOrderDetail } from '@/services/go/wrtrade';
+import { WrOrderQuote, WrOrderQuoteDetail, WrTradeOrderDetailReq } from '@/services/go/wrtrade/interface';
+import { defineAsyncComponent, PropType } from 'vue';
+import { BtnListType } from '@/common/components/btnList/interface';
+import { BuyOrSell } from '@/common/constants/enumCommon';
+import { expandIcon } from '@/common/setup/table/clolumn';
+import { ColumnType } from '@/common/methods/table/interface';
+
+import { getShowBottomValue } from '@/common/config/constrolBottom';
+import { TableParam } from '@/common/setup/table/interface';
+import { handleTableEventAndData } from '@/common/setup/table/compose';
+
+export default defineComponent({
+    emits: ['cancel', 'openComponent'],
+    name: 'warehouse_receipt_trade_price_delisting_buy',
+    props: {
+        parantSelectedRow: {
+            type: Object as PropType<WrOrderQuote>,
+            default: {},
+        },
+    },
+    components: {
+        BtnList,
+        Delisting: defineAsyncComponent(() => import('../delisting/index.vue')),
+    },
+    setup(props, context) {
+        const isBottom = getShowBottomValue();
+        // 表格列表数据
+        const { loading, tableList, queryTable } = queryTableList<WrOrderQuoteDetail>();
+        const columnsList = [
+            { title: '序号', key: 'index' },
+            { title: '买价', key: 'orderprice' },
+            { title: '买量', key: 'orderqty' },
+            { title: '购买方', key: 'username' },
+        ];
+        const btnListData: BtnListType[] = [{ lable: '摘牌', code: 'Delisting', className: 'operBtn' }];
+
+        // 获取列表数据
+        const queryTableAction = () => {
+            const param: WrTradeOrderDetailReq = {
+                buyorsell: 0,
+                goodsid: props.parantSelectedRow.goodsid,
+            };
+            queryTable(queryWrTradeOrderDetail, param);
+        };
+        const param: TableParam = {
+            columnsList,
+            queryFn: queryTableAction,
+        };
+        function handleColumn(columns: ColumnType[]) {
+            columns.forEach((item) => {
+                if (item.dataIndex == 'username') {
+                    delete item.width;
+                }
+            });
+            return columns;
+        }
+        return {
+            isBottom,
+            ...handleTableEventAndData(param),
+            queryTableAction,
+            BuyOrSell,
+            loading,
+            tableList,
+            expandIcon,
+            handleColumn,
+            btnListData,
+            columnsList,
+        };
+    },
+});
+</script>
+<style lang="less">
+.buy-sell-market {
+    .btnDeafault.ant-btn {
+        height: 30px;
+    }
+}
+</style>

+ 0 - 411
src/views/market/spot_trade/spot_trade_order_transaction/components/buy-sell-market/components/delisting/index.vue

@@ -1,411 +0,0 @@
-<template>
-    <!-- 仓单贸易&仓单预售 买/卖 摘牌 -->
-    <Drawer
-        :title="'摘牌'"
-        :placement="'right'"
-        :visible="visible"
-        width="486px"
-        height="479px"
-        @cancel="cancel"
-        class="top"
-    >
-        <div class="delisting">
-            <a-form class="inlineForm dialogForm" ref="formRef" :model="formState" :rules="rules">
-                <div class="formBar">
-                    <a-row :gutter="24">
-                        <a-col :span="24">
-                            <a-form-item label="交易账户" name="accountid">
-                                <a-select
-                                    class="inlineFormSelect"
-                                    style="width: 260px"
-                                    v-model:value="formState.accountid"
-                                    placeholder="请选择"
-                                >
-                                    <a-select-option
-                                        v-for="item in accountList"
-                                        :value="item.accountid"
-                                        :key="item.accountid"
-                                    >{{item.accountid}}</a-select-option>
-                                </a-select>
-                            </a-form-item>
-                        </a-col>
-                    </a-row>
-                    <a-row :gutter="24">
-                        <a-col :span="24">
-                            <a-form-item label="挂牌方">
-                                <span class="white ml8">{{selectedRow.username}}</span>
-                            </a-form-item>
-                        </a-col>
-                    </a-row>
-                    <a-row :gutter="24">
-                        <a-col :span="24">
-                            <a-form-item label="基差" v-if="isFloat()">
-                                <span class="yellow ml8">{{selectedRow.pricemove}}</span>
-                            </a-form-item>
-                            <a-form-item label="挂牌价格" v-if="!isFloat()">
-                                <span class="yellow ml8">{{selectedRow.fixedprice}}</span>
-                            </a-form-item>
-                            <a-row :gutter="24">
-                                <a-col :span="24"></a-col>
-                            </a-row>
-                            <a-form-item label="挂牌数量">
-                                <span
-                                    class="white ml8"
-                                >{{selectedRow.orderqty}}{{selectedRow.enumdicname}}</span>
-                            </a-form-item>
-                        </a-col>
-                    </a-row>
-                    <a-row :gutter="24" v-if="isBuy() && isWR()">
-                        <a-col :span="24">
-                            <a-form-item label="现货仓单" name="LadingBillId">
-                                <a-select
-                                    class="inlineFormSelect"
-                                    style="width: 260px"
-                                    v-model:value="formState.LadingBillId"
-                                    placeholder="请选择"
-                                >
-                                    <a-select-option
-                                        v-for="item in wrHoldList"
-                                        :value="item.id"
-                                        :key="item.id"
-                                    >{{item.name}}</a-select-option>
-                                </a-select>
-                            </a-form-item>
-                        </a-col>
-                    </a-row>
-                    <a-row :gutter="24">
-                        <a-col :span="24">
-                            <a-form-item label="摘牌数量" class="relative" name="num">
-                                <a-input-number
-                                    class="dialogInput yellowInput"
-                                    style="width: 260px"
-                                    :min="0"
-                                    :max="getMaxNum()"
-                                    v-model:value="formState.num"
-                                />
-                                <span class="input-enumdicname-absolute">{{selectedRow.enumdicname}}</span>
-                                <div
-                                    class="labelTip"
-                                >({{selectedRow.minivalue}}{{selectedRow.enumdicname}}起)</div>
-                            </a-form-item>
-                        </a-col>
-                    </a-row>
-                    <a-row :gutter="24">
-                        <a-col :span="24" class="mt-20">
-                            <a-form-item>
-                                <a-slider
-                                    ::min="0"
-                                    v-model:value="formState.num"
-                                    :max="selectedRow.orderqty"
-                                    class="formSlider"
-                                    style="width: 260px"
-                                />
-                                <div class="unit">
-                                    <span>0</span>
-                                    <span>{{getMaxNum()}}{{selectedRow.enumdicname}}</span>
-                                </div>
-                            </a-form-item>
-                        </a-col>
-                        <a-col :span="12">&nbsp;</a-col>
-                    </a-row>
-                    <a-row :gutter="24">
-                        <a-col :span="24" class="mt-20">
-                            <a-form-item :label="isFloat() ? '估算金额' : '摘牌金额'">
-                                <span class="white ml8">{{getMoney()}}</span>
-                            </a-form-item>
-                        </a-col>
-                    </a-row>
-                    <a-row :gutter="24">
-                        <a-col :span="24">
-                            <a-form-item :label="getMargin() ? '履约保证金' : ''">
-                                <!-- <a-row>
-                                <a-col :span="8" v-if="getMargin()">-->
-                                <span class="white ml8" v-if="getMargin()">{{getMargin()}}</span>
-                                <!-- </a-col>
-                                    <a-col :span="5" class="tr">
-                                        <span class="grey1">可用资金</span>
-                                    </a-col>
-                                    <a-col :span="11">
-                                        <span
-                                            class="white ml8"
-                                        >{{getCanUseMoney(getSelectedAccount())}}</span>
-                                    </a-col>
-                                </a-row>-->
-                            </a-form-item>
-                        </a-col>
-                    </a-row>
-                    <a-row :gutter="24">
-                        <a-col :span="24">
-                            <a-form-item label="可用资金">
-                                <span class="white ml8">{{getCanUseMoney(getSelectedAccount())}}</span>
-                            </a-form-item>
-                        </a-col>
-                    </a-row>
-                </div>
-                <a-row :gutter="24">
-                    <a-col :span="24" class="fixedBtns">
-                        <a-form-item class="btnCenter">
-                            <a-button
-                                class="listedBtn"
-                                :loading="loading"
-                                :disabled="loading"
-                                @click="submit"
-                            >{{isBuy() ? '卖出' : '买入'}}</a-button>
-                            <a-button class="ml10 cancelBtn" @click="cancel">取消</a-button>
-                        </a-form-item>
-                    </a-col>
-                </a-row>
-            </a-form>
-        </div>
-    </Drawer>
-</template>
-
-<script lang="ts">
-import { PlusOutlined, MinusOutlined } from '@ant-design/icons-vue';
-import { defineComponent, PropType, ref } from 'vue';
-import Drawer from '@/common/components/drawer/index.vue';
-import { WrOrderQuote, WrOrderQuoteDetail } from '@/services/go/wrtrade/interface';
-import { getAccountTypeList, getSelectedAccountId, getUserId } from '@/services/bus/account';
-import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
-import { HdWRDealOrder } from '@/services/proto/warehousetrade';
-import { v4 as uuidv4 } from 'uuid';
-import moment from 'moment';
-import { ModalEnum } from '@/common/constants/modalNameEnum';
-import { HdWRDealOrderReq } from '@/services/proto/warehousetrade/interface';
-import { _closeModal } from '@/common/setup/modal/modal';
-import { handleForm, handleNumAndMoney, handleSpotWarrant, getWrPosition } from './setup';
-import { handleIs } from '../../setup';
-import { validateAction } from '@/common/setup/form';
-import { ListingForm, TempWrOrderQuoteDetail } from './interface';
-import { BuyOrSell } from '@/common/constants/enumCommon';
-import { EnumRouterName } from '@/common/constants/enumRouterName';
-import { getCanUseMoney } from '@/services/bus/account';
-export default defineComponent({
-    name: ModalEnum.spot_trade_warehouse_financing_delisting,
-    components: { Drawer, PlusOutlined, MinusOutlined },
-    emits: ['cancel', 'update'],
-    props: {
-        enumName: {
-            default: '',
-            type: String as PropType<EnumRouterName>,
-        },
-        selectedRow: {
-            type: Object as PropType<TempWrOrderQuoteDetail>,
-            default: {},
-        },
-        parantSelectedRow: {
-            type: Object as PropType<WrOrderQuote>,
-            default: {},
-        },
-        buyOrSell: {
-            type: Number as PropType<BuyOrSell>,
-            default: BuyOrSell.buy,
-        },
-    },
-
-    setup(props, context) {
-        const { visible, cancel } = _closeModal(context);
-        // 资金账号
-        const accountList = getAccountTypeList([2]);
-        const { rules, formState, formRef } = handleForm(props.selectedRow);
-        if (accountList.length) {
-            formState.accountid = accountList[0].accountid;
-        }
-        function getSelectedAccount() {
-            return accountList.find((e) => e.accountid === formState.accountid);
-        }
-        const loading = ref<boolean>(false);
-        // 判断
-        const { isWR, isBuy, isFloat } = handleIs(props.enumName, props.buyOrSell);
-        // 现货仓单
-        const { wrHoldList } = handleSpotWarrant(props.enumName, props.buyOrSell, props.parantSelectedRow, loading);
-        getWrPosition(props.enumName, props.buyOrSell, loading);
-        const { getMaxNum, getMoney, getMargin } = handleNumAndMoney(props.enumName, props.buyOrSell, props.selectedRow, props.parantSelectedRow, formState);
-        function submit() {
-            validateAction<ListingForm>(formRef, formState).then((res) => {
-                // 首先确定  这是仓单贸易的有仓单挂摘牌 HasWr = 1
-                // 其次判断  摘牌 1。摘买 (需要通过自己的仓单进行摘买)  2。摘卖 (不需要通过仓单)
-                const param: HdWRDealOrderReq = {
-                    UserID: getUserId(), // uint32 用户ID
-                    AccountID: getSelectedAccountId(), // uint64 资金账号
-                    RelatedWRTradeOrderID: props.selectedRow.wrtradeorderid, // uint64 关联委托单号(摘牌委托关联挂牌委托单ID)
-                    WRTransferUserID: props.selectedRow.userid, // uint32 仓单受让用户
-                    OrderQty: res.num as number, // uint64 委托数量
-                    OrderSrc: 0, // uint32 委托来源
-                    ClientSerialNo: uuidv4(), // string 客户端流水号
-                    ClientOrderTime: moment(new Date()).format('YYYY-MM-DD HH:mm:ss'), // string 客户端委托时间
-                    ClientType: 4, // uint32 终端类型
-                    OperatorID: getUserId(), // uint64 操作员账号ID
-                    BuyOrSell: 0, // uint32 买卖方向
-                    ApplyID: 0, // uint64 申请ID
-                    // LadingBillId: 0, // uint64 提单id(wrholdlb的LadingBillId字段),卖的时候填写
-                    SubNum: 0, // uint64 提单子单号(wrholdlb的SubNum字段),卖的时候填写
-                    WRFactorTypeId: props.parantSelectedRow.wrfactortypeid, // uint64 仓单要素ID(wrholdlb的WRFactorTypeId字段),卖的时候填写
-                    TradeDate: moment().format('YYYYMMDD'), // string 交易日
-                    DeliveryMonth: '', // string 交收月
-                    HasWr: isWR(), // uint32 是否有仓单-0:没有仓单 1:有仓单
-                    IsFinancing: 0, // uint32 是否融资购买(买摘牌时有效)-0:否 1:是
-                    ProductDetailID: 0, // uint64 金融机构产品组合ID(融资购买时有效)
-                };
-                // 摘买方向
-                if (isBuy()) {
-                    param.BuyOrSell = 1;
-                    param.LadingBillId = res.LadingBillId;
-                } else {
-                    param.BuyOrSell = 0;
-                }
-
-                requestResultLoadingAndInfo(HdWRDealOrder, param, loading, ['摘牌成功', '摘牌失败:']).then(() => {
-                    cancel(true);
-                });
-            });
-        }
-
-        return {
-            visible,
-            cancel,
-            accountList,
-            wrHoldList,
-            loading,
-            submit,
-            isWR,
-            isBuy,
-            isFloat,
-            rules,
-            formState,
-            formRef,
-            getCanUseMoney,
-            getSelectedAccount,
-            getMaxNum,
-            getMoney,
-            getMargin,
-        };
-    },
-});
-</script>
-
-<style lang="less">
-.delisting {
-    width: 100%;
-    height: 100%;
-    .flex;
-    flex-direction: column;
-    overflow: hidden;
-    .condition {
-        width: 100%;
-        height: 48px;
-        margin: 0 16px;
-        padding: 10px 0;
-        border-bottom: 1px solid @m-black6;
-        .inlineflex;
-        .conditionBtn {
-            align-self: center;
-            align-items: center;
-            border: 0;
-            min-width: 80px;
-            height: 28px;
-            line-height: 28px;
-            background: @m-black7;
-            .rounded-corners(3px);
-            font-size: 14px;
-            color: @m-blue0;
-            &:hover {
-                background: @m-black7-hover;
-                color: @m-blue0-hover;
-            }
-        }
-        .conditionBtn + .conditionBtn {
-            margin-left: 10px;
-        }
-    }
-    .ant-form {
-        height: 100%;
-    }
-}
-::v-deep.ant-slider.formSlider {
-    width: 260px;
-}
-::v-deep.ant-input-suffix {
-    position: absolute;
-    right: -25px;
-}
-.unit {
-    margin-left: 70px;
-    width: 260px;
-    .flex;
-    justify-content: space-between;
-    font-size: 14px;
-    color: @m-grey41;
-    height: 14px;
-    line-height: 14px;
-}
-.listedBtn {
-    width: 120px;
-    height: 30px;
-    line-height: 30px;
-    background: linear-gradient(0deg, @m-blue2 0%, @m-blue0 100%);
-    border-radius: 3px;
-    color: @m-white0;
-    font-size: 14px;
-    text-align: center;
-    border: 0;
-    &:hover {
-        background: linear-gradient(0deg, @m-blue0-hover 0%, @m-blue2-hover 100%);
-        color: @m-white0-hover;
-    }
-}
-.cancelBtn:extend(.listedBtn) {
-    background: linear-gradient(0deg, @m-grey12 0%, @m-grey13 100%) !important;
-    &:hover {
-        background: linear-gradient(0deg, @m-grey12-hover 0%, @m-grey13-hover 100%) !important;
-        color: @m-white0-hover;
-    }
-}
-.ml10 {
-    margin-left: 10px;
-}
-.ant-form.dialogForm .ant-row.ant-form-item {
-    margin-bottom: 14px;
-}
-.mt20 {
-    margin-top: 20px;
-}
-.mt-20 {
-    margin-top: -20px;
-}
-.labelTip {
-    font-size: 14px;
-    color: @m-blue16;
-    position: absolute;
-    top: 15px;
-    left: -66px;
-}
-.minusBtn,
-.plusBtn {
-    width: 15px;
-    height: 32px;
-    line-height: 32px;
-    font-size: 15px;
-    color: @m-blue15;
-    cursor: pointer;
-}
-.minusBtn {
-    position: absolute;
-    top: -6px;
-    left: 14px;
-    z-index: 1;
-}
-.plusBtn {
-    position: absolute;
-    top: -6px;
-    right: 14px;
-    z-index: 1;
-}
-.stepper {
-    padding-left: 30px;
-    padding-right: 30px;
-    text-align: center;
-    color: @m-yellow1;
-    font-size: 16px;
-}
-</style>;

+ 0 - 154
src/views/market/spot_trade/spot_trade_order_transaction/components/buy-sell-market/components/delisting/setup.ts

@@ -1,154 +0,0 @@
-import { BuyOrSell } from "@/common/constants/enumCommon";
-import { EnumRouterName } from "@/common/constants/enumRouterName";
-import { queryResultLoadingAndInfo } from "@/common/methods/request/resultInfo";
-import { getAccountTypeList, getCanUseMoney } from "@/services/bus/account";
-import { getRules } from '@/services/bus/rules';
-import { AccountListItem } from "@/services/dataCenter/interafce/account";
-import { queryHoldLB, queryWrPosition } from '@/services/go/wrtrade';
-import { QueryWrPositionReq, WrHoldLB, WrOrderQuote, WrOrderQuoteDetail, WrPosition } from "@/services/go/wrtrade/interface";
-import { reactive, Ref, ref, UnwrapRef } from "vue";
-import { getGoodsPrice, handleIs } from "../../setup";
-import { ListingForm, Wrhold } from "./interface";
-
-export function handleForm(data: WrOrderQuoteDetail) {
-    const formRef = ref();
-    const formState: UnwrapRef<ListingForm> = reactive({
-        accountid: undefined,
-        num: 0,
-        LadingBillId: '',
-    })
-    const rules = {
-        accountid: [{ required: true, message: '请选择交易账户' }],
-        LadingBillId: [{ required: true, message: '请选择现货仓单' }],
-        num: [{ required: true, message: '请输入摘牌数量', trigger: 'blur', type: 'number', min: 1, ma: data.orderqty }],
-
-    }
-    return { rules, formState, formRef }
-}
-
-// 预售仓单汇总
-const wrPostion = ref<WrPosition[]>([])
-export function getWrPosition(enumName: EnumRouterName, buyOrSell: BuyOrSell, loading: Ref<boolean>) {
-    const { isWR, isBuy } = handleIs(enumName, buyOrSell)
-    if (isBuy() && !isWR()) {
-        const param: QueryWrPositionReq = {
-            haswr: 0,
-            querytype: 2,
-        };
-        queryResultLoadingAndInfo(queryWrPosition, loading, param).then(res => {
-            wrPostion.value = res;
-        })
-    }
-}
-
-const allWR = ref<WrHoldLB[]>([])
-// 处理现货仓单
-export function handleSpotWarrant(enumName: EnumRouterName, buyOrSell: BuyOrSell, selectedRow: WrOrderQuote, loading: Ref<boolean>) {
-    const { isWR, isBuy } = handleIs(enumName, buyOrSell)
-    const wrHoldList = ref<Wrhold[]>([])
-    if (isBuy()) {
-        if (isWR()) {
-            queryResultLoadingAndInfo(queryHoldLB, loading).then(res => {
-                allWR.value = res;
-                wrHoldList.value = res.filter((e: WrHoldLB) => e.wrfactortypeid === String(selectedRow.wrfactortypeid)).map((e: WrHoldLB) => {
-                    const { wrholdeno, enableqty, ladingbillid, enumdicname } = e
-                    return { id: ladingbillid, name: `${wrholdeno}(${enableqty}${enumdicname})` }
-                })
-            })
-        }
-    }
-    return { wrHoldList }
-}
-
-export function handleNumAndMoney(enumName: EnumRouterName, buyOrSell: BuyOrSell, selectedRow: WrOrderQuoteDetail, parantSelectedRow: WrOrderQuote, formState: UnwrapRef<ListingForm>) {
-    const { isWR, isBuy, isFloat } = handleIs(enumName, buyOrSell)
-    // 资金账号
-    const accountList = getAccountTypeList([2]);
-    // 获取选中的资金账号
-    const getSelectedAccount = () => accountList.find((e) => e.accountid === formState.accountid);
-    // 交易规则
-    const rules = getRules()
-    // 是否有规则
-    const hasRule = () => rules.length > 0;
-    const { buymarginvalue, buymarginalgorithm } = rules[0]
-    //保证金模式 1: 比率 2: 固定
-    const marginMethod = () => buymarginalgorithm === 1
-    const { fixedprice, orderqty, pricemove } = selectedRow;
-    // 获取摘牌最大可摘量
-    function getMaxNum() {
-        let result = 0;
-        if (hasRule()) {
-            // 可用资金
-            const canUseMoney = Number(getCanUseMoney(getSelectedAccount() as AccountListItem))
-            if (!isBuy()) {
-                if (isFloat()) {
-                    const goodsPrice = getGoodsPrice()
-                    // 估算总价=挂牌基差+期货合约价;
-                    if (goodsPrice.value && goodsPrice.value !== '--') {   // 有实时行情价格
-                        // 估算总价
-                        const predictTotal = pricemove + (goodsPrice.value as number);
-                        // 买方履约保证金比例*估算总价
-                        const marginMoney = marginMethod() ? (buymarginvalue * predictTotal) : (buymarginvalue + predictTotal)
-                        // 浮动价 摘买 最大数量=min{可用资金/(买方履约保证金比例*估算总价),挂牌数量}
-                        result = Math.min(orderqty, canUseMoney / marginMoney)
-                    }
-                } else {
-                    // 买方履约保证金比例*挂牌价格
-                    const marginMoney = marginMethod() ? (buymarginvalue * fixedprice) : (buymarginvalue + fixedprice)
-                    //  一口价 摘买 最大数量=min{挂牌数量,可用资金/(买方履约保证金比例*挂牌价格)
-                    result = Math.min(orderqty, canUseMoney / marginMoney)
-                }
-            } else {
-                if (isWR()) {
-                    if (formState.LadingBillId) {
-                        // 现货库存数量
-                        const warehouseNum = allWR.value.find((e) => e.ladingbillid === formState.LadingBillId)?.enableqty;
-                        // 仓单贸易 一口价/浮动价 摘卖 最大数量=min(现货库存可用数量,挂牌数量),现货库存数量为所选仓单数量
-                        if (warehouseNum) {
-                            result = Math.min(orderqty, warehouseNum)
-                        }
-                    }
-                } else {
-                    // 获取头寸
-                    const item = wrPostion.value.find(e => String(e.wrfactortypeid) === String(parantSelectedRow.wrfactortypeid))
-                    if (item) {
-                        result = item.enalbeqty
-                    }
-                }
-            }
-        }
-        return Math.floor(result)
-    }
-    //  摘牌金额
-    function getMoney() {
-        let result = 0
-        if (isFloat()) {
-            const goodsPrice = getGoodsPrice()
-            if (goodsPrice.value && goodsPrice.value !== '--') {   // 有实时行情价格
-                // 估算总价=挂牌基差+期货合约价;
-                const predictTotal = pricemove + (goodsPrice.value as number);
-                // 估算总额=估算总价*摘牌数量;
-                result = predictTotal * formState.num
-            }
-        } else {
-            // 摘牌金额=挂牌价格*摘牌数量
-            result = formState.num * fixedprice
-        }
-        return Number(result.toFixed(2))
-    }
-    // 履约保证金
-    function getMargin() {
-        // fixed sell  履约保证金=卖方履约保证金比例*摘牌金额
-        // fixed bull  履约保证金=买方履约保证金比例*摘牌金额
-        // floor sell  履约保证金=卖方履约保证金比例*估算总额,履约保证金为0则括号内容不显示
-        //  floor  buy 履约保证金=买方履约保证金比例*估算总额
-        let result = 0
-        if (hasRule()) {
-            const { buymarginvalue, sellmarginvalue } = rules[0]
-            const margin = isBuy() ? sellmarginvalue : buymarginvalue
-            result = marginMethod() ? margin * getMoney() : margin + getMoney()
-        }
-        return Number(result.toFixed(2))
-    }
-    return { getMaxNum, getMoney, getMargin }
-}

+ 23 - 94
src/views/market/spot_trade/spot_trade_order_transaction/components/buy-sell-market/index.vue

@@ -7,17 +7,7 @@
         <LeftOutlined />
       </a>
       <div class="titleBtn">
-        <div class="name">{{selectedRow.deliverygoodsname}}</div>
-        <div class="arrowRightIcon"></div>
-      </div>
-      <div class="titleBtn titleBtn2">
-        <div class="arrowLeftIcon"></div>
-        <div class="name">{{selectedRow.wrgoodsname}}</div>
-        <div class="arrowRightIcon"></div>
-      </div>
-      <div class="titleBtn titleBtn2">
-        <div class="arrowLeftIcon"></div>
-        <div class="name">{{selectedRow.warehousename}}</div>
+        <div class="name">{{selectedRow.goodscode}} {{selectedRow.goodsname}}</div>
         <div class="arrowRightIcon"></div>
       </div>
       <div class="green bdf1 ml20">
@@ -40,59 +30,42 @@
           <div class="last">{{selectedRow.buyqty}}</div>
         </div>
       </div>
-      <BtnList :btnList="firstBtn"
+      <BtnList :btnList="btnListData"
                :record="selectedRow"
                @click="openComponent" />
     </div>
     <a-row class="buySellHall">
-      <a-col :span="12"
-             v-if="sellMarket.isMarket">
-        <Sell :enumName="enumName"
-              ref="sellRef"
-              :parantSelectedRow="selectedRow"
-              :time="time"
-              :btnList="handleBtnList(sellMarket.btnList)" />
+      <a-col :span="12">
+        <Sell ref="sellRef"
+              :parantSelectedRow="selectedRow" />
       </a-col>
-      <a-col :span="12"
-             v-if="buyMarket.isMarket">
-        <Buy :enumName="enumName"
-             ref="buyRef"
-             :time="time"
-             :parantSelectedRow="selectedRow"
-             :btnList="handleBtnList(buyMarket.btnList)" />
+      <a-col :span="12">
+        <Buy ref="buyRef"
+             :parantSelectedRow="selectedRow" />
       </a-col>
     </a-row>
     <component :is="componentId"
                v-if="componentId"
                :selectedRow="selectedRow"
-               :goodsPrice="getGoodsPrice()"
-               :enumName="enumName"
-               :time="time"
                @cancel="closeComponent"></component>
   </div>
 </template>
 
 <script lang="ts">
 import { EnumRouterName } from '@/common/constants/enumRouterName';
-import { defineAsyncComponent, defineComponent, BtnList, ModalEnum } from '@/common/export/commonTable';
+import { defineAsyncComponent, defineComponent, BtnList } from '@/common/export/commonTable';
 import { _closeModal } from '@/common/setup/modal/modal';
 import { WrOrderQuote } from '@/services/go/wrtrade/interface';
 import { LeftOutlined } from '@ant-design/icons-vue';
-import { handleFinacing, handleIs, setGoodsPrice } from './setup';
-import Buy from './components/buy/index.vue';
-import Sell from './components/sell/index.vue';
-import { LineChartOutlined, DownOutlined } from '@ant-design/icons-vue';
+import Buy from '../buy-market/index.vue';
+import Sell from '../sell-market/index.vue';
 import { handleModalComponent } from '@/common/setup/asyncComponent';
-import { onMounted, PropType, ref } from 'vue';
-import { handleSpotBtnList } from '../../../setup';
-import { v4 } from 'uuid';
-import { addSubscribeQuotation, removeSubscribeQuotation } from '@/services/socket/quota';
+import { onBeforeUnmount, onMounted, PropType, ref } from 'vue';
+
 import Bus from '@/utils/eventBus/index';
-import { getQuoteDayInfoByCodeFindPrice } from '@/services/bus/goods';
 import TimerUtils from '@/utils/timer/timerUtil';
-import { BtnList as BtnListType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import moment, { Moment } from 'moment';
-import { BuyOrSell } from '@/common/constants/enumCommon';
 
 export default defineComponent({
     emits: ['cancel', 'update'],
@@ -102,45 +75,26 @@ export default defineComponent({
             type: Object as PropType<WrOrderQuote>,
             default: {},
         },
-        enumName: {
-            default: '',
-            type: String as PropType<EnumRouterName>,
-        },
     },
     components: {
         Buy,
         Sell,
         BtnList,
         LeftOutlined,
-        DownOutlined,
-        LineChartOutlined,
-        // [ModalEnum.spot_trade_warehouse_detail]: defineAsyncComponent(() => import('../detail/index.vue')),
-        // [ModalEnum.spot_trade_warehouse_post_buying]: defineAsyncComponent(() => import('../post_buying/index.vue')),
+        Listing: defineAsyncComponent(() => import('../listing/index.vue')),
+        Detail: defineAsyncComponent(() => import('../detail/index.vue')),
     },
     setup(props, context) {
         const time = ref<Moment>(moment(props.selectedRow.deliverymonth)); // string 交收月
         const loading = ref<boolean>(false);
         const { visible, cancel } = _closeModal(context);
 
-        const { isWR, isFloat } = handleIs(props.enumName, BuyOrSell.buy);
-        // 买卖大厅 配置数据
-        // 表格操作按钮列表
-        const { firstBtn, buyMarket, sellMarket } = handleSpotBtnList(props.enumName);
-        // 获取浮动价商品实时价格
+        const btnListData: BtnListType[] = [
+            { lable: '挂牌求购', code: 'Listing', className: 'operBtn' },
+            { lable: '详情', code: 'Detail', className: 'btnDeafault' },
+        ];
 
-        function getGoodsPrice() {
-            const result = getQuoteDayInfoByCodeFindPrice(props.selectedRow.goodscode);
-            setGoodsPrice(result);
-            return result;
-        }
-        const uuid = v4();
-        if (isFloat()) {
-            // 如果是浮动价需要行情订阅
-            const arr = [{ exchangeCode: 250, goodsCode: props.selectedRow.goodscode, subState: 0 }];
-            addSubscribeQuotation(uuid, arr);
-        }
-        onMounted(() => {
-            removeSubscribeQuotation(uuid);
+        onBeforeUnmount(() => {
             TimerUtils.clearInterval('buyAndSellMartet');
             TimerUtils.clearTimeout('debounce');
         });
@@ -151,23 +105,7 @@ export default defineComponent({
             sellRef.value?.queryTableAction();
         };
         const { componentId, closeComponent, openComponent } = handleModalComponent(queryFn, ref({}));
-        const { hasFinacing } = handleFinacing(loading, props.selectedRow.wrfactortypeid);
-        function handleBtnList(list: BtnListType[]) {
-            if (!hasFinacing()) {
-                return list.filter((e) => e.code !== 'spot_trade_warehouse_financing_delisting');
-            } else {
-                return list;
-            }
-        }
-        function timeChange() {
-            TimerUtils.setTimeout(
-                () => {
-                    queryFn();
-                },
-                200,
-                'debounce'
-            );
-        }
+
         TimerUtils.setInterval(
             () => {
                 queryFn();
@@ -179,23 +117,14 @@ export default defineComponent({
         Bus.$on('spotTrade', queryFn);
 
         return {
-            time,
             buyRef,
             sellRef,
             cancel,
-            isFloat,
-            getGoodsPrice,
             visible,
-            firstBtn,
-            buyMarket,
-            sellMarket,
             componentId,
             closeComponent,
             openComponent,
-            enumName: props.enumName,
-            handleBtnList,
-            isWR,
-            timeChange,
+            btnListData,
         };
     },
 });

+ 354 - 0
src/views/market/spot_trade/spot_trade_order_transaction/components/delisting/index.vue

@@ -0,0 +1,354 @@
+<template>
+  <!-- 仓单贸易&仓单预售 买/卖 摘牌 -->
+  <Drawer :title="'摘牌'"
+          :placement="'right'"
+          :visible="visible"
+          width="486px"
+          height="479px"
+          @cancel="cancel"
+          class="top">
+    <div class="delisting">
+      <a-form class="inlineForm dialogForm"
+              ref="formRef"
+              :model="formState"
+              :rules="rules">
+        <div class="formBar">
+          <a-row :gutter="24">
+            <a-col :span="24">
+              <a-form-item label="交易账户"
+                           name="accountid">
+                <a-select class="inlineFormSelect"
+                          style="width: 260px"
+                          v-model:value="formState.accountid"
+                          placeholder="请选择">
+                  <a-select-option v-for="item in accountList"
+                                   :value="item.accountid"
+                                   :key="item.accountid">{{item.accountid}}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row :gutter="24">
+            <a-col :span="24">
+              <a-form-item label="挂牌方">
+                <span class="white ml8">{{selectedRow.username}}</span>
+              </a-form-item>
+            </a-col>
+            <a-col :span="24">
+              <a-form-item label="挂牌价格">
+                <span class="white ml8">{{selectedRow.username}}</span>
+              </a-form-item>
+            </a-col>
+            <a-col :span="24">
+              <a-form-item label="挂牌数量">
+                <span class="white ml8">{{selectedRow.username}}</span>
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row :gutter="24">
+            <a-col :span="24">
+              <a-form-item label="摘牌数量"
+                           class="relative"
+                           name="num">
+                <a-input-number class="dialogInput yellowInput"
+                                style="width: 260px"
+                                :min="0"
+                                :max="99999"
+                                v-model:value="formState.num" />
+                <span class="input-enumdicname-absolute">{{selectedRow.enumdicname}}</span>
+                <div class="labelTip">({{selectedRow.minivalue}}{{selectedRow.enumdicname}}起)</div>
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row :gutter="24">
+            <a-col :span="24"
+                   class="mt-20">
+              <a-form-item>
+                <a-slider ::min="0"
+                          v-model:value="formState.num"
+                          :max="selectedRow.orderqty"
+                          class="formSlider"
+                          style="width: 260px" />
+                <div class="unit">
+                  <span>0</span>
+                  <span>99999{{selectedRow.enumdicname}}</span>
+                </div>
+              </a-form-item>
+            </a-col>
+            <a-col :span="12">&nbsp;</a-col>
+          </a-row>
+          <a-row :gutter="24">
+            <a-col :span="24"
+                   class="mt-20">
+              <a-form-item label="摘牌金额">
+                <span class="white ml8">{{getMoney()}}</span>
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row :gutter="24">
+            <a-col :span="24">
+              <a-form-item label="可用资金">
+                <span class="white ml8">{{getCanUseMoney(getSelectedAccount())}}</span>
+              </a-form-item>
+            </a-col>
+          </a-row>
+        </div>
+        <a-row :gutter="24">
+          <a-col :span="24"
+                 class="fixedBtns">
+            <a-form-item class="btnCenter">
+              <a-button class="listedBtn"
+                        :loading="loading"
+                        :disabled="loading"
+                        @click="submit">{{isBuy() ? '卖出' : '买入'}}</a-button>
+              <a-button class="ml10 cancelBtn"
+                        @click="cancel">取消</a-button>
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+  </Drawer>
+</template>
+
+<script lang="ts">
+import { PlusOutlined, MinusOutlined } from '@ant-design/icons-vue';
+import { defineComponent, PropType, ref } from 'vue';
+import Drawer from '@/common/components/drawer/index.vue';
+import { WrOrderQuote, WrOrderQuoteDetail } from '@/services/go/wrtrade/interface';
+import { getAccountTypeList, getSelectedAccountId, getUserId } from '@/services/bus/account';
+import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
+import { HdWRDealOrder } from '@/services/proto/warehousetrade';
+import { v4 as uuidv4 } from 'uuid';
+import moment from 'moment';
+import { ModalEnum } from '@/common/constants/modalNameEnum';
+import { HdWRDealOrderReq } from '@/services/proto/warehousetrade/interface';
+import { _closeModal } from '@/common/setup/modal/modal';
+import { handleForm } from './setup';
+import { validateAction } from '@/common/setup/form';
+import { ListingForm, TempWrOrderQuoteDetail } from './interface';
+import { BuyOrSell } from '@/common/constants/enumCommon';
+import { EnumRouterName } from '@/common/constants/enumRouterName';
+import { getCanUseMoney } from '@/services/bus/account';
+export default defineComponent({
+    name: ModalEnum.spot_trade_warehouse_financing_delisting,
+    components: { Drawer, PlusOutlined, MinusOutlined },
+    emits: ['cancel', 'update'],
+    props: {
+        enumName: {
+            default: '',
+            type: String as PropType<EnumRouterName>,
+        },
+        selectedRow: {
+            type: Object as PropType<TempWrOrderQuoteDetail>,
+            default: {},
+        },
+        parantSelectedRow: {
+            type: Object as PropType<WrOrderQuote>,
+            default: {},
+        },
+        buyOrSell: {
+            type: Number as PropType<BuyOrSell>,
+            default: BuyOrSell.buy,
+        },
+    },
+
+    setup(props, context) {
+        const { visible, cancel } = _closeModal(context);
+        // 资金账号
+        const accountList = getAccountTypeList([2]);
+        const { rules, formState, formRef } = handleForm(props.selectedRow);
+        if (accountList.length) {
+            formState.accountid = accountList[0].accountid;
+        }
+        function getSelectedAccount() {
+            return accountList.find((e) => e.accountid === formState.accountid);
+        }
+        const loading = ref<boolean>(false);
+        function isBuy() {
+            return props.buyOrSell === BuyOrSell.buy;
+        }
+        function getMoney() {}
+        // const { getMaxNum, getMoney, getMargin } = handleNumAndMoney(props.enumName, props.buyOrSell, props.selectedRow, props.parantSelectedRow, formState);
+        function submit() {
+            // validateAction<ListingForm>(formRef, formState).then((res) => {
+            //     // 首先确定  这是仓单贸易的有仓单挂摘牌 HasWr = 1
+            //     // 其次判断  摘牌 1。摘买 (需要通过自己的仓单进行摘买)  2。摘卖 (不需要通过仓单)
+            //     const param: HdWRDealOrderReq = {
+            //         UserID: getUserId(), // uint32 用户ID
+            //         AccountID: getSelectedAccountId(), // uint64 资金账号
+            //         RelatedWRTradeOrderID: props.selectedRow.wrtradeorderid, // uint64 关联委托单号(摘牌委托关联挂牌委托单ID)
+            //         WRTransferUserID: props.selectedRow.userid, // uint32 仓单受让用户
+            //         OrderQty: res.num as number, // uint64 委托数量
+            //         OrderSrc: 0, // uint32 委托来源
+            //         ClientSerialNo: uuidv4(), // string 客户端流水号
+            //         ClientOrderTime: moment(new Date()).format('YYYY-MM-DD HH:mm:ss'), // string 客户端委托时间
+            //         ClientType: 4, // uint32 终端类型
+            //         OperatorID: getUserId(), // uint64 操作员账号ID
+            //         BuyOrSell: 0, // uint32 买卖方向
+            //         ApplyID: 0, // uint64 申请ID
+            //         // LadingBillId: 0, // uint64 提单id(wrholdlb的LadingBillId字段),卖的时候填写
+            //         SubNum: 0, // uint64 提单子单号(wrholdlb的SubNum字段),卖的时候填写
+            //         WRFactorTypeId: props.parantSelectedRow.wrfactortypeid, // uint64 仓单要素ID(wrholdlb的WRFactorTypeId字段),卖的时候填写
+            //         TradeDate: moment().format('YYYYMMDD'), // string 交易日
+            //         DeliveryMonth: '', // string 交收月
+            //         HasWr: isWR(), // uint32 是否有仓单-0:没有仓单 1:有仓单
+            //         IsFinancing: 0, // uint32 是否融资购买(买摘牌时有效)-0:否 1:是
+            //         ProductDetailID: 0, // uint64 金融机构产品组合ID(融资购买时有效)
+            //     };
+            //     // 摘买方向
+            //     if (isBuy()) {
+            //         param.BuyOrSell = 1;
+            //         param.LadingBillId = res.LadingBillId;
+            //     } else {
+            //         param.BuyOrSell = 0;
+            //     }
+            //     requestResultLoadingAndInfo(HdWRDealOrder, param, loading, ['摘牌成功', '摘牌失败:']).then(() => {
+            //         cancel(true);
+            //     });
+            // });
+        }
+
+        return {
+            visible,
+            cancel,
+            accountList,
+            loading,
+            submit,
+            isBuy,
+            rules,
+            formState,
+            formRef,
+            getCanUseMoney,
+            getSelectedAccount,
+            getMoney,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.delisting {
+    width: 100%;
+    height: 100%;
+    .flex;
+    flex-direction: column;
+    overflow: hidden;
+    .condition {
+        width: 100%;
+        height: 48px;
+        margin: 0 16px;
+        padding: 10px 0;
+        border-bottom: 1px solid @m-black6;
+        .inlineflex;
+        .conditionBtn {
+            align-self: center;
+            align-items: center;
+            border: 0;
+            min-width: 80px;
+            height: 28px;
+            line-height: 28px;
+            background: @m-black7;
+            .rounded-corners(3px);
+            font-size: 14px;
+            color: @m-blue0;
+            &:hover {
+                background: @m-black7-hover;
+                color: @m-blue0-hover;
+            }
+        }
+        .conditionBtn + .conditionBtn {
+            margin-left: 10px;
+        }
+    }
+    .ant-form {
+        height: 100%;
+    }
+}
+::v-deep.ant-slider.formSlider {
+    width: 260px;
+}
+::v-deep.ant-input-suffix {
+    position: absolute;
+    right: -25px;
+}
+.unit {
+    margin-left: 70px;
+    width: 260px;
+    .flex;
+    justify-content: space-between;
+    font-size: 14px;
+    color: @m-grey41;
+    height: 14px;
+    line-height: 14px;
+}
+.listedBtn {
+    width: 120px;
+    height: 30px;
+    line-height: 30px;
+    background: linear-gradient(0deg, @m-blue2 0%, @m-blue0 100%);
+    border-radius: 3px;
+    color: @m-white0;
+    font-size: 14px;
+    text-align: center;
+    border: 0;
+    &:hover {
+        background: linear-gradient(0deg, @m-blue0-hover 0%, @m-blue2-hover 100%);
+        color: @m-white0-hover;
+    }
+}
+.cancelBtn:extend(.listedBtn) {
+    background: linear-gradient(0deg, @m-grey12 0%, @m-grey13 100%) !important;
+    &:hover {
+        background: linear-gradient(0deg, @m-grey12-hover 0%, @m-grey13-hover 100%) !important;
+        color: @m-white0-hover;
+    }
+}
+.ml10 {
+    margin-left: 10px;
+}
+.ant-form.dialogForm .ant-row.ant-form-item {
+    margin-bottom: 14px;
+}
+.mt20 {
+    margin-top: 20px;
+}
+.mt-20 {
+    margin-top: -20px;
+}
+.labelTip {
+    font-size: 14px;
+    color: @m-blue16;
+    position: absolute;
+    top: 15px;
+    left: -66px;
+}
+.minusBtn,
+.plusBtn {
+    width: 15px;
+    height: 32px;
+    line-height: 32px;
+    font-size: 15px;
+    color: @m-blue15;
+    cursor: pointer;
+}
+.minusBtn {
+    position: absolute;
+    top: -6px;
+    left: 14px;
+    z-index: 1;
+}
+.plusBtn {
+    position: absolute;
+    top: -6px;
+    right: 14px;
+    z-index: 1;
+}
+.stepper {
+    padding-left: 30px;
+    padding-right: 30px;
+    text-align: center;
+    color: @m-yellow1;
+    font-size: 16px;
+}
+</style>;

+ 0 - 0
src/views/market/spot_trade/spot_trade_order_transaction/components/buy-sell-market/components/delisting/interface.ts → src/views/market/spot_trade/spot_trade_order_transaction/components/delisting/interface.ts


+ 19 - 0
src/views/market/spot_trade/spot_trade_order_transaction/components/delisting/setup.ts

@@ -0,0 +1,19 @@
+import { WrOrderQuoteDetail } from "@/services/go/wrtrade/interface";
+import { reactive, ref, UnwrapRef } from "vue";
+import { ListingForm } from "./interface";
+
+export function handleForm(data: WrOrderQuoteDetail) {
+    const formRef = ref();
+    const formState: UnwrapRef<ListingForm> = reactive({
+        accountid: undefined,
+        num: 0,
+        LadingBillId: '',
+    })
+    const rules = {
+        accountid: [{ required: true, message: '请选择交易账户' }],
+        LadingBillId: [{ required: true, message: '请选择现货仓单' }],
+        num: [{ required: true, message: '请输入摘牌数量', trigger: 'blur', type: 'number', min: 1, ma: data.orderqty }],
+
+    }
+    return { rules, formState, formRef }
+}

+ 170 - 0
src/views/market/spot_trade/spot_trade_order_transaction/components/detail/index.vue

@@ -0,0 +1,170 @@
+<template>
+  <Drawer :title="'详情'"
+          :placement="'right'"
+          :visible="visible"
+          width="486px"
+          height="479px"
+          @cancel="cancel"
+          class="top">
+    <div class="delisting">
+
+    </div>
+  </Drawer>
+</template>
+
+<script lang="ts">
+import { defineComponent, PropType, ref } from 'vue';
+import Drawer from '@/common/components/drawer/index.vue';
+import { WrOrderQuote } from '@/services/go/wrtrade/interface';
+
+import { _closeModal } from '@/common/setup/modal/modal';
+
+export default defineComponent({
+    name: 'detail',
+    components: { Drawer },
+    emits: ['cancel', 'update'],
+    props: {
+        selectedRow: {
+            type: Object as PropType<WrOrderQuote>,
+            default: {},
+        },
+    },
+
+    setup(props, context) {
+        const { visible, cancel } = _closeModal(context);
+
+        const loading = ref<boolean>(false);
+
+        return {
+            visible,
+            cancel,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.delisting {
+    width: 100%;
+    height: 100%;
+    .flex;
+    flex-direction: column;
+    overflow: hidden;
+    .condition {
+        width: 100%;
+        height: 48px;
+        margin: 0 16px;
+        padding: 10px 0;
+        border-bottom: 1px solid @m-black6;
+        .inlineflex;
+        .conditionBtn {
+            align-self: center;
+            align-items: center;
+            border: 0;
+            min-width: 80px;
+            height: 28px;
+            line-height: 28px;
+            background: @m-black7;
+            .rounded-corners(3px);
+            font-size: 14px;
+            color: @m-blue0;
+            &:hover {
+                background: @m-black7-hover;
+                color: @m-blue0-hover;
+            }
+        }
+        .conditionBtn + .conditionBtn {
+            margin-left: 10px;
+        }
+    }
+    .ant-form {
+        height: 100%;
+    }
+}
+::v-deep.ant-slider.formSlider {
+    width: 260px;
+}
+::v-deep.ant-input-suffix {
+    position: absolute;
+    right: -25px;
+}
+.unit {
+    margin-left: 70px;
+    width: 260px;
+    .flex;
+    justify-content: space-between;
+    font-size: 14px;
+    color: @m-grey41;
+    height: 14px;
+    line-height: 14px;
+}
+.listedBtn {
+    width: 120px;
+    height: 30px;
+    line-height: 30px;
+    background: linear-gradient(0deg, @m-blue2 0%, @m-blue0 100%);
+    border-radius: 3px;
+    color: @m-white0;
+    font-size: 14px;
+    text-align: center;
+    border: 0;
+    &:hover {
+        background: linear-gradient(0deg, @m-blue0-hover 0%, @m-blue2-hover 100%);
+        color: @m-white0-hover;
+    }
+}
+.cancelBtn:extend(.listedBtn) {
+    background: linear-gradient(0deg, @m-grey12 0%, @m-grey13 100%) !important;
+    &:hover {
+        background: linear-gradient(0deg, @m-grey12-hover 0%, @m-grey13-hover 100%) !important;
+        color: @m-white0-hover;
+    }
+}
+.ml10 {
+    margin-left: 10px;
+}
+.ant-form.dialogForm .ant-row.ant-form-item {
+    margin-bottom: 14px;
+}
+.mt20 {
+    margin-top: 20px;
+}
+.mt-20 {
+    margin-top: -20px;
+}
+.labelTip {
+    font-size: 14px;
+    color: @m-blue16;
+    position: absolute;
+    top: 15px;
+    left: -66px;
+}
+.minusBtn,
+.plusBtn {
+    width: 15px;
+    height: 32px;
+    line-height: 32px;
+    font-size: 15px;
+    color: @m-blue15;
+    cursor: pointer;
+}
+.minusBtn {
+    position: absolute;
+    top: -6px;
+    left: 14px;
+    z-index: 1;
+}
+.plusBtn {
+    position: absolute;
+    top: -6px;
+    right: 14px;
+    z-index: 1;
+}
+.stepper {
+    padding-left: 30px;
+    padding-right: 30px;
+    text-align: center;
+    color: @m-yellow1;
+    font-size: 16px;
+}
+</style>;

+ 333 - 0
src/views/market/spot_trade/spot_trade_order_transaction/components/listing/index.vue

@@ -0,0 +1,333 @@
+<template>
+  <Drawer :title="'挂牌'"
+          :placement="'right'"
+          :visible="visible"
+          width="486px"
+          height="479px"
+          @cancel="cancel"
+          class="top">
+    <div class="delisting">
+      <a-form class="inlineForm dialogForm"
+              ref="formRef"
+              :model="formState"
+              :rules="rules">
+        <div class="formBar">
+          <a-row :gutter="24">
+            <a-col :span="24">
+              <a-form-item label="交易账户"
+                           name="accountid">
+                <a-select class="inlineFormSelect"
+                          style="width: 260px"
+                          v-model:value="formState.accountid"
+                          placeholder="请选择">
+                  <a-select-option v-for="item in accountList"
+                                   :value="item.accountid"
+                                   :key="item.accountid">{{item.accountid}}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row :gutter="24">
+            <a-col :span="24">
+              <a-form-item label="挂牌价格"
+                           class="relative"
+                           name="price">
+                <a-input-number class="dialogInput yellowInput"
+                                style="width: 260px"
+                                :min="0"
+                                :max="99999"
+                                v-model:value="formState.price" />
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row :gutter="24">
+            <a-col :span="24">
+              <a-form-item label="挂牌数量"
+                           class="relative"
+                           name="num">
+                <a-input-number class="dialogInput yellowInput"
+                                style="width: 260px"
+                                :min="0"
+                                :max="99999"
+                                v-model:value="formState.num" />
+                <span class="input-enumdicname-absolute">{{selectedRow.enumdicname}}</span>
+                <!-- <div class="labelTip">({{selectedRow.minivalue}}{{selectedRow.enumdicname}}起)</div> -->
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row :gutter="24">
+            <a-col :span="24"
+                   class="mt-20">
+              <a-form-item>
+                <a-slider ::min="0"
+                          v-model:value="formState.num"
+                          :max="selectedRow.orderqty"
+                          class="formSlider"
+                          style="width: 260px" />
+                <div class="unit">
+                  <span>0</span>
+                  <span>99999{{selectedRow.enumdicname}}</span>
+                </div>
+              </a-form-item>
+            </a-col>
+            <a-col :span="12">&nbsp;</a-col>
+          </a-row>
+          <a-row :gutter="24">
+            <a-col :span="24"
+                   class="mt-20">
+              <a-form-item label="挂牌金额">
+                <span class="white ml8">{{getMoney()}}</span>
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row :gutter="24">
+            <a-col :span="24">
+              <a-form-item label="可用资金">
+                <span class="white ml8">{{getCanUseMoney(getSelectedAccount())}}</span>
+              </a-form-item>
+            </a-col>
+          </a-row>
+        </div>
+        <a-row :gutter="24">
+          <a-col :span="24"
+                 class="fixedBtns">
+            <a-form-item class="btnCenter">
+              <a-button class="listedBtn"
+                        :loading="loading"
+                        :disabled="loading"
+                        @click="submit">买入</a-button>
+              <a-button class="ml10 cancelBtn"
+                        @click="cancel">取消</a-button>
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+  </Drawer>
+</template>
+
+<script lang="ts">
+import { PlusOutlined, MinusOutlined } from '@ant-design/icons-vue';
+import { defineComponent, PropType, ref } from 'vue';
+import Drawer from '@/common/components/drawer/index.vue';
+import { WrOrderQuote, WrOrderQuoteDetail } from '@/services/go/wrtrade/interface';
+import { getAccountTypeList, getSelectedAccountId, getUserId } from '@/services/bus/account';
+import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
+import { HdWRDealOrder } from '@/services/proto/warehousetrade';
+import { v4 as uuidv4 } from 'uuid';
+import moment from 'moment';
+import { ModalEnum } from '@/common/constants/modalNameEnum';
+import { HdWRDealOrderReq } from '@/services/proto/warehousetrade/interface';
+import { _closeModal } from '@/common/setup/modal/modal';
+import { handleForm } from './setup';
+import { validateAction } from '@/common/setup/form';
+import { FormState } from './interface';
+import { BuyOrSell } from '@/common/constants/enumCommon';
+import { EnumRouterName } from '@/common/constants/enumRouterName';
+import { getCanUseMoney } from '@/services/bus/account';
+export default defineComponent({
+    name: ModalEnum.spot_trade_warehouse_financing_delisting,
+    components: { Drawer, PlusOutlined, MinusOutlined },
+    emits: ['cancel', 'update'],
+    props: {
+        selectedRow: {
+            type: Object as PropType<WrOrderQuote>,
+            default: {},
+        },
+    },
+
+    setup(props, context) {
+        const { visible, cancel } = _closeModal(context);
+        // 资金账号
+        const accountList = getAccountTypeList([2]);
+        const { rules, formState, formRef } = handleForm();
+        if (accountList.length) {
+            formState.accountid = accountList[0].accountid;
+        }
+        function getSelectedAccount() {
+            return accountList.find((e) => e.accountid === formState.accountid);
+        }
+        const loading = ref<boolean>(false);
+        function getMoney() {}
+        // const { getMaxNum, getMoney, getMargin } = handleNumAndMoney(props.enumName, props.buyOrSell, props.selectedRow, props.parantSelectedRow, formState);
+        function submit() {
+            // validateAction<FormState>(formRef, formState).then((res) => {
+            //     // 首先确定  这是仓单贸易的有仓单挂摘牌 HasWr = 1
+            //     // 其次判断  摘牌 1。摘买 (需要通过自己的仓单进行摘买)  2。摘卖 (不需要通过仓单)
+            //     const param: HdWRDealOrderReq = {
+            //         UserID: getUserId(), // uint32 用户ID
+            //         AccountID: getSelectedAccountId(), // uint64 资金账号
+            //         RelatedWRTradeOrderID: props.selectedRow.wrtradeorderid, // uint64 关联委托单号(摘牌委托关联挂牌委托单ID)
+            //         WRTransferUserID: props.selectedRow.userid, // uint32 仓单受让用户
+            //         OrderQty: res.num as number, // uint64 委托数量
+            //         OrderSrc: 0, // uint32 委托来源
+            //         ClientSerialNo: uuidv4(), // string 客户端流水号
+            //         ClientOrderTime: moment(new Date()).format('YYYY-MM-DD HH:mm:ss'), // string 客户端委托时间
+            //         ClientType: 4, // uint32 终端类型
+            //         OperatorID: getUserId(), // uint64 操作员账号ID
+            //         BuyOrSell: 0, // uint32 买卖方向
+            //         ApplyID: 0, // uint64 申请ID
+            //         // LadingBillId: 0, // uint64 提单id(wrholdlb的LadingBillId字段),卖的时候填写
+            //         SubNum: 0, // uint64 提单子单号(wrholdlb的SubNum字段),卖的时候填写
+            //         WRFactorTypeId: props.parantSelectedRow.wrfactortypeid, // uint64 仓单要素ID(wrholdlb的WRFactorTypeId字段),卖的时候填写
+            //         TradeDate: moment().format('YYYYMMDD'), // string 交易日
+            //         DeliveryMonth: '', // string 交收月
+            //         HasWr: isWR(), // uint32 是否有仓单-0:没有仓单 1:有仓单
+            //         IsFinancing: 0, // uint32 是否融资购买(买摘牌时有效)-0:否 1:是
+            //         ProductDetailID: 0, // uint64 金融机构产品组合ID(融资购买时有效)
+            //     };
+            //     // 摘买方向
+            //     if (isBuy()) {
+            //         param.BuyOrSell = 1;
+            //         param.LadingBillId = res.LadingBillId;
+            //     } else {
+            //         param.BuyOrSell = 0;
+            //     }
+            //     requestResultLoadingAndInfo(HdWRDealOrder, param, loading, ['摘牌成功', '摘牌失败:']).then(() => {
+            //         cancel(true);
+            //     });
+            // });
+        }
+
+        return {
+            visible,
+            cancel,
+            accountList,
+            loading,
+            submit,
+            rules,
+            formState,
+            formRef,
+            getCanUseMoney,
+            getSelectedAccount,
+            getMoney,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.delisting {
+    width: 100%;
+    height: 100%;
+    .flex;
+    flex-direction: column;
+    overflow: hidden;
+    .condition {
+        width: 100%;
+        height: 48px;
+        margin: 0 16px;
+        padding: 10px 0;
+        border-bottom: 1px solid @m-black6;
+        .inlineflex;
+        .conditionBtn {
+            align-self: center;
+            align-items: center;
+            border: 0;
+            min-width: 80px;
+            height: 28px;
+            line-height: 28px;
+            background: @m-black7;
+            .rounded-corners(3px);
+            font-size: 14px;
+            color: @m-blue0;
+            &:hover {
+                background: @m-black7-hover;
+                color: @m-blue0-hover;
+            }
+        }
+        .conditionBtn + .conditionBtn {
+            margin-left: 10px;
+        }
+    }
+    .ant-form {
+        height: 100%;
+    }
+}
+::v-deep.ant-slider.formSlider {
+    width: 260px;
+}
+::v-deep.ant-input-suffix {
+    position: absolute;
+    right: -25px;
+}
+.unit {
+    margin-left: 70px;
+    width: 260px;
+    .flex;
+    justify-content: space-between;
+    font-size: 14px;
+    color: @m-grey41;
+    height: 14px;
+    line-height: 14px;
+}
+.listedBtn {
+    width: 120px;
+    height: 30px;
+    line-height: 30px;
+    background: linear-gradient(0deg, @m-blue2 0%, @m-blue0 100%);
+    border-radius: 3px;
+    color: @m-white0;
+    font-size: 14px;
+    text-align: center;
+    border: 0;
+    &:hover {
+        background: linear-gradient(0deg, @m-blue0-hover 0%, @m-blue2-hover 100%);
+        color: @m-white0-hover;
+    }
+}
+.cancelBtn:extend(.listedBtn) {
+    background: linear-gradient(0deg, @m-grey12 0%, @m-grey13 100%) !important;
+    &:hover {
+        background: linear-gradient(0deg, @m-grey12-hover 0%, @m-grey13-hover 100%) !important;
+        color: @m-white0-hover;
+    }
+}
+.ml10 {
+    margin-left: 10px;
+}
+.ant-form.dialogForm .ant-row.ant-form-item {
+    margin-bottom: 14px;
+}
+.mt20 {
+    margin-top: 20px;
+}
+.mt-20 {
+    margin-top: -20px;
+}
+.labelTip {
+    font-size: 14px;
+    color: @m-blue16;
+    position: absolute;
+    top: 15px;
+    left: -66px;
+}
+.minusBtn,
+.plusBtn {
+    width: 15px;
+    height: 32px;
+    line-height: 32px;
+    font-size: 15px;
+    color: @m-blue15;
+    cursor: pointer;
+}
+.minusBtn {
+    position: absolute;
+    top: -6px;
+    left: 14px;
+    z-index: 1;
+}
+.plusBtn {
+    position: absolute;
+    top: -6px;
+    right: 14px;
+    z-index: 1;
+}
+.stepper {
+    padding-left: 30px;
+    padding-right: 30px;
+    text-align: center;
+    color: @m-yellow1;
+    font-size: 16px;
+}
+</style>;

+ 6 - 0
src/views/market/spot_trade/spot_trade_order_transaction/components/listing/interface.ts

@@ -0,0 +1,6 @@
+
+export interface FormState {
+    accountid: undefined | number,
+    num: number,
+    price: number,
+}

+ 19 - 0
src/views/market/spot_trade/spot_trade_order_transaction/components/listing/setup.ts

@@ -0,0 +1,19 @@
+import { reactive, ref, UnwrapRef } from "vue";
+import { FormState } from "./interface";
+
+export function handleForm() {
+    const formRef = ref();
+    const formState: UnwrapRef<FormState> = reactive({
+        accountid: undefined,
+        num: 0,
+        price: 0,
+    })
+    const rules = {
+        accountid: [{ required: true, message: '请选择交易账户' }],
+        LadingBillId: [{ required: true, message: '请选择现货仓单' }],
+        num: [{ required: true, message: '请输入挂牌数量', trigger: 'blur', type: 'number' }],
+        price: [{ required: true, message: '请输入挂牌价格', trigger: 'blur', type: 'number' }],
+
+    }
+    return { rules, formState, formRef }
+}

+ 24 - 40
src/views/market/spot_trade/spot_trade_order_transaction/components/buy-sell-market/components/sell/index.vue → src/views/market/spot_trade/spot_trade_order_transaction/components/sell-market/index.vue

@@ -15,17 +15,19 @@
     >
         <!-- 额外的展开行 -->
         <template #expandedRowRender="{ record }">
-            <BtnList :btnList="btnList" :record="record" @click="openComponent" />
+            <BtnList :btnList="btnListData" :record="record" @click="openComponent" />
         </template>
         <template #username="{text, record }">
             <span>{{record.userid + " " }}{{text}}</span>
         </template>
+        <template #fixedprice="{record }">
+            <span>{{record.useorderpricerid }}</span>
+        </template>
     </a-table>
     <component
         :is="componentId"
         v-if="componentId"
         :selectedRow="selectedRow"
-        :enumName="enumName"
         :buyOrSell="BuyOrSell.sell"
         :parantSelectedRow="parantSelectedRow"
         @cancel="closeComponent"
@@ -33,75 +35,57 @@
 </template>
 
 <script lang="ts">
-import { EnumRouterName } from '@/common/constants/enumRouterName';
-import { ComposeTableParam, BtnList, defineComponent, handleComposeTable, queryTableList, ModalEnum } from '@/common/export/commonTable';
+import { BtnList, defineComponent, queryTableList } from '@/common/export/commonTable';
 import { _closeModal } from '@/common/setup/modal/modal';
-import { queryOrderQuoteDetail } from '@/services/go/wrtrade';
-import { QueryOrderQuoteDetailReq, WrOrderQuote, WrOrderQuoteDetail } from '@/services/go/wrtrade/interface';
+import { queryWrTradeOrderDetail } from '@/services/go/wrtrade';
+import { WrOrderQuote, WrOrderQuoteDetail, WrTradeOrderDetailReq } from '@/services/go/wrtrade/interface';
 import { defineAsyncComponent, PropType } from 'vue';
-import { BtnList as btnListType } from '@/common/components/btnList/interface';
-import { getSellMarketParam } from '../../setup';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { BuyOrSell } from '@/common/constants/enumCommon';
 import { expandIcon } from '@/common/setup/table/clolumn';
 import { ColumnType } from '@/common/methods/table/interface';
-import { Moment } from 'moment';
-import moment from 'moment';
 import { getShowBottomValue } from '@/common/config/constrolBottom';
+import { TableParam } from '@/common/setup/table/interface';
+import { handleTableEventAndData } from '@/common/setup/table/compose';
 
 export default defineComponent({
     emits: ['cancel', 'openComponent'],
     name: 'warehouse_receipt_trade_price_delisting_sell',
     props: {
-        enumName: {
-            default: '',
-            type: String as PropType<EnumRouterName>,
-        },
-        btnList: {
-            default: [],
-            type: Array as PropType<btnListType[]>,
-        },
         parantSelectedRow: {
             type: Object as PropType<WrOrderQuote>,
             default: {},
         },
-        time: {
-            type: Object as PropType<Moment>,
-            default: moment(),
-        },
     },
     components: {
         BtnList,
-        [ModalEnum.spot_trade_warehouse_delisting]: defineAsyncComponent(() => import('../delisting/index.vue')),
+        Delisting: defineAsyncComponent(() => import('../delisting/index.vue')),
     },
     setup(props, context) {
         const isBottom = getShowBottomValue();
         console.log(isBottom.value, 'isBottom');
         // 表格列表数据
         const { loading, tableList, queryTable } = queryTableList<WrOrderQuoteDetail>();
+        const columnsList = [
+            { title: '序号', key: 'index' },
+            { title: '销售方', key: 'username' },
+            { title: '买量', key: 'orderqty' },
 
-        const { wrpricetype, haswr, tableKey } = getSellMarketParam(props.enumName);
+            { title: '买价', key: 'orderprice' },
+        ];
+        const btnListData: BtnListType[] = [{ lable: '摘牌', code: 'Delisting', className: 'operBtn' }];
         // 获取列表数据
         const queryTableAction = () => {
-            const param: QueryOrderQuoteDetailReq = {
+            const param: WrTradeOrderDetailReq = {
                 buyorsell: 1,
-                wrpricetype,
-                haswr,
-                wrfactortypeid: props.parantSelectedRow.wrfactortypeid,
                 goodsid: props.parantSelectedRow.goodsid,
             };
-            if (!haswr) {
-                // 无仓单 需要交收月过滤数据
-                param.deliverymonth = moment(props.time).format('YYYY-MM');
-            }
-            queryTable(queryOrderQuoteDetail, param);
+            queryTable(queryWrTradeOrderDetail, param);
         };
         // 表格通用逻辑
-        const param: ComposeTableParam = {
+        const param: TableParam = {
+            columnsList,
             queryFn: queryTableAction,
-            menuType: EnumRouterName.warehouse_receipt_trade_floating_price,
-            tableName: tableKey,
-            tableFilterKey: [],
-            isDetail: false,
         };
         function handleColumn(columns: ColumnType[]) {
             columns.forEach((item) => {
@@ -115,14 +99,14 @@ export default defineComponent({
         }
         return {
             isBottom,
-            ...handleComposeTable<WrOrderQuoteDetail>(param),
+            ...handleTableEventAndData(param),
             queryTableAction,
             loading,
             tableList,
             BuyOrSell,
-            enumName: props.enumName,
             expandIcon,
             handleColumn,
+            btnListData,
         };
     },
 });

+ 18 - 1
src/views/market/spot_trade/spot_trade_order_transaction/setup.ts

@@ -38,4 +38,21 @@ export function handleDeliveryRelation(param: deliverytype[]) {
     }
 
     return { deliverGoods, updateGeliverGoods }
-}
+}
+
+export const columnsList = [
+    { title: '序号', key: 'orderid' },
+    { title: '代码', key: 'goodscode' },
+    { title: '名称', key: 'goodsname' },
+    { title: '买价', key: 'bid' },
+    { title: '买量', key: 'bidvolume' },
+    { title: '卖价', key: 'ask' },
+    { title: '卖量', key: 'askvolume' },
+    { title: '最新价', key: 'last' },
+    { title: '涨跌', key: 'goodscode' },
+    { title: '幅度', key: 'goodscode' },
+    { title: '今开', key: 'opened' },
+    { title: '昨收价', key: 'preclose' },
+    { title: '最低价', key: 'lowest' },
+    { title: '最高价', key: 'highest' },
+];

+ 25 - 34
src/views/market/spot_trade/spot_trade_order_transaction/spot_trade_order_transaction_basis_difference/index.vue

@@ -5,7 +5,6 @@
              class="srcollYTable"
              :scroll="{ x: '100%', y: 'calc(100vh - 479px)' }"
              :pagination="false"
-             :loading="loading"
              :expandedRowKeys="expandedRowKeys"
              :customRow="Rowclick"
              rowKey="key"
@@ -13,10 +12,9 @@
     <!-- 右键 -->
     <contextMenu :contextMenu="contextMenu"
                  @cancel="closeContext"
-                 :list="firstBtn"></contextMenu>
+                 :list="btnList"></contextMenu>
     <component :is="componentId"
                v-if="componentId"
-               :enumName="name"
                :selectedRow="selectedRow"
                @cancel="closeComponent"></component>
   </div>
@@ -24,51 +22,44 @@
 
 <script lang="ts">
 import { EnumRouterName } from '@/common/constants/enumRouterName';
-import { queryTableList, BtnList, contextMenu, defineAsyncComponent, defineComponent, ModalEnum, ComposeTableParam } from '@/common/export/commonTable';
-import { QueryOrderQuoteReq, WrOrderQuote } from '@/services/go/wrtrade/interface';
-import { queryOrderQuote } from '@/services/go/wrtrade';
-import { handleComposeTable } from '@/views/market/spot_trade/setup';
-import Bus from '@/utils/eventBus/index';
-import Filter from '../../components/filter/index.vue';
+import { contextMenu, defineAsyncComponent, defineComponent } from '@/common/export/commonTable';
+
 import { handleDeliveryRelation } from '../setup';
+
 import { handleSubcriteQuote } from '@/common/setup/table/tableQuote';
 import { QueryDeliveryRelationRsp } from '@/services/go/delivery/interface';
+import { columnsList } from '../setup';
+
+import { handleTableEventAndData } from '@/common/setup/table/compose';
+import { TableParam } from '@/common/setup/table/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 export default defineComponent({
     name: EnumRouterName.spot_trade_order_transaction_basis_difference,
     components: {
         contextMenu,
-        // [ModalEnum.spot_trade_warehouse_detail]: defineAsyncComponent(() => import('../../components/detail/index.vue')),
-        // [ModalEnum.spot_trade_warehouse_post_buying]: defineAsyncComponent(() => import('../../components/post_buying/index.vue')),
-        buyAndSell: defineAsyncComponent(() => import('../components/buy-sell-market/index.vue')),
-        // postBuying: defineAsyncComponent(() => import('../../components/post_buying/index.vue')),
+        BuyAndSell: defineAsyncComponent(() => import('../components/buy-sell-market/index.vue')),
+        Listing: defineAsyncComponent(() => import('../components/listing/index.vue')),
+        Detail: defineAsyncComponent(() => import('../components/detail/index.vue')),
     },
     setup() {
-        // 表格列表数据
-        const { loading, tableList, queryTable } = queryTableList<WrOrderQuote>();
+        const param: TableParam = {
+            columnsList,
+            queryFn: () => {},
+            clickName: 'BuyAndSell',
+        };
+        const btnList: BtnListType[] = [
+            { lable: '挂牌求购', code: 'Listing', className: 'btnDeafault' },
+            { lable: '详情', code: 'Detail', className: 'btnDeafault' },
+            { lable: '买卖大厅', code: 'BuyAndSell', className: 'btnDeafault' },
+        ];
         const { deliverGoods } = handleDeliveryRelation([2, 4]);
         // 行情按需订阅
         handleSubcriteQuote<QueryDeliveryRelationRsp>(deliverGoods);
-        // 获取列表数据
-        const queryTableAction = () => {
-            const param: QueryOrderQuoteReq = {
-                wrpricetype: 1,
-                haswr: 1,
-            };
-            queryTable(queryOrderQuote, param);
-        };
-        // 表格通用逻辑
-        const param: ComposeTableParam = {
-            queryFn: queryTableAction,
-            menuType: EnumRouterName.warehouse_receipt_trade_price,
-            tableName: 'table_pcweb_spot_trade_warehouse_price',
-            tableFilterKey: [],
-            isDetail: false,
-        };
+
         return {
-            ...handleComposeTable<WrOrderQuote>(param),
-            loading,
-            // tableList,
+            ...handleTableEventAndData(param),
             deliverGoods,
+            btnList,
         };
     },
 });

+ 25 - 39
src/views/market/spot_trade/spot_trade_order_transaction/spot_trade_order_transaction_listing_transfer/index.vue

@@ -5,19 +5,16 @@
              class="srcollYTable"
              :scroll="{ x: '100%', y: 'calc(100vh - 479px)' }"
              :pagination="false"
-             :loading="loading"
              :expandedRowKeys="expandedRowKeys"
              :customRow="Rowclick"
              rowKey="key"
-             ref="tableRef"
              :data-source="deliverGoods"></a-table>
     <!-- 右键 -->
     <contextMenu :contextMenu="contextMenu"
                  @cancel="closeContext"
-                 :list="firstBtn"></contextMenu>
+                 :list="btnList"></contextMenu>
     <component :is="componentId"
                v-if="componentId"
-               :enumName="name"
                :selectedRow="selectedRow"
                @cancel="closeComponent"></component>
   </div>
@@ -25,56 +22,45 @@
 
 <script lang="ts">
 import { EnumRouterName } from '@/common/constants/enumRouterName';
-import { queryTableList, BtnList, contextMenu, defineAsyncComponent, defineComponent, ModalEnum, ComposeTableParam } from '@/common/export/commonTable';
-import { QueryOrderQuoteReq, WrOrderQuote } from '@/services/go/wrtrade/interface';
-import { queryOrderQuote } from '@/services/go/wrtrade';
-import { handleComposeTable } from '@/views/market/spot_trade/setup';
-import Bus from '@/utils/eventBus/index';
-import Filter from '../../components/filter/index.vue';
+import { contextMenu, defineAsyncComponent, defineComponent } from '@/common/export/commonTable';
+
 import { handleDeliveryRelation } from '../setup';
-import { ref, onMounted } from 'vue';
+
 import { handleSubcriteQuote } from '@/common/setup/table/tableQuote';
 import { QueryDeliveryRelationRsp } from '@/services/go/delivery/interface';
+import { columnsList } from '../setup';
+
+import { handleTableEventAndData } from '@/common/setup/table/compose';
+import { TableParam } from '@/common/setup/table/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 
 export default defineComponent({
     name: EnumRouterName.spot_trade_order_transaction_listing_transfer,
     components: {
         contextMenu,
-        // [ModalEnum.spot_trade_warehouse_detail]: defineAsyncComponent(() => import('../../components/detail/index.vue')),
-        // [ModalEnum.spot_trade_warehouse_post_buying]: defineAsyncComponent(() => import('../../components/post_buying/index.vue')),
-        buyAndSell: defineAsyncComponent(() => import('../components/buy-sell-market/index.vue')),
-        // postBuying: defineAsyncComponent(() => import('../../components/post_buying/index.vue')),
+        BuyAndSell: defineAsyncComponent(() => import('../components/buy-sell-market/index.vue')),
+        Listing: defineAsyncComponent(() => import('../components/listing/index.vue')),
+        Detail: defineAsyncComponent(() => import('../components/detail/index.vue')),
     },
     setup() {
-        // 表格列表数据
-        const { loading, tableList, queryTable } = queryTableList<QueryDeliveryRelationRsp>();
-        const tableRef = ref<any>(null);
-
+        const param: TableParam = {
+            columnsList,
+            queryFn: () => {},
+            clickName: 'BuyAndSell',
+        };
+        const btnList: BtnListType[] = [
+            { lable: '挂牌求购', code: 'Listing', className: 'btnDeafault' },
+            { lable: '详情', code: 'Detail', className: 'btnDeafault' },
+            { lable: '买卖大厅', code: 'BuyAndSell', className: 'btnDeafault' },
+        ];
         const { deliverGoods } = handleDeliveryRelation([1, 3]);
         // 行情按需订阅
         handleSubcriteQuote<QueryDeliveryRelationRsp>(deliverGoods);
-        // 获取列表数据
-        const queryTableAction = () => {
-            const param: QueryOrderQuoteReq = {
-                wrpricetype: 1,
-                haswr: 1,
-            };
-            queryTable(queryOrderQuote, param);
-        };
-        // 表格通用逻辑
-        const param: ComposeTableParam = {
-            queryFn: queryTableAction,
-            menuType: EnumRouterName.warehouse_receipt_trade_price,
-            tableName: 'table_pcweb_spot_trade_warehouse_price',
-            tableFilterKey: [],
-            isDetail: false,
-        };
+
         return {
-            ...handleComposeTable<QueryDeliveryRelationRsp>(param),
-            loading,
-            tableList,
+            ...handleTableEventAndData(param),
             deliverGoods,
-            tableRef,
+            btnList,
         };
     },
 });

+ 106 - 11
src/views/market/spot_trade/spot_trade_reference_market/index.vue

@@ -1,26 +1,121 @@
 <template>
-  <!-- 参考行情 -->
-  <div class="topTableHeight40">
-    <router-view></router-view>
-    <ThridMenu :list="tabList"
-               :selectedKey="index"
-               @selectMenu="changeTab" />
+  <!--参考行情-->
+  <div class="topTableHeight">
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 479px)' }"
+             :pagination="false"
+             :loading="loading"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="goodscode"
+             ref="tableRef"
+             :data-source="goodsList">
+      <template #totalturnover="{ text }">
+        <span>{{changeUnit(text)}}</span>
+      </template>
+      <template #index="{ index }">
+        <span>{{index + 1}}</span>
+      </template>
+      <template #bid="{ text, record }">
+        <span :class="handleQuotePriceColor(text, record.preclose)">{{text}}</span>
+      </template>
+    </a-table>
+    <!-- 右键 -->
+    <contextMenu :contextMenu="contextMenu"
+                 @cancel="closeContext"
+                 :list="firstBtn"></contextMenu>
+    <component :is="componentId"
+               v-if="componentId"
+               :enumName="name"
+               :selectedRow="selectedRow"
+               @cancel="closeComponent"></component>
   </div>
 </template>
 
 <script lang="ts">
-import { defineComponent } from 'vue';
-import ThridMenu from '@/common/components/thirdMenu/index.vue';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
-import { handleMartketThirdRouter } from '@/common/setup/matket/router';
+import { queryTableList, BtnList, contextMenu, defineAsyncComponent, defineComponent, ModalEnum, ComposeTableParam } from '@/common/export/commonTable';
+import { QueryOrderQuoteReq } from '@/services/go/wrtrade/interface';
+import { queryOrderQuote } from '@/services/go/wrtrade';
+import { handleComposeTable } from '@/views/market/spot_trade/setup';
+import { ref } from 'vue';
+import { handleSubcriteQuote, handleQuotePriceColor } from '@/common/setup/table/tableQuote';
+import { QueryDeliveryRelationRsp } from '@/services/go/delivery/interface';
+import { getGoodsListByTrade, getQutoGoodsByTradeMode } from '@/services/bus/goods';
+import { TradeMode } from '@/common/constants/enumCommon';
+import { handleTableColums } from '@/common/setup/table/clolumn';
+import { QueryQuoteDayRsp } from '@/services/go/quote/interface';
+import { changeUnit } from '@/utils/qt/common';
+
+const columnsList = [
+    { title: '序号', key: 'index', width: 80 },
+    { title: '代码', key: 'goodscode' },
+    { title: '名称', key: 'goodsname' },
+    { title: '买价', key: 'bid' },
+    { title: '买量', key: 'bidvolume' },
+    { title: '卖价', key: 'ask' },
+    { title: '卖量', key: 'askvolume' },
+    { title: '最新价', key: 'last' },
+    { title: '涨跌', key: 'change' },
+    { title: '幅度', key: 'amplitude' },
+    { title: '开盘价', key: 'opened' },
+    { title: '昨收价', key: 'preclose' },
+    { title: '最低价', key: 'lowest' },
+    { title: '最高价', key: 'highest' },
+    { title: '振幅', key: 'goodscode' },
+    { title: '总量', key: 'goodscode' },
+    { title: '现量', key: 'goodscode' },
+    { title: '持仓量', key: 'holdvolume' },
+    { title: '日增', key: 'goodscode' },
+    { title: '金额', key: 'totalturnover' },
+];
 
 export default defineComponent({
     name: EnumRouterName.spot_trade_reference_market,
     components: {
-        ThridMenu,
+        contextMenu,
+        // [ModalEnum.spot_trade_warehouse_detail]: defineAsyncComponent(() => import('../../components/detail/index.vue')),
+        // [ModalEnum.spot_trade_warehouse_post_buying]: defineAsyncComponent(() => import('../../components/post_buying/index.vue')),
+        buyAndSell: defineAsyncComponent(() => import('../components/buy-sell-market/index.vue')),
+        // postBuying: defineAsyncComponent(() => import('../../components/post_buying/index.vue')),
     },
     setup() {
-        return { ...handleMartketThirdRouter(EnumRouterName.spot_trade_reference_market) };
+        // 表头
+        const { columns } = handleTableColums(columnsList);
+        // 表格列表数据
+        const { loading, tableList, queryTable } = queryTableList<QueryDeliveryRelationRsp>();
+        const tableRef = ref<any>(null);
+        // 行情商品
+        const goodsList = getQutoGoodsByTradeMode(TradeMode.quote99);
+        // 行情按需订阅
+        handleSubcriteQuote<QueryQuoteDayRsp>(goodsList);
+        // 获取列表数据
+        const queryTableAction = () => {
+            const param: QueryOrderQuoteReq = {
+                wrpricetype: 1,
+                haswr: 1,
+            };
+            queryTable(queryOrderQuote, param);
+        };
+        // 表格通用逻辑
+        const param: ComposeTableParam = {
+            queryFn: queryTableAction,
+            menuType: EnumRouterName.warehouse_receipt_trade_price,
+            tableName: 'table_pcweb_spot_trade_warehouse_price',
+            tableFilterKey: [],
+            isDetail: false,
+        };
+        return {
+            ...handleComposeTable<QueryDeliveryRelationRsp>(param),
+            loading,
+            tableList,
+            goodsList,
+            tableRef,
+            columns,
+            changeUnit,
+            handleQuotePriceColor,
+        };
     },
 });
 </script>

+ 10 - 15
src/views/order/financing_manager/components/financing_manager_apply_order/index.vue

@@ -34,14 +34,14 @@
         <a>{{ formatTime(record.createtime) }}</a>
       </template>
 
-    <!-- 结算方式 1:按日结息 3:按月结息-->
-        <template #interestsettlemode="{ record }">
-            <a>{{ getInterestSettleModeName(record.interestsettlemode) }}</a>
-        </template>
-        <!-- 费用 -->
-        <template #interestsettlevalue="{ record }">
-            <a>{{ getInterestrateModeName(record.interestratemode, record.interestrate) }}</a>
-        </template>
+      <!-- 结算方式 1:按日结息 3:按月结息-->
+      <template #interestsettlemode="{ record }">
+        <a>{{ getInterestSettleModeName(record.interestsettlemode) }}</a>
+      </template>
+      <!-- 费用 -->
+      <template #interestsettlevalue="{ record }">
+        <a>{{ getInterestrateModeName(record.interestratemode, record.interestrate) }}</a>
+      </template>
 
     </a-table>
     <component :is="componentId"
@@ -62,13 +62,8 @@ import { ComposeOrderTableParam } from '@/common/setup/table/interface';
 import { formatTime } from '@/common/methods';
 import Bus from '@/utils/eventBus/index';
 import { expandIcon } from '@/common/setup/table/clolumn';
-import {
-    getApplyStatusFinanceName,
-    getFinanceTypeName,
-    getInterestrateModeName,
-    getInterestSettleModeName
-} from '@/common/constants/enumsName';
-import { BtnList as BtnListType } from '@/common/components/btnList/interface';
+import { getApplyStatusFinanceName, getFinanceTypeName, getInterestrateModeName, getInterestSettleModeName } from '@/common/constants/enumsName';
+import { BtnListType } from '@/common/components/btnList/interface';
 
 export default defineComponent({
     name: enumOrderComponents.financing_manager_apply_order,

+ 5 - 5
src/views/order/financing_manager/components/financing_manager_contract/index.vue

@@ -32,9 +32,9 @@
       <template #createtime="{ record }">
         <a>{{ formatTime(record.createtime) }}</a>
       </template>
-        <template #scfcontracttype="{ record }">
-            <a>{{ getScfContractTypeName(record.scfcontracttype) }}</a>
-        </template>
+      <template #scfcontracttype="{ record }">
+        <a>{{ getScfContractTypeName(record.scfcontracttype) }}</a>
+      </template>
 
     </a-table>
     <component :is="componentId"
@@ -54,8 +54,8 @@ import { handleComposeOrderTable } from '@/common/setup/table/compose';
 import { ComposeOrderTableParam } from '@/common/setup/table/interface';
 import { formatTime } from '@/common/methods';
 import { expandIcon } from '@/common/setup/table/clolumn';
-import {getContractName, getFinanceTypeName, getScfContractTypeName} from '@/common/constants/enumsName';
-import { BtnList as BtnListType } from '@/common/components/btnList/interface';
+import { getContractName, getFinanceTypeName, getScfContractTypeName } from '@/common/constants/enumsName';
+import { BtnListType } from '@/common/components/btnList/interface';
 
 export default defineComponent({
     name: enumOrderComponents.financing_manager_contract,

+ 1 - 1
src/views/order/performance_information/components/performance_information_buy_performance/index.vue

@@ -56,7 +56,7 @@ import { getRecordItemTab } from '@/common/setup/order/orderData';
 import { handleComposeOrderTable } from '@/common/setup/table/compose';
 import { ComposeOrderTableParam } from '@/common/setup/table/interface';
 import { expandIcon } from '@/common/setup/table/clolumn';
-import { BtnList as BtnListType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { BuyOrSell } from '@/common/constants/enumCommon';
 import { getPaymentTypeName, getPerformanceStatusName, getPerformanceTypeName } from '@/common/constants/enumsName';
 export default defineComponent({

+ 1 - 1
src/views/order/performance_information/components/performance_information_sell_performance/index.vue

@@ -57,7 +57,7 @@ import { getRecordItemTab } from '@/common/setup/order/orderData';
 import { handleComposeOrderTable } from '@/common/setup/table/compose';
 import { expandIcon } from '@/common/setup/table/clolumn';
 import { ComposeOrderTableParam } from '@/common/setup/table/interface';
-import { BtnList as BtnListType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { BuyOrSell } from '@/common/constants/enumCommon';
 import { getPaymentTypeName, getPerformanceStatusName, getPerformanceTypeName } from '@/common/constants/enumsName';
 

+ 2 - 2
src/views/order/pre_sale_warehouse_receipt/components/pre_sale_warehouse_receipt_pending_order/index.vue

@@ -44,7 +44,7 @@ import { getRecordItemTab } from '@/common/setup/order/orderData';
 import { handleComposeOrderTable } from '@/common/setup/table/compose';
 import { ComposeOrderTableParam } from '@/common/setup/table/interface';
 import { getWrOrderTypeName, getWrTradeOrderStatusName } from '@/common/constants/enumsName';
-import { BtnList as btnType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { expandIcon } from '@/common/setup/table/clolumn';
 
 export default defineComponent({
@@ -69,7 +69,7 @@ export default defineComponent({
             tableName: 'table_pcweb_spot_trade_bottom_pre_sale_pending_order',
             recordList: getRecordItemTab(),
         };
-        function filterBtnList(list: btnType[], record: WrOrderDetail) {
+        function filterBtnList(list: BtnListType[], record: WrOrderDetail) {
             //委托状态 - 1:委托请求 2:待冻结 3:委托成功 4:委托失败 5:配对成功 6:已撤 7:已成 8:成交失败 9:委托拒绝 1number;
             const arr = [3, 10];
             if (!arr.includes(record.wrtradeorderstatus)) {

+ 11 - 11
src/views/order/spot_warran/components/spot_warrant_in_and_out_warehouse/index.vue

@@ -20,15 +20,15 @@
                  @click="openComponent" />
       </template>
 
-        <!-- applytype 类型-->
-        <template #applytype="{ record }">
-            <span>{{ getPickUpStatusName(record.applytype) }}</span>
-        </template>
+      <!-- applytype 类型-->
+      <template #applytype="{ record }">
+        <span>{{ getPickUpStatusName(record.applytype) }}</span>
+      </template>
 
-        <!-- applystatus 状态 -->
-        <template #applystatus="{ record }">
-            <span>{{ getPickUpTypeName(record.applystatus) }}</span>
-        </template>
+      <!-- applystatus 状态 -->
+      <template #applystatus="{ record }">
+        <span>{{ getPickUpTypeName(record.applystatus) }}</span>
+      </template>
 
     </a-table>
     <component :is="componentId"
@@ -47,8 +47,8 @@ import { getRecordItemTab } from '@/common/setup/order/orderData';
 import { handleComposeOrderTable } from '@/common/setup/table/compose';
 import { ComposeOrderTableParam } from '@/common/setup/table/interface';
 import { expandIcon } from '@/common/setup/table/clolumn';
-import { BtnList as BtnListType } from '@/common/components/btnList/interface';
-import {getPickUpStatusName, getPickUpTypeName} from "@/common/constants/enumsName";
+import { BtnListType } from '@/common/components/btnList/interface';
+import { getPickUpStatusName, getPickUpTypeName } from '@/common/constants/enumsName';
 
 export default defineComponent({
     name: enumOrderComponents.spot_warrant_in_and_out_warehouse,
@@ -87,7 +87,7 @@ export default defineComponent({
             expandIcon,
             handleBtnList,
             getPickUpStatusName,
-            getPickUpTypeName
+            getPickUpTypeName,
         };
     },
 });

+ 2 - 2
src/views/order/spot_warran/components/spot_warrant_pending_order/index.vue

@@ -45,7 +45,7 @@ import { getRecordItemTab } from '@/common/setup/order/orderData';
 import { handleComposeOrderTable } from '@/common/setup/table/compose';
 import { ComposeOrderTableParam } from '@/common/setup/table/interface';
 import { getWrOrderTypeName, getWrTradeOrderStatusName } from '@/common/constants/enumsName';
-import { BtnList as btnType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { expandIcon } from '@/common/setup/table/clolumn';
 
 export default defineComponent({
@@ -70,7 +70,7 @@ export default defineComponent({
             tableName: 'table_pcweb_spot_trade_bottom_spot_warrant_pending_order',
             recordList: getRecordItemTab(),
         };
-        function filterBtnList(list: btnType[], record: WrOrderDetail) {
+        function filterBtnList(list: BtnListType[], record: WrOrderDetail) {
             //委托状态 - 1:委托请求 2:待冻结 3:委托成功 4:委托失败 5:配对成功 6:已撤 7:已成 8:成交失败 9:委托拒绝 1number;
             const arr = [3, 10];
             if (!arr.includes(record.wrtradeorderstatus)) {

+ 36 - 0
src/views/platinum/platinum_account_manager/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <!-- 客户经理 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_account_manager_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_account_manager_tab',
+            btnCodeList: [
+                //  权限按钮 info(详情):add(新增):edit(修改):del(停用启用)
+                { btnCode: 'platinum_account_manager_tab_add', urlCode: 'add' },
+                { btnCode: 'platinum_account_manager_tab_disable_enable', urlCode: 'del' },
+                { btnCode: 'platinum_account_manager_tab_modify', urlCode: 'edit' },
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 1,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 2 - 2
src/views/platinum/platinum_agreement/setup.ts

@@ -1,4 +1,4 @@
-import { BtnList } from "@/common/components/btnList/interface";
+import { BtnListType } from "@/common/components/btnList/interface";
 import { AgreementType } from "@/common/constants/enumCommon";
 import { getAgreementTypeName } from "@/common/constants/enumsName";
 import { QhjAgreementConfig } from "@/services/go/ermcp/qhj/interface";
@@ -40,7 +40,7 @@ export function handleArgreementType(formState?: UnwrapRef<FormState>) {
 }
 
 // 处理权限按钮
-export function handlePermissionBtn(btnList: BtnList[], item: QhjAgreementConfig) {
+export function handlePermissionBtn(btnList: BtnListType[], item: QhjAgreementConfig) {
     if (item) {
         const { isvalid } = item
         const arr: string[] = []

+ 33 - 0
src/views/platinum/platinum_asset_management_signing/platinum_asset_management_signing_finish/index.vue

@@ -0,0 +1,33 @@
+<template>
+  <!-- 团队设置 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_asset_management_signing_finish',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_asset_management_signing_finish',
+            btnCodeList: [
+                //  权限按钮 info(查看详情)
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 4,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 35 - 0
src/views/platinum/platinum_asset_management_signing/platinum_asset_management_signing_normal/index.vue

@@ -0,0 +1,35 @@
+<template>
+  <!-- 团队设置 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_asset_management_signing_normal',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_asset_management_signing_normal',
+            btnCodeList: [
+                //  权限按钮 reset(未到期续签 )、lock(到期续签)、info(查看详情)
+                { btnCode: 'platinum_asset_management_signing_normal_unexpired_renewal', urlCode: 'reset' },
+                { btnCode: 'platinum_asset_management_signing_normal_expiry_renewal', urlCode: 'lock' },
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 3,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 34 - 0
src/views/platinum/platinum_asset_management_signing/platinum_asset_management_signing_pending_review/index.vue

@@ -0,0 +1,34 @@
+<template>
+  <!-- 资管签订: 待审核  -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_asset_management_signing_pending_review',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_asset_management_signing_pending_review',
+            btnCodeList: [
+                //  check(审核 )、info(查看详情)
+                { btnCode: 'platinum_asset_management_signing_pending_review_check', urlCode: 'check' },
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 2,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 36 - 0
src/views/platinum/platinum_asset_management_signing/platinum_asset_management_signing_unsubmitted/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <!-- 资管签订: 未提交 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_asset_management_signing_unsubmitted',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_asset_management_signing_unsubmitted',
+            btnCodeList: [
+                //  权限按钮 add(新增)、active(提交)、edit(修改)、info(查看详情)
+                { btnCode: 'platinum_asset_management_signing_add', urlCode: 'add' },
+                { btnCode: 'platinum_asset_management_signing_submit', urlCode: 'active' },
+                { btnCode: 'platinum_asset_management_signing_revise', urlCode: 'edit' },
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 1,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 1 - 1
src/views/platinum/platinum_broker_management/normal/index.vue

@@ -22,7 +22,7 @@ export default defineComponent({
 
         initData(() => {
             if (list.length) {
-                const resourcePCMenu = 'resourcePCMenu=info';
+                const resourcePCMenu = 'resourcepcmenu=info';
                 url.value = `${serviceURL.pcMangerUrl}${list[0].url}?token=${token}&tabindex=1&${resourcePCMenu}`;
             }
         });

+ 1 - 1
src/views/platinum/platinum_broker_management/refuse/index.vue

@@ -22,7 +22,7 @@ export default defineComponent({
 
         initData(() => {
             if (list.length) {
-                let resourcePCMenu = 'resourcePCMenu=info';
+                let resourcePCMenu = 'resourcepcmenu=info';
                 const children = list[0].children;
                 const fn = (code: string) => children.find((e) => e.code === code);
                 if (fn('platinum_broker_management_resume')) {

+ 1 - 1
src/views/platinum/platinum_broker_management/waiting/index.vue

@@ -22,7 +22,7 @@ export default defineComponent({
 
         initData(() => {
             if (list.length) {
-                let resourcePCMenu = 'resourcePCMenu=info';
+                let resourcePCMenu = 'resourcepcmenu=info';
                 const children = list[0].children;
                 const fn = (code: string) => children.find((e) => e.code === code);
                 if (fn('platinum_broker_management_check')) {

+ 9 - 12
src/views/platinum/platinum_capital_flow/platinum_capital_flow_tab/index.vue

@@ -6,24 +6,21 @@
 </template>
 
 <script lang="ts">
-import { defineComponent, ref } from 'vue';
-import { initData } from '@/common/methods';
-import { getToken } from '@/services/bus/token';
-import { serviceURL } from '@/services/request/serviceURL';
-import { getThirdMenuData } from '@/common/setup/table/button';
+import { defineComponent } from 'vue';
+import { handleIfameRouter } from '@/common/setup/iframe';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
 
 export default defineComponent({
     name: 'platinum_capital_flow_tab',
     components: {},
     setup() {
-        const token = getToken();
-        const url = ref<string>('');
-        const list = getThirdMenuData();
-        initData(() => {
-            url.value = `${serviceURL.pcMangerUrl}${list[0].url}?token=${token}&tabindex=1&resourcePCMenu=`;
-        });
+        const param: IfameRouteParam = {
+            code: 'platinum_capital_flow_tab',
+            btnCodeList: [],
+            tabIndex: 1,
+        };
 
-        return { url };
+        return { ...handleIfameRouter(param) };
     },
 });
 </script>

+ 34 - 0
src/views/platinum/platinum_financial_payment/platinum_financial_payment_all_tab/index.vue

@@ -0,0 +1,34 @@
+<template>
+  <!-- 团队设置 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_financial_payment_all_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_financial_payment_all_tab',
+            btnCodeList: [
+                //  权限按钮 exportdata(导出) 、info(查看详情)
+                { btnCode: 'platinum_financial_payment_all_tab_export', urlCode: 'exportdata' },
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 5,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 34 - 0
src/views/platinum/platinum_financial_payment/platinum_financial_payment_in_waiting_payment_tab/index.vue

@@ -0,0 +1,34 @@
+<template>
+  <!-- 团队设置 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_financial_payment_in_waiting_payment_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_financial_payment_in_waiting_payment_tab',
+            btnCodeList: [
+                //  reset(内部转账 )、info(查看详情)
+                { btnCode: 'platinum_financial_payment_in_waiting_payment_tab_pay', urlCode: 'reset' },
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 2,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 33 - 0
src/views/platinum/platinum_financial_payment/platinum_financial_payment_payment_tab/index.vue

@@ -0,0 +1,33 @@
+<template>
+  <!-- 团队设置 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_financial_payment_payment_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_financial_payment_payment_tab',
+            btnCodeList: [
+                //  权限按钮 info(查看详情)
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 4,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 34 - 0
src/views/platinum/platinum_financial_payment/platinum_financial_payment_waiting_payment_cash_tab/index.vue

@@ -0,0 +1,34 @@
+<template>
+  <!-- 团队设置 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_financial_payment_waiting_payment_cash_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_financial_payment_waiting_payment_cash_tab',
+            btnCodeList: [
+                //  权限按钮 active(付款 )、info(查看详情)
+                { btnCode: 'platinum_financial_payment_waiting_payment_cash_tab_pay', urlCode: 'active' },
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 3,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 34 - 0
src/views/platinum/platinum_financial_payment/platinum_financial_payment_waiting_payment_tab/index.vue

@@ -0,0 +1,34 @@
+<template>
+  <!-- 团队设置 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_financial_payment_waiting_payment_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_financial_payment_waiting_payment_tab',
+            btnCodeList: [
+                //  active(付款)、info(查看详情)
+                { btnCode: 'platinum_financial_payment_waiting_payment_tab_pay', urlCode: 'active' },
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 1,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 2 - 1
src/views/platinum/platinum_pick_query/list/tab/index.vue

@@ -59,7 +59,8 @@ import { handleTableList } from './setup';
 import ControlModal from './compoments/controlModal/index.vue';
 import { QhjTradeGoodsPickup } from '@/services/go/ermcp/qhj/interface';
 import { getPickUpStateName, getTakeStateName } from '@/common/constants/enumsName';
-import { TableEventCB, BtnList as BtnListType } from '@/common/setup/table/interface';
+import { TableEventCB } from '@/common/setup/table/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { ref } from 'vue';
 import { queryTradeGoodsPickup } from '@/services/go/ermcp/qhj';
 

+ 2 - 2
src/views/platinum/platinum_pick_query/list/tab/setup.ts

@@ -1,7 +1,7 @@
-import { BtnList } from '@/common/components/buttonList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { QhjTradeGoodsPickup } from '@/services/go/ermcp/qhj/interface';
 
-export function handleTableList(btnList: BtnList[], record: QhjTradeGoodsPickup): BtnList[] {
+export function handleTableList(btnList: BtnListType[], record: QhjTradeGoodsPickup): BtnListType[] {
     // 1:备货中  完成备货
     // 2:待取货(自提) 确认取货
     // 4:待收货(邮寄) 上传物流信息、确认收货

+ 36 - 0
src/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_all/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <!-- 资管签订: 未提交 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_precious_metal_signing_all',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_precious_metal_signing_all',
+            btnCodeList: [
+                //  权限按钮 exportdata(导出)、auth(修改基本方式) 、user(修改付款方式) 、info(查看详情)
+                { btnCode: 'platinum_precious_metal_signing_all_export', urlCode: 'exportdata' },
+                { btnCode: 'platinum_precious_metal_signing_all_modify_the_basic_way', urlCode: 'auth' },
+                { btnCode: 'platinum_precious_metal_signing_all_modify_payment_method', urlCode: 'user' },
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 7,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 38 - 0
src/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_normal/index.vue

@@ -0,0 +1,38 @@
+<template>
+  <!-- 资管签订: 未提交 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_precious_metal_signing_normal',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_precious_metal_signing_normal',
+            btnCodeList: [
+                //  权限按钮 close(付款确)、reset(到期回购)、lock(续签合同)、unauth(到期未回购)、cancel(退单)、info(查看详情)
+                { btnCode: 'platinum_precious_metal_signing_normal_payment_confirmation', urlCode: 'close' },
+                { btnCode: 'platinum_precious_metal_signing_normal_repurchase_maturity', urlCode: 'reset' },
+                { btnCode: 'platinum_precious_metal_signing_normal_renew_contract', urlCode: 'lock' },
+                { btnCode: 'platinum_precious_metal_signing_normal_not_repurchased_after_maturity', urlCode: 'unauth' },
+                { btnCode: 'platinum_precious_metal_signing_normal_chargeback', urlCode: 'cancel' },
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 4,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 34 - 0
src/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_pending_review/index.vue

@@ -0,0 +1,34 @@
+<template>
+  <!-- 资管签订: 未提交 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_precious_metal_signing_pending_review',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_precious_metal_signing_pending_review',
+            btnCodeList: [
+                //  权限按钮 check(审核 )、info(查看详情)
+                { btnCode: 'platinum_precious_metal_signing_pending_review_check', urlCode: 'check' },
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 2,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 33 - 0
src/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_refunded/index.vue

@@ -0,0 +1,33 @@
+<template>
+  <!-- 资管签订: 未提交 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_precious_metal_signing_refunded',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_precious_metal_signing_refunded',
+            btnCodeList: [
+                //  info(查看详情)
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 6,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 34 - 0
src/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_repurchase_pending_review/index.vue

@@ -0,0 +1,34 @@
+<template>
+  <!-- 资管签订: 未提交 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_precious_metal_signing_repurchase_pending_review',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_precious_metal_signing_repurchase_pending_review',
+            btnCodeList: [
+                //  权限按钮 open(回购审核 )、info(查看详情)
+                { btnCode: 'platinum_precious_metal_signing_repurchase_pending_review_repurchase_review', urlCode: 'open' },
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 3,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 30 - 0
src/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_success/index.vue

@@ -0,0 +1,30 @@
+<template>
+  <!-- 资管签订: 未提交 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_precious_metal_signing_success',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_precious_metal_signing_success',
+            btnCodeList: [],
+            tabIndex: 5,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 36 - 0
src/views/platinum/platinum_precious_metal_signing/platinum_precious_metal_signing_unsubmitted/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <!-- 资管签订: 未提交 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_precious_metal_signing_unsubmitted',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_precious_metal_signing_unsubmitted',
+            btnCodeList: [
+                //  权限按钮 add(新增)、active(提交)、edit(修改)、info(查看详情)
+                { btnCode: 'platinum_precious_metal_signing_unsubmitted_add', urlCode: 'add' },
+                { btnCode: 'platinum_precious_metal_signing_unsubmitted_submit', urlCode: 'active' },
+                { btnCode: 'platinum_precious_metal_signing_unsubmitted_modify', urlCode: 'edit' },
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 1,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 1 - 1
src/views/platinum/platinum_recharge_withdrawal_review/list/recharge/index.vue

@@ -53,7 +53,7 @@ import { QhjAccountOutInApply } from '@/services/go/ermcp/qhj/interface';
 import Filter from '../../compoments/filter/index.vue';
 import ControlModal from './compoments/controlModal/index.vue';
 import { handleTableStatus, inOrOutStatus } from '../../setup';
-import { BtnList as BtnListType } from '@/common/components/buttonList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { handlePreviewImg } from '@/common/setup/upload';
 
 export default defineComponent({

+ 1 - 1
src/views/platinum/platinum_recharge_withdrawal_review/list/withdrawal/index.vue

@@ -38,7 +38,7 @@ import { QhjAccountOutInApply } from '@/services/go/ermcp/qhj/interface';
 import Filter from '../../compoments/filter/index.vue';
 import ControlModal from './compoments/controlModal/index.vue';
 import { handleTableStatus, inOrOutStatus } from '../../setup';
-import { BtnList as BtnListType } from '@/common/components/buttonList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 
 export default defineComponent({
     name: 'platinum_withdrawal_review_tab',

+ 36 - 0
src/views/platinum/platinum_signing_settings/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <!-- 签单设置 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_signing_settings_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_signing_settings_tab',
+            btnCodeList: [
+                // add(详情):edit(修改):del(删除):setting(关联现货)
+                { btnCode: 'platinum_signing_settings_add', urlCode: 'add' },
+                { btnCode: 'platinum_signing_settings_delete', urlCode: 'del' },
+                { btnCode: 'platinum_signing_settings_revise', urlCode: 'edit' },
+                { btnCode: 'platinum_signing_settings_associated_spot', urlCode: 'setting' },
+            ],
+            tabIndex: 1,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 37 - 0
src/views/platinum/platinum_team_settings/index.vue

@@ -0,0 +1,37 @@
+<template>
+  <!-- 团队设置 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_team_settings_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_team_settings_tab',
+            btnCodeList: [
+                //  权限按钮 add(新增)、active(提交)、edit(修改)、info(查看详情)
+                { btnCode: 'platinum_team_settings_add', urlCode: 'add' },
+                { btnCode: 'platinum_team_settings_delete', urlCode: 'del' },
+                { btnCode: 'platinum_team_settings_revise', urlCode: 'edit' },
+                { btnCode: 'platinum_team_settings_monthly_goal', urlCode: 'setting' },
+                { btnCode: 'info', urlCode: 'info' },
+            ],
+            tabIndex: 1,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 30 - 0
src/views/report/platinum_asset_management_sale_report/platinum_asset_management_sale_report_company_day_tab/index.vue

@@ -0,0 +1,30 @@
+<template>
+  <!-- 资管销售报表 公司销售(日报) -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_asset_management_sale_report_company_day_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_asset_management_sale_report_company_day_tab',
+            btnCodeList: [],
+            tabIndex: 1,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 30 - 0
src/views/report/platinum_asset_management_sale_report/platinum_asset_management_sale_report_company_month_tab/index.vue

@@ -0,0 +1,30 @@
+<template>
+  <!-- 资管销售报表 公司销售(月报) -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_asset_management_sale_report_company_month_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_asset_management_sale_report_company_month_tab',
+            btnCodeList: [],
+            tabIndex: 3,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 30 - 0
src/views/report/platinum_asset_management_sale_report/platinum_asset_management_sale_report_company_week_tab/index.vue

@@ -0,0 +1,30 @@
+<template>
+  <!-- 资管销售报表 公司销售(周报) -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_asset_management_sale_report_company_week_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_asset_management_sale_report_company_week_tab',
+            btnCodeList: [],
+            tabIndex: 2,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 30 - 0
src/views/report/platinum_asset_management_sale_report/platinum_precious_metal_sales_report_departmental_month_tab/index.vue

@@ -0,0 +1,30 @@
+<template>
+  <!-- 资管销售报表 部门销售(月报) -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_precious_metal_sales_report_departmental_month_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_precious_metal_sales_report_departmental_month_tab',
+            btnCodeList: [],
+            tabIndex: 5,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 30 - 0
src/views/report/platinum_asset_management_sale_report/platinum_precious_metal_sales_report_departmental_week_tab/index.vue

@@ -0,0 +1,30 @@
+<template>
+  <!-- 资管销售报表 门销售(周报 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_precious_metal_sales_report_departmental_week_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_precious_metal_sales_report_departmental_week_tab',
+            btnCodeList: [],
+            tabIndex: 4,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 30 - 0
src/views/report/platinum_asset_management_sale_report/platinum_precious_metal_sales_report_product_month_tab/index.vue

@@ -0,0 +1,30 @@
+<template>
+  <!-- 资管销售报表 产品销售(月报 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_precious_metal_sales_report_product_month_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_precious_metal_sales_report_product_month_tab',
+            btnCodeList: [],
+            tabIndex: 6,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 30 - 0
src/views/report/platinum_customer_service_report/platinum_customer_service_report_personal_annualized_performance_ranking_report_tab/index.vue

@@ -0,0 +1,30 @@
+<template>
+  <!-- 客服报表 个人年化业绩排行报表 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_customer_service_report_personal_annualized_performance_ranking_report_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_customer_service_report_personal_annualized_performance_ranking_report_tab',
+            btnCodeList: [],
+            tabIndex: 3,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 30 - 0
src/views/report/platinum_customer_service_report/platinum_customer_service_report_reach_rate_report_tab/index.vue

@@ -0,0 +1,30 @@
+<template>
+  <!-- 客服报表 达成率报表 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_customer_service_report_reach_rate_report_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_customer_service_report_reach_rate_report_tab',
+            btnCodeList: [],
+            tabIndex: 1,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 30 - 0
src/views/report/platinum_customer_service_report/platinum_customer_service_report_team_annualized_performance_ranking_report_tab/index.vue

@@ -0,0 +1,30 @@
+<template>
+  <!-- 客服报表 团队年化业绩排行报表 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_customer_service_report_team_annualized_performance_ranking_report_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_customer_service_report_team_annualized_performance_ranking_report_tab',
+            btnCodeList: [],
+            tabIndex: 2,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 30 - 0
src/views/report/platinum_customer_service_report/platinum_customer_service_report_team_manager_annual_performance_ranking_report_tab/index.vue

@@ -0,0 +1,30 @@
+<template>
+  <!-- 客服报表 团队经理年化业绩排行报表 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_customer_service_report_team_manager_annual_performance_ranking_report_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_customer_service_report_team_manager_annual_performance_ranking_report_tab',
+            btnCodeList: [],
+            tabIndex: 4,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 30 - 0
src/views/report/platinum_precious_metal_sales_report/platinum_precious_metal_sales_report_company_tab/index.vue

@@ -0,0 +1,30 @@
+<template>
+  <!-- 贵金属销售报表 公司销售(日报) -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_precious_metal_sales_report_company_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_precious_metal_sales_report_company_tab',
+            btnCodeList: [],
+            tabIndex: 1,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 30 - 0
src/views/report/platinum_precious_metal_sales_report/platinum_precious_metal_sales_report_departmental_tab/index.vue

@@ -0,0 +1,30 @@
+<template>
+  <!-- 贵金属销售报表 部门销售 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_precious_metal_sales_report_departmental_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_precious_metal_sales_report_departmental_tab',
+            btnCodeList: [],
+            tabIndex: 2,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 30 - 0
src/views/report/platinum_salesman_performance_report/platinum_salesman_performance_report_tab/index.vue

@@ -0,0 +1,30 @@
+<template>
+  <!-- 业务员业绩报表 业务员业绩报表 -->
+  <div class="iframe-container">
+    <iframe :src="url"
+            style="border: 0;"></iframe>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { IfameRouteParam } from '@/common/setup/iframe/interface';
+import { handleIfameRouter } from '@/common/setup/iframe';
+
+export default defineComponent({
+    name: 'platinum_salesman_performance_report_tab',
+    components: {},
+    setup() {
+        const param: IfameRouteParam = {
+            code: 'platinum_salesman_performance_report_tab',
+            btnCodeList: [],
+            tabIndex: 4,
+        };
+        return { ...handleIfameRouter(param) };
+    },
+});
+</script>
+
+<style lang="less">
+</style
+>;

+ 1 - 1
src/views/search/search_document_records/search_pre_sale_warehouse_receipt/search_pre_sale_warehouse_receipt_commission_record/index.vue

@@ -33,7 +33,7 @@ import { getRecordItemTab } from '@/common/setup/order/orderData';
 import { handleComposeOrderTable } from '@/common/setup/table/compose';
 import { ComposeOrderTableParam } from '@/common/setup/table/interface';
 import { getWrOrderTypeName, getWrTradeOrderStatusName } from '@/common/constants/enumsName';
-import { BtnList as btnType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { expandIcon } from '@/common/setup/table/clolumn';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
 

+ 1 - 1
src/views/search/search_document_records/search_spot_warrant/search_spot_warrant_listing_record/index.vue

@@ -34,7 +34,7 @@ import { getRecordItemTab } from '@/common/setup/order/orderData';
 import { handleComposeOrderTable } from '@/common/setup/table/compose';
 import { ComposeOrderTableParam } from '@/common/setup/table/interface';
 import { getWrOrderTypeName, getWrTradeOrderStatusName } from '@/common/constants/enumsName';
-import { BtnList as btnType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { expandIcon } from '@/common/setup/table/clolumn';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
 

+ 1 - 1
src/views/search/search_performance_query/search_performance_query_buy_performance/index.vue

@@ -43,7 +43,7 @@ import { getRecordItemTab } from '@/common/setup/order/orderData';
 import { handleComposeOrderTable } from '@/common/setup/table/compose';
 import { ComposeOrderTableParam } from '@/common/setup/table/interface';
 import { expandIcon } from '@/common/setup/table/clolumn';
-import { BtnList as BtnListType } from '@/common/components/btnList/interface';
+import { BtnListType } from '@/common/components/btnList/interface';
 import { BuyOrSell } from '@/common/constants/enumCommon';
 import { getPaymentTypeName, getPerformanceStatusName, getPerformanceTypeName } from '@/common/constants/enumsName';
 import { EnumRouterName } from '@/common/constants/enumRouterName';

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác