Bläddra i källkod

履约模板查询

huangbin 4 år sedan
förälder
incheckning
4dbe497a6f

+ 8 - 0
src/assets/styles/mixin.less

@@ -1905,6 +1905,14 @@
     }
 }
 
+.tltRight {
+    font-size: 16px;
+    text-align: right;
+    padding: 5px 20px 5px 0;
+    // padding-right: 20px;
+}
+
+
 .ant-collapse.spotCollapse.ant-collapse-borderless {
     margin-top: 10px;
     background-color: transparent;

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 772 - 582
src/assets/styles/variables.css


+ 363 - 0
src/common/components/addPermanceTemp/index.vue

@@ -0,0 +1,363 @@
+<template>
+  <!--新增履约模板-->
+  <Drawer :title="'新增履约模板'"
+          :placement="'right'"
+          :visible="visible"
+          @cancel="cancel"
+          class="top600">
+    <a-spin :spinning="loading">
+      <div class="listed">
+        <a-form class="inlineForm dialogForm"
+                ref="formRef"
+                :model="formState"
+                :rules="rules">
+          <div class="formBar">
+            <a-row :gutter="24">
+              <a-col :span="24">
+                <a-form-item label="模版名称"
+                             name="name">
+                  <a-input class="commonInput"
+                           v-model:value="formState.name"
+                           placeholder="请输入模版名称"
+                           style="width: 260px" />
+                </a-form-item>
+              </a-col>
+            </a-row>
+            <a-row class="tableTitle">
+              <a-col :span="7">步骤类型</a-col>
+              <a-col :span="6">步骤值(%)</a-col>
+              <a-col :span="7">距离上一步天数</a-col>
+              <a-col :span="4">操作</a-col>
+            </a-row>
+            <a-row class="tableContent"
+                   v-for="(parent, index) in formState.domains"
+                   :key="parent">
+              <a-col :span="7">
+                <a-form-item :name="['domains',index, 'steptypeid']"
+                             :rules="rules.domains.steptypeid">
+                  <a-select class="inlineFormSelect dialogTableSelect"
+                            style="width: 158px"
+                            placeholder="请选择"
+                            @change="stepTypeChange(parent)"
+                            v-model:value="parent.steptypeid">
+                    <a-select-option v-for="item in list"
+                                     :key="item.steptypeid"
+                                     :value="item.steptypeid">{{item.steptypename}}
+                    </a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :span="6">
+                <a-form-item :name="['domains',index, 'stepvalue']"
+                             :rules="rules.domains.stepvalue">
+                  <a-input-number class="commonInput dialogTableInput"
+                                  :disabled="isSummary(parent)"
+                                  style="width: 135px"
+                                  type="number"
+                                  v-model:value="parent.stepvalue"></a-input-number>
+                </a-form-item>
+              </a-col>
+              <a-col :span="7">
+                <a-form-item :name="['domains',index, 'stepdays']"
+                             :rules="rules.domains.stepdays">
+                  <a-input-number class="commonInput dialogTableInput"
+                                  style="width: 157px"
+                                  type="number"
+                                  v-model:value="parent.stepdays"></a-input-number>
+                </a-form-item>
+              </a-col>
+              <a-col :span="4">
+                <svg class="icon svg-icon"
+                     @click="deleteTemp(index)"
+                     v-if="showDeleteTemp(index)"
+                     aria-hidden="true">
+                  <use xlink:href="#icon-shanchu" />
+                </svg>
+                <PlusCircleOutlined v-if="showAddTempBtn(index)"
+                                    @click="addTemp()" />
+              </a-col>
+            </a-row>
+            <div class="noticeTip">
+              <div>注意事项:</div>
+              <div>1、买方支付汇总值必须为100%;</div>
+              <div>2、卖方收款汇总值必须为100%;</div>
+              <div>3、配置卖方收款之前要有买方支付,且其值不能多于买方支付的值。</div>
+            </div>
+          </div>
+          <a-row :gutter="24">
+            <a-col :span="24"
+                   class="fixedBtns">
+              <a-form-item class="btnCenter">
+                <a-button class="listedBtn"
+                          @click="submit">确定</a-button>
+              </a-form-item>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-spin>
+  </Drawer>
+</template>
+
+<script lang="ts">
+import { defineComponent, PropType, reactive, Ref, ref, UnwrapRef } from 'vue';
+import { Des } from '@/common/components/commonDes';
+import { _closeModal } from '@/common/setup/modal/modal';
+import Drawer from '@/common/components/drawer/index.vue';
+import { PlusOutlined, MinusOutlined, SearchOutlined, PlusCircleOutlined } from '@ant-design/icons-vue';
+import { QueryPermancePlanTmpRsp, QueryWrFriendApplyRsp, QueryWrPerformanceStepTypeRsp } from '@/services/go/wrtrade/interface';
+import { TempWrOrderQuoteDetail } from '@/views/market/spot_trade/components/post_buying/interface';
+import { queryQueryWrFriend, queryWrPerformanceStepType } from '@/services/go/wrtrade';
+import { message } from 'ant-design-vue';
+import { useQueryData } from '@/common/setup/request';
+import { AddPerformanceTemp, PerfomanceStempTempInfo } from '@/services/proto/performance/interface';
+import { validateAction } from '@/common/setup/form';
+import { PermanceTemp, PermanceTempForm } from './interface';
+import { getUserId } from '@/services/bus/account';
+import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
+import { addPerformanceTemp } from '@/services/proto/performance';
+import { geLoginID_number } from '@/services/bus/login';
+import { onMounted } from '@vue/runtime-core';
+
+// 初始化 模板
+const initTemp = (): PermanceTemp => {
+    return { steptypeid: undefined, stepindex: 1, stepvalue: null, isauto: 0, remark: '', stepdays: null, steptypename: '' };
+};
+
+// 新增 模板
+const useAddTemp = (formState: UnwrapRef<PermanceTempForm>) => {
+    function addTemp() {
+        const temp = initTemp();
+        formState.domains.push(temp);
+    }
+    function showAddTempBtn(index: number) {
+        return index === formState.domains.length - 1;
+    }
+    return { addTemp, showAddTempBtn };
+};
+
+// 删除 模板
+const useDeleteTemp = (formState: UnwrapRef<PermanceTempForm>) => {
+    function deleteTemp(index: number) {
+        formState.domains.splice(index, 1);
+    }
+    function showDeleteTemp(index: number) {
+        return index !== 0;
+    }
+    return { deleteTemp, showDeleteTemp };
+};
+
+// 编辑 模板
+const useEditeTemp = (typeList: Ref<QueryWrPerformanceStepTypeRsp[]>) => {
+    function findTemp(item: PermanceTemp) {
+        return typeList.value.find((el) => el.steptypeid === item.steptypeid);
+    }
+    // 汇总
+    function isSummary({ steptypename }: PermanceTemp) {
+        return steptypename === '买方支付汇总' || steptypename === '卖方收款汇总' ? true : false;
+    }
+    // 切换步骤类型
+    function stepTypeChange(item: PermanceTemp) {
+        const stepType = findTemp(item)!;
+        item.steptypename = stepType.steptypename;
+        // 卖方收款汇总值必须为100%;
+        if (isSummary(item)) {
+            item.stepvalue = 100;
+        }
+    }
+    return { isSummary, stepTypeChange };
+};
+
+// 表单
+const userForm = (selectedRow: QueryPermancePlanTmpRsp) => {
+    const formRef = ref();
+    const formState: UnwrapRef<PermanceTempForm> = reactive({ domains: [initTemp()], name: '' });
+    function isUpdate() {
+        return !!selectedRow.autoid;
+    }
+    if (isUpdate()) {
+        // 有值代表 修改,无值是新增
+        formState.name = selectedRow.templatename;
+        formState.domains = selectedRow.LstStep.map((el) => {
+            el.stepvalue = el.stepvalue ? +(el.stepvalue * 100).toFixed(0) : el.stepvalue;
+            return el;
+        });
+    }
+    const findIndex = (name: string): number => formState.domains.findIndex((temp) => temp.steptypename === name);
+    const total = (name: string): number =>
+        formState.domains
+            .filter((temp) => temp.steptypename === name)
+            .reduce((acc, cur) => {
+                const { stepvalue } = cur;
+                return stepvalue ? acc + stepvalue : acc;
+            }, 0);
+    // 配置卖方收款之前要有买方支付
+    function validateSepeTypeId(value: any) {
+        const sellIndex = findIndex('卖方收款');
+        if (sellIndex !== -1) {
+            const buyIndex = findIndex('买方支付');
+            if (buyIndex > sellIndex) {
+                return Promise.reject('配置卖方收款之前要有买方支付');
+            }
+        }
+        return Promise.resolve();
+    }
+    function validateStepValue(value: any) {
+        const buyTotal = total('买方支付');
+        const sellTotal = total('卖方收款');
+        if (sellTotal > buyTotal) {
+            return Promise.reject('卖方收款不能多于买方付款');
+        }
+        return Promise.resolve();
+    }
+    const rules = {
+        name: { required: true, message: '请输入模版名称', trigger: 'blur' },
+        domains: {
+            steptypeid: [
+                { required: true, message: '请选择步骤类型' },
+                { required: true, validator: validateSepeTypeId },
+            ],
+            stepvalue: [
+                { required: true, message: '请输入步骤值', trigger: 'blur', type: 'number' },
+                { required: true, validator: validateStepValue },
+            ],
+            stepdays: { required: true, message: '请输入距离上一步天数', trigger: 'blur', type: 'number' },
+        },
+    };
+
+    return { formRef, formState, rules, isUpdate };
+};
+
+export default defineComponent({
+    emits: ['cancel', 'update'],
+    name: 'warehouse_receipt_trade_blocs_delisting',
+    props: {
+        selectedRow: {
+            type: Object as PropType<QueryPermancePlanTmpRsp>,
+            default: {},
+        },
+    },
+    components: { Des, Drawer, PlusOutlined, MinusOutlined, SearchOutlined, PlusCircleOutlined },
+    setup(props, context) {
+        const { visible, cancel } = _closeModal(context);
+        const loading = ref<boolean>(false);
+        // 步骤类型
+        const { list } = useQueryData<QueryWrPerformanceStepTypeRsp>(queryWrPerformanceStepType);
+        const { formRef, formState, rules, isUpdate } = userForm(props.selectedRow);
+
+        function submit() {
+            validateAction<PermanceTempForm>(formRef, formState).then((res) => {
+                const performancesteps: PerfomanceStempTempInfo[] = res.domains.map((el) => {
+                    const { steptypeid, stepvalue, stepdays, isauto, remark, stepindex } = el;
+                    return {
+                        steptypeid: steptypeid as number,
+                        stepvalue: stepvalue as number,
+                        stepdays: stepdays as number,
+                        isauto,
+                        remark,
+                        stepindex,
+                    };
+                });
+                const param: AddPerformanceTemp = {
+                    autoid: isUpdate() ? props.selectedRow.autoid : 0,
+                    templatename: res.name,
+                    userid: getUserId(),
+                    performancesteps,
+                    creatorid: geLoginID_number()!,
+                };
+                const msg: [string, string] = isUpdate() ? ['修改履约模板成功', '修改履约模板失败:'] : ['新增履约模板成功', '新增履约模板失败:'];
+                requestResultLoadingAndInfo(addPerformanceTemp, param, loading, msg).then(() => {
+                    cancel(true);
+                });
+            });
+        }
+        return {
+            loading,
+            list,
+            formRef,
+            formState,
+            rules,
+            submit,
+            ...useAddTemp(formState),
+            ...useDeleteTemp(formState),
+            ...useEditeTemp(list),
+            cancel,
+            visible,
+        };
+    },
+});
+</script>
+
+<style lang="less" scoped>
+.listed {
+    padding: 18px 10px 0;
+    .formBar {
+        height: calc(100% - 70px);
+        padding: 0;
+        .ant-row.tableTitle {
+            .ant-col {
+                height: 40px;
+                line-height: 40px;
+                white-space: nowrap;
+                text-align: center;
+                color: @m-grey1;
+                font-size: 14px;
+                border-right: 1px solid @m-black6;
+                border-top: 1px solid @m-black6;
+                border-bottom: 1px solid @m-black6;
+            }
+            .ant-col:first-child {
+                border-left: 1px solid @m-black6;
+            }
+        }
+        .ant-row.tableContent {
+            .ant-col {
+                // height: 40px;
+                line-height: 40px;
+                text-align: center;
+                border-right: 1px solid @m-black6;
+                border-bottom: 1px solid @m-black6;
+                .icon {
+                    color: @m-yellow8;
+                    font-size: 20px;
+                    cursor: pointer;
+                }
+                .anticon {
+                    font-size: 20px;
+                    color: @m-blue0;
+                    margin-left: 14px;
+                    cursor: pointer;
+                }
+            }
+            .ant-col:first-child {
+                border-left: 1px solid @m-black6;
+            }
+        }
+        .noticeTip {
+            width: 100%;
+            margin-top: 15px;
+            .flex;
+            flex-direction: column;
+            > div {
+                height: 30px;
+                line-height: 30px;
+                font-size: 14px;
+                color: @m-grey1;
+            }
+        }
+    }
+    .ant-form.inlineForm {
+        .ant-row.ant-form-item {
+            margin-bottom: 5px;
+        }
+        .ant-row.ant-form-item.ant-form-item-with-help {
+            white-space: nowrap;
+            margin-left: 2px;
+        }
+    }
+    .dialogTableSelect,
+    .dialogTableInput {
+        margin-left: 2px;
+    }
+}
+</style>

+ 29 - 0
src/common/components/addPermanceTemp/interface.ts

@@ -0,0 +1,29 @@
+import { Moment } from "moment";
+
+export interface FormParam {
+    accountid: undefined | number,
+    FixedPrice: number,
+    OrderQty: number,
+    delistingQty: number,
+    margin: number,
+    DeliveryMonth: Moment,
+    vidaliteTime: Moment,
+    friends: number[],
+    permanceTempName: string,
+    permaceTempId: number,
+}
+
+export interface PermanceTemp {
+    steptypeid: number | undefined;
+    stepvalue: number | null;
+    stepdays: number | null;
+    isauto: number; // 是否自动是否自动 - 0:不自动 1:自动
+    remark: string; // 备注
+    stepindex: number; //步骤序号
+    steptypename: string; //步骤名
+}
+
+export interface PermanceTempForm {
+    domains: PermanceTemp[],
+    name: string,
+}

+ 4 - 0
src/services/funcode/index.ts

@@ -197,6 +197,10 @@ export const funCode: Code = {
     PerformancePlanTemplateReq: 1900746, // 模板信息操作请求
     PerformancePlanTemplateRsp: 1900747, //     模板信息操作响应
 
+    DelPerformancePlanTemplateReq: 1900748,//删除模板信息操作请求
+    DelPerformancePlanTemplateRsp: 1900749, //删除模板信息操作响应
+
+
     // 履约
     PerformanceManualConfirmReq: 1310723, // 履约手动确认请求
     PerformanceManualConfirmRsp: 1310724, // 履约手动确认应答

+ 1 - 1
src/services/go/wrtrade/interface.ts

@@ -1137,7 +1137,7 @@ export interface QueryPermancePlanTmpRsp {
     takemode: number;//提货方式 - 1:无 2:买方自提 3:卖方发货
     templatename: string;//模板名称
     templatetype: number;//模板类型 - number;
-    lstStep: WrGoodsPerformanceStep[],// 步骤信息列表
+    LstStep: WrGoodsPerformanceStep[],// 步骤信息列表
     //:通用 1:交割 2:仓单贸易 3:预售集采 7:竞拍-竞价式 8:竞拍-大宗式 9:荷兰式–失效枚举:4:竞拍-降价式 (无仓单) 5:挂牌期权 6:竞拍-降价式
     userid: number;//所属用户
 }

+ 9 - 0
src/services/proto/performance/index.ts

@@ -58,4 +58,13 @@ export const performanceActivate = (param: PerformanceActivateReq): Promise<any>
  */
 export const addPerformanceTemp = (param: AddPerformanceTemp): Promise<any> => {
     return protoMiddleware<AddPerformanceTemp>(param, 'PerformancePlanTemplateReq', 'PerformancePlanTemplateRsp', HeadEnum.tradeMode17)
+}
+
+/**
+ * 删除模板信息
+ * @param param
+ * @returns
+ */
+export const delPerformancePlanTemplateReq = (autoid: number): Promise<any> => {
+    return protoMiddleware<{ autoid: number }>({ autoid }, 'DelPerformancePlanTemplateReq', 'DelPerformancePlanTemplateRsp', HeadEnum.tradeMode17)
 }

+ 5 - 4
src/views/market/spot_trade/warehouse_receipt_trade/warehouse_receipt_trade_blocs/components/post-buying/index.vue

@@ -116,7 +116,8 @@
                   <use xlink:href="#icon-pengyou1" />
                 </svg>
                 <a-checkbox class="commonCheckbox"
-                            v-model:checked="friendCheck" @change="limiteFriends">不限</a-checkbox>
+                            v-model:checked="friendCheck"
+                            @change="limiteFriends">不限</a-checkbox>
               </a-form-item>
             </a-col>
             <a-col :span="24">
@@ -226,7 +227,7 @@ const useAccount = (formState: UnwrapRef<FormParam>) => {
     function getSelectedAccount() {
         return accountList.find((e) => e.accountid === formState.accountid);
     }
-    return { getSelectedAccount };
+    return { getSelectedAccount, accountList };
 };
 
 // 金额
@@ -270,8 +271,8 @@ const useFriends = (formState: UnwrapRef<FormParam>) => {
     }
     // 是否 不限好友
     function limiteFriends() {
-        if(friendCheck.value) {
-            formState.friends.length = 0
+        if (friendCheck.value) {
+            formState.friends.length = 0;
         }
     }
     return { friendCheck, showFriend, chooseFriend, openFriend, getFriendLength, limiteFriends };

+ 1 - 1
src/views/market/spot_trade/warehouse_receipt_trade/warehouse_receipt_trade_blocs/components/post-buying/permancePlanTmp.vue

@@ -67,7 +67,7 @@ export default defineComponent({
 
         const param: QueryPermancePlanTmpReq = {
             userid: getUsrId(),
-            tmptype: '2',
+            tmptype: '0,2',
         };
         const { loading, tableList, queryTable } = queryTableList<QueryPermancePlanTmpRsp>();
         queryTable(queryQueryPermancePlanTmp, param);

+ 53 - 0
src/views/search/search_performance_template/search_performance_template_sub/delete.vue

@@ -0,0 +1,53 @@
+<template>
+  <!-- 删除 -->
+  <div>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent, PropType, ref } from 'vue';
+import Drawer from '@/common/components/drawer/index.vue';
+import { QueryPermancePlanTmpRsp } from '@/services/go/wrtrade/interface';
+import { _closeModal } from '@/common/setup/modal/modal';
+import { Modal } from 'ant-design-vue';
+import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
+import { delPerformancePlanTemplateReq } from '@/services/proto/performance';
+
+export default defineComponent({
+    name: 'search_performance_template_delete',
+    components: { Drawer },
+    emits: ['cancel', 'update'],
+    props: {
+        selectedRow: {
+            type: Object as PropType<QueryPermancePlanTmpRsp>,
+            default: {},
+        },
+    },
+    setup(props, context) {
+        const { visible, cancel } = _closeModal(context);
+        const loading = ref<boolean>(false);
+        Modal.confirm({
+            title: '删除',
+            content: '是否确认删除履约模板!',
+            onOk: submit,
+            onCancel: cancel,
+        });
+        function submit() {
+            // 挂牌撤单请求
+            const id = props.selectedRow.autoid;
+            requestResultLoadingAndInfo(delPerformancePlanTemplateReq, id, loading, ['删除成功', '删除失败:']).then(() => {
+                cancel(true);
+            });
+        }
+        return {
+            visible,
+            cancel,
+            submit,
+            loading,
+        };
+    },
+});
+</script>
+
+<style lang="less" scoped>
+</style>;

+ 62 - 42
src/views/search/search_performance_template/search_performance_template_sub/index.vue

@@ -1,5 +1,9 @@
 <template>
   <!-- 履约模板查询 -->
+  <div class="tltRight">
+    <BtnList :btnList="headBtns"
+             @click="openComponent" />
+  </div>
   <section>
     <a-table :columns="columns"
              class="srcollYTable expandLeftTable"
@@ -14,7 +18,7 @@
              :data-source="tableList">
       <!-- 状态 -->
       <template #handle="{ record }">
-        <BtnList :btnList="btnList"
+        <BtnList :btnList="tableBtns"
                  :record="record"
                  class="btn-list-sticky"
                  @click="openComponent" />
@@ -28,39 +32,82 @@
     <Description v-if="visible"
                  @close="closeDrawer"
                  :tabList="tabList">
-      <!-- <a-table :columns="columnsDetail"
+      <a-table :columns="detailColumns"
                class="topTable"
                :pagination="false"
                rowKey="key"
-               :data-source="detailTableList"
+               :data-source="getDetailTalbeList()"
                :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
-      </a-table> -->
+        <template #stepvalue="{ text }">
+          <span>{{ text ? (text * 100).toFixed(0) : text }}</span>
+        </template>
+      </a-table>
     </Description>
+    <component :is="componentId"
+               v-if="componentId"
+               :selectedRow="selectedRow"
+               @cancel="closeComponent"></component>
   </section>
 </template>
 
 <script lang="ts">
-import { queryTableList, defineComponent, BtnList } from '@/common/export/commonTable';
-import { queryQueryPermancePlanTmp, queryWrFinanceBuyApply } from '@/services/go/wrtrade';
-import { QueryPermancePlanTmpReq, QueryPermancePlanTmpRsp, WrFinanceBuyApply } from '@/services/go/wrtrade/interface';
-import { getRecordItemTab } from '@/common/setup/order/orderData';
-import { handleComposeOrderTable, handleComposeTable_detail } from '@/common/setup/table/compose';
-import { ComposeOrderTableParam, ComposeTableDetailParam } from '@/common/setup/table/interface';
+import { queryTableList, defineComponent, BtnList, defineAsyncComponent } from '@/common/export/commonTable';
+import { queryQueryPermancePlanTmp } from '@/services/go/wrtrade';
+import { QueryPermancePlanTmpReq, QueryPermancePlanTmpRsp } from '@/services/go/wrtrade/interface';
+import { handleComposeTable_detail } from '@/common/setup/table/compose';
+import { ComposeTableDetailParam } from '@/common/setup/table/interface';
 import { formatTime } from '@/common/methods';
 import { expandIcon } from '@/common/setup/table/clolumn';
-import { getApplyStatusFinanceName, getFinanceTypeName, getInterestrateModeName, getInterestSettleModeName } from '@/common/constants/enumsName';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
 import { getColumns } from './setup';
 import { getUsrId } from '@/services/bus/user';
 import { getButtonList, getOrderBtnList } from '@/common/setup/table/button';
 import { handleModalComponent } from '@/common/setup/asyncComponent';
 import Description from '@/common/components/description/index.vue';
+import { Ref } from 'vue';
+
+const addCode = 'search_performance_template_add';
+const updateCode = 'search_performance_template_modiy';
+const deleteCode = 'search_performance_template_delete';
+
+const useButton = () => {
+    // 表格操作按钮列表
+    const btnList = getButtonList(EnumRouterName.search_performance_template_sub, false);
+    // 表格 头部 上面按钮
+    const headBtns = btnList.filter((e) => e.code === addCode);
+    const tableBtns = btnList.filter((e) => e.code !== addCode);
+    return { headBtns, tableBtns };
+};
+
+const useStepDetail = (selectedRow: Ref<QueryPermancePlanTmpRsp | undefined>) => {
+    const temp = [
+        { title: '履约步骤', key: 'steptypename' },
+        { title: '步骤值(%)', key: 'stepvalue' },
+        { title: '距离上一步天数', key: 'stepdays' },
+    ];
+    const columns = temp.map((el) => {
+        const obj = {
+            dataIndex: el.key,
+            align: 'center',
+            width: 200,
+            slots: { customRender: el.key },
+        };
+        return { ...el, ...obj };
+    });
+    function getDetailTalbeList() {
+        return selectedRow.value ? selectedRow.value.LstStep : [];
+    }
+    return { detailColumns: columns, getDetailTalbeList };
+};
 
 export default defineComponent({
     name: EnumRouterName.search_performance_template_sub,
     components: {
         BtnList,
         Description,
+        [addCode]: defineAsyncComponent(() => import('@/common/components/addPermanceTemp/index.vue')),
+        [updateCode]: defineAsyncComponent(() => import('@/common/components/addPermanceTemp/index.vue')),
+        [deleteCode]: defineAsyncComponent(() => import('./delete.vue')),
     },
     setup() {
         // 表格列表数据
@@ -68,7 +115,7 @@ export default defineComponent({
         const loadData = () => {
             const param: QueryPermancePlanTmpReq = {
                 userid: getUsrId(),
-                tmptype: '2,3',
+                tmptype: '0,2,3',
             };
             queryTable(queryQueryPermancePlanTmp, param);
         };
@@ -84,10 +131,6 @@ export default defineComponent({
         const {
             visible,
             closeDrawer, // 控制 drawer 组件是否显示
-            updateColumn, //  表头数据
-            columnsDetail,
-            registerColumnDetail,
-            detailTableList, // 明细表头数据
             expandedRowKeys,
             selectedRow,
             Rowclick, // 表格事件
@@ -96,35 +139,16 @@ export default defineComponent({
 
         // 表格操作按钮列表
         const btnList = getButtonList(EnumRouterName.search_performance_template_sub, false);
-        // 选中的数据
-        // 控制异步组件
-        const { componentId, closeComponent, openComponent } = handleModalComponent(loadData, selectedRow);
-        // 获取列表数据
-        // const queryTableAction = () => {
-        //     queryTable(queryWrFinanceBuyApply);
-        // };
-        // // 表格通用逻辑
-        // const param: ComposeOrderTableParam = {
-        //     queryFn: queryTableAction,
-        //     tableName: 'table_pcweb_financing_manage_bottom_apply_order',
-        //     recordList: getRecordItemTab(),
-        // };
         return {
-            // ...handleComposeOrderTable<WrFinanceBuyApply>(param),
             loading,
             tableList,
+            ...useButton(),
             columns,
-            btnList,
-            componentId,
-            closeComponent,
-            openComponent,
+            ...handleModalComponent(loadData, selectedRow),
+            ...useStepDetail(selectedRow),
 
             visible,
             closeDrawer, // 控制 drawer 组件是否显示
-            updateColumn, //  表头数据
-            columnsDetail,
-            registerColumnDetail,
-            detailTableList, // 明细表头数据
             expandedRowKeys,
             selectedRow,
             Rowclick, // 表格事件
@@ -132,10 +156,6 @@ export default defineComponent({
 
             formatTime,
             expandIcon,
-            getFinanceTypeName,
-            getApplyStatusFinanceName,
-            getInterestrateModeName,
-            getInterestSettleModeName,
         };
     },
 });

+ 1 - 1
src/views/search/search_performance_template/search_performance_template_sub/setup.ts

@@ -5,4 +5,4 @@ export function getColumns() {
         { title: '操作', key: 'handle', dataIndex: 'handle', align: 'center', width: 200, slots: { customRender: 'handle' } },
     ]
     return { columns }
-}
+}

Vissa filer visades inte eftersom för många filer har ändrats