Pārlūkot izejas kodu

Merge branch 'mtp_v6' of http://47.101.159.18:3000/Muchinfo/MTP2.0_WEB into mtp_v6

chen.zujie 4 gadi atpakaļ
vecāks
revīzija
2b438b389f
51 mainītis faili ar 1454 papildinājumiem un 1295 dzēšanām
  1. 1 1
      public/config/app.config.json
  2. 69 0
      src/common/constants/enumsName.ts
  3. 5 1
      src/common/setup/table/clolumn.ts
  4. 19 0
      src/services/go/ermcp/subject/index.ts
  5. 29 0
      src/services/go/ermcp/subject/interface.ts
  6. 7 7
      src/services/proto/hedgeplan/index.ts
  7. 3 4
      src/services/proto/hedgeplan/interface.ts
  8. 3 3
      src/views/business/exposure/list/realTime/index.vue
  9. 5 5
      src/views/business/plan/components/cancel/index.vue
  10. 1 1
      src/views/business/spotmarket/list/price/index.vue
  11. 1 1
      src/views/information/spot-contract/components/add/setup.ts
  12. 3 68
      src/views/information/spot-contract/components/detail/index.vue
  13. 80 1
      src/views/information/spot-contract/components/detail/setup.ts
  14. 1 0
      src/views/information/spot-contract/components/interface.ts
  15. 34 22
      src/views/information/spot-contract/components/modify/index.vue
  16. 1 0
      src/views/information/spot-contract/components/setup.ts
  17. 36 22
      src/views/platinum/platinum_agreement/list/tab/index.vue
  18. 44 46
      src/views/platinum/platinum_document_query/list/order/index.vue
  19. 37 40
      src/views/platinum/platinum_document_query/list/position/index.vue
  20. 40 44
      src/views/platinum/platinum_document_query/list/success/index.vue
  21. 39 43
      src/views/platinum/platinum_document_query/list/waiting/index.vue
  22. 32 34
      src/views/platinum/platinum_financing_information/list/tab/compoments/detail/index.vue
  23. 60 53
      src/views/platinum/platinum_financing_information/list/tab/index.vue
  24. 28 38
      src/views/platinum/platinum_fixed_investment_price_query/list/tab/index.vue
  25. 27 35
      src/views/platinum/platinum_fixed_investment_query/list/flow/index.vue
  26. 38 46
      src/views/platinum/platinum_fixed_investment_query/list/plan/index.vue
  27. 30 22
      src/views/platinum/platinum_pick_query/list/tab/compoments/complete_stocking/index.vue
  28. 31 20
      src/views/platinum/platinum_pick_query/list/tab/compoments/confirm_pickup/index.vue
  29. 0 59
      src/views/platinum/platinum_pick_query/list/tab/compoments/controlModal/index.vue
  30. 5 4
      src/views/platinum/platinum_pick_query/list/tab/compoments/detail/index.vue
  31. 31 20
      src/views/platinum/platinum_pick_query/list/tab/compoments/query_receipt/index.vue
  32. 55 35
      src/views/platinum/platinum_pick_query/list/tab/compoments/upload_logistics/index.vue
  33. 93 93
      src/views/platinum/platinum_pick_query/list/tab/index.vue
  34. 0 22
      src/views/platinum/platinum_pick_query/list/tab/setup.ts
  35. 0 52
      src/views/platinum/platinum_recharge_withdrawal_review/list/recharge/compoments/controlModal/index.vue
  36. 5 3
      src/views/platinum/platinum_recharge_withdrawal_review/list/recharge/compoments/detail/index.vue
  37. 29 19
      src/views/platinum/platinum_recharge_withdrawal_review/list/recharge/compoments/payment/index.vue
  38. 30 19
      src/views/platinum/platinum_recharge_withdrawal_review/list/recharge/compoments/refuse/index.vue
  39. 75 73
      src/views/platinum/platinum_recharge_withdrawal_review/list/recharge/index.vue
  40. 0 53
      src/views/platinum/platinum_recharge_withdrawal_review/list/withdrawal/compoments/controlModal/index.vue
  41. 5 4
      src/views/platinum/platinum_recharge_withdrawal_review/list/withdrawal/compoments/detail/index.vue
  42. 30 19
      src/views/platinum/platinum_recharge_withdrawal_review/list/withdrawal/compoments/refuse/index.vue
  43. 30 19
      src/views/platinum/platinum_recharge_withdrawal_review/list/withdrawal/compoments/withdrawal/index.vue
  44. 66 64
      src/views/platinum/platinum_recharge_withdrawal_review/list/withdrawal/index.vue
  45. 37 20
      src/views/report/exposure-report/list/exposure_report/index.vue
  46. 25 9
      src/views/report/finance-report/list/finance_report_finance/index.vue
  47. 35 19
      src/views/report/future_report/list/future_report/index.vue
  48. 26 9
      src/views/report/inventory-report/list/category/index.vue
  49. 26 9
      src/views/report/inventory-report/list/warehouse/index.vue
  50. 88 71
      src/views/report/spot-report/list/spot_report/index.vue
  51. 59 43
      src/views/report/sum_pl_report/list/sum_pl_report/index.vue

+ 1 - 1
public/config/app.config.json

@@ -1,3 +1,3 @@
 {
-    "apiUrl": "http://192.168.31.203:8080/cfg?key=test_203"
+    "apiUrl": "http://192.168.31.175:8080/cfg?key=test_175"
 }

+ 69 - 0
src/common/constants/enumsName.ts

@@ -1398,4 +1398,73 @@ export function gerWareHouseStatusName(status: number): string {
             break
     }
     return result
+}
+
+/**
+ * 关联记录 业务类型名称 | 投机套保标志
+ * @param status
+ */
+export function geHedgeFlagName(status: number): string {
+    switch (status) {
+        case 0:
+            return '无';
+        case 1:
+            return '投机';
+        case 2:
+            return '套保';
+        case 3:
+            return '套利';
+        case 4:
+            return '套期保值';
+        case 5:
+            return '单边';
+        case 6:
+            return '移仓';
+        case 7:
+            return '错单处理';
+        case 8:
+            return '跨期套利';
+        case 9:
+            return '套期保值';
+        case 10:
+            return '套利';
+        case 11:
+            return '换月';
+        case 12:
+            return '交割';
+        default:
+            return '--'
+    }
+}
+
+/**
+ * 关联记录 关联状态
+ * @param status
+ */
+export function geLinkStatusName(status: number): string {
+    switch (status) {
+        case 1:
+            return '成功';
+        case 2:
+            return '失败';
+        default:
+            return '--'
+    }
+}
+
+/**
+ * 关联记录 关联方式
+ * @param status
+ */
+export function geRelatedModeName(status: number): string {
+    switch (status) {
+        case 1:
+            return '自动关联';
+        case 2:
+            return '手动关联';
+        case 3:
+            return '解绑关联';
+        default:
+            return '--'
+    }
 }

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

@@ -2,6 +2,7 @@ import * as FormatterFn from '@/common/constants/enumsName';
 import { ColumnType, getTableHead } from '@/common/methods/table';
 import { TableKey } from '@/common/methods/table/interface';
 import { ref } from "vue";
+import { getDecimalsNum } from '@/utils/number';
 
 /**
  * 获取动态表头数据
@@ -104,7 +105,10 @@ function getFromatterFn(val: string) {
 
     switch (first) {
         case 'FormatterUnit':   // 处理单位
-            result = (obj: any) => arr[1] ? obj.text + obj.record[arr[1]] : obj.text
+            result = (obj: any) => {
+                const value = getDecimalsNum(obj.text, 2, 2); // 不在这里处理,待优化
+                return arr[1] ? value + obj.record[arr[1]] : value;
+            }
             break;
         case 'FromatterPercent':  // 数值百分比
             result = (obj: any) => (Number(obj.text) * 100).toFixed(2) + '%'

+ 19 - 0
src/services/go/ermcp/subject/index.ts

@@ -0,0 +1,19 @@
+/** ================================= 交易主体 ================================**/
+import { getUserId } from '@/services/bus/user';
+import { commonSearch_go } from '@/services/go';
+import { Ermcp3SubjectReq, Ermcp3SubjectRsp } from './interface';
+
+/**
+ * 查询交易主体
+ */
+export function QueryPaAreaSubject(req?: Ermcp3SubjectReq): Promise<Ermcp3SubjectRsp[]> {
+    const param: Ermcp3SubjectReq = {
+        userid: getUserId()
+    }
+    if (req) {
+        Object.assign(param, req);
+    }
+    return commonSearch_go('/Ermcp3/QueryPaAreaSubject', param).catch((err) => {
+        throw new Error(`查询交易主体: ${err}`);
+    });
+}

+ 29 - 0
src/services/go/ermcp/subject/interface.ts

@@ -0,0 +1,29 @@
+/**
+ * 交易主体请求
+ */
+export interface Ermcp3SubjectReq {
+    userid: number    //  用户id
+    subjectid?: number    //  主体ID(SEQ_ERMCP_PA_AREASUBJECT)
+    subjecttype?: string  //  主体类型 - 1:交易主体 2:业务部门
+    subjectstatus?: number  // 主体状态 - 1:正常 2: 停用
+}
+
+/**
+ * 交易主体返回
+ */
+export interface Ermcp3SubjectRsp {
+    areauserid: number//所属机构
+    canmodify: number//是否可修改 - 0:否 1:是
+    createtime: string//创建时间
+    creatorid: string//创建人ID
+    creatorsrc: number//创建人来源 - 1:管理端 2:终端 3:交易
+    modifierid: string//修改人
+    modifiersrc: number//修改人来源 - 1:管理端 2:终端
+    modifytime: string//修改时间
+    parentsubjectid: string//上级主体ID
+    remark: string//备注
+    subjectid: number//主体ID(SEQ_ERMCP_PA_AREASUBJECT)
+    subjectname: string//主体名称
+    subjectstatus: number//主体状态 - 1:正常 2: 停用
+    subjecttype: number//主体类型 - 1:交易主体 2:业务部门
+}

+ 7 - 7
src/services/proto/hedgeplan/index.ts

