Bladeren bron

企业风管8期

li.shaoyi 3 jaren geleden
bovenliggende
commit
7e37d2a6fe

+ 15 - 0
public/proto/mtp.proto

@@ -1128,6 +1128,21 @@ message HedgePlanInfo {
 	optional string PlanTime = 10; // string 计划时间
 }
 
+// 套保计划关闭请求
+message HedgePlanCloseReq {
+	optional MessageHead Header = 1;
+		optional uint64 HedgePlanID = 2; // 套保计划ID
+		optional string ClientTicket = 3; // 客户端流水号
+}
+
+// 套保计划关闭响应
+message HedgePlanCloseRsp {
+	optional MessageHead Header = 1; // 消息头
+	optional int32 RetCode = 2; // 返回码
+	optional string RetDesc = 3; // 描述信息
+		optional string ClientTicket = 4; // 客户端流水号
+}
+
 // 合同操作请求 0 18 8
 message ContractOperateApplyReq {
 	optional MessageHead Header = 1; // MessageHead

+ 2 - 1
src/common/methods/table/interface.ts

@@ -3,7 +3,7 @@ interface CustomRender {
 	customRender: string;
 }
 // 动态表头类型
-export interface ColumnType {
+export interface ColumnType<T = unknown> {
 	key: string;
 	dataIndex?: string;
 	title: string;
@@ -15,6 +15,7 @@ export interface ColumnType {
 	sorter?: Function;
 	render?: Function;
 	customRender?: Function;
+	customCell?: (record: T, rowIndex: number) => void;
 }
 export interface TableKey {
 	table_pcweb_delivery: string, // 现货合同

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

@@ -105,6 +105,9 @@ export const funCode: Code = {
     // 套保计划 -- 新增套保计划
     ErmcpHedgePlanReq: 1900708,  /// 套保计划操作请求(1179650)
     ErmcpHedgePlanRsp: 1900709,  /// 套保计划操作响应(1179651)
+    HedgePlanCloseReq: 1179685, // 套保计划关闭请求
+    HedgePlanCloseRsp: 1179686, //套保计划关闭响应
+
     // 套保计划 -- (old接口)
     HedgePlanOperateReq: 1179650, /// 套保计划操作请求(1179650)
     HedgePlanOperateRsp: 1179651, /// 套保计划操作响应(1179651)

+ 10 - 5
src/services/proto/hedgeplan/index.ts

@@ -1,12 +1,9 @@
 // 套保计划
-import APP from "@/services";
 import { getUserId } from '@/services/bus/user';
-import { ErmcpHedgePlanReq, HedgePlanOperateReq } from "@/services/proto/hedgeplan/interface";
-import { buildProtoReq50, parseProtoRsp50, protoMiddleware } from "@/services/socket/protobuf/buildReq";
-import { Callback } from "@/utils/websocket";
+import { ErmcpHedgePlanReq, HedgePlanOperateReq, HedgePlanCloseReq, HedgePlanCloseRsp } from "@/services/proto/hedgeplan/interface";
+import { protoMiddleware } from "@/services/socket/protobuf/buildReq";
 import moment from "moment";
 import { v4 as uuidv4 } from "uuid";
-import { GldErmcpSpotContractOperateReq } from "@/services/proto/spotcontract/interface";
 
 /**
  * 套保计划操作请求
@@ -30,3 +27,11 @@ export const oldHedgePlanReq = (param: HedgePlanOperateReq): Promise<any> => {
     param.UserID = getUserId()
     return protoMiddleware<HedgePlanOperateReq>(param, 'HedgePlanOperateReq', 'HedgePlanOperateRsp', 2)
 }
+
+/**
+ * 套保计划关闭请求
+ * @param param
+ */
+export const hedgePlanCloseReq = (param: HedgePlanCloseReq): Promise<HedgePlanCloseRsp> => {
+    return protoMiddleware(param, 'HedgePlanCloseReq', 'HedgePlanCloseRsp', 2)
+}

+ 13 - 0
src/services/proto/hedgeplan/interface.ts

@@ -65,4 +65,17 @@ export interface HedgePlanInfo {
     PlanQty: number; // double 计划数量
     ConvertFactor: number; // double 标仓系数
     PlanTime: string; // string 计划时间
+}
+
+// 套保计划关闭请求
+export interface HedgePlanCloseReq {
+    HedgePlanID: number; // 套保计划ID
+    ClientTicket: string; // 客户端流水号
+}
+
+// 套保计划关闭响应
+export interface HedgePlanCloseRsp {
+    RetCode: number; // 返回码
+    RetDesc: string; // 描述信息
+    ClientTicket: string; // 客户端流水号
 }

+ 22 - 14
src/views/business/plan/components/add/index.vue

@@ -1,6 +1,6 @@
 <template>
   <!-- 新增计划 -->
-  <a-modal class="commonModal" title="新增购销计划" v-model:visible="visible" centered @cancel="cancel" width="890px">
+  <a-modal class="commonModal" title="新增购销计划" v-model:visible="visible" centered @cancel="cancel(false)" width="890px">
     <template #footer>
       <!-- <a-button key="submit" class="cancelBtn" @click="submit(1)">保存草稿
       </a-button> -->
@@ -10,55 +10,63 @@
       <a-row :gutter="24">
         <a-col :span="12">
           <a-form-item label="计划类型" name="ContractType">
-            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.ContractType" placeholder="请选择计划类型">
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.ContractType"
+              placeholder="请选择计划类型">
               <a-select-option v-for="item in planTye" :value="item.enumitemname" :key="item.autoid">
-                {{item.enumdicname}}
+                {{ item.enumdicname }}
               </a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="计划名称" name="HedgePlanNo">
-            <a-input class="dialogInput" v-model:value="formState.HedgePlanNo" style="width: 200px" placeholder="请输入计划名称" />
+            <a-input class="dialogInput" v-model:value="formState.HedgePlanNo" style="width: 200px"
+              placeholder="请输入计划名称" />
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="现货品种" name="DeliveryGoodsID">
-            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.DeliveryGoodsID" @change="chooseMG" placeholder="请选择现货品种">
-              <a-select-option v-for="item in DGList" :value="item.data.deliverygoodsid" :key="item.data.deliverygoodsid">
-                {{item.data.deliverygoodsname}}
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.DeliveryGoodsID"
+              @change="chooseMG" placeholder="请选择现货品种">
+              <a-select-option v-for="item in DGList" :value="item.data.deliverygoodsid"
+                :key="item.data.deliverygoodsid">
+                {{ item.data.deliverygoodsname }}
               </a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="商品" name="WRStandardID">
-            <a-select class="inlineFormSelect" style="width: 200px" @change="chooseWR" v-model:value="formState.WRStandardID" placeholder="请选择商品">
+            <a-select class="inlineFormSelect" style="width: 200px" @change="chooseWR"
+              v-model:value="formState.WRStandardID" placeholder="请选择商品">
               <a-select-option v-for="item in gmlist" :value="item.wrstandardid" :key="item.wrstandardid">
-                {{item.wrstandardname}}
+                {{ item.wrstandardname }}
               </a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="计划量" class="relative" name="PlanQty">
-            <a-input-number class="dialogInput" style="width: 200px" :min="0" :max="99999999999" v-model:value="formState.PlanQty" placeholder="请输入计划量"></a-input-number>
+            <a-input-number class="dialogInput" style="width: 200px" :min="0" :max="99999999999"
+              v-model:value="formState.PlanQty" placeholder="请输入计划量"></a-input-number>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="交易用户" name="Tradeuserid">
-            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.Tradeuserid" placeholder="请选择交易用户">
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.Tradeuserid"
+              placeholder="请选择交易用户">
               <a-select-option v-for="item in tableList" :value="item.roleid" :key="item.roleid">
-                {{item.rolename}}
+                {{ item.rolename }}
               </a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="结算币种" name="Currencyid">
-            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.Currencyid" placeholder="请选择结算币种">
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.Currencyid"
+              placeholder="请选择结算币种">
               <a-select-option v-for="item in priceTyep" :key="item.enumitemname" :value="item.enumitemname">
-                {{item.enumdicname}}
+                {{ item.enumdicname }}
               </a-select-option>
             </a-select>
           </a-form-item>

+ 4 - 3
src/views/business/plan/components/audit/index.vue

@@ -1,12 +1,13 @@
 <template>
   <!-- 审核计划-->
-  <a-modal class="commonModal fieldsetDialog warehouse-disable" title="审核计划" v-model:visible="visible" centered @cancel="cancel" width="890px">
+  <a-modal class="commonModal fieldsetDialog warehouse-disable" title="审核计划" v-model:visible="visible" centered
+    @cancel="cancel(false)" width="890px">
     <template #footer>
-      <a-button key="submit" class="cancelBtn" @click="cancel">取消</a-button>
+      <a-button key="submit" class="cancelBtn" @click="cancel(false)">取消</a-button>
       <a-button key="submit" type="primary" :loading="loading" @click="pass">审核通过</a-button>
       <a-button key="submit" type="primary" :loading="loading" @click="refuse">审核拒绝</a-button>
     </template>
-    <a-form class="inlineForm" @submit="handleSearch">
+    <a-form class="inlineForm">
       <fieldset class="formFieldSet">
         <legend>购销计划</legend>
         <a-row :gutter="24">

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

@@ -1,8 +1,9 @@
 <template>
   <!-- 计划撤销-->
-  <a-modal class="commonModal custom-detail" title="计划撤销" v-model:visible="visible" centered :maskClosable="false" @cancel="cancel" width="890px">
+  <a-modal class="commonModal custom-detail" title="计划撤销" v-model:visible="visible" centered :maskClosable="false"
+    @cancel="cancel(false)" width="890px">
     <template #footer>
-      <a-button key="submit" class="cancelBtn" @click="cancel">取消 </a-button>
+      <a-button key="submit" class="cancelBtn" @click="cancel(false)">取消 </a-button>
       <a-button key="submit" type="primary" :loading="loading" @click="submit">确认撤销 </a-button>
     </template>
     <a-form class="inlineForm">
@@ -117,6 +118,7 @@ export default defineComponent({
 
     return {
       visible,
+      loading,
       cancel,
       submit,
       maskClosableFlag,

+ 141 - 0
src/views/business/plan/components/close/index.vue

@@ -0,0 +1,141 @@
+<template>
+    <!-- 关闭计划-->
+    <a-modal class="commonModal fieldsetDialog plan_uncommitted_delete" title="关闭计划" centered v-model:visible="visible"
+        @cancel="cancel(false)" 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(false)">取消</a-button>
+        </template>
+        <a-form class="inlineForm">
+            <fieldset class="formFieldSet">
+                <legend>购销计划</legend>
+                <a-row :gutter="24">
+                    <a-col :span="12">
+                        <a-form-item label="计划类型">
+                            <span class="white">{{ getPlanContractType(selectedRow.contracttype) }}</span>
+                        </a-form-item>
+                    </a-col>
+                    <a-col :span="12">
+                        <a-form-item label="计划名称">
+                            <span class="white">{{ formatValue(selectedRow.hedgeplanno) }}</span>
+                        </a-form-item>
+                    </a-col>
+                    <a-col :span="12">
+                        <a-form-item label="现货品种">
+                            <span class="white">{{ formatValue(selectedRow.deliverygoodsname) }}</span>
+                        </a-form-item>
+                    </a-col>
+                    <a-col :span="12">
+                        <a-form-item label="商品">
+                            <span class="white">{{ formatValue(selectedRow.wrstandardname) }}</span>
+                        </a-form-item>
+                    </a-col>
+                    <a-col :span="12">
+                        <a-form-item label="计划量">
+                            <span class="white">{{ formatValue(selectedRow.planqty) }}</span>
+                        </a-form-item>
+                    </a-col>
+                    <a-col :span="12">
+                        <a-form-item label="交易用户">
+                            <span class="white">{{ formatValue(selectedRow.tradeusername) }}</span>
+                        </a-form-item>
+                    </a-col>
+                    <a-col :span="12">
+                        <a-form-item label="结算币种">
+                            <span class="white">{{ formatValue(selectedRow.currencyname) }}</span>
+                        </a-form-item>
+                    </a-col>
+                    <a-col :span="12">
+                        <a-form-item label="状态">
+                            <span class="white">{{ formatValue(getPlanStatusName(selectedRow.hedgeplanstatus)) }}</span>
+                        </a-form-item>
+                    </a-col>
+                    <a-col :span="12">
+                        <a-form-item label="备注">
+                            <span class="white">{{ formatValue(selectedRow.remark) }}</span>
+                        </a-form-item>
+                    </a-col>
+                </a-row>
+            </fieldset>
+            <fieldset class="formFieldSet">
+                <legend>审核信息</legend>
+                <a-row :gutter="24">
+                    <a-col :span="12">
+                        <a-form-item label="审核时间">
+                            <span class="white">{{ formatValue(selectedRow.audittime) }}</span>
+                        </a-form-item>
+                    </a-col>
+                    <a-col :span="12">
+                        <a-form-item label="审核人">
+                            <span class="white">{{ formatValue(selectedRow.auditname) }}</span>
+                        </a-form-item>
+                    </a-col>
+                </a-row>
+                <a-row :gutter="24">
+                    <a-col :span="12">
+                        <a-form-item label="审核意见">
+                            <span class="white">{{ formatValue(selectedRow.auditremark) }}</span>
+                        </a-form-item>
+                    </a-col>
+                </a-row>
+            </fieldset>
+        </a-form>
+    </a-modal>
+</template>
+
+<script lang="ts">
+import { defineComponent, PropType, ref } from 'vue';
+import { Ermcp3HedgePlan } from '@/services/go/ermcp/plan/interface';
+import { formatValue } from '@/common/methods';
+import { getPlanContractType, getPlanStatusName } from '@/views/business/plan/setup';
+import { Modal } from 'ant-design-vue';
+import { HedgePlanCloseReq } from '@/services/proto/hedgeplan/interface';
+import * as Long from 'long';
+import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
+import { hedgePlanCloseReq } from '@/services/proto/hedgeplan';
+import { getPayCurrencyTypeEnumList } from '@/common/constants/enumsList';
+import { _closeModal } from '@/common/setup/modal/modal';
+import { v4 } from "uuid";
+
+export default defineComponent({
+    name: 'plan_uncommitted_delete',
+    emits: ['cancel', 'update'],
+    props: {
+        selectedRow: {
+            type: Object as PropType<Ermcp3HedgePlan>,
+            default: {},
+        },
+    },
+    setup(props, context) {
+        const { visible, cancel } = _closeModal(context);
+        const loading = ref<boolean>(false);
+        function submit() {
+            Modal.confirm({
+                title: '是否确认关闭',
+                okText: '确认关闭',
+                cancelText: '取消',
+                onOk() {
+                    const params: HedgePlanCloseReq = {
+                        HedgePlanID: Long.fromString(props.selectedRow.hedgeplanid),
+                        ClientTicket: v4(),
+                    };
+                    requestResultLoadingAndInfo(hedgePlanCloseReq, params, loading, ['关闭成功', '关闭失败:']).then(() => {
+                        cancel(true);
+                    });
+                },
+                onCancel() { },
+            });
+        }
+        return {
+            visible,
+            loading,
+            cancel,
+            submit,
+            formatValue,
+            getPlanContractType,
+            getPayCurrencyTypeEnumList,
+            getPlanStatusName,
+        };
+    },
+});
+</script>

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

@@ -1,11 +1,12 @@
 <template>
   <!-- 删除计划-->
-  <a-modal class="commonModal fieldsetDialog plan_uncommitted_delete" title="删除计划" centered v-model:visible="visible" @cancel="cancel" width="890px">
+  <a-modal class="commonModal fieldsetDialog plan_uncommitted_delete" title="删除计划" centered v-model:visible="visible"
+    @cancel="cancel(false)" 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>
+      <a-button key="cancel" type="primary" :loading="loading" @click="cancel(false)">取消</a-button>
     </template>
-    <a-form class="inlineForm" :form="form" @submit="handleSearch">
+    <a-form class="inlineForm">
       <fieldset class="formFieldSet">
         <legend>购销计划</legend>
         <a-row :gutter="24">
@@ -126,6 +127,7 @@ export default defineComponent({
     }
     return {
       visible,
+      loading,
       cancel,
       submit,
       formatValue,

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

@@ -1,8 +1,9 @@
 <template>
   <!-- 购销计划详情-->
-  <a-modal class="commonModal custom-detail" title="购销计划详情" v-model:visible="visible" centered @cancel="cancel" width="890px">
+  <a-modal class="commonModal custom-detail" title="购销计划详情" v-model:visible="visible" centered @cancel="cancel(false)"
+    width="890px">
     <template #footer>
-      <a-button key="submit" type="primary" @click="cancel">关闭</a-button>
+      <a-button key="submit" type="primary" @click="cancel(false)">关闭</a-button>
     </template>
     <a-form class="inlineForm">
       <fieldset class="formFieldSet">
@@ -115,8 +116,8 @@ export default defineComponent({
 
 <style lang="less">
 .custom-detail {
-    .ant-form.inlineForm {
-        margin-top: 20px;
-    }
+  .ant-form.inlineForm {
+    margin-top: 20px;
+  }
 }
 </style>

+ 53 - 37
src/views/business/plan/components/modify/index.vue

@@ -1,55 +1,68 @@
 <template>
   <!-- 修改计划 -->
-  <a-modal class="commonModal modify-custom" title="修改计划" v-if="visible" centered v-model:visible="visible" @cancel="cancel" width="890px">
+  <a-modal class="commonModal modify-custom" title="修改计划" v-if="visible" centered v-model:visible="visible"
+    @cancel="cancel(false)" width="890px">
     <template #footer>
       <a-button key="submit" type="primary" :loading="loading" @click="submit(2)">完成</a-button>
-      <a-button key="cancel" type="primary" :loading="loading" @click="cancel">取消</a-button>
+      <a-button key="cancel" type="primary" :loading="loading" @click="cancel(false)">取消</a-button>
     </template>
     <a-form class="inlineForm" ref="formRef" :model="formState" :rules="rules">
       <a-row :gutter="24">
         <a-col :span="12">
           <a-form-item label="计划类型" name="ContractType">
-            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.ContractType" placeholder="请选择计划类型">
-              <a-select-option v-for="item in planTye" :value="item.enumitemname" :key="item.autoid">{{item.enumdicname}}</a-select-option>
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.ContractType"
+              placeholder="请选择计划类型">
+              <a-select-option v-for="item in planTye" :value="item.enumitemname" :key="item.autoid">
+                {{item.enumdicname}}</a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="计划名称" name="HedgePlanNo">
-            <a-input class="dialogInput" v-model:value="formState.HedgePlanNo" style="width: 200px" placeholder="请输入计划名称" />
+            <a-input class="dialogInput" v-model:value="formState.HedgePlanNo" style="width: 200px"
+              placeholder="请输入计划名称" />
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="现货品种" name="DeliveryGoodsID">
-            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.DeliveryGoodsID" @change="chooseMG" placeholder="请选择现货品种">
-              <a-select-option v-for="item in DGList" :value="item.data.deliverygoodsid" :key="item.data.deliverygoodsid">{{item.data.deliverygoodsname}}
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.DeliveryGoodsID"
+              @change="chooseMG" placeholder="请选择现货品种">
+              <a-select-option v-for="item in DGList" :value="item.data.deliverygoodsid"
+                :key="item.data.deliverygoodsid">{{item.data.deliverygoodsname}}
               </a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="商品" name="WRStandardID">
-            <a-select class="inlineFormSelect" style="width: 200px" @change="chooseWR" v-model:value="formState.WRStandardID" placeholder="请选择商品">
-              <a-select-option v-for="item in gmlist" :value="item.wrstandardid" :key="item.wrstandardid">{{item.wrstandardname}}</a-select-option>
+            <a-select class="inlineFormSelect" style="width: 200px" @change="chooseWR"
+              v-model:value="formState.WRStandardID" placeholder="请选择商品">
+              <a-select-option v-for="item in gmlist" :value="item.wrstandardid" :key="item.wrstandardid">
+                {{item.wrstandardname}}</a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="计划量" class="relative" name="PlanQty">
-            <a-input-number class="dialogInput" style="width: 200px" :min="0" v-model:value="formState.PlanQty" placeholder="请输入计划量"></a-input-number>
+            <a-input-number class="dialogInput" style="width: 200px" :min="0" v-model:value="formState.PlanQty"
+              placeholder="请输入计划量"></a-input-number>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="交易用户" name="Tradeuserid">
-            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.Tradeuserid" placeholder="请选择交易用户">
-              <a-select-option v-for="item in tableList" :value="item.roleid" :key="item.roleid">{{item.rolename}}</a-select-option>
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.Tradeuserid"
+              placeholder="请选择交易用户">
+              <a-select-option v-for="item in tableList" :value="item.roleid" :key="item.roleid">{{item.rolename}}
+              </a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="结算币种" name="Currencyid">
-            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.Currencyid" placeholder="请选择结算币种">
-              <a-select-option v-for="item in priceTyep" :key="item.enumitemname" :value="item.enumitemname">{{item.enumdicname}}</a-select-option>
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.Currencyid"
+              placeholder="请选择结算币种">
+              <a-select-option v-for="item in priceTyep" :key="item.enumitemname" :value="item.enumitemname">
+                {{item.enumdicname}}</a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
@@ -165,30 +178,33 @@ export default defineComponent({
 
 <style lang="less">
 .modify-custom {
-    .upload {
-        display: inline-flex;
-        .ant-btn.uploadBtn {
-            width: 60px;
-            height: 30px;
-            background: @m-blue0;
-            border: 0;
-            padding: 0;
-            text-align: center;
-            font-size: 14px;
-            color: @m-white0;
-            .rounded-corners(3px);
-            &:hover {
-                background: @m-blue0-hover;
-                color: @m-white0-hover;
-            }
-        }
-        .look {
-            color: @m-blue0;
-            font-size: 14px;
-            margin-left: 10px;
-            cursor: pointer;
-        }
+  .upload {
+    display: inline-flex;
+
+    .ant-btn.uploadBtn {
+      width: 60px;
+      height: 30px;
+      background: @m-blue0;
+      border: 0;
+      padding: 0;
+      text-align: center;
+      font-size: 14px;
+      color: @m-white0;
+      .rounded-corners(3px);
+
+      &:hover {
+        background: @m-blue0-hover;
+        color: @m-white0-hover;
+      }
+    }
+
+    .look {
+      color: @m-blue0;
+      font-size: 14px;
+      margin-left: 10px;
+      cursor: pointer;
     }
+  }
 }
 </style
 >;

+ 29 - 83
src/views/business/plan/components/recommit/index.vue

@@ -1,13 +1,7 @@
 <template>
   <!-- 计划 重新提交-->
-  <a-modal
-    class="commonModal plan-recommit"
-    title="重新提交"
-    v-model:visible="visible"
-    centered
-    @cancel="cancel"
-    width="890px"
-  >
+  <a-modal class="commonModal plan-recommit" title="重新提交" v-model:visible="visible" centered @cancel="cancel(false)"
+    width="890px">
     <template #footer>
       <a-button key="submit" type="primary" :loading="loading" @click="submit">完成</a-button>
     </template>
@@ -15,114 +9,66 @@
       <a-row :gutter="24">
         <a-col :span="12">
           <a-form-item label="计划类型" name="ContractType">
-            <a-select
-              class="inlineFormSelect"
-              style="width: 200px"
-              v-model:value="formState.ContractType"
-              placeholder="请选择计划类型"
-            >
-              <a-select-option
-                v-for="item in planTye"
-                :value="item.enumitemname"
-                :key="item.autoid"
-              >{{ item.enumdicname }}</a-select-option>
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.ContractType"
+              placeholder="请选择计划类型">
+              <a-select-option v-for="item in planTye" :value="item.enumitemname" :key="item.autoid">{{ item.enumdicname
+              }}</a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="计划名称" name="HedgePlanNo">
-            <a-input
-              class="dialogInput"
-              v-model:value="formState.HedgePlanNo"
-              style="width: 200px"
-              placeholder="请输入计划名称"
-            />
+            <a-input class="dialogInput" v-model:value="formState.HedgePlanNo" style="width: 200px"
+              placeholder="请输入计划名称" />
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="现货品种" name="DeliveryGoodsID">
-            <a-select
-              class="inlineFormSelect"
-              style="width: 200px"
-              v-model:value="formState.DeliveryGoodsID"
-              @change="chooseMG"
-              placeholder="请选择现货品种"
-            >
-              <a-select-option
-                v-for="item in DGList"
-                :value="item.data.deliverygoodsid"
-                :key="item.data.deliverygoodsid"
-              >{{ item.data.deliverygoodsname }}</a-select-option>
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.DeliveryGoodsID"
+              @change="chooseMG" placeholder="请选择现货品种">
+              <a-select-option v-for="item in DGList" :value="item.data.deliverygoodsid"
+                :key="item.data.deliverygoodsid">{{ item.data.deliverygoodsname }}</a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="商品" name="WRStandardID">
-            <a-select
-              class="inlineFormSelect"
-              style="width: 200px"
-              @change="chooseWR"
-              v-model:value="formState.WRStandardID"
-              placeholder="请选择商品"
-            >
-              <a-select-option
-                v-for="item in gmlist"
-                :value="item.wrstandardid"
-                :key="item.wrstandardid"
-              >{{ item.wrstandardname }}</a-select-option>
+            <a-select class="inlineFormSelect" style="width: 200px" @change="chooseWR"
+              v-model:value="formState.WRStandardID" placeholder="请选择商品">
+              <a-select-option v-for="item in gmlist" :value="item.wrstandardid" :key="item.wrstandardid">{{
+                  item.wrstandardname
+              }}</a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="计划量" class="relative" name="PlanQty">
-            <a-input-number
-              class="dialogInput"
-              style="width: 200px"
-              v-model:value="formState.PlanQty"
-              placeholder="请输入计划量"
-            />
+            <a-input-number class="dialogInput" style="width: 200px" v-model:value="formState.PlanQty"
+              placeholder="请输入计划量" />
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="交易用户" name="Tradeuserid">
-            <a-select
-              class="inlineFormSelect"
-              style="width: 200px"
-              v-model:value="formState.Tradeuserid"
-              placeholder="请选择交易用户"
-            >
-              <a-select-option
-                v-for="item in tableList"
-                :value="item.roleid"
-                :key="item.roleid"
-              >{{ item.rolename }}</a-select-option>
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.Tradeuserid"
+              placeholder="请选择交易用户">
+              <a-select-option v-for="item in tableList" :value="item.roleid" :key="item.roleid">{{ item.rolename }}
+              </a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="结算币种" name="Currencyid">
-            <a-select
-              class="inlineFormSelect"
-              style="width: 200px"
-              v-model:value="formState.Currencyid"
-              placeholder="请选择结算币种"
-            >
-              <a-select-option
-                v-for="item in priceTyep"
-                :key="item.enumitemname"
-                :value="item.enumitemname"
-              >{{ item.enumdicname }}</a-select-option>
+            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.Currencyid"
+              placeholder="请选择结算币种">
+              <a-select-option v-for="item in priceTyep" :key="item.enumitemname" :value="item.enumitemname">{{
+                  item.enumdicname
+              }}</a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="24">
           <a-form-item label="备注" class="relative" name="Remark">
-            <a-input
-              class="dialogInput"
-              v-model:value="formState.Remark"
-              style="width: 636px"
-              placeholder="请输入备注"
-            />
+            <a-input class="dialogInput" v-model:value="formState.Remark" style="width: 636px" placeholder="请输入备注" />
           </a-form-item>
         </a-col>
       </a-row>

+ 5 - 2
src/views/business/plan/list/running/index.vue

@@ -5,7 +5,9 @@
       <Filter @search="updateColumn"></Filter>
     </template>
     <template #default="{ scroll }">
-      <a-table :columns="columns" class="srcollYTable" :scroll="scroll" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList">
+      <a-table :columns="columns" class="srcollYTable" :scroll="scroll" :pagination="false" :loading="loading"
+        :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record, index) => index"
+        :data-source="tableList">
         <!-- 额外的展开行 -->
         <template #expandedRowRender="{ record }">
           <mtp-table-button class="btn-list-sticky" :buttons="buttons" :record="record" @click="openComponent" />
@@ -42,7 +44,8 @@ export default defineComponent({
     MtpTableButton,
     Filter,
     trade: defineAsyncComponent(() => import('@/views/market/futures/compoments/futures-trade/index.vue')), // 套保交易
-    detail: defineAsyncComponent(() => import('../../components/detail/index.vue')),
+    detail: defineAsyncComponent(() => import('../../components/detail/index.vue')), // 详情
+    close: defineAsyncComponent(() => import('../../components/close/index.vue')), // 关闭
   },
   setup() {
     // 权限按钮

+ 2 - 2
src/views/hedgeditem/futures/in/components/bind/form.ts

@@ -4,7 +4,7 @@ import { message } from 'ant-design-vue'
 import { geLoginID_number } from '@/services/bus/login'
 import { queryTableList, handleComposeTable } from '@/common/export/commonTable'
 import { InternalEnableTradeDetailReq, InternalEnableTradeDetailRsp, InternalUncorrelatedTradeDetailRsp } from '@/services/go/ermcp/hedgedItem/interface'
-import { queryErmcp8EnableHedgeditem } from '@/services/go/ermcp/hedgedItem'
+import { queryInternalEnableTradeDetail } from '@/services/go/ermcp/hedgedItem'
 import { InnerTradeLinkRsp } from '@/services/proto/hedgedItem/interface'
 import { innerTradeLink } from '@/services/proto/hedgedItem'
 import { getAreaUserId } from '@/services/bus/user'
@@ -48,7 +48,7 @@ export function useForm(selectedRow: InternalUncorrelatedTradeDetailRsp) {
                 areauserid: getAreaUserId(),
                 goodsid: goodsid,
             }
-            queryTable(queryErmcp8EnableHedgeditem, param);
+            queryTable(queryInternalEnableTradeDetail, param);
         },
     })
 

+ 3 - 3
src/views/hedgeditem/futures/in/components/bind/index.vue

@@ -45,7 +45,7 @@
                 <a-row :gutter="24">
                     <a-col :span="12">
                         <a-form-item label="当前关联数量">
-                            <span class="white">{{ currentQty }}</span>
+                            <span class="up-quote-color">{{ currentQty }}</span>
                         </a-form-item>
                     </a-col>
                 </a-row>
@@ -54,8 +54,8 @@
                         :loading="loading" :rowKey="(record, index) => index" :row-selection="rowSelection">
                         <template #relatedlot="{ record, index }">
                             <a-input-number class="dialogInput" size="small"
-                                :disabled="!selectedRowKeys.includes(index)" :precision="0" v-model:value="record.qty"
-                                style="width:100px" />
+                                :disabled="!selectedRowKeys.includes(index)" :precision="0"
+                                v-model:value="record.relatedlot" style="width:100px" />
                         </template>
                         <template #relatedqty="{ text }">
                             <span>{{ text ?? 0 }}</span>

+ 8 - 0
src/views/hedgeditem/spot/contract/components/bind/form.ts

@@ -75,6 +75,14 @@ export function useForm(selectedRow: UnLinkSpotContractRsp) {
                 customRender: 'relatedqty'
             }
         })
+        // result.forEach((e) => {
+        //     // 高亮选中的行
+        //     e.customCell = (record, index) => ({
+        //         style: {
+        //             backgroundColor: selectedRowKeys.value.includes(index) ? '#172B56' : undefined
+        //         },
+        //     })
+        // })
         return result;
     })
 

+ 2 - 2
src/views/hedgeditem/spot/contract/components/bind/index.vue

@@ -61,8 +61,8 @@
                         </template>
                         <template #relatedqty="{ record, index }">
                             <a-input-number class="dialogInput" size="small"
-                                :disabled="!selectedRowKeys.includes(index)" :precision="0" v-model:value="record.qty"
-                                style="width:100px" />
+                                :disabled="!selectedRowKeys.includes(index)" :precision="0"
+                                v-model:value="record.relatedqty" style="width:100px" />
                         </template>
                     </a-table>
                 </div>