@@ -23,10 +23,10 @@ export const hedgePlanReq = (param: ErmcpHedgePlanReq): Promise<any> => {
  * 老的计划操作接口 我只负责撤销 传5则进行撤销 !!!!! 注意
  * @param param
  */
-export const oldHedgePlanReq = (param: HedgePlanOperateReq): Promise<any> => {
-    param.OperateSrc = 2; // 操作来源-1:管理端2:终端
-    param.ClientTicket = uuidv4(); // 流水号
-    param.Remark = ''
-    param.UserID = getUserId()
-    return protoMiddleware<HedgePlanOperateReq>(param, 'HedgePlanOperateReq', 'HedgePlanOperateRsp', 2)
-}
+// export const oldHedgePlanReq = (param: HedgePlanOperateReq): Promise<any> => {
+//     param.OperateSrc = 2; // 操作来源-1:管理端2:终端
+//     param.ClientTicket = uuidv4(); // 流水号
+//     param.Remark = ''
+//     param.UserID = getUserId()
+//     return protoMiddleware<HedgePlanOperateReq>(param, 'HedgePlanOperateReq', 'HedgePlanOperateRsp', 2)
+// }

+ 3 - 4
src/services/proto/hedgeplan/interface.ts

@@ -14,8 +14,7 @@ export interface ErmcpHedgePlanReq {
     ApplySrc?: number // int32 申请来源 - 1:管理端 2:终端
     ApplyId?: number // uint64 申请人
     Remark?: string // string 计划备注
-    OperateType?: number // int32 操作类型-1:保存草稿2:提交申请
-
+    OperateType?: 1 | 2 | 3 | 4 | 5 // int32 操作类型-1:保存草稿2:提交申请3:删除4审核通过5审核拒绝
     WRStandardID?: number; // uint64 现货品类ID
     AccountID?: number; // uint64 期货账户ID(默认为0,也可不传)
     Tradeuserid?: number; // uint64 交易用户ID
@@ -36,8 +35,8 @@ export interface ErmcpHedgePlanRsp {
 // 套保计划操作请求 0 18 2
 export interface HedgePlanOperateReq {
     HedgePlanID: number; // uint64 套保计划ID(601+Unix秒时间戳(10位)+xxxxxx)
-    OperateType: number; // uint32 操作类型-1:保存草稿2:提交申请3:审核通过4:审核拒绝5:撤回
-    OperateSrc?: number; // uint32 操作来源-1:管理端2:终端
+    OperateType: 1 | 2 | 3 | 4 | 5; // uint32 操作类型-1:保存草稿2:提交申请3:审核通过4:审核拒绝5:撤回
+    OperateSrc?: 1 | 2; // uint32 操作来源-1:管理端2:终端
     UserID?: number; // uint64 操作用户ID
     Remark?: string; // string 备注
     ClientTicket?: string; // string 客户端流水号

+ 3 - 3
src/views/business/exposure/list/realTime/index.vue

@@ -12,13 +12,13 @@
             <a-button type="button" class="operBtn ant-btn" @click="setTimerAction">{{ isStart ? '停止监控' : '开始监控' }}</a-button>
         </div>
         <filterCustomTable @search="updateColumn" v-else> </filterCustomTable>
-        <a-table :columns="columns" class="topOrderTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
+        <a-table :columns="columns" class="srcollYTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
             <template v-if="isPingAnOem()" #index="{ index }">
                 <span>{{ index + 1 }}</span>
             </template>
             <template #MiddleGoodsName="{ record }">
-                    <span>{{`${record.MiddleGoodsName}/${record.MiddleGoodsCode}`}}</span>
-                </template>
+                <span>{{ `${record.MiddleGoodsName}/${record.MiddleGoodsCode}` }}</span>
+            </template>
         </a-table>
         <!-- 明细 -->
         <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">

+ 5 - 5
src/views/business/plan/components/cancel/index.vue

@@ -77,10 +77,10 @@ import { Ermcp3HedgePlan } from '@/services/go/ermcp/plan/interface';
 import { formatValue } from '@/common/methods';
 import { getPlanContractType } from '@/views/business/plan/setup';
 import { Modal } from 'ant-design-vue';
-import { HedgePlanOperateReq } from '@/services/proto/hedgeplan/interface';
+import { ErmcpHedgePlanReq } from '@/services/proto/hedgeplan/interface';
 import * as Long from 'long';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
-import { oldHedgePlanReq } from '@/services/proto/hedgeplan';
+import { hedgePlanReq } from '@/services/proto/hedgeplan';
 import { getPayCurrencyTypeEnumList } from '@/common/constants/enumsList';
 import { _closeModal } from '@/common/setup/modal/modal';
 
@@ -104,11 +104,11 @@ export default defineComponent({
                 okText: '确认撤销',
                 cancelText: '取消',
                 onOk() {
-                    const params: HedgePlanOperateReq = {
+                    const params: ErmcpHedgePlanReq = {
                         HedgePlanID: Long.fromString(props.selectedRow.hedgeplanid),
-                        OperateType: 5,
+                        OperateType: 3,
                     };
-                    requestResultLoadingAndInfo(oldHedgePlanReq, params, loading, ['撤销成功', '撤销失败:']).then(() => {
+                    requestResultLoadingAndInfo(hedgePlanReq, params, loading, ['撤销成功', '撤销失败:']).then(() => {
                         cancel(true);
                     });
                 },

+ 1 - 1
src/views/business/spotmarket/list/price/index.vue

@@ -37,7 +37,7 @@ export default defineComponent({
         const buttons = getTableButton();
 
         // 表格列表数据
-        const { loading, tableList, queryTable } = queryTableList<Ermcp3SpotGoodsPrice>();
+        const { loading, tableList, queryTable } = queryTableList<Ermcp3SpotGoodsPrice>(true, 2);
 
         // 获取列表数据
         const queryTableAction = () => queryTable(querySpotGoodsPrice);

+ 1 - 1
src/views/information/spot-contract/components/add/setup.ts

@@ -61,7 +61,7 @@ export function addContractReq() {
         info.ContractAttachment = form.ContractAttachment ? objectToUint8Array(form.ContractAttachment) : new Uint8Array()
 
         const params: GldErmcpSpotContractOperateReq = {
-            SpotContractID: '0',
+            SpotContractID: form.SpotContractID,
             OperateType,
             Remark: '',
             Info: info,

+ 3 - 68
src/views/information/spot-contract/components/detail/index.vue

@@ -88,6 +88,7 @@ import { InOutTypeName } from '@/views/manage/inventory-review/setup';
 import { kxtypeName } from '@/views/manage/finance-review/setup';
 import { _closeModal } from '@/common/setup/modal/modal';
 import { formatValue } from '@/common/methods';
+import { columnsPaTradeLink } from './setup';
 
 export default defineComponent({
     name: 'spot-contract-detail',
@@ -178,74 +179,8 @@ export default defineComponent({
                     });
                     break;
                 case 9: //// 关联记录
-                    columns.value = [
-                        {
-                            title: '关联时间',
-                            dataIndex: 'spotgoodsprice',
-                            key: 'spotgoodsprice',
-                            align: 'center',
-                            width: 120,
-                            // customRender: ({ text, record }: { text: Number; record: Ermcp3SpotGoodsPrice }) => {
-                            //     return `${text + record.currencyname}/${record.gbenumdicname}`;
-                            // },
-                        },
-                        {
-                            title: '成交时间',
-                            dataIndex: 'spotgoodsprice',
-                            key: 'spotgoodsprice',
-                            align: 'center',
-                            width: 120,
-                        },
-                        {
-                            title: '业务类型',
-                            dataIndex: 'spotgoodsprice',
-                            key: 'spotgoodsprice',
-                            align: 'center',
-                            width: 120,
-                        },
-                        {
-                            title: '订单类型',
-                            dataIndex: 'spotgoodsprice',
-                            key: 'spotgoodsprice',
-                            align: 'center',
-                            width: 120,
-                        },
-                        {
-                            title: '套保品种',
-                            dataIndex: 'spotgoodsprice',
-                            key: 'spotgoodsprice',
-                            align: 'center',
-                            width: 120,
-                        },
-                        {
-                            title: '现货关联数量',
-                            dataIndex: 'spotgoodsprice',
-                            key: 'spotgoodsprice',
-                            align: 'center',
-                            width: 120,
-                        },
-                        {
-                            title: '关联方式',
-                            dataIndex: 'spotgoodsprice',
-                            key: 'spotgoodsprice',
-                            align: 'center',
-                            width: 120,
-                        },
-                        {
-                            title: '关联状态',
-                            dataIndex: 'spotgoodsprice',
-                            key: 'spotgoodsprice',
-                            align: 'center',
-                            width: 120,
-                        },
-                        {
-                            title: '期货单号',
-                            dataIndex: 'spotgoodsprice',
-                            key: 'spotgoodsprice',
-                            align: 'center',
-                            width: 120,
-                        },
-                    ];
+                    columns.value.length = 0;
+                    columns.value.push(...columnsPaTradeLink);
                     queryResultLoadingAndInfo(QueryPaTradeLinkDetail, loading).then((res) => {
                         tableList.value = res;
                     });

+ 80 - 1
src/views/information/spot-contract/components/detail/setup.ts

@@ -1,3 +1,6 @@
+import { ColumnType } from '@/common/methods/table';
+import { Ermcp3PaTradeLinkDetailReqRsp } from '@/services/go/ermcp/patrade-link/interface';
+import { getChannelBuildName, getBuyOrSellTypeName, geHedgeFlagName, geLinkStatusName, geRelatedModeName } from '@/common/constants/enumsName'
 
 export const columnsPointPrice = [
     { title: '序号', dataIndex: 'index', key: 'index', align: 'center', },
@@ -55,4 +58,80 @@ export const columnsInWarehouse = [
     { title: '数量', dataIndex: 'applystatus', key: 'applystatus', align: 'center' },
 ];
 
-
+// 关联记录表头
+export const columnsPaTradeLink: ColumnType[] = [
+    {
+        title: '关联时间',
+        dataIndex: 'createtime',
+        key: 'createtime',
+        align: 'center',
+        width: 120,
+    },
+    {
+        title: '成交时间',
+        dataIndex: 'tradetime',
+        key: 'tradetime',
+        align: 'center',
+        width: 120,
+    },
+    {
+        title: '业务类型',
+        dataIndex: 'hedgeflag',
+        key: 'hedgeflag',
+        align: 'center',
+        customRender: ({ text }: { text: number }) => {
+            return geHedgeFlagName(text);
+        },
+    },
+    {
+        title: '订单类型',
+        dataIndex: 'buyorsell || channelbuildtype',
+        key: 'buyorsell',
+        align: 'center',
+        width: 120,
+        customRender: ({ record }: { record: Ermcp3PaTradeLinkDetailReqRsp }) => {
+            return getBuyOrSellTypeName(record.buyorsell) + getChannelBuildName(record.channelbuildtype);
+        },
+    },
+    {
+        title: '套保品种',
+        dataIndex: 'middlegoodsname',
+        key: 'middlegoodsname',
+        align: 'center',
+        width: 120,
+    },
+    {
+        title: '现货关联数量',
+        dataIndex: 'relatedqty',
+        key: 'relatedqty',
+        align: 'center',
+        width: 120,
+    },
+    {
+        title: '关联方式',
+        dataIndex: 'relatedmode',
+        key: 'relatedmode',
+        align: 'center',
+        width: 120,
+        customRender: ({ text }: { text: number }) => {
+            return geRelatedModeName(text);
+        },
+    },
+    {
+        title: '关联状态',
+        dataIndex: 'linkstatus',
+        key: 'linkstatus',
+        align: 'center',
+        width: 120,
+        customRender: ({ text }: { text: number }) => {
+            return geLinkStatusName(text);
+        },
+    },
+    {
+        title: '期货单号',
+        dataIndex: 'tradeid',
+        key: 'tradeid',
+        align: 'center',
+        width: 120,
+    },
+];

+ 1 - 0
src/views/information/spot-contract/components/interface.ts

@@ -35,4 +35,5 @@ export interface FormState {
     AccountID: number | undefined // uint64 期货账户ID
     BizType: number // uint32 业务类型 - 1:套保 2:套利
     CurrencyID: number | undefined // 结算币种ID
+    SpotContractID: string;//现货合同ID(6number;
 }

+ 34 - 22
src/views/information/spot-contract/components/modify/index.vue

@@ -70,6 +70,15 @@
                             <UploadImg :visible="visible" :imgList="uploadImgList" @upload="uploadImgAction" />
                         </a-form-item>
                     </a-col>
+                    <a-col :span="12">
+                        <a-form-item label="交易主体" name="BuyUserID">
+                            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.BuyUserID" placeholder="请选择主体">
+                                <a-select-option :value="item.subjectid" v-for="item in subjectList" :key="item.subjectid">
+                                    {{ item.subjectname }}
+                                </a-select-option>
+                            </a-select>
+                        </a-form-item>
+                    </a-col>
                 </a-row>
             </fieldset>
             <fieldset class="formFieldSet">
@@ -103,11 +112,6 @@
                         </a-form-item>
                     </a-col>
                     <a-col :span="12">
-                        <a-form-item label="标仓系数" name="ConvertFactor">
-                            <a-input class="dialogInput" style="width: 200px" v-model:value="formState.ConvertFactor" readonly placeholder="选择商品后自动填入" />
-                        </a-form-item>
-                    </a-col>
-                    <a-col :span="24">
                         <a-form-item label="商品规格" name="SpotGoodsDesc">
                             <a-input class="dialogInput" style="width: 200px" v-model:value="formState.SpotGoodsDesc" placeholder="请输入商品规格" />
                         </a-form-item>
@@ -255,6 +259,8 @@ import { addContractReq } from '@/views/information/spot-contract/components/add
 import { mergeTwoObj } from '@/utils/objHandle';
 import { validateAction } from '@/common/setup/form';
 import { ErmcpLoginUser } from '@/services/go/ermcp/account/interface';
+import { Ermcp3SubjectRsp } from '@/services/go/ermcp/subject/interface';
+import { QueryPaAreaSubject } from '@/services/go/ermcp/subject';
 import { handlerManagerList } from '@/common/setup/user';
 import { getUploadImg } from '@/common/setup/upload';
 import UploadImg from '@/common/components/uploadImg/index.vue';
@@ -293,24 +299,34 @@ export default defineComponent({
         // 获取 业务账户
         const { queryTable: queryBusinessManager, getBusinesserOrMerchandiser } = handlerManagerList(loading, 1);
         const { tableList: traderList, queryTable: queryTradeManager } = handlerManagerList(loading, 2, true);
+
         // 业务员
         const businesserList = ref<ErmcpLoginUser[]>([]);
         // 跟单员
         const merchandiserList = ref<ErmcpLoginUser[]>([]);
+        queryBusinessManager().then(() => {
+            businesserList.value = getBusinesserOrMerchandiser('22');
+            merchandiserList.value = getBusinesserOrMerchandiser('23');
+        });
+
         // 现货商品列表
         const goodsList = ref<Goods[]>([]);
+        goodsList.value = getGoodsList().filter((el) => el.goodsid === props.selectedRow.goodsid);
+
+        // 交易主体列表
+        const subjectList = ref<Ermcp3SubjectRsp[]>([]);
+        QueryPaAreaSubject().then((res) => {
+            subjectList.value = res;
+        });
+
         const { uploadImgAction, uploadImgList, handleImg } = getUploadImg();
         queryCustomList();
         getDeliveryGoods();
-        goodsList.value = getGoodsList();
-        queryBusinessManager().then(() => {
-            businesserList.value = getBusinesserOrMerchandiser('22');
-            merchandiserList.value = getBusinesserOrMerchandiser('23');
-        });
         queryTradeManager();
         mergeTwoObj(formState, props.selectedRow);
         isSell.value = formState.ContractType === 1 ? false : true;
-        const { deliverygoodsid, qty, price, wrstandardid, spotgoodsbrandid, currencyid, attachment, deliverystartdate, deliveryenddate, startdate, enddate, meruserid, tradeuserid } = props.selectedRow;
+
+        const { deliverygoodsid, qty, price, wrstandardid, spotcontractid, spotgoodsbrandid, currencyid, attachment, deliverystartdate, deliveryenddate, startdate, enddate, meruserid, tradeuserid } = props.selectedRow;
         if (deliverygoodsid) {
             deliveryGoodsChange(deliverygoodsid);
             if (wrstandardid) {
@@ -325,16 +341,17 @@ export default defineComponent({
         formState.ContractAttachment = attachment;
         formState.MerUserID = meruserid;
         formState.TradeUserID = tradeuserid;
-        if (deliverystartdate) {
+        formState.SpotContractID = spotcontractid;
+        if (deliverystartdate && deliverystartdate !== '--') {
             deliveryDate.value.push(moment(deliverystartdate));
         }
-        if (deliveryenddate) {
+        if (deliveryenddate && deliveryenddate !== '--') {
             deliveryDate.value.push(moment(deliveryenddate));
         }
-        if (startdate) {
+        if (startdate && startdate !== '--') {
             priceDate.value.push(moment(startdate));
         }
-        if (enddate) {
+        if (enddate && enddate !== '--') {
             priceDate.value.push(moment(enddate));
         }
         if (attachment) {
@@ -406,13 +423,8 @@ export default defineComponent({
             merchandiserList,
             uploadImgAction,
             uploadImgList,
+            subjectList,
         };
     },
 });
-</script>
-
-<style lang="less">
-.modify-custom {
-}
-</style
->;
+</script>

+ 1 - 0
src/views/information/spot-contract/components/setup.ts

@@ -99,6 +99,7 @@ export function handleFromState() {
             StartDate: '', //                       点价开始时间
             EndDate: '', //                           点价结束时间
             TradeUserID: undefined, //           交易员ID
+            SpotContractID: '0',//现货合同ID
         }
     }
     const formState: UnwrapRef<FormState> = reactive(initFormData())

+ 36 - 22
src/views/platinum/platinum_agreement/list/tab/index.vue

@@ -2,8 +2,10 @@
   <!-- 协议管理 -->
   <div class="platinum_agreement_tab">
     <Filter @search="updateColumn">
-      <BtnList :btnList="firstBtn"
-               @click="openComponent" />
+      <mtp-table-button class="btn-list-sticky"
+                        :buttons="addBtn"
+                        :record="record"
+                        @click="openComponent" />
     </Filter>
     <a-table :columns="columns"
              class="srcollYTable"
@@ -16,10 +18,10 @@
              :data-source="filterTable()">
       <!-- 额外的展开行 -->
       <template #expandedRowRender="{ record }">
-        <BtnList :btnList="handlePermissionBtn(secondBtn, record)"
-                 :record="record"
-                 class="btn-list-sticky"
-                 @click="openComponent" />
+        <mtp-table-button class="btn-list-sticky"
+                          :buttons="handleBtn(record)"
+                          :record="record"
+                          @click="openComponent" />
       </template>
       <!-- 协议类型-->,
       <template #isvalid="{ record }">
@@ -35,7 +37,7 @@
     <!-- 右键 -->
     <contextMenu :contextMenu="contextMenu"
                  @cancel="closeContext"
-                 :list="handlePermissionBtn(secondBtn, selectedRow)">
+                 :list="handleBtn(selectedRow)">
     </contextMenu>
     <component :is="componentId"
                v-if="componentId"
@@ -45,35 +47,31 @@
 </template>
 
 <script lang="ts">
-import { queryTableList, BtnList, contextMenu, defineAsyncComponent, defineComponent, ModalEnum, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
+import { ComposeTableParam, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, MtpTableButton, queryTableList } from '@/common/export/commonTable';
 import { queryAgreementConfig } from '@/services/go/ermcp/qhj';
 import { QhjAgreementConfig } from '@/services/go/ermcp/qhj/interface';
 import Filter from '../../compoments/filter/index.vue';
 import { getAgreementStatus, getAgreementTypeName } from '@/common/constants/enumsName';
 import { handleArgreementType, handlePermissionBtn } from '../../setup';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
-
-const Detail = defineAsyncComponent(() => import('../../compoments/detail/index.vue'));
-const Modify = defineAsyncComponent(() => import('../../compoments/modify/index.vue'));
-const Add = defineAsyncComponent(() => import('../../compoments/add/index.vue'));
-const Delete = defineAsyncComponent(() => import('../../compoments/delete/index.vue'));
-const Resume = defineAsyncComponent(() => import('../../compoments/resume/index.vue'));
-const Stop = defineAsyncComponent(() => import('../../compoments/stop/index.vue'));
+import { getTableButton } from '@/common/setup/table/button';
 
 export default defineComponent({
     name: EnumRouterName.platinum_agreement_tab,
     components: {
         Filter,
         contextMenu,
-        BtnList,
-        [ModalEnum.detail]: Detail,
-        [ModalEnum.platinum_agreement_modify]: Modify,
-        [ModalEnum.platinum_agreement_add]: Add,
-        [ModalEnum.platinum_agreement_delete]: Delete,
-        [ModalEnum.platinum_agreement_resume]: Resume,
-        [ModalEnum.platinum_agreement_stop]: Stop,
+        MtpTableButton,
+        detail: defineAsyncComponent(() => import('../../compoments/detail/index.vue')),
+        modify: defineAsyncComponent(() => import('../../compoments/modify/index.vue')),
+        add: defineAsyncComponent(() => import('../../compoments/add/index.vue')),
+        delete: defineAsyncComponent(() => import('../../compoments/delete/index.vue')),
+        resume: defineAsyncComponent(() => import('../../compoments/resume/index.vue')),
+        disable: defineAsyncComponent(() => import('../../compoments/stop/index.vue')),
     },
     setup() {
+        const addBtn = getTableButton(['add']);
+
         // 表格列表数据
         const { loading, tableList, queryTable } = queryTableList<QhjAgreementConfig>();
         // 获取列表数据
@@ -91,6 +89,20 @@ export default defineComponent({
         // 过滤注销数据
         const filterTable = () => tableList.value.filter((e) => e.isvalid !== 3);
 
+        function handleBtn(record: QhjAgreementConfig) {
+            if (!record) return [];
+            const buttons = getTableButton(['detail', 'modify', 'delete', 'resume', 'disable']);
+            const { isvalid } = record;
+            if (isvalid === 1) {
+                // 正常
+                return buttons.filter((e) => e.code !== 'resume');
+            } else if (isvalid === 2) {
+                // 停用
+                return buttons.filter((e) => e.code !== 'disable');
+            }
+            return [];
+        }
+
         return {
             ...handleComposeTable<QhjAgreementConfig>(param),
             getRateEnumName,
@@ -99,6 +111,8 @@ export default defineComponent({
             filterTable,
             getAgreementTypeName,
             getAgreementStatus,
+            addBtn,
+            handleBtn,
         };
     },
 });

+ 44 - 46
src/views/platinum/platinum_document_query/list/order/index.vue

@@ -1,48 +1,57 @@
 <template>
-    <!-- 单据查询 委托单-->
-    <div class="platinum_document_query_order">
-        <Filter @search="search" />
-        <contextMenu :contextMenuList="firstBtn">
-            <a-table :columns="columns" class="topOrderTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
-                <!-- 额外的展开行 -->
-                <template #expandedRowRender="{ record }">
-                    <BtnList :btnList="firstBtn" class="btn-list-sticky" @onClick="btnClick(record)" />
-                </template>
-                <!-- 账户类型 -->
-                <template #userinfotype="{ record }">
-                    <a>{{ record.userinfotype === 1 ? '个人' : '企业' }}</a>
-                </template>
-                <!-- 委托状态 -->
-                <template #orderstatus="{ record }">
-                    <a>{{ getOrderStatusName(record.orderstatus) }}</a>
-                </template>
-            </a-table>
-        </contextMenu>
-        <!-- <ControlModal :selectedRow="selectedRow" /> -->
-    </div>
+  <!-- 单据查询 委托单-->
+  <div class="platinum_fixed_investment_price_query_tab">
+    <Filter @search="search" />
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList">
+      <!-- 账户类型 -->
+      <template #userinfotype="{ record }">
+        <a>{{ record.userinfotype === 1 ? '个人' : '企业' }}</a>
+      </template>
+      <!-- 委托状态 -->
+      <template #orderstatus="{ record }">
+        <a>{{ getOrderStatusName(record.orderstatus) }}</a>
+      </template>
+    </a-table>
+  </div>
 </template>
 
 <script lang="ts">
-import { defineComponent, initData, getTableColumns, getTableEvent, contextMenu, BtnList, _getBtnList, queryTableList } from '@/common/export/table';
-import { queryTradeOrderDetail } from '@/services/go/ermcp/qhj';
+import { EnumRouterName } from '@/common/constants/enumRouterName';
+import { getOrderStatusName } from '@/common/constants/enumsName';
+import { ComposeTableParam, defineComponent, handleComposeTable, queryTableList } from '@/common/export/commonTable';
+import { getUserId } from '@/services/bus/user';
 import { QueryTradeOrderDetailRsp } from '@/services/go/ermcp/order/interface';
-import Filter from '../../compoments/filter/index.vue';
+import { queryTradeOrderDetail } from '@/services/go/ermcp/qhj';
 import { QueryTradeOrderDetailReq } from '@/services/go/ermcp/qhj/interface';
-import { getUserId } from '@/services/bus/user';
-import { getOrderStatusName } from '@/common/constants/enumsName';
+import Filter from '../../compoments/filter/index.vue';
 
 export default defineComponent({
     name: 'platinum_document_query_order',
-    components: { Filter, contextMenu, BtnList },
+    components: { Filter },
     setup() {
-        // 表头数据
-        const { columns, registerColumn, updateColumn } = getTableColumns();
-        // 表格事件
-        const { expandedRowKeys, selectedRow, Rowclick, btnClick } = getTableEvent<QueryTradeOrderDetailRsp>({});
-        // 表格操作按钮列表
-        const [firstBtn] = _getBtnList('platinum_document_query_order', false).value;
         // 表格列表数据
-        const { loading, tableList, queryTable } = queryTableList();
+        const { loading, tableList, queryTable } = queryTableList<QueryTradeOrderDetailRsp>();
+        const queryTableAction = () => {
+            // 获取列表数据
+            queryTable(queryTradeOrderDetail, { userid: getUserId() });
+        };
+
+        // 表格通用逻辑
+        const param: ComposeTableParam = {
+            queryFn: queryTableAction,
+            menuType: EnumRouterName.plan_audit,
+            tableName: 'table_pcweb_qhj_order',
+            tableFilterKey: [],
+            isDetail: true,
+        };
+
         function search(value: any) {
             const { includesub, goodsid, filtername, userid, ordertime, userinfotype } = value;
             const len = ordertime.length;
@@ -57,23 +66,12 @@ export default defineComponent({
             };
             queryTable(queryTradeOrderDetail, param);
         }
-        initData(() => {
-            // 获取列表数据
-            queryTable(queryTradeOrderDetail, { userid: getUserId() });
-            // 注册表头信息 过滤
-            registerColumn('table_pcweb_qhj_order', ['goodsid', 'ordertime', 'operatorid']);
-        });
 
         return {
-            columns,
+            ...handleComposeTable<QueryTradeOrderDetailRsp>(param),
             search,
-            expandedRowKeys,
-            selectedRow,
-            Rowclick,
-            firstBtn,
             loading,
             tableList,
-            btnClick,
             getOrderStatusName,
         };
     },

+ 37 - 40
src/views/platinum/platinum_document_query/list/position/index.vue

@@ -1,43 +1,52 @@
 <template>
-    <!-- 单据查询 持仓-->
-    <div class="platinum_document_query_position">
-        <Filter @search="search" />
-        <contextMenu :contextMenuList="firstBtn">
-            <a-table :columns="columns" class="topOrderTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
-                <!-- 额外的展开行 -->
-                <template #expandedRowRender="{ record }">
-                    <BtnList :btnList="firstBtn" class="btn-list-sticky" @onClick="btnClick(record)" />
-                </template>
-                <!-- 账户类型 -->
-                <template #userinfotype="{ record }">
-                    <a>{{ record.userinfotype === 1 ? '个人' : '企业' }}</a>
-                </template>
-            </a-table>
-        </contextMenu>
-        <!-- <ControlModal :selectedRow="selectedRow" /> -->
-    </div>
+  <!-- 单据查询 持仓-->
+  <div class="platinum_fixed_investment_price_query_tab">
+    <Filter @search="search" />
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList">
+      <!-- 账户类型 -->
+      <template #userinfotype="{ record }">
+        <a>{{ record.userinfotype === 1 ? '个人' : '企业' }}</a>
+      </template>
+    </a-table>
+  </div>
 </template>
 
 <script lang="ts">
-import { defineComponent, initData, getTableColumns, getTableEvent, contextMenu, BtnList, _getBtnList, queryTableList } from '@/common/export/table';
+import { EnumRouterName } from '@/common/constants/enumRouterName';
+import { ComposeTableParam, defineComponent, handleComposeTable, queryTableList } from '@/common/export/commonTable';
+import { getUserId } from '@/services/bus/user';
 import { QueryTradePositionRsp } from '@/services/go/ermcp/order/interface';
+import { queryTradePosition } from '@/services/go/ermcp/qhj';
 import { QueryTradePositionReq } from 'src/services/go/ermcp/qhj/interface';
 import Filter from './compoments/filter/index.vue';
-import { queryTradePosition } from '@/services/go/ermcp/qhj';
-import { getUserId } from '@/services/bus/user';
 
 export default defineComponent({
     name: 'platinum_document_query_position',
-    components: { Filter, contextMenu, BtnList },
+    components: { Filter },
     setup() {
-        // 表头数据
-        const { columns, registerColumn } = getTableColumns();
-        // 表格事件
-        const { expandedRowKeys, selectedRow, Rowclick, btnClick } = getTableEvent<QueryTradePositionRsp>({});
-        // 表格操作按钮列表
-        const [firstBtn] = _getBtnList('platinum_document_query_position', false).value;
         // 表格列表数据
         const { loading, tableList, queryTable } = queryTableList<QueryTradePositionRsp>();
+        const queryTableAction = () => {
+            // 获取列表数据
+            queryTable(queryTradePosition, { userid: getUserId() });
+        };
+
+        // 表格通用逻辑
+        const param: ComposeTableParam = {
+            queryFn: queryTableAction,
+            menuType: EnumRouterName.plan_audit,
+            tableName: 'table_pcweb_qhj_holder_order',
+            tableFilterKey: [],
+            isDetail: true,
+        };
+
         function search(value: any) {
             const { includesub, goodsid, filtername, userid, userinfotype } = value;
             const param: QueryTradePositionReq = {
@@ -49,24 +58,12 @@ export default defineComponent({
             };
             queryTable(queryTradePosition, param);
         }
-        initData(() => {
-            // 获取列表数据
-            queryTable(queryTradePosition, { userid: getUserId() });
-            // 注册表头信息 过滤
-            registerColumn('table_pcweb_qhj_holder_order', []);
-        });
 
         return {
+            ...handleComposeTable<QueryTradePositionRsp>(param),
             search,
-            columns,
-            expandedRowKeys,
-            selectedRow,
-            Rowclick,
-            firstBtn,
             loading,
             tableList,
-            queryTable,
-            btnClick,
         };
     },
 });

+ 40 - 44
src/views/platinum/platinum_document_query/list/success/index.vue

@@ -1,48 +1,56 @@
 <template>
-    <!-- 单据查询 成交单-->
-    <div class="platinum_document_query_success">
-        <Filter @search="search" />
-        <contextMenu :contextMenuList="firstBtn">
-            <a-table :columns="columns" class="topOrderTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
-                <!-- 额外的展开行 -->
-                <template #expandedRowRender="{ record }">
-                    <BtnList :btnList="firstBtn" class="btn-list-sticky" @onClick="btnClick(record)" />
-                </template>
-                <!-- 账户类型 -->
-                <template #userinfotype="{ record }">
-                    <a>{{ record.userinfotype === 1 ? '个人' : '企业' }}</a>
-                </template>
-                <!-- 成交类型 -->
-                <template #buyorsell="{ record }">
-                    <a>{{ record.buyorsell === 1 ? '卖' : '买' }}</a>
-                </template>
-            </a-table>
-        </contextMenu>
-        <!-- <ControlModal :selectedRow="selectedRow" /> -->
-    </div>
+  <!-- 单据查询 成交单-->
+  <div class="platinum_document_query_success">
+    <Filter @search="search" />
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList">
+      <!-- 账户类型 -->
+      <template #userinfotype="{ record }">
+        <a>{{ record.userinfotype === 1 ? '个人' : '企业' }}</a>
+      </template>
+      <!-- 成交类型 -->
+      <template #buyorsell="{ record }">
+        <a>{{ record.buyorsell === 1 ? '卖' : '买' }}</a>
+      </template>
+    </a-table>
+  </div>
 </template>
 
 <script lang="ts">
-import { defineComponent, initData, getTableColumns, getTableEvent, queryTableList, contextMenu, BtnList, _getBtnList } from '@/common/export/table';
+import { EnumRouterName } from '@/common/constants/enumRouterName';
+import { ComposeTableParam, defineComponent, handleComposeTable, queryTableList } from '@/common/export/commonTable';
 import { getUserId } from '@/services/bus/user';
 import { queryTradeDetail } from '@/services/go/ermcp/qhj';
 import { QueryTradeDetailReq } from '@/services/go/ermcp/qhj/interface';
 import { ErmcpWareHouseInfo } from '@/views/information/warehouse-info/list';
 import Filter from '../../compoments/filter/index.vue';
-// import ControlModal from './compoments/controlModal/index.vue';
 
 export default defineComponent({
     name: 'platinum_document_query_success',
-    components: { Filter, contextMenu, BtnList },
+    components: { Filter },
     setup() {
-        // 表头数据
-        const { columns, registerColumn } = getTableColumns();
-        // 表格事件
-        const { expandedRowKeys, selectedRow, Rowclick, btnClick } = getTableEvent<ErmcpWareHouseInfo>({});
-        // 表格操作按钮列表
-        const [firstBtn] = _getBtnList('platinum_document_query_success', false).value;
         // 表格列表数据
-        const { loading, tableList, queryTable } = queryTableList();
+        const { loading, tableList, queryTable } = queryTableList<ErmcpWareHouseInfo>();
+        const queryTableAction = () => {
+            // 获取列表数据
+            queryTable(queryTradeDetail, { userid: getUserId() });
+        };
+
+        // 表格通用逻辑
+        const param: ComposeTableParam = {
+            queryFn: queryTableAction,
+            menuType: EnumRouterName.plan_audit,
+            tableName: 'table_pcweb_qhj_deal_order',
+            tableFilterKey: [],
+            isDetail: true,
+        };
+
         function search(value: any) {
             const { includesub, goodsid, filtername, userid, ordertime, userinfotype } = value;
             const len = ordertime.length;
@@ -57,24 +65,12 @@ export default defineComponent({
             };
             queryTable(queryTradeDetail, param);
         }
-        initData(() => {
-            // 获取列表数据
-            queryTable(queryTradeDetail, { userid: getUserId() });
-            // 注册表头信息 过滤
-            registerColumn('table_pcweb_qhj_deal_order', ['tradetime', 'accountid', 'goodsid']);
-        });
 
         return {
-            columns,
+            ...handleComposeTable<ErmcpWareHouseInfo>(param),
             search,
-            expandedRowKeys,
-            selectedRow,
-            Rowclick,
-            firstBtn,
             loading,
             tableList,
-            queryTable,
-            btnClick,
         };
     },
 });

+ 39 - 43
src/views/platinum/platinum_document_query/list/waiting/index.vue

@@ -1,47 +1,55 @@
 <template>
-    <!-- 单据查询 待付单-->
-    <div class="platinum_document_query_waiting">
-        <Filter @search="search" />
-        <contextMenu :contextMenuList="firstBtn">
-            <a-table :columns="columns" class="topOrderTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
-                <!-- 额外的展开行 -->
-                <template #expandedRowRender="{ record }">
-                    <BtnList :btnList="firstBtn" class="btn-list-sticky" @onClick="btnClick(record)" />
-                </template>
-                <!-- 账户类型 -->
-                <template #userinfotype="{ record }">
-                    <a>{{ record.userinfotype === 1 ? '个人' : '企业' }}</a>
-                </template>
-                <template #paylimitedtime="{ record }">
-                    <a>{{ isOverTime(record.paylimitedtime) }}</a>
-                </template>
-            </a-table>
-        </contextMenu>
-        <!-- <ControlModal :selectedRow="selectedRow" /> -->
-    </div>
+  <!-- 单据查询 待付单-->
+  <div class="platinum_fixed_investment_price_query_tab">
+    <Filter @search="search" />
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList">
+      <!-- 账户类型 -->
+      <template #userinfotype="{ record }">
+        <a>{{ record.userinfotype === 1 ? '个人' : '企业' }}</a>
+      </template>
+      <template #paylimitedtime="{ record }">
+        <a>{{ isOverTime(record.paylimitedtime) }}</a>
+      </template>
+    </a-table>
+  </div>
 </template>
 
 <script lang="ts">
-import { defineComponent, initData, getTableColumns, getTableEvent, queryTableList, contextMenu, BtnList, _getBtnList } from '@/common/export/table';
+import { ComposeTableParam, defineComponent, handleComposeTable, queryTableList } from '@/common/export/commonTable';
 import { getUserId } from '@/services/bus/user';
 import { queryTradePayOrder } from '@/services/go/ermcp/qhj';
 import { QhjPayOrder, QueryTradePayOrderReq } from '@/services/go/ermcp/qhj/interface';
 import Filter from './compoments/filter/index.vue';
 import moment from 'moment';
-// import ControlModal from './compoments/controlModal/index.vue';
+import { EnumRouterName } from '@/common/constants/enumRouterName';
 
 export default defineComponent({
     name: 'platinum_document_query_waiting',
-    components: { Filter, contextMenu, BtnList },
+    components: { Filter },
     setup() {
-        // 表头数据
-        const { columns, registerColumn } = getTableColumns();
-        // 表格事件
-        const { expandedRowKeys, selectedRow, Rowclick, btnClick } = getTableEvent<QhjPayOrder>({});
-        // 表格操作按钮列表
-        const [firstBtn] = _getBtnList('platinum_document_query_waiting', false).value;
         // 表格列表数据
-        const { loading, tableList, queryTable } = queryTableList();
+        const { loading, tableList, queryTable } = queryTableList<QhjPayOrder>();
+        const queryTableAction = () => {
+            // 获取列表数据
+            queryTable(queryTradePayOrder, { userid: getUserId(), payflag: '1,3,5' });
+        };
+
+        // 表格通用逻辑
+        const param: ComposeTableParam = {
+            queryFn: queryTableAction,
+            menuType: EnumRouterName.plan_audit,
+            tableName: 'table_pcweb_qhj_pay_bill',
+            tableFilterKey: [],
+            isDetail: true,
+        };
+
         function search(value: any) {
             const { includesub, goodsid, filtername, userid, ordertime, userinfotype, isOverTime } = value;
             const len = ordertime.length;
@@ -58,25 +66,13 @@ export default defineComponent({
             queryTable(queryTradePayOrder, param);
         }
         const isOverTime = (value: string) => (moment().isAfter(moment(value)) ? '付款超时' : value);
-        initData(() => {
-            // 获取列表数据
-            queryTable(queryTradePayOrder, { userid: getUserId(), payflag: '1,3,5' });
-            // 注册表头信息 过滤
-            registerColumn('table_pcweb_qhj_pay_bill', []);
-        });
 
         return {
+            ...handleComposeTable<QhjPayOrder>(param),
             search,
             isOverTime,
-            columns,
-            expandedRowKeys,
-            selectedRow,
-            Rowclick,
-            firstBtn,
             loading,
             tableList,
-            queryTable,
-            btnClick,
         };
     },
 });

+ 32 - 34
src/views/platinum/platinum_financing_information/list/tab/compoments/detail/index.vue

@@ -32,28 +32,28 @@
 </template>
 
 <script lang="ts">
-import { defineComponent, PropType, ref, watchEffect } from 'vue';
-import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
-import { formatValue } from '@/common/methods';
 import { Des, handleDesList } from '@/common/components/commonDes';
-import { closeModal } from '@/common/setup/modal';
+import { getFinancingStatus } from '@/common/constants/enumsName';
 import { queryTableList } from '@/common/export/table';
-import { QhjContract, QueryContractLogReq } from '@/services/go/ermcp/qhj/interface';
+import { formatValue } from '@/common/methods';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { queryContractLog } from '@/services/go/ermcp/qhj';
-import Long from 'long';
-import {getFinancingStatus} from "@/common/constants/enumsName";
+import { QhjContract, QueryContractLogReq } from '@/services/go/ermcp/qhj/interface';
+import { defineComponent, PropType } from 'vue';
 
 export default defineComponent({
     name: 'platinum_financing_information_detail',
     components: { Des },
+    emits: ['cancel', 'update'],
     props: {
         selectedRow: {
             type: Object as PropType<QhjContract>,
             default: {},
         },
     },
-    setup(props: { selectedRow: QhjContract }) {
-        const { visible, cancel } = closeModal('platinum_financing_information_detail');
+    setup(props: { selectedRow: QhjContract }, context) {
+        // 控制关闭弹窗
+        const { visible, cancel } = _closeModal(context);
         const { desList, getDesList } = handleDesList();
         // 表格列表数据
         const { loading, tableList, queryTable } = queryTableList();
@@ -116,33 +116,31 @@ export default defineComponent({
             }
             return result;
         }
-        watchEffect(() => {
-            if (visible.value) {
-                const data = props.selectedRow;
 
-                const addinfo = data.currisklevel === 2 ? " 需追加" + data.reckonrecovermargin + "元" : ""
-                // 个人
-                const person = [
-                    { label: '账号', value: formatValue(data.logincode) },
-                    { label: '名称', value: formatValue(data.username) },
-                    { label: '账户类型', value: formatValue(data.userinfotype === 1 ? '个人' : '企业') },
-                    { label: '商品', value: formatValue(data.goodsname) },
-                    { label: '价格', value: formatValue(data.tradeprice) },
-                    { label: '数 量', value: formatValue(data.wrqty) },
-                    { label: '金额', value: formatValue(data.lenderamount) },
-                    { label: '已付款', value: formatValue(data.payamount) },
-                    { label: '融资额', value: formatValue(data.remainamount) },
-                    { label: '融资时间', value: formatValue(data.contractconfirmtime) },
-                    { label: '状 态', value: getFinancingStatus(data.currisklevel, data.reckonrecovermargin.toString()) + addinfo},
-                ];
+        const data = props.selectedRow;
+
+        const addinfo = data.currisklevel === 2 ? ' 需追加' + data.reckonrecovermargin + '元' : '';
+        // 个人
+        const person = [
+            { label: '账号', value: formatValue(data.logincode) },
+            { label: '名称', value: formatValue(data.username) },
+            { label: '账户类型', value: formatValue(data.userinfotype === 1 ? '个人' : '企业') },
+            { label: '商品', value: formatValue(data.goodsname) },
+            { label: '价格', value: formatValue(data.tradeprice) },
+            { label: '数 量', value: formatValue(data.wrqty) },
+            { label: '金额', value: formatValue(data.lenderamount) },
+            { label: '已付款', value: formatValue(data.payamount) },
+            { label: '融资额', value: formatValue(data.remainamount) },
+            { label: '融资时间', value: formatValue(data.contractconfirmtime) },
+            { label: '状 态', value: getFinancingStatus(data.currisklevel, data.reckonrecovermargin.toString()) + addinfo },
+        ];
+
+        getDesList(person);
+        const param: QueryContractLogReq = {
+            scfcontractid: data.scfcontractid,
+        };
+        queryTable(queryContractLog, param);
 
-                getDesList(person);
-                const param: QueryContractLogReq = {
-                    scfcontractid: data.scfcontractid,
-                };
-                queryTable(queryContractLog, param);
-            }
-        });
         return {
             desList,
             cancel,

+ 60 - 53
src/views/platinum/platinum_financing_information/list/tab/index.vue

@@ -2,77 +2,84 @@
   <!-- 融资信息 -->
   <div class="platinum_financing_information_tab">
     <Filter @search="updateColumn" />
-    <contextMenu :contextMenuList="firstBtn">
-      <a-table :columns="columns"
-               class="topOrderTable"
-               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
-               :pagination="false"
-               :expandedRowKeys="expandedRowKeys"
-               :customRow="Rowclick"
-               rowKey="key"
-               :data-source="tableList">
-        <!-- 额外的展开行 -->
-        <template #expandedRowRender="{ record }">
-          <BtnList :btnList="firstBtn"
-                   class="btn-list-sticky"
-                   @onClick="btnClick(record)" />
-        </template>
-        <!-- 物流信息 -->
-        <template #scfcontractstatus="{ record }">
-          <div>{{ getFinancingStatus(record.currisklevel, record.reckonrecovermargin) }}</div>
-          <div v-if="record.currisklevel === 2">{{  "需追加" + record.reckonrecovermargin + "元" }}
-          </div>
-        </template>
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList">
+      <!-- 额外的展开行 -->
+      <template #expandedRowRender="{ record }">
+        <mtp-table-button class="btn-list-sticky"
+                          :buttons="buttons"
+                          :record="record"
+                          @click="openComponent" />
+      </template>
+      <!-- 物流信息 -->
+      <template #scfcontractstatus="{ record }">
+        <div>{{ getFinancingStatus(record.currisklevel, record.reckonrecovermargin) }}</div>
+        <div v-if="record.currisklevel === 2">{{  "需追加" + record.reckonrecovermargin + "元" }}
+        </div>
+      </template>
 
-        <!-- 账户类型 -->
-        <template #userinfotype="{ record }">
-          <a>{{ record.userinfotype === 1 ? "个人" : "企业" }}</a>
-        </template>
+      <!-- 账户类型 -->
+      <template #userinfotype="{ record }">
+        <a>{{ record.userinfotype === 1 ? "个人" : "企业" }}</a>
+      </template>
 
-      </a-table>
-    </contextMenu>
-    <Detail :selectedRow="selectedRow" />
+    </a-table>
+    <!-- 右键 -->
+    <contextMenu :contextMenu="contextMenu"
+                 @cancel="closeContext"
+                 :list="buttons"> </contextMenu>
+    <component :is="componentId"
+               v-if="componentId"
+               :selectedRow="selectedRow"
+               @cancel="closeComponent"> </component>
   </div>
 </template>
 
 <script lang="ts">
-import { defineComponent, initData, getTableColumns, getTableEvent, contextMenu, BtnList, _getBtnList, queryTableList } from '@/common/export/table';
-import Filter from './compoments/filter/index.vue';
-import Detail from './compoments/detail/index.vue';
-import { QhjContract } from '@/services/go/ermcp/qhj/interface';
+import { EnumRouterName } from '@/common/constants/enumRouterName';
+import { getFinancingStatus } from '@/common/constants/enumsName';
+import { ComposeTableParam, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, MtpTableButton, queryTableList } from '@/common/export/commonTable';
+import { getTableButton } from '@/common/setup/table/button';
 import { queryContract } from '@/services/go/ermcp/qhj';
-import { getContractName, getFinancingStatus } from '@/common/constants/enumsName';
+import { QhjContract } from '@/services/go/ermcp/qhj/interface';
+import Filter from './compoments/filter/index.vue';
 
 export default defineComponent({
     name: 'platinum_financing_information_tab',
-    components: { Filter, contextMenu, BtnList, Detail },
+    components: {
+        Filter,
+        contextMenu,
+        MtpTableButton,
+        detail: defineAsyncComponent(() => import('./compoments/detail/index.vue')), // 详情
+    },
     setup() {
-        // 表头数据
-        const { columns, registerColumn, updateColumn } = getTableColumns();
-        // 表格事件
-        const { expandedRowKeys, selectedRow, Rowclick, btnClick } = getTableEvent<QhjContract>({});
-        // 表格操作按钮列表
-        const [firstBtn] = _getBtnList('platinum_financing_information_tab', false).value;
         // 表格列表数据
-        const { loading, tableList, queryTable } = queryTableList();
-        initData(() => {
+        const { loading, tableList, queryTable } = queryTableList<QhjContract>();
+        const queryTableAction = () => {
             // 获取列表数据
             queryTable(queryContract);
-            // 注册表头信息 过滤
-            registerColumn('table_pcweb_qhj_fixed_financing_information', ['goodsid', 'contractconfirmtime']);
-        });
+        };
 
+        // 表格通用逻辑
+        const param: ComposeTableParam = {
+            queryFn: queryTableAction,
+            menuType: EnumRouterName.plan_audit,
+            tableName: 'table_pcweb_qhj_fixed_financing_information',
+            tableFilterKey: ['goodsid', 'contractconfirmtime'],
+            isDetail: true,
+        };
+        const buttons = getTableButton();
         return {
-            columns,
-            expandedRowKeys,
-            selectedRow,
-            Rowclick,
-            firstBtn,
+            ...handleComposeTable<QhjContract>(param),
             loading,
             tableList,
-            updateColumn,
-            queryTable,
-            btnClick,
+            buttons,
             getFinancingStatus,
         };
     },

+ 28 - 38
src/views/platinum/platinum_fixed_investment_price_query/list/tab/index.vue

@@ -2,62 +2,52 @@
   <!-- 定投价查询 -->
   <div class="platinum_fixed_investment_price_query_tab">
     <Filter @search="updateColumn" />
-    <contextMenu :contextMenuList="firstBtn">
-      <a-table :columns="columns"
-               class="srcollYTable"
-               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
-               :pagination="false"
-               :loading="loading"
-               :expandedRowKeys="expandedRowKeys"
-               :customRow="Rowclick"
-               rowKey="key"
-               :data-source="tableList">
-        <!-- 商品名称 - 商品代码-->
-        <template #goodsid="{ record }">
-          <a>{{ record.goodsname + "-" +  record.goodscode }}</a>
-        </template>
-      </a-table>
-    </contextMenu>
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :loading="loading"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList">
+      <!-- 商品名称 - 商品代码-->
+      <template #goodsid="{ record }">
+        <a>{{ record.goodsname + "-" +  record.goodscode }}</a>
+      </template>
+    </a-table>
   </div>
 </template>
 
 <script lang="ts">
-import { defineComponent, initData, getTableColumns, getTableEvent, queryTableList, contextMenu, BtnList, _getBtnList } from '@/common/export/table';
+import { EnumRouterName } from '@/common/constants/enumRouterName';
+import { ComposeTableParam, defineComponent, handleComposeTable, queryTableList } from '@/common/export/commonTable';
 import { queryReckonPriceLog } from '@/services/go/ermcp/qhj';
 import { QhjReckonPriceLog } from '@/services/go/ermcp/qhj/interface';
 import Filter from '../../compoments/filter/index.vue';
 
 export default defineComponent({
     name: 'platinum_fixed_investment_price_query_tab',
-    components: { Filter, contextMenu, BtnList },
+    components: { Filter },
     setup() {
-        // 表头数据
-        const { columns, registerColumn, updateColumn } = getTableColumns();
-        // 表格事件
-        const { expandedRowKeys, selectedRow, Rowclick, btnClick } = getTableEvent<QhjReckonPriceLog>({});
-        // 表格操作按钮列表
-        const [firstBtn] = _getBtnList('platinum_fixed_investment_price_query_tab', false).value;
         // 表格列表数据
         const { loading, tableList, queryTable } = queryTableList<QhjReckonPriceLog>();
-        initData(() => {
-            // 获取列表数据
+        const queryTableAction = () => {
             queryTable(queryReckonPriceLog);
-            // 注册表头信息 过滤
-            registerColumn('table_pcweb_qhj_fixed_investment_price_query', ['tradedate', 'goodsid']);
-        });
+        };
+        // 表格通用逻辑
+        const param: ComposeTableParam = {
+            queryFn: queryTableAction,
+            menuType: EnumRouterName.plan_audit,
+            tableName: 'table_pcweb_qhj_fixed_investment_price_query',
+            tableFilterKey: ['tradedate', 'goodsid'],
+            isDetail: true,
+        };
 
         return {
-            columns,
-
-            expandedRowKeys,
-            selectedRow,
-            Rowclick,
-            updateColumn,
-            firstBtn,
+            ...handleComposeTable<QhjReckonPriceLog>(param),
             loading,
             tableList,
-            queryTable,
-            btnClick,
         };
     },
 });

+ 27 - 35
src/views/platinum/platinum_fixed_investment_query/list/flow/index.vue

@@ -2,60 +2,52 @@
   <!-- 定投流水查询 -->
   <div class="platinum_fixed_investment_flow_query">
     <Filter @search="updateColumn" />
-    <contextMenu :contextMenuList="firstBtn">
-      <a-table :columns="columns"
-               class="srcollYTable"
-               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
-               :pagination="false"
-               :expandedRowKeys="expandedRowKeys"
-               :customRow="Rowclick"
-               rowKey="key"
-               :data-source="tableList">
-        <template #triggerstatus="{ record }">
-          <a>{{ record.triggerstatus === 1 ? "成功" : "失败" }}</a>
-        </template>
-      </a-table>
-    </contextMenu>
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList">
+      <template #triggerstatus="{ record }">
+        <a>{{ record.triggerstatus === 1 ? "成功" : "失败" }}</a>
+      </template>
+    </a-table>
   </div>
 </template>
 
 <script lang="ts">
-import { defineComponent, initData, getTableColumns, getTableEvent, contextMenu, queryTableList, BtnList, _getBtnList } from '@/common/export/table';
+import { EnumRouterName } from '@/common/constants/enumRouterName';
+import { ComposeTableParam, defineComponent, handleComposeTable, queryTableList } from '@/common/export/commonTable';
 import { queryRSTriggerLog } from '@/services/go/ermcp/qhj';
 import { QhjRSTriggerLog } from '@/services/go/ermcp/qhj/interface';
 import Filter from './compoments/filter/index.vue';
 
 export default defineComponent({
     name: 'platinum_fixed_investment_flow_query',
-    components: { Filter, contextMenu, BtnList },
+    components: { Filter },
     setup() {
-        // 表头数据
-        const { columns, registerColumn, updateColumn } = getTableColumns();
-        // 表格事件
-        const { expandedRowKeys, selectedRow, Rowclick, btnClick } = getTableEvent<QhjRSTriggerLog>({});
-        // 表格操作按钮列表
-        const [firstBtn] = _getBtnList('platinum_fixed_investment_flow_query', false).value;
         // 表格列表数据
         const { loading, tableList, queryTable } = queryTableList<QhjRSTriggerLog>();
-        initData(() => {
+        const queryTableAction = () => {
             // 获取列表数据
             queryTable(queryRSTriggerLog);
-            // 注册表头信息 过滤
-            registerColumn('table_pcweb_qhj_fixed_investment_flow_query', ['goodsid', 'accountid', 'triggertime']);
-        });
+        };
 
-        return {
-            columns,
+        // 表格通用逻辑
+        const param: ComposeTableParam = {
+            queryFn: queryTableAction,
+            menuType: EnumRouterName.plan_audit,
+            tableName: 'table_pcweb_qhj_fixed_investment_flow_query',
+            tableFilterKey: ['goodsid', 'accountid', 'triggertime'],
+            isDetail: true,
+        };
 
-            expandedRowKeys,
-            selectedRow,
-            Rowclick,
-            firstBtn,
+        return {
+            ...handleComposeTable<QhjRSTriggerLog>(param),
             loading,
             tableList,
-            updateColumn,
-            queryTable,
-            btnClick,
         };
     },
 });

+ 38 - 46
src/views/platinum/platinum_fixed_investment_query/list/plan/index.vue

@@ -2,74 +2,66 @@
   <!-- 定投计划查询 -->
   <div class="platinum_fixed_investment_plan_query">
     <Filter @search="updateColumn" />
-    <contextMenu :contextMenuList="firstBtn">
-      <a-table :columns="columns"
-               class="srcollYTable"
-               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
-               :pagination="false"
-               :expandedRowKeys="expandedRowKeys"
-               :customRow="Rowclick"
-               rowKey="key"
-               :data-source="tableList">
-        <template #userinfotype="{ record }">
-          <a>{{ record.userinfotype === 1 ? '个人' : '企业'}}</a>
-        </template>
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList">
+      <template #userinfotype="{ record }">
+        <a>{{ record.userinfotype === 1 ? '个人' : '企业'}}</a>
+      </template>
 
-        <template #regularlymode="{ record }">
-          <a>{{ record.regularlymode === 1 ? '按数量' : '按金额'}}</a>
-        </template>
-        <template #regularlystrategystatus="{ record }">
-          <a>{{ getRegularStateName(record.regularlystrategystatus)}}</a>
-        </template>
+      <template #regularlymode="{ record }">
+        <a>{{ record.regularlymode === 1 ? '按数量' : '按金额'}}</a>
+      </template>
+      <template #regularlystrategystatus="{ record }">
+        <a>{{ getRegularStateName(record.regularlystrategystatus)}}</a>
+      </template>
 
-          <template #regularlycycle="{ record }">
-              <a>{{ record.regularlycycle === 1 ?  "每周" + getWeekName(record.regularlycyclevalue) : "每月" + record.regularlycyclevalue + "日"}}</a>
-          </template>
-      </a-table>
-    </contextMenu>
+      <template #regularlycycle="{ record }">
+        <a>{{ record.regularlycycle === 1 ?  "每周" + getWeekName(record.regularlycyclevalue) : "每月" + record.regularlycyclevalue + "日"}}</a>
+      </template>
+    </a-table>
   </div>
 </template>
 
 <script lang="ts">
-import { defineComponent, initData, getTableColumns, getTableEvent, queryTableList, contextMenu, BtnList, _getBtnList } from '@/common/export/table';
+import { EnumRouterName } from '@/common/constants/enumRouterName';
+import { getRegularStateName, getWeekName } from '@/common/constants/enumsName';
+import { ComposeTableParam, defineComponent, handleComposeTable, queryTableList } from '@/common/export/commonTable';
+import { queryRStrategy } from '@/services/go/ermcp/qhj';
 import { QhjRStrategy } from '@/services/go/ermcp/qhj/interface';
 import Filter from './compoments/filter/index.vue';
-import {getRegularStateName, getWeekName} from '@/common/constants/enumsName';
-import { queryRStrategy } from '@/services/go/ermcp/qhj';
 
 export default defineComponent({
     name: 'platinum_fixed_investment_plan_query',
-    components: { Filter, contextMenu, BtnList },
+    components: { Filter },
     setup() {
-        // 表头数据
-        const { columns, registerColumn, updateColumn } = getTableColumns();
-        // 表格事件
-        const { expandedRowKeys, selectedRow, Rowclick, btnClick } = getTableEvent<QhjRStrategy>({});
-        // 表格操作按钮列表
-        const [firstBtn] = _getBtnList('platinum_fixed_investment_plan_query', false).value;
         // 表格列表数据
         const { loading, tableList, queryTable } = queryTableList<QhjRStrategy>();
-        initData(() => {
+        const queryTableAction = () => {
             // 获取列表数据
             queryTable(queryRStrategy);
-            // 注册表头信息 过滤
-            registerColumn('table_pcweb_qhj_fixed_investment_plan_query', ['goodsid', 'regularlystrategystatus', 'accountid', 'nexttriggerdate']);
-        });
+        };
 
-        return {
-            columns,
+        // 表格通用逻辑
+        const param: ComposeTableParam = {
+            queryFn: queryTableAction,
+            menuType: EnumRouterName.plan_audit,
+            tableName: 'table_pcweb_qhj_fixed_investment_plan_query',
+            tableFilterKey: ['goodsid', 'regularlystrategystatus', 'accountid', 'nexttriggerdate'],
+            isDetail: true,
+        };
 
-            expandedRowKeys,
-            selectedRow,
-            Rowclick,
-            firstBtn,
+        return {
+            ...handleComposeTable<QhjRStrategy>(param),
             loading,
             getRegularStateName,
             getWeekName,
             tableList,
-            updateColumn,
-            queryTable,
-            btnClick,
         };
     },
 });

+ 30 - 22
src/views/platinum/platinum_pick_query/list/tab/compoments/complete_stocking/index.vue

@@ -1,31 +1,39 @@
 <template>
-    <!-- 提货查询 完成备货-->
-    <a-modal class="add-custom custom-detail" title="完成备货" centered v-model:visible="visible" :maskClosable="false" @cancel="cancel" width="890px">
-        <template #footer>
-            <a-button key="submit" type="primary" :loading="loading" @click="submit">完成备货</a-button>
-            <a-button key="cancel" type="primary" :loading="loading" @click="cancel">关闭</a-button>
-        </template>
-        <CommomDetail :selectedRow="selectedRow" />
-    </a-modal>
+  <!-- 提货查询 完成备货-->
+  <a-modal class="add-custom custom-detail"
+           title="完成备货"
+           centered
+           v-model:visible="visible"
+           :maskClosable="false"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading"
+                @click="submit">完成备货</a-button>
+      <a-button key="cancel"
+                type="primary"
+                :loading="loading"
+                @click="cancel">关闭</a-button>
+    </template>
+    <CommomDetail :selectedRow="selectedRow" />
+  </a-modal>
 </template>
 <script lang="ts">
-import { defineComponent, PropType, ref } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
-import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
-import CommomDetail from '../common-detail/index.vue';
-import { GoodsPickupConfirmReq, GoodsPickupOperateReq, t2bExchConfirmBusinessReq, TradeGoodsInfo } from '@/services/proto/manager/interface';
-import { getTimeValue } from '@/utils/time';
-import { getUserId } from '@/services/bus/user';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
-import { goodsPickupConfirm, goodsPickupOperate, t2bExchConfirmBusiness } from '@/services/proto/manager';
+import { _closeModal } from '@/common/setup/modal/modal';
+import { getUserId } from '@/services/bus/user';
 import { QhjTradeGoodsPickup } from '@/services/go/ermcp/qhj/interface';
-import { geLoginID_number } from '@/services/bus/login';
-import { getUUID } from 'ant-design-vue/es/vc-select/utils/commonUtil';
+import { goodsPickupConfirm } from '@/services/proto/manager';
+import { GoodsPickupConfirmReq } from '@/services/proto/manager/interface';
 import Long from 'long';
+import { defineComponent, PropType, ref } from 'vue';
+import CommomDetail from '../common-detail/index.vue';
 
 export default defineComponent({
     name: 'platinum_pick_query_complete_stocking',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: { CommomDetail },
     props: {
         selectedRow: {
@@ -34,7 +42,8 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('platinum_pick_query_complete_stocking');
+        // 控制关闭弹窗
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         function submit() {
             let reqParams: GoodsPickupConfirmReq = {
@@ -45,8 +54,7 @@ export default defineComponent({
                 MarketID: props.selectedRow.marketid,
             };
             requestResultLoadingAndInfo(goodsPickupConfirm, reqParams, loading, ['完成备货成功', '完成备货失败:']).then(() => {
-                cancel();
-                context.emit('refresh');
+                cancel(true);
             });
         }
         return {

+ 31 - 20
src/views/platinum/platinum_pick_query/list/tab/compoments/confirm_pickup/index.vue

@@ -1,29 +1,40 @@
 <template>
-    <!-- 提货查询 确认提货-->
-    <a-modal class="add-custom custom-detail" title="确认提货" centered v-model:visible="visible" :maskClosable="false" @cancel="cancel" width="890px">
-        <template #footer>
-            <a-button key="submit" type="primary" :loading="loading" @click="submit">确认提货</a-button>
-            <a-button key="cancel" type="primary" :loading="loading" @click="cancel">关闭</a-button>
-        </template>
-        <CommomDetail :selectedRow="selectedRow" />
-    </a-modal>
+  <!-- 提货查询 确认提货-->
+  <a-modal class="add-custom custom-detail"
+           title="确认提货"
+           centered
+           v-model:visible="visible"
+           :maskClosable="false"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading"
+                @click="submit">确认提货</a-button>
+      <a-button key="cancel"
+                type="primary"
+                :loading="loading"
+                @click="cancel">关闭</a-button>
+    </template>
+    <CommomDetail :selectedRow="selectedRow" />
+  </a-modal>
 </template>
 <script lang="ts">
-import { defineComponent, PropType, ref } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
-import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
-import CommomDetail from '../common-detail/index.vue';
+import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
+import { _closeModal } from '@/common/setup/modal/modal';
+import { geLoginID_number } from '@/services/bus/login';
+import { getUserId } from '@/services/bus/user';
 import { QhjTradeGoodsPickup } from '@/services/go/ermcp/qhj/interface';
+import { goodsPickupOperate } from '@/services/proto/manager';
 import { GoodsPickupOperateReq } from '@/services/proto/manager/interface';
 import Long from 'long';
-import { getUserId } from '@/services/bus/user';
-import { geLoginID_number } from '@/services/bus/login';
-import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
-import { goodsPickupOperate } from '@/services/proto/manager';
+import { defineComponent, PropType, ref } from 'vue';
+import CommomDetail from '../common-detail/index.vue';
 
 export default defineComponent({
     name: 'platinum_pick_query_confirm_pickup',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: { CommomDetail },
     props: {
         selectedRow: {
@@ -32,7 +43,8 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('platinum_pick_query_confirm_pickup');
+        // 控制关闭弹窗
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         function submit() {
             let reqParams: GoodsPickupOperateReq = {
@@ -42,8 +54,7 @@ export default defineComponent({
                 loginid: Number(geLoginID_number()), // uint64 登录ID
             };
             requestResultLoadingAndInfo(goodsPickupOperate, reqParams, loading, ['确认取货成功', '确认取货失败:']).then(() => {
-                cancel();
-                context.emit('refresh');
+                cancel(true);
             });
         }
         return {

+ 0 - 59
src/views/platinum/platinum_pick_query/list/tab/compoments/controlModal/index.vue

@@ -1,59 +0,0 @@
-<template>
-    <div>
-        <!-- 详情 -->
-        <Detail :selectedRow="selectedRow" />
-        <!-- 完成备货- -->
-        <CompleteStocking :selectedRow="selectedRow" @refresh="refresh" />
-        <!-- 确认提货 -->
-        <ConfirmPickup :selectedRow="selectedRow" @refresh="refresh" />
-        <!-- 确认收货 -->
-        <Receipt :selectedRow="selectedRow" @refresh="refresh" />
-        <!-- 上传物流 -->
-        <UploadLogistics :selectedRow="selectedRow" @refresh="refresh" />
-    </div>
-</template>
-
-<script lang="ts">
-import { defineComponent, PropType } from 'vue';
-import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
-import Detail from '../detail/index.vue';
-import CompleteStocking from '../complete_stocking/index.vue';
-import ConfirmPickup from '../confirm_pickup/index.vue';
-import Receipt from '../query_receipt/index.vue';
-import UploadLogistics from '../upload_logistics/index.vue';
-import { QhjTradeGoodsPickup } from '@/services/go/ermcp/qhj/interface';
-
-export default defineComponent({
-    name: 'custom-control-modal',
-    emits: ['refresh'],
-    components: { Detail, CompleteStocking, ConfirmPickup, Receipt, UploadLogistics },
-    props: {
-        selectedRow: {
-            type: Object as PropType<QhjTradeGoodsPickup>,
-            default: {},
-        },
-    },
-    setup(props, context) {
-        function refresh() {
-            context.emit('refresh');
-        }
-        return {
-            refresh,
-        };
-    },
-});
-</script>
-
-<style lang="less">
-.custom-detail {
-    .ant-form.inlineForm {
-        margin-top: 20px;
-    }
-    .upload {
-        .look {
-            margin-left: 0;
-        }
-    }
-}
-</style>;
-

+ 5 - 4
src/views/platinum/platinum_pick_query/list/tab/compoments/detail/index.vue

@@ -17,15 +17,15 @@
   </a-modal>
 </template>
 <script lang="ts">
+import { _closeModal } from '@/common/setup/modal/modal';
+import { QhjTradeGoodsPickup } from '@/services/go/ermcp/qhj/interface';
 import { defineComponent, PropType, ref } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
-import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
 import CommomDetail from '../common-detail/index.vue';
-import { QhjTradeGoodsPickup } from '@/services/go/ermcp/qhj/interface';
 
 export default defineComponent({
     name: 'platinum_withdrawal_review_detail-desc',
     components: { CommomDetail },
+    emits: ['cancel', 'update'],
     props: {
         selectedRow: {
             type: Object as PropType<QhjTradeGoodsPickup>,
@@ -33,7 +33,8 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('detail');
+        // 控制关闭弹窗
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         return {
             cancel,

+ 31 - 20
src/views/platinum/platinum_pick_query/list/tab/compoments/query_receipt/index.vue

@@ -1,29 +1,40 @@
 <template>
-    <!-- 提货查询 确认收货-->
-    <a-modal class="add-custom custom-detail" title="确认收货" centered v-model:visible="visible" :maskClosable="false" @cancel="cancel" width="890px">
-        <template #footer>
-            <a-button key="submit" type="primary" :loading="loading" @click="submit">确认收货</a-button>
-            <a-button key="submit" type="primary" :loading="loading" @click="cancel">关闭</a-button>
-        </template>
-        <CommomDetail :selectedRow="selectedRow" />
-    </a-modal>
+  <!-- 提货查询 确认收货-->
+  <a-modal class="add-custom custom-detail"
+           title="确认收货"
+           centered
+           v-model:visible="visible"
+           :maskClosable="false"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading"
+                @click="submit">确认收货</a-button>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading"
+                @click="cancel">关闭</a-button>
+    </template>
+    <CommomDetail :selectedRow="selectedRow" />
+  </a-modal>
 </template>
 <script lang="ts">
-import { defineComponent, PropType, ref } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
-import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
-import CommomDetail from '../common-detail/index.vue';
-import { GoodsPickupConfirmReq, GoodsPickupOperateReq, TradeGoodsInfo } from '@/services/proto/manager/interface';
-import { getUserId } from '@/services/bus/user';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
-import { goodsPickupConfirm, goodsPickupOperate } from '@/services/proto/manager';
-import { QhjTradeGoodsPickup } from '@/services/go/ermcp/qhj/interface';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { geLoginID_number } from '@/services/bus/login';
+import { getUserId } from '@/services/bus/user';
+import { QhjTradeGoodsPickup } from '@/services/go/ermcp/qhj/interface';
+import { goodsPickupOperate } from '@/services/proto/manager';
+import { GoodsPickupOperateReq } from '@/services/proto/manager/interface';
 import Long from 'long';
+import { defineComponent, PropType, ref } from 'vue';
+import CommomDetail from '../common-detail/index.vue';
 
 export default defineComponent({
     name: 'platinum_pick_query_receipt',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: { CommomDetail },
     props: {
         selectedRow: {
@@ -32,7 +43,8 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('platinum_pick_query_receipt');
+        // 控制关闭弹窗
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         function submit() {
             let reqParams: GoodsPickupOperateReq = {
@@ -42,8 +54,7 @@ export default defineComponent({
                 loginid: Number(geLoginID_number()), // uint64 登录ID
             };
             requestResultLoadingAndInfo(goodsPickupOperate, reqParams, loading, ['确认收货成功', '确认收货失败:']).then(() => {
-                cancel();
-                context.emit('refresh');
+                cancel(true);
             });
         }
         return {

+ 55 - 35
src/views/platinum/platinum_pick_query/list/tab/compoments/upload_logistics/index.vue

@@ -1,45 +1,65 @@
 <template>
-    <!-- 提货查询 上传物流-->
-    <a-modal class="add-custom upload_logistics" title="上传物流" centered v-model:visible="visible" :maskClosable="false" @cancel="cancel" width="600px">
-        <template #footer>
-            <a-button key="submit" type="primary" :loading="loading" @click="submit">上传 </a-button>
-        </template>
-        <a-form class="inlineForm mt10" :model="formState" :rules="rules" ref="formRef">
-            <a-row :gutter="24">
-                <a-col :span="24">
-                    <a-form-item label="物流公司" name="expresscompany">
-                        <a-input class="dialogInput" style="width: 200px" v-model:value="formState.expresscompany" placeholder="请输入物流单号" />
-                    </a-form-item>
-                </a-col>
-            </a-row>
-            <a-row :gutter="24">
-                <a-col :span="24">
-                    <a-form-item label="物流单号" name="expressnum">
-                        <a-input class="dialogInput" style="width: 200px" v-model:value="formState.expressnum" placeholder="请输入物流单号" />
-                    </a-form-item>
-                </a-col>
-            </a-row>
-        </a-form>
-    </a-modal>
+  <!-- 提货查询 上传物流-->
+  <a-modal class="add-custom upload_logistics"
+           title="上传物流"
+           centered
+           v-model:visible="visible"
+           :maskClosable="false"
+           @cancel="cancel"
+           width="600px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading"
+                @click="submit">上传 </a-button>
+    </template>
+    <a-form class="inlineForm mt10"
+            :model="formState"
+            :rules="rules"
+            ref="formRef">
+      <a-row :gutter="24">
+        <a-col :span="24">
+          <a-form-item label="物流公司"
+                       name="expresscompany">
+            <a-input class="dialogInput"
+                     style="width: 200px"
+                     v-model:value="formState.expresscompany"
+                     placeholder="请输入物流单号" />
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="24">
+          <a-form-item label="物流单号"
+                       name="expressnum">
+            <a-input class="dialogInput"
+                     style="width: 200px"
+                     v-model:value="formState.expressnum"
+                     placeholder="请输入物流单号" />
+          </a-form-item>
+        </a-col>
+      </a-row>
+    </a-form>
+  </a-modal>
 </template>
 <script lang="ts">
-import { defineComponent, PropType, ref } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
-import CommomDetail from '../common-detail/index.vue';
-import { QhjTradeGoodsPickup } from '@/services/go/ermcp/qhj/interface';
-import { GoodsPickupOperateReq } from '@/services/proto/manager/interface';
-import { getUserId } from '@/services/bus/user';
-import { geLoginID_number } from '@/services/bus/login';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
+import { validateAction } from '@/common/setup/form';
+import { _closeModal } from '@/common/setup/modal/modal';
+import { geLoginID_number } from '@/services/bus/login';
+import { getUserId } from '@/services/bus/user';
+import { QhjTradeGoodsPickup } from '@/services/go/ermcp/qhj/interface';
 import { goodsPickupOperate } from '@/services/proto/manager';
+import { GoodsPickupOperateReq } from '@/services/proto/manager/interface';
 import Long from 'long';
-import { handleForm } from './setup';
-import { validateAction } from '@/common/setup/form';
+import { defineComponent, PropType, ref } from 'vue';
+import CommomDetail from '../common-detail/index.vue';
 import { FormState } from './interface';
+import { handleForm } from './setup';
 
 export default defineComponent({
     name: 'platinum_pick_query_upload_logistics',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: { CommomDetail },
     props: {
         selectedRow: {
@@ -48,7 +68,8 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('platinum_pick_query_upload_logistics');
+        // 控制关闭弹窗
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         const { formRef, formState, rules } = handleForm();
         function submit() {
@@ -65,8 +86,7 @@ export default defineComponent({
                     },
                 };
                 requestResultLoadingAndInfo(goodsPickupOperate, reqParams, loading, ['上传物流信息成功', '上传物流信息失败:']).then(() => {
-                    cancel();
-                    context.emit('refresh');
+                    cancel(true);
                 });
             });
         }

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

@@ -2,123 +2,123 @@
   <!-- 提货查询 -->
   <div class="platinum_pick_query_tab">
     <Filter @search="updateColumn" />
-    <contextMenu :contextMenuList="btnList">
-      <a-table :columns="columns"
-               class="srcollYTable"
-               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
-               :pagination="false"
-               :expandedRowKeys="expandedRowKeys"
-               :customRow="Rowclick"
-               rowKey="key"
-               :data-source="tableList">
-        <!-- 额外的展开行 -->
-        <template #expandedRowRender="{ record }">
-          <BtnList :btnList="handleTableList(firstBtn, record)"
-                   class="btn-list-sticky"
-                   @onClick="btnClick(record)" />
-        </template>
-        <!-- 提货状态 -->
-        <template #takeorderstatus="{ record }">
-          <a>{{ getPickUpStateName(record.takeorderstatus) }}</a>
-        </template>
-        <!-- 提货/ 收货人-->
-        <template #takemode="{ record }">
-          <a>{{ getTakeStateName(record.takemode)}}</a>
-        </template>
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :loading="loading"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList">
+      <!-- 额外的展开行 -->
+      <template #expandedRowRender="{ record }">
+        <mtp-table-button class="btn-list-sticky"
+                          :buttons="handleBtn(record)"
+                          :record="record"
+                          @click="openComponent" />
+      </template>
+      <!-- 提货状态 -->
+      <template #takeorderstatus="{ record }">
+        <a>{{ getPickUpStateName(record.takeorderstatus) }}</a>
+      </template>
+      <!-- 提货/ 收货人-->
+      <template #takemode="{ record }">
+        <a>{{ getTakeStateName(record.takemode)}}</a>
+      </template>
+      <!-- 物流信息 -->
+      <template #expresscompany="{ record }">
+        <a>{{ record.expresscompany + "-" + record.expressnum}}</a>
+      </template>
 
-        <!-- 物流信息 -->
-        <template #expresscompany="{ record }">
-          <a>{{ record.expresscompany + "-" + record.expressnum}}</a>
-        </template>
+      <!-- 商品数量 -->
+      <template #qty="{ record }">
+        <a>{{ record.qty + record.enumdicname}}</a>
+      </template>
 
-        <!-- 商品数量 -->
-        <template #qty="{ record }">
-          <a>{{ record.qty + record.enumdicname}}</a>
-        </template>
+      <!-- 地址 -->
+      <template #address="{ record }">
+        <a>{{ record.provincename + record.cityname + record.districtname + record.address}}</a>
+      </template>
 
-        <!-- 地址 -->
-        <template #address="{ record }">
-          <a>{{ record.provincename + record.cityname + record.districtname + record.address}}</a>
-        </template>
-
-        <template #userinfotype="{ record }">
-          <a>{{ record.userinfotype === 1 ? '个人' : '企业' }}</a>
-        </template>
-      </a-table>
-    </contextMenu>
-    <ControlModal :selectedRow="selectedRow"
-                  @refresh="getData" />
-    <!-- <component :is="componentId"></component> -->
+      <template #userinfotype="{ record }">
+        <a>{{ record.userinfotype === 1 ? '个人' : '企业' }}</a>
+      </template>
+    </a-table>
+    <!-- 右键 -->
+    <contextMenu :contextMenu="contextMenu"
+                 @cancel="closeContext"
+                 :list="handleBtn(selectedRow)"> </contextMenu>
+    <component :is="componentId"
+               v-if="componentId"
+               :selectedRow="selectedRow"
+               @cancel="closeComponent"> </component>
   </div>
 </template>
 
 <script lang="ts">
-import { defineComponent, initData, getTableColumns, getTableEvent, contextMenu, BtnList, _getBtnList, queryTableList } from '@/common/export/table';
-import Filter from '../../compoments/filter/index.vue';
-import { handleTableList } from './setup';
-import ControlModal from './compoments/controlModal/index.vue';
-import { QhjTradeGoodsPickup } from '@/services/go/ermcp/qhj/interface';
+import { EnumRouterName } from '@/common/constants/enumRouterName';
 import { getPickUpStateName, getTakeStateName } from '@/common/constants/enumsName';
-import { TableEventCB } from '@/common/setup/table/interface';
-import { BtnListType } from '@/common/components/btnList/interface';
-import { ref } from 'vue';
+import { ComposeTableParam, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, MtpTableButton, queryTableList } from '@/common/export/commonTable';
+import { getTableButton } from '@/common/setup/table/button';
 import { queryTradeGoodsPickup } from '@/services/go/ermcp/qhj';
+import { QhjTradeGoodsPickup } from '@/services/go/ermcp/qhj/interface';
+import Filter from '../../compoments/filter/index.vue';
 
 export default defineComponent({
     name: 'platinum_pick_query_tab',
-    components: { Filter, contextMenu, BtnList, ControlModal },
+    components: {
+        Filter,
+        contextMenu,
+        MtpTableButton,
+        detail: defineAsyncComponent(() => import('./compoments/detail/index.vue')), // 详情
+        complete_stocking: defineAsyncComponent(() => import('./compoments/complete_stocking/index.vue')), // 完成备货
+        upload_logistics: defineAsyncComponent(() => import('./compoments/upload_logistics/index.vue')), // 上传物流
+        confirm_pickup: defineAsyncComponent(() => import('./compoments/confirm_pickup/index.vue')), // 确认收货
+        confirm_receipt: defineAsyncComponent(() => import('./compoments/query_receipt/index.vue')), // 确认收货
+    },
     setup() {
-        // 表头数据
-        const { columns, registerColumn, updateColumn } = getTableColumns();
-        // 表格操作按钮列表
-        const [firstBtn] = _getBtnList('platinum_pick_query_tab', true).value;
-        const btnList = ref<BtnListType[]>([]);
-        const event: TableEventCB = {
-            contextmenuCB: (record: QhjTradeGoodsPickup) => {
-                btnList.value = handleTableList(firstBtn, record);
-            },
-        };
-        // 表格事件
-        const { expandedRowKeys, selectedRow, Rowclick, btnClick } = getTableEvent<QhjTradeGoodsPickup>(event);
-
         // 表格列表数据
         const { loading, tableList, queryTable } = queryTableList<QhjTradeGoodsPickup>();
 
-        function getData() {
-            // 获取列表数据
-            queryTable(queryTradeGoodsPickup).then((res) => {
-                tableList.value = res.map((el) => {
-                    return { ...el, key: String(el.takeorderid) };
-                });
-            });
-        }
-
+        const queryTableAction = () => {
+            queryTable(queryTradeGoodsPickup);
+        };
+        // 表格通用逻辑
+        const param: ComposeTableParam = {
+            queryFn: queryTableAction,
+            menuType: EnumRouterName.plan_audit,
+            tableName: 'table_pcweb_qhj_pickup_query',
+            tableFilterKey: ['reqtime', 'pickupgoodsname', 'takeorderstatus', 'goodsname'],
+            isDetail: true,
+        };
         // 1:备货中  完成备货
         // 2:待取货(自提) 确认取货
         // 4:待收货(邮寄) 上传物流信息、确认收货
-        initData(() => {
-            // 获取列表数据
-            getData();
-            // 注册表头信息 过滤
-            registerColumn('table_pcweb_qhj_pickup_query', ['reqtime', 'pickupgoodsname', 'takeorderstatus', 'goodsname']);
-        });
-
+        function handleBtn(record: QhjTradeGoodsPickup) {
+            if (!record) return;
+            const { takeorderstatus } = record;
+            const buttons = getTableButton();
+            if (takeorderstatus === 1) {
+                // 1:备货中  完成备货
+                return buttons.filter((e) => e.code === 'complete_stocking' || e.code === 'detail');
+            } else if (takeorderstatus === 2) {
+                // 2:待取货(自提) 确认取货
+                return buttons.filter((e) => e.code === 'confirm_pickup' || e.code === 'detail');
+            } else if (takeorderstatus === 4) {
+                // 4:待收货(邮寄) 上传物流信息、确认收货
+                return buttons.filter((e) => e.code === 'complete_stocking' || e.code === 'detail' || e.code === 'confirm_receipt');
+            } else {
+                return [];
+            }
+        }
         return {
-            btnList,
-            columns,
-            getData,
-            updateColumn,
-            expandedRowKeys,
-            selectedRow,
-            Rowclick,
-            firstBtn,
+            ...handleComposeTable<QhjTradeGoodsPickup>(param),
             loading,
             tableList,
-            queryTable,
-            btnClick,
             getPickUpStateName,
             getTakeStateName,
-            handleTableList,
+            handleBtn,
         };
     },
 });

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

@@ -1,22 +0,0 @@
-import { BtnListType } from '@/common/components/btnList/interface';
-import { QhjTradeGoodsPickup } from '@/services/go/ermcp/qhj/interface';
-
-export function handleTableList(btnList: BtnListType[], record: QhjTradeGoodsPickup): BtnListType[] {
-    // 1:备货中  完成备货
-    // 2:待取货(自提) 确认取货
-    // 4:待收货(邮寄) 上传物流信息、确认收货
-    const arr: string[] = ['详情']
-    switch (record.takeorderstatus) {
-        case 1: // 1:备货中  完成备货
-            arr.push('完成备货')
-            break
-        case 2: // 2:待取货(自提) 确认取货
-            arr.push('确认取货')
-            break
-        case 4: // 4:待收货(邮寄) 上传物流信息、确认收货
-            arr.push('上传物流')
-            arr.push('确认收货')
-            break
-    }
-    return btnList.filter((e) => arr.includes(e.lable));
-}

+ 0 - 52
src/views/platinum/platinum_recharge_withdrawal_review/list/recharge/compoments/controlModal/index.vue

@@ -1,52 +0,0 @@
-<template>
-    <div>
-        <!-- 详情 -->
-        <Detail :selectedRow="selectedRow" />
-        <!-- 确认收款 -->
-        <Payment :selectedRow="selectedRow" @refresh="refresh" />
-        <!-- 审核拒绝 -->
-        <Refuse :selectedRow="selectedRow" @refresh="refresh" />
-    </div>
-</template>
-
-<script lang="ts">
-import { defineComponent, PropType } from 'vue';
-import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
-import Detail from '../detail/index.vue';
-import Payment from '../payment/index.vue';
-import Refuse from '../refuse/index.vue';
-
-export default defineComponent({
-    name: 'custom-control-modal',
-    emits: ['refresh'],
-    components: { Detail, Payment, Refuse },
-    props: {
-        selectedRow: {
-            type: Object as PropType<QueryCustomInfoType>,
-            default: {},
-        },
-    },
-    setup(props, context) {
-        function refresh() {
-            context.emit('refresh');
-        }
-        return {
-            refresh,
-        };
-    },
-});
-</script>
-
-<style lang="less">
-.custom-detail {
-    .ant-form.inlineForm {
-        margin-top: 20px;
-    }
-    .upload {
-        .look {
-            margin-left: 0;
-        }
-    }
-}
-</style>;
-

+ 5 - 3
src/views/platinum/platinum_recharge_withdrawal_review/list/recharge/compoments/detail/index.vue

@@ -17,13 +17,14 @@
   </a-modal>
 </template>
 <script lang="ts">
+import { _closeModal } from '@/common/setup/modal/modal';
+import { QhjAccountOutInApply } from '@/services/go/ermcp/qhj/interface';
 import { defineComponent, PropType, ref } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
 import CommomDetail from '../common-detail/index.vue';
-import { QhjAccountOutInApply } from '@/services/go/ermcp/qhj/interface';
 
 export default defineComponent({
     name: 'platinum_withdrawal_review_detail-desc',
+    emits: ['cancel', 'update'],
     components: { CommomDetail },
     props: {
         selectedRow: {
@@ -32,7 +33,8 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('detail');
+        // 控制关闭弹窗
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         return {
             cancel,

+ 29 - 19
src/views/platinum/platinum_recharge_withdrawal_review/list/recharge/compoments/payment/index.vue

@@ -1,29 +1,39 @@
 <template>
-    <!-- 充值审核 确认收款-->
-    <a-modal class="add-custom custom-detail" title="确认收款" centered v-model:visible="visible" :maskClosable="false" @cancel="cancel" width="890px">
-        <template #footer>
-            <a-button key="submit" type="primary" :loading="loading" @click="submit">确认</a-button>
-            <a-button key="cancel" type="primary" :loading="loading" @click="cancel">关闭</a-button>
-        </template>
-        <CommomDetail :selectedRow="selectedRow" />
-    </a-modal>
+  <!-- 充值审核 确认收款-->
+  <a-modal class="add-custom custom-detail"
+           title="确认收款"
+           centered
+           v-model:visible="visible"
+           :maskClosable="false"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading"
+                @click="submit">确认</a-button>
+      <a-button key="cancel"
+                type="primary"
+                :loading="loading"
+                @click="cancel">关闭</a-button>
+    </template>
+    <CommomDetail :selectedRow="selectedRow" />
+  </a-modal>
 </template>
 <script lang="ts">
-import { defineComponent, PropType, ref } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
-import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
-import CommomDetail from '../common-detail/index.vue';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
+import { _closeModal } from '@/common/setup/modal/modal';
+import { getUserId } from '@/services/bus/user';
+import { QhjAccountOutInApply } from '@/services/go/ermcp/qhj/interface';
 import { t2bExchConfirmBusiness } from '@/services/proto/manager';
 import { t2bExchConfirmBusinessReq } from '@/services/proto/manager/interface';
-import { QhjAccountOutInApply } from '@/services/go/ermcp/qhj/interface';
 import { getTimeValue } from '@/utils/time';
-import { getUserId } from '@/services/bus/user';
-import { geLoginID_number } from '@/services/bus/login';
+import { defineComponent, PropType, ref } from 'vue';
+import CommomDetail from '../common-detail/index.vue';
 
 export default defineComponent({
     name: 'platinum_recharge_review_confirm_payment',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: { CommomDetail },
     props: {
         selectedRow: {
@@ -32,7 +42,8 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('platinum_recharge_review_confirm_payment');
+        // 控制关闭弹窗
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         function submit() {
             let reqParams: t2bExchConfirmBusinessReq = {
@@ -48,8 +59,7 @@ export default defineComponent({
             };
 
             requestResultLoadingAndInfo(t2bExchConfirmBusiness, reqParams, loading, ['确认收款成功', '确认收款失败:']).then(() => {
-                cancel();
-                context.emit('refresh');
+                cancel(true);
             });
         }
         return {

+ 30 - 19
src/views/platinum/platinum_recharge_withdrawal_review/list/recharge/compoments/refuse/index.vue

@@ -1,29 +1,40 @@
 <template>
-    <!-- 充值审核 审核拒绝-->
-    <a-modal class="add-custom custom-detail" title="审核拒绝" centered v-model:visible="visible" :maskClosable="false" @cancel="cancel" width="890px">
-        <template #footer>
-            <a-button key="submit" type="primary" :loading="loading" @click="submit">拒绝</a-button>
-            <a-button key="cancel" type="primary" :loading="loading" @click="cancel">关闭</a-button>
-        </template>
-        <CommomDetail :selectedRow="selectedRow" />
-    </a-modal>
+  <!-- 充值审核 审核拒绝-->
+  <a-modal class="add-custom custom-detail"
+           title="审核拒绝"
+           centered
+           v-model:visible="visible"
+           :maskClosable="false"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading"
+                @click="submit">拒绝</a-button>
+      <a-button key="cancel"
+                type="primary"
+                :loading="loading"
+                @click="cancel">关闭</a-button>
+    </template>
+    <CommomDetail :selectedRow="selectedRow" />
+  </a-modal>
 </template>
 
 <script lang="ts">
-import { defineComponent, PropType, ref } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
-import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
-import CommomDetail from '../common-detail/index.vue';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
-import { t2bExchConfirmBusinessReq } from '@/services/proto/manager/interface';
-import { getTimeValue } from '@/utils/time';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { getUserId } from '@/services/bus/user';
-import { t2bExchConfirmBusiness } from '@/services/proto/manager';
 import { QhjAccountOutInApply } from '@/services/go/ermcp/qhj/interface';
+import { t2bExchConfirmBusiness } from '@/services/proto/manager';
+import { t2bExchConfirmBusinessReq } from '@/services/proto/manager/interface';
+import { getTimeValue } from '@/utils/time';
+import { defineComponent, PropType, ref } from 'vue';
+import CommomDetail from '../common-detail/index.vue';
 
 export default defineComponent({
     name: 'custom-detail-desc',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: { CommomDetail },
     props: {
         selectedRow: {
@@ -32,7 +43,8 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('platinum_recharge_review_refuse');
+        // 控制关闭弹窗
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         function submit() {
             let reqParams: t2bExchConfirmBusinessReq = {
@@ -48,8 +60,7 @@ export default defineComponent({
             };
 
             requestResultLoadingAndInfo(t2bExchConfirmBusiness, reqParams, loading, ['审核拒绝成功', '审核拒绝失败:']).then(() => {
-                cancel();
-                context.emit('refresh');
+                cancel(true);
             });
         }
         return {

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

@@ -2,40 +2,46 @@
   <!-- 充值审核 -->
   <div class="platinum_recharge_review_tab">
     <Filter @search="search" />
-    <contextMenu :contextMenuList="getBtnListAction()">
-      <a-table :columns="columns"
-               class="srcollYTable"
-               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
-               :pagination="false"
-               :expandedRowKeys="expandedRowKeys"
-               :customRow="Rowclick"
-               rowKey="key"
-               :data-source="tableList">
-        <!-- 额外的展开行 -->
-        <template #expandedRowRender="{ record }">
-          <BtnList :btnList="getBtnListAction()"
-                   class="btn-list-sticky"
-                   @onClick="btnClick(record)" />
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :loading="loading"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList">
+      <!-- 额外的展开行 -->
+      <template #expandedRowRender="{ record }">
+        <mtp-table-button class="btn-list-sticky"
+                          :buttons="handleBtn(record)"
+                          :record="record"
+                          @click="openComponent" />
+      </template>
+      <!-- 账户类型 -->
+      <template #userinfotype="{ record }">
+        <a>{{ record.userinfotype === 1 ? "个人" : "企业" }}</a>
+      </template>
+      <template #applystatus="{ }">
+        <a>{{ getTableListStatus() }}</a>
+      </template>
+      <template #certificatephotourl="{ record}">
+        <template v-if="record.certificatephotourl">
+          <a v-for="(item, index) in getUrl(record.certificatephotourl)"
+             :key="item"
+             @click.stop="getVisibleImg(record.certificatephotourl, index)">{{item}}</a>
         </template>
-        <!-- 账户类型 -->
-        <template #userinfotype="{ record }">
-          <a>{{ record.userinfotype === 1 ? "个人" : "企业" }}</a>
-        </template>
-        <template #applystatus="{ }">
-          <a>{{ getTableListStatus() }}</a>
-        </template>
-        <template #certificatephotourl="{ record}">
-          <template v-if="record.certificatephotourl">
-            <a v-for="(item, index) in getUrl(record.certificatephotourl)"
-               :key="item"
-               @click.stop="getVisibleImg(record.certificatephotourl, index)">{{item}}</a>
-          </template>
-          <span v-else></span>
-        </template>
-      </a-table>
-    </contextMenu>
-    <ControlModal :selectedRow="selectedRow"
-                  @refresh="getTableList" />
+        <span v-else></span>
+      </template>
+    </a-table>
+    <!-- 右键 -->
+    <contextMenu :contextMenu="contextMenu"
+                 @cancel="closeContext"
+                 :list="handleBtn(selectedRow)"> </contextMenu>
+    <component :is="componentId"
+               v-if="componentId"
+               :selectedRow="selectedRow"
+               @cancel="closeComponent"> </component>
     <a-modal :visible="previewVisible"
              :footer="null"
              @cancel="cancelImg">
@@ -47,38 +53,51 @@
 </template>
 
 <script lang="ts">
-import { defineComponent, initData, getTableColumns, getTableEvent, contextMenu, BtnList, queryTableList, _getBtnList } from '@/common/export/table';
+import { EnumRouterName } from '@/common/constants/enumRouterName';
+import { ComposeTableParam, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, MtpTableButton, queryTableList } from '@/common/export/commonTable';
+import { getTableButton } from '@/common/setup/table/button';
+import { handlePreviewImg } from '@/common/setup/upload';
 import { queryAccountInOutApply } from '@/services/go/ermcp/qhj';
 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 { BtnListType } from '@/common/components/btnList/interface';
-import { handlePreviewImg } from '@/common/setup/upload';
 
 export default defineComponent({
     name: 'platinum_recharge_review_tab',
-    components: { Filter, contextMenu, BtnList, ControlModal },
+    components: {
+        Filter,
+        contextMenu,
+        MtpTableButton,
+        detail: defineAsyncComponent(() => import('./compoments/detail/index.vue')), // 详情
+        confirm_payment: defineAsyncComponent(() => import('./compoments/payment/index.vue')), // 确认收款
+        review_refuse: defineAsyncComponent(() => import('./compoments/refuse/index.vue')), // 审核拒绝
+    },
     setup() {
-        // 表头数据
-        const { columns, registerColumn, updateColumn } = getTableColumns();
-        // 表格事件
-        const { expandedRowKeys, selectedRow, Rowclick, btnClick } = getTableEvent<QhjAccountOutInApply>({});
-        // 表格操作按钮列表
-        const [firstBtn] = _getBtnList('platinum_recharge_review_tab', true).value;
         // 表格列表数据
-        const { loading, tableList, queryTable } = queryTableList();
+        const { loading, tableList, queryTable } = queryTableList<QhjAccountOutInApply>();
         // 状态
         const { tableStatus, getTableListStatus, search } = handleTableStatus(queryTable, 2);
-        function getBtnListAction(): BtnListType[] {
-            const arr: string[] = ['详情'];
-            switch (tableStatus.value) {
-                case inOrOutStatus.wait:
-                    arr.push('确认收款');
-                    arr.push('审核拒绝');
-                    break;
+
+        const queryTableAction = () => {
+            queryTable(queryAccountInOutApply, { querytype: 2, applystatus: tableStatus.value });
+        };
+        // 表格通用逻辑
+        const param: ComposeTableParam = {
+            queryFn: queryTableAction,
+            menuType: EnumRouterName.plan_audit,
+            tableName: 'table_pcweb_qhj_recharge_review',
+            tableFilterKey: [],
+            isDetail: true,
+        };
+
+        function handleBtn(record: QhjAccountOutInApply) {
+            if (!record) return;
+            const buttons = getTableButton();
+            if (tableStatus.value === inOrOutStatus.wait) {
+                return buttons;
+            } else {
+                return buttons.filter((e) => e.code === 'detail');
             }
-            return firstBtn.filter((e: BtnListType) => arr.includes(e.lable));
         }
         // 预览附件
         const { previewVisible, previewImage, cancelImg, previewImg } = handlePreviewImg();
@@ -89,36 +108,19 @@ export default defineComponent({
             const str = value.split(',')[i];
             previewImg(str);
         }
-        function getTableList() {
-            queryTable(queryAccountInOutApply, { querytype: 2, applystatus: tableStatus.value });
-        }
-        initData(() => {
-            // 默认 查询待审核状态列表
-            getTableList();
-            // 注册表头信息 过滤
-            registerColumn('table_pcweb_qhj_recharge_review', []);
-        });
 
         return {
-            getTableList,
-            getBtnListAction,
+            ...handleComposeTable<QhjAccountOutInApply>(param),
+            loading,
+            handleBtn,
             getTableListStatus,
             previewVisible,
             previewImage,
             getVisibleImg,
             cancelImg,
-            columns,
             search,
             getUrl,
-            expandedRowKeys,
-            selectedRow,
-            Rowclick,
-            firstBtn,
-            loading,
             tableList,
-            updateColumn,
-            queryTable,
-            btnClick,
         };
     },
 });

+ 0 - 53
src/views/platinum/platinum_recharge_withdrawal_review/list/withdrawal/compoments/controlModal/index.vue

@@ -1,53 +0,0 @@
-<template>
-    <div>
-        <!-- 详情 -->
-        <Detail :selectedRow="selectedRow" />
-        <!-- 确认收款 -->
-        <Withdrawal :selectedRow="selectedRow" @refresh="refresh" />
-        <!-- 审核拒绝 -->
-        <Refuse :selectedRow="selectedRow" @refresh="refresh" />
-    </div>
-</template>
-
-<script lang="ts">
-import { defineComponent, PropType } from 'vue';
-import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
-import Detail from '../detail/index.vue';
-import Withdrawal from '../withdrawal/index.vue';
-import Refuse from '../refuse/index.vue';
-import { QhjAccountOutInApply } from '@/services/go/ermcp/qhj/interface';
-
-export default defineComponent({
-    name: 'custom-control-modal',
-    emits: ['refresh'],
-    components: { Detail, Withdrawal, Refuse },
-    props: {
-        selectedRow: {
-            type: Object as PropType<QhjAccountOutInApply>,
-            default: {},
-        },
-    },
-    setup(props, context) {
-        function refresh() {
-            context.emit('refresh');
-        }
-        return {
-            refresh,
-        };
-    },
-});
-</script>
-
-<style lang="less">
-.custom-detail {
-    .ant-form.inlineForm {
-        margin-top: 20px;
-    }
-    .upload {
-        .look {
-            margin-left: 0;
-        }
-    }
-}
-</style>;
-

+ 5 - 4
src/views/platinum/platinum_recharge_withdrawal_review/list/withdrawal/compoments/detail/index.vue

@@ -17,14 +17,14 @@
   </a-modal>
 </template>
 <script lang="ts">
+import { _closeModal } from '@/common/setup/modal/modal';
+import { QhjAccountOutInApply } from '@/services/go/ermcp/qhj/interface';
 import { defineComponent, PropType, ref } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
-import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
 import CommomDetail from '../common-detail/index.vue';
-import { QhjAccountOutInApply } from '@/services/go/ermcp/qhj/interface';
 
 export default defineComponent({
     name: 'platinum_withdrawal_review_detail-desc',
+    emits: ['cancel', 'update'],
     components: { CommomDetail },
     props: {
         selectedRow: {
@@ -33,7 +33,8 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('detail');
+        // 控制关闭弹窗
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         return {
             cancel,

+ 30 - 19
src/views/platinum/platinum_recharge_withdrawal_review/list/withdrawal/compoments/refuse/index.vue

@@ -1,29 +1,40 @@
 <template>
-    <!-- 充值审核 审核拒绝-->
-    <a-modal class="add-custom custom-detail" title="审核拒绝" centered v-model:visible="visible" :maskClosable="false" @cancel="cancel" width="890px">
-        <template #footer>
-            <a-button key="submit" type="primary" :loading="loading" @click="submit">拒绝</a-button>
-            <a-button key="cancel" type="primary" :loading="loading" @click="cancel">关闭</a-button>
-        </template>
-        <CommomDetail :selectedRow="selectedRow" />
-    </a-modal>
+  <!-- 充值审核 审核拒绝-->
+  <a-modal class="add-custom custom-detail"
+           title="审核拒绝"
+           centered
+           v-model:visible="visible"
+           :maskClosable="false"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading"
+                @click="submit">拒绝</a-button>
+      <a-button key="cancel"
+                type="primary"
+                :loading="loading"
+                @click="cancel">关闭</a-button>
+    </template>
+    <CommomDetail :selectedRow="selectedRow" />
+  </a-modal>
 </template>
 
 <script lang="ts">
-import { defineComponent, PropType, ref } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
-import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
-import CommomDetail from '../common-detail/index.vue';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
-import { t2bExchConfirmBusinessReq } from '@/services/proto/manager/interface';
-import { getTimeValue } from '@/utils/time';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { getUserId } from '@/services/bus/user';
-import { t2bExchConfirmBusiness } from '@/services/proto/manager';
 import { QhjAccountOutInApply } from '@/services/go/ermcp/qhj/interface';
+import { t2bExchConfirmBusiness } from '@/services/proto/manager';
+import { t2bExchConfirmBusinessReq } from '@/services/proto/manager/interface';
+import { getTimeValue } from '@/utils/time';
+import { defineComponent, PropType, ref } from 'vue';
+import CommomDetail from '../common-detail/index.vue';
 
 export default defineComponent({
     name: 'custom-detail-desc',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: { CommomDetail },
     props: {
         selectedRow: {
@@ -32,7 +43,8 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('platinum_withdrawal_review_refuse');
+        // 控制关闭弹窗
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         function submit() {
             let reqParams: t2bExchConfirmBusinessReq = {
@@ -48,8 +60,7 @@ export default defineComponent({
             };
 
             requestResultLoadingAndInfo(t2bExchConfirmBusiness, reqParams, loading, ['审核拒绝成功', '审核拒绝失败:']).then(() => {
-                cancel();
-                context.emit('refresh');
+                cancel(true);
             });
         }
         return {

+ 30 - 19
src/views/platinum/platinum_recharge_withdrawal_review/list/withdrawal/compoments/withdrawal/index.vue

@@ -1,28 +1,39 @@
 <template>
-    <!-- 提现审核 确认提现-->
-    <a-modal class="add-custom custom-detail" title="确认提现" centered v-model:visible="visible" :maskClosable="false" @cancel="cancel" width="890px">
-        <template #footer>
-            <a-button key="submit" type="primary" :loading="loading" @click="submit">确认</a-button>
-            <a-button key="cancel" type="primary" :loading="loading" @click="cancel">关闭</a-button>
-        </template>
-        <CommomDetail :selectedRow="selectedRow" />
-    </a-modal>
+  <!-- 提现审核 确认提现-->
+  <a-modal class="add-custom custom-detail"
+           title="确认提现"
+           centered
+           v-model:visible="visible"
+           :maskClosable="false"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading"
+                @click="submit">确认</a-button>
+      <a-button key="cancel"
+                type="primary"
+                :loading="loading"
+                @click="cancel">关闭</a-button>
+    </template>
+    <CommomDetail :selectedRow="selectedRow" />
+  </a-modal>
 </template>
 <script lang="ts">
-import { defineComponent, PropType, ref } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
-import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
-import CommomDetail from '../common-detail/index.vue';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
-import { t2bExchConfirmBusinessReq } from '@/services/proto/manager/interface';
-import { getTimeValue } from '@/utils/time';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { getUserId } from '@/services/bus/user';
-import { t2bExchConfirmBusiness } from '@/services/proto/manager';
 import { QhjAccountOutInApply } from '@/services/go/ermcp/qhj/interface';
+import { t2bExchConfirmBusiness } from '@/services/proto/manager';
+import { t2bExchConfirmBusinessReq } from '@/services/proto/manager/interface';
+import { getTimeValue } from '@/utils/time';
+import { defineComponent, PropType, ref } from 'vue';
+import CommomDetail from '../common-detail/index.vue';
 
 export default defineComponent({
     name: 'platinum_withdrawal_review_confirm_withdrawal',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: { CommomDetail },
     props: {
         selectedRow: {
@@ -31,7 +42,8 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('platinum_withdrawal_review_confirm_withdrawal');
+        // 控制关闭弹窗
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         function submit() {
             let reqParams: t2bExchConfirmBusinessReq = {
@@ -47,8 +59,7 @@ export default defineComponent({
             };
 
             requestResultLoadingAndInfo(t2bExchConfirmBusiness, reqParams, loading, ['确认提现成功', '确认提现失败:']).then(() => {
-                cancel();
-                context.emit('refresh');
+                cancel(true);
             });
         }
         return {

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

@@ -2,94 +2,96 @@
   <!-- 提现审核 -->
   <div class="platinum_withdrawal_review_tab">
     <Filter @search="search" />
-    <contextMenu :contextMenuList="getBtnListAction()">
-      <a-table :columns="columns"
-               class="srcollYTable"
-               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
-               :pagination="false"
-               :expandedRowKeys="expandedRowKeys"
-               :customRow="Rowclick"
-               rowKey="key"
-               :data-source="tableList">
-        <!-- 额外的展开行 -->
-        <template #expandedRowRender="{ record }">
-          <BtnList :btnList="getBtnListAction()"
-                   class="btn-list-sticky"
-                   @onClick="btnClick(record)" />
-        </template>
-        <!-- 账户类型 -->
-        <template #userinfotype="{ record }">
-          <a>{{ record.userinfotype === 1 ? "个人" : "企业" }}</a>
-        </template>
-        <template #applystatus="{ }">
-          <a>{{ getTableListStatus() }}</a>
-        </template>
-      </a-table>
-    </contextMenu>
-    <ControlModal :selectedRow="selectedRow"
-                  @refresh="getTableList" />
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :loading="loading"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList">
+      <!-- 额外的展开行 -->
+      <template #expandedRowRender="{ record }">
+        <mtp-table-button class="btn-list-sticky"
+                          :buttons="handleBtn(record)"
+                          :record="record"
+                          @click="openComponent" />
+      </template>
+      <!-- 账户类型 -->
+      <template #userinfotype="{ record }">
+        <a>{{ record.userinfotype === 1 ? "个人" : "企业" }}</a>
+      </template>
+      <template #applystatus="{ }">
+        <a>{{ getTableListStatus() }}</a>
+      </template>
+    </a-table>
+    <!-- 右键 -->
+    <contextMenu :contextMenu="contextMenu"
+                 @cancel="closeContext"
+                 :list="handleBtn(selectedRow)"> </contextMenu>
+    <component :is="componentId"
+               v-if="componentId"
+               :selectedRow="selectedRow"
+               @cancel="closeComponent"> </component>
   </div>
 </template>
 
 <script lang="ts">
-import { defineComponent, initData, getTableColumns, getTableEvent, contextMenu, BtnList, queryTableList, _getBtnList } from '@/common/export/table';
+import { EnumRouterName } from '@/common/constants/enumRouterName';
+import { ComposeTableParam, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, MtpTableButton, queryTableList } from '@/common/export/commonTable';
+import { getTableButton } from '@/common/setup/table/button';
 import { queryAccountInOutApply } from '@/services/go/ermcp/qhj';
 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 { BtnListType } from '@/common/components/btnList/interface';
 
 export default defineComponent({
     name: 'platinum_withdrawal_review_tab',
-    components: { Filter, contextMenu, BtnList, ControlModal },
+    components: {
+        Filter,
+        contextMenu,
+        MtpTableButton,
+        detail: defineAsyncComponent(() => import('./compoments/detail/index.vue')), // 详情
+        review_confirm: defineAsyncComponent(() => import('./compoments/withdrawal/index.vue')), // 确认提现
+        review_refuse: defineAsyncComponent(() => import('./compoments/refuse/index.vue')), // 审核拒绝
+    },
     setup() {
-        // 表头数据
-        const { columns, registerColumn, updateColumn } = getTableColumns();
-
-        // 表格操作按钮列表
-        const [firstBtn] = _getBtnList('platinum_withdrawal_review_tab', true).value;
         // 表格列表数据
-        const { loading, tableList, queryTable } = queryTableList();
-        // 表格事件
-        const { expandedRowKeys, selectedRow, Rowclick, btnClick } = getTableEvent<QhjAccountOutInApply>({});
+        const { loading, tableList, queryTable } = queryTableList<QhjAccountOutInApply>();
         // 状态
         const { tableStatus, getTableListStatus, search } = handleTableStatus(queryTable, 1);
-        function getBtnListAction(): BtnListType[] {
-            const arr: string[] = ['详情'];
-            switch (tableStatus.value) {
-                case inOrOutStatus.wait:
-                    arr.push('确认提现');
-                    arr.push('审核拒绝');
-                    break;
-            }
-            return firstBtn.filter((e: BtnListType) => arr.includes(e.lable));
-        }
 
-        function getTableList() {
+        const queryTableAction = () => {
             queryTable(queryAccountInOutApply, { querytype: 1, applystatus: tableStatus.value });
+        };
+        // 表格通用逻辑
+        const param: ComposeTableParam = {
+            queryFn: queryTableAction,
+            menuType: EnumRouterName.plan_audit,
+            tableName: 'table_pcweb_qhj_withdrawal_review',
+            tableFilterKey: [],
+            isDetail: true,
+        };
+
+        function handleBtn(record: QhjAccountOutInApply) {
+            if (!record) return;
+            const buttons = getTableButton();
+            if (tableStatus.value === inOrOutStatus.wait) {
+                return buttons;
+            } else {
+                return buttons.filter((e) => e.code === 'detail');
+            }
         }
-        initData(() => {
-            // 默认 查询待审核状态列表
-            getTableList();
-            // 注册表头信息 过滤
-            registerColumn('table_pcweb_qhj_withdrawal_review', []);
-        });
 
         return {
+            ...handleComposeTable<QhjAccountOutInApply>(param),
+            loading,
+            handleBtn,
             getTableListStatus,
-            getBtnListAction,
-            getTableList,
             search,
-            columns,
-            updateColumn,
-            expandedRowKeys,
-            selectedRow,
-            Rowclick,
-            loading,
             tableList,
             queryTable,
-            btnClick,
         };
     },
 });

+ 37 - 20
src/views/report/exposure-report/list/exposure_report/index.vue

@@ -1,24 +1,41 @@
 <template>
-    <!-- 敞口报表 -->
-    <div class="table-detail-container table-height" :loading="loading">
-        <Filter @update="search" @filter="updateColumn"></Filter>
-        <a-table :columns="columns" class="topOrderTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList"> </a-table>
-        <!-- 明细 -->
-        <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-            <a-table :columns="columnsDetail" class="topTable" :pagination="false" rowKey="key" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
-                <!-- 合同类型 -->
-                <template #contracttype="{ text }">
-                    <a>{{ getContractTypeName(text) }}</a>
-                </template>
-                <template #biztype="{ text }">
-                    <a>{{ getBizTypeName(text) }}</a>
-                </template>
-                <template #buyorsell="{ text }">
-                    <a>{{ getBuyOrSellName(text) }}</a>
-                </template>
-            </a-table>
-        </Description>
-    </div>
+  <!-- 敞口报表 -->
+  <div class="table-detail-container table-height"
+       :loading="loading">
+    <Filter @update="search"
+            @filter="updateColumn"></Filter>
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList"> </a-table>
+    <!-- 明细 -->
+    <Description v-if="visible"
+                 @close="closeDrawer"
+                 @changeTab="changeTab"
+                 :tabList="tabList">
+      <a-table :columns="columnsDetail"
+               class="topTable"
+               :pagination="false"
+               rowKey="key"
+               :data-source="detailTableList"
+               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
+        <!-- 合同类型 -->
+        <template #contracttype="{ text }">
+          <a>{{ getContractTypeName(text) }}</a>
+        </template>
+        <template #biztype="{ text }">
+          <a>{{ getBizTypeName(text) }}</a>
+        </template>
+        <template #buyorsell="{ text }">
+          <a>{{ getBuyOrSellName(text) }}</a>
+        </template>
+      </a-table>
+    </Description>
+  </div>
 </template>
 
 <script lang="ts">

+ 25 - 9
src/views/report/finance-report/list/finance_report_finance/index.vue

@@ -1,13 +1,29 @@
 <template>
-    <!-- 财务报表 -->
-    <div class="table-detail-container table-height" :loading="loading">
-        <Filter @update="search"></Filter>
-        <a-table :columns="columns" class="topOrderTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
-        <!-- 明细 -->
-        <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-            <a-table :columns="columnsDetail" class="topTable" :pagination="false" rowKey="key" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
-        </Description>
-    </div>
+  <!-- 财务报表 -->
+  <div class="table-detail-container table-height"
+       :loading="loading">
+    <Filter @update="search"></Filter>
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
+    <!-- 明细 -->
+    <Description v-if="visible"
+                 @close="closeDrawer"
+                 @changeTab="changeTab"
+                 :tabList="tabList">
+      <a-table :columns="columnsDetail"
+               class="topTable"
+               :pagination="false"
+               rowKey="key"
+               :data-source="detailTableList"
+               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
+    </Description>
+  </div>
 </template>
 
 <script lang="ts">

+ 35 - 19
src/views/report/future_report/list/future_report/index.vue

@@ -1,23 +1,39 @@
 <template>
-    <!-- 期货报表 -->
-    <div class="table-detail-container table-height" :loading="loading">
-        <Filter @update="search"></Filter>
-        <a-table :columns="columns" class="topOrderTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
-            <!-- 持仓方向 -->
-            <template #buyorsell="{ record }">
-                <a>{{ record.buyorsell === 1 ? '卖出' : '买入' }}</a>
-            </template>
-        </a-table>
-        <!-- 明细 -->
-        <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-            <a-table :columns="columnsDetail" class="topTable" :pagination="false" rowKey="key" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
-                <!-- 持仓方向 -->
-                <template #buyorsell="{ record }">
-                    <a>{{ record.buyorsell === 1 ? '卖出' : '买入' }}</a>
-                </template>
-            </a-table>
-        </Description>
-    </div>
+  <!-- 期货报表 -->
+  <div class="table-detail-container table-height"
+       :loading="loading">
+    <Filter @update="search"></Filter>
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList">
+      <!-- 持仓方向 -->
+      <template #buyorsell="{ record }">
+        <a>{{ record.buyorsell === 1 ? '卖出' : '买入' }}</a>
+      </template>
+    </a-table>
+    <!-- 明细 -->
+    <Description v-if="visible"
+                 @close="closeDrawer"
+                 @changeTab="changeTab"
+                 :tabList="tabList">
+      <a-table :columns="columnsDetail"
+               class="topTable"
+               :pagination="false"
+               rowKey="key"
+               :data-source="detailTableList"
+               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
+        <!-- 持仓方向 -->
+        <template #buyorsell="{ record }">
+          <a>{{ record.buyorsell === 1 ? '卖出' : '买入' }}</a>
+        </template>
+      </a-table>
+    </Description>
+  </div>
 </template>
 
 <script lang="ts">

+ 26 - 9
src/views/report/inventory-report/list/category/index.vue

@@ -1,13 +1,30 @@
 <template>
-    <!-- 库存报表(品类) -->
-    <div class="table-detail-container table-height" :loading="loading">
-        <Filter @update="search" @filter="updateColumn"></Filter>
-        <a-table :columns="columns" class="topOrderTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList"> </a-table>
-        <!-- 明细 -->
-        <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-            <a-table :columns="columnsDetail" class="topTable" :pagination="false" rowKey="key" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
-        </Description>
-    </div>
+  <!-- 库存报表(品类) -->
+  <div class="table-detail-container table-height"
+       :loading="loading">
+    <Filter @update="search"
+            @filter="updateColumn"></Filter>
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList"> </a-table>
+    <!-- 明细 -->
+    <Description v-if="visible"
+                 @close="closeDrawer"
+                 @changeTab="changeTab"
+                 :tabList="tabList">
+      <a-table :columns="columnsDetail"
+               class="topTable"
+               :pagination="false"
+               rowKey="key"
+               :data-source="detailTableList"
+               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
+    </Description>
+  </div>
 </template>
 
 <script lang="ts">

+ 26 - 9
src/views/report/inventory-report/list/warehouse/index.vue

@@ -1,13 +1,30 @@
 <template>
-    <!-- 库存报表(仓库) -->
-    <div class="table-detail-container table-height" :loading="loading">
-        <Filter @update="search" @filter="updateColumn"></Filter>
-        <a-table :columns="columns" class="topOrderTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList"> </a-table>
-        <!-- 明细 -->
-        <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-            <a-table :columns="columnsDetail" class="topTable" :pagination="false" rowKey="key" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
-        </Description>
-    </div>
+  <!-- 库存报表(仓库) -->
+  <div class="table-detail-container table-height"
+       :loading="loading">
+    <Filter @update="search"
+            @filter="updateColumn"></Filter>
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList"> </a-table>
+    <!-- 明细 -->
+    <Description v-if="visible"
+                 @close="closeDrawer"
+                 @changeTab="changeTab"
+                 :tabList="tabList">
+      <a-table :columns="columnsDetail"
+               class="topTable"
+               :pagination="false"
+               rowKey="key"
+               :data-source="detailTableList"
+               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
+    </Description>
+  </div>
 </template>
 
 <script lang="ts">

+ 88 - 71
src/views/report/spot-report/list/spot_report/index.vue

@@ -1,75 +1,92 @@
 <template>
-    <!-- 现货报表 -->
-    <div class="table-detail-container table-height" :loading="loading">
-        <Filter @update="search" @filter="updateColumn"></Filter>
-        <a-table :columns="columns" class="topOrderTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
-            <template #curaverageprice="{ record }">
-                <span>{{ record.curaverageprice.toFixed(2) }}</span>
-            </template>
-            <template #oriaverageprice="{ record }">
-                <span>{{ record.oriaverageprice.toFixed(2) }}</span>
-            </template>
-            <template #oriamount="{ record }">
-                <span>{{ record.oriamount.toFixed(2) }}</span>
-            </template>
-            <template #todaybuyamount="{ record }">
-                <span>{{ record.todaybuyamount.toFixed(2) }}</span>
-            </template>
-            <template #todaybuyaverageprice="{ record }">
-                <span>{{ record.todaybuyaverageprice.toFixed(2) }}</span>
-            </template>
-            <template #todaysellaverageprice="{ record }">
-                <span>{{ record.todaysellaverageprice.toFixed(2) }}</span>
-            </template>
-            <template #actualpl="{ record }">
-                <span>{{ record.actualpl.toFixed(2) }}</span>
-            </template>
-            <template #curspotprice="{ record }">
-                <span>{{ record.curspotprice.toFixed(2) }}</span>
-            </template>
-            <template #floatpl="{ record }">
-                <span>{{ record.floatpl.toFixed(2) }}</span>
-            </template>
-            <template #curmarketvalue="{ record }">
-                <span>{{ record.curmarketvalue.toFixed(2) }}</span>
-            </template>
-        </a-table>
-        <!-- 明细 -->
-        <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-            <a-table :columns="columnsDetail" class="topTable" :pagination="false" rowKey="key" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
-                <template #curaverageprice="{ record }">
-                    <span>{{ record.curaverageprice.toFixed(2) }}</span>
-                </template>
-                <template #oriaverageprice="{ record }">
-                    <span>{{ record.oriaverageprice.toFixed(2) }}</span>
-                </template>
-                <template #oriamount="{ record }">
-                    <span>{{ record.oriamount.toFixed(2) }}</span>
-                </template>
-                <template #todaybuyamount="{ record }">
-                    <span>{{ record.todaybuyamount.toFixed(2) }}</span>
-                </template>
-                <template #todaybuyaverageprice="{ record }">
-                    <span>{{ record.todaybuyaverageprice.toFixed(2) }}</span>
-                </template>
-                <template #todaysellaverageprice="{ record }">
-                    <span>{{ record.todaysellaverageprice.toFixed(2) }}</span>
-                </template>
-                <template #actualpl="{ record }">
-                    <span>{{ record.actualpl.toFixed(2) }}</span>
-                </template>
-                <template #curspotprice="{ record }">
-                    <span>{{ record.curspotprice.toFixed(2) }}</span>
-                </template>
-                <template #floatpl="{ record }">
-                    <span>{{ record.floatpl.toFixed(2) }}</span>
-                </template>
-                <template #curmarketvalue="{ record }">
-                    <span>{{ record.curmarketvalue.toFixed(2) }}</span>
-                </template>
-            </a-table>
-        </Description>
-    </div>
+  <!-- 现货报表 -->
+  <div class="table-detail-container table-height"
+       :loading="loading">
+    <Filter @update="search"
+            @filter="updateColumn"></Filter>
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList">
+      <template #curaverageprice="{ record }">
+        <span>{{ record.curaverageprice.toFixed(2) }}</span>
+      </template>
+      <template #oriaverageprice="{ record }">
+        <span>{{ record.oriaverageprice.toFixed(2) }}</span>
+      </template>
+      <template #oriamount="{ record }">
+        <span>{{ record.oriamount.toFixed(2) }}</span>
+      </template>
+      <template #todaybuyamount="{ record }">
+        <span>{{ record.todaybuyamount.toFixed(2) }}</span>
+      </template>
+      <template #todaybuyaverageprice="{ record }">
+        <span>{{ record.todaybuyaverageprice.toFixed(2) }}</span>
+      </template>
+      <template #todaysellaverageprice="{ record }">
+        <span>{{ record.todaysellaverageprice.toFixed(2) }}</span>
+      </template>
+      <template #actualpl="{ record }">
+        <span>{{ record.actualpl.toFixed(2) }}</span>
+      </template>
+      <template #curspotprice="{ record }">
+        <span>{{ record.curspotprice.toFixed(2) }}</span>
+      </template>
+      <template #floatpl="{ record }">
+        <span>{{ record.floatpl.toFixed(2) }}</span>
+      </template>
+      <template #curmarketvalue="{ record }">
+        <span>{{ record.curmarketvalue.toFixed(2) }}</span>
+      </template>
+    </a-table>
+    <!-- 明细 -->
+    <Description v-if="visible"
+                 @close="closeDrawer"
+                 @changeTab="changeTab"
+                 :tabList="tabList">
+      <a-table :columns="columnsDetail"
+               class="topTable"
+               :pagination="false"
+               rowKey="key"
+               :data-source="detailTableList"
+               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
+        <template #curaverageprice="{ record }">
+          <span>{{ record.curaverageprice.toFixed(2) }}</span>
+        </template>
+        <template #oriaverageprice="{ record }">
+          <span>{{ record.oriaverageprice.toFixed(2) }}</span>
+        </template>
+        <template #oriamount="{ record }">
+          <span>{{ record.oriamount.toFixed(2) }}</span>
+        </template>
+        <template #todaybuyamount="{ record }">
+          <span>{{ record.todaybuyamount.toFixed(2) }}</span>
+        </template>
+        <template #todaybuyaverageprice="{ record }">
+          <span>{{ record.todaybuyaverageprice.toFixed(2) }}</span>
+        </template>
+        <template #todaysellaverageprice="{ record }">
+          <span>{{ record.todaysellaverageprice.toFixed(2) }}</span>
+        </template>
+        <template #actualpl="{ record }">
+          <span>{{ record.actualpl.toFixed(2) }}</span>
+        </template>
+        <template #curspotprice="{ record }">
+          <span>{{ record.curspotprice.toFixed(2) }}</span>
+        </template>
+        <template #floatpl="{ record }">
+          <span>{{ record.floatpl.toFixed(2) }}</span>
+        </template>
+        <template #curmarketvalue="{ record }">
+          <span>{{ record.curmarketvalue.toFixed(2) }}</span>
+        </template>
+      </a-table>
+    </Description>
+  </div>
 </template>
 
 <script lang="ts">

+ 59 - 43
src/views/report/sum_pl_report/list/sum_pl_report/index.vue

@@ -1,47 +1,63 @@
 <template>
-    <!-- 汇总损益报表 -->
-    <div class="table-detail-container table-height" :loading="loading">
-        <Filter @update="search"></Filter>
-        <a-table :columns="columns" class="topOrderTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="customRow" rowKey="key" :data-source="tableList">
-            <!-- 出现浮点失真  强行处理-->
-            <template #spotactualpl="{ record }">
-                <span>{{ record.spotactualpl.toFixed(2) }}</span>
-            </template>
-            <template #spotfloatpl="{ record }">
-                <span>{{ record.spotfloatpl.toFixed(2) }}</span>
-            </template>
-            <template #futureactualpl="{ record }">
-                <span>{{ record.futureactualpl.toFixed(2) }}</span>
-            </template>
-            <template #sumactualpl="{ record }">
-                <span>{{ record.sumactualpl.toFixed(2) }}</span>
-            </template>
-            <template #sumpl="{ record }">
-                <span>{{ record.sumpl.toFixed(2) }}</span>
-            </template>
-        </a-table>
-        <!-- 明细 -->
-        <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-            <a-table :columns="columnsDetail" class="topTable" :pagination="false" rowKey="key" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
-                <!-- 出现浮点失真  强行处理 * 2-->
-                <template #spotactualpl="{ record }">
-                    <span>{{ record.spotactualpl.toFixed(2) }}</span>
-                </template>
-                <template #spotfloatpl="{ record }">
-                    <span>{{ record.spotfloatpl.toFixed(2) }}</span>
-                </template>
-                <template #futureactualpl="{ record }">
-                    <span>{{ record.futureactualpl.toFixed(2) }}</span>
-                </template>
-                <template #sumactualpl="{ record }">
-                    <span>{{ record.sumactualpl.toFixed(2) }}</span>
-                </template>
-                <template #sumpl="{ record }">
-                    <span>{{ record.sumpl.toFixed(2) }}</span>
-                </template>
-            </a-table>
-        </Description>
-    </div>
+  <!-- 汇总损益报表 -->
+  <div class="table-detail-container table-height"
+       :loading="loading">
+    <Filter @update="search"></Filter>
+    <a-table :columns="columns"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="customRow"
+             rowKey="key"
+             :data-source="tableList">
+      <!-- 出现浮点失真  强行处理-->
+      <template #spotactualpl="{ record }">
+        <span>{{ record.spotactualpl.toFixed(2) }}</span>
+      </template>
+      <template #spotfloatpl="{ record }">
+        <span>{{ record.spotfloatpl.toFixed(2) }}</span>
+      </template>
+      <template #futureactualpl="{ record }">
+        <span>{{ record.futureactualpl.toFixed(2) }}</span>
+      </template>
+      <template #sumactualpl="{ record }">
+        <span>{{ record.sumactualpl.toFixed(2) }}</span>
+      </template>
+      <template #sumpl="{ record }">
+        <span>{{ record.sumpl.toFixed(2) }}</span>
+      </template>
+    </a-table>
+    <!-- 明细 -->
+    <Description v-if="visible"
+                 @close="closeDrawer"
+                 @changeTab="changeTab"
+                 :tabList="tabList">
+      <a-table :columns="columnsDetail"
+               class="topTable"
+               :pagination="false"
+               rowKey="key"
+               :data-source="detailTableList"
+               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
+        <!-- 出现浮点失真  强行处理 * 2-->
+        <template #spotactualpl="{ record }">
+          <span>{{ record.spotactualpl.toFixed(2) }}</span>
+        </template>
+        <template #spotfloatpl="{ record }">
+          <span>{{ record.spotfloatpl.toFixed(2) }}</span>
+        </template>
+        <template #futureactualpl="{ record }">
+          <span>{{ record.futureactualpl.toFixed(2) }}</span>
+        </template>
+        <template #sumactualpl="{ record }">
+          <span>{{ record.sumactualpl.toFixed(2) }}</span>
+        </template>
+        <template #sumpl="{ record }">
+          <span>{{ record.sumpl.toFixed(2) }}</span>
+        </template>
+      </a-table>
+    </Description>
+  </div>
 </template>
 
 <script lang="ts">