Kaynağa Gözat

企业风管8期-套期项目

li.shaoyi 3 yıl önce
ebeveyn
işleme
21e9906af7

+ 1 - 1
src/services/go/ermcp/hedgedItem/interface.ts

@@ -86,7 +86,7 @@ export interface Ermcp2HedgedItemRsp {
  */
 export interface HedgedItemMiddleGoodsList {
     futurehedgeqty: number; // 期货持仓套期量
-    hedgeditemid: number; // 被套期项目ID(624+Unix秒时间戳(10位)+xxxxxx)
+    hedgeditemid: string; // 被套期项目ID(624+Unix秒时间戳(10位)+xxxxxx)
     hiexpsoure: number; // 期现敞口量 = 未执行套期量 + 期货持仓套期量
     middlegoodscode: string; // 套保商品代码
     middlegoodsid: number; // 套保品种ID

+ 1 - 1
src/services/proto/hedgedItem/interface.ts

@@ -74,7 +74,7 @@ export interface HedgedItemInfo {
 // 合同关联项目请求
 export interface ContractRelatedHedgedItemReq {
     SpotContractID: number; // 现货合同ID
-    HedgedItemInfos: HedgedItemInfo; // 被套期项目信息
+    HedgedItemInfos: HedgedItemInfo[]; // 被套期项目信息
     ClientTicket: string; // 客户端流水号
 }
 

+ 1 - 1
src/utils/number/index.ts

@@ -5,7 +5,7 @@
  * @param maxCount 最大小数位 超过的时候需要对数值进行处理 
  * @returns 
  */
-export function getDecimalsNum(val: any, decimal = 2, maxCount = 6) {
+export function getDecimalsNum(val: any, decimal = 2, maxCount = 2) {
     let result = val
     if (typeof val === 'number') {
         const str = val.toString();

+ 13 - 16
src/views/hedgeditem/spot/contract/components/bind/form.ts

@@ -3,10 +3,11 @@ import { v4 } from 'uuid'
 import Long from 'long'
 import { message } from 'ant-design-vue'
 import { queryTableList, handleComposeTable } from '@/common/export/commonTable'
+import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo'
 import { PriceType } from '@/@next/constants/enum/priceType'
 import { Ermcp8EnableHedgeditemReq, Ermcp8EnableHedgeditemRsp, UnLinkSpotContractRsp } from '@/services/go/ermcp/hedgedItem/interface'
 import { queryErmcp8EnableHedgeditem } from '@/services/go/ermcp/hedgedItem'
-import { ContractRelatedHedgedItemRsp } from '@/services/proto/hedgedItem/interface'
+import { ContractRelatedHedgedItemReq } from '@/services/proto/hedgedItem/interface'
 import { contractRelatedHedgedItem } from '@/services/proto/hedgedItem'
 import { getUserId } from '@/services/bus/user'
 
@@ -98,26 +99,22 @@ export function useForm(selectedRow: UnLinkSpotContractRsp) {
                 if (currentQty.value > qty) {
                     message.error('关联数量不能大于合同数量');
                 } else {
-                    loading.value = true;
-                    const result: Promise<ContractRelatedHedgedItemRsp>[] = [];
+                    const param: ContractRelatedHedgedItemReq = {
+                        SpotContractID: Long.fromString(spotcontractid),
+                        HedgedItemInfos: [],
+                        ClientTicket: v4(),
+                    }
 
                     seledtedRows.forEach((e) => {
-                        result.push(contractRelatedHedgedItem({
-                            SpotContractID: Long.fromString(spotcontractid),
-                            HedgedItemInfos: {
-                                HedgedItemID: Long.fromString(e.hedgeditemid),
-                                RelatedQty: e.relatedqty!
-                            },
-                            ClientTicket: v4(),
-                        }))
+                        param.HedgedItemInfos.push({
+                            HedgedItemID: Long.fromString(e.hedgeditemid),
+                            RelatedQty: e.relatedqty!
+                        })
                     })
 
-                    Promise.all(result).then(() => {
-                        message.success('关联成功');
+                    requestResultLoadingAndInfo(contractRelatedHedgedItem, param, loading, ['关联成功', '关联失败:']).then(() => {
                         callback && callback();
-                    }).catch((err) => {
-                        message.error('关联失败:' + err);
-                    }).finally(() => {
+                    }).catch(() => {
                         loading.value = false;
                     })
                 }

+ 6 - 0
src/views/hedgeditem/trade/finish/index.vue

@@ -15,6 +15,10 @@
                 <template #hedgedtype="{ text }">
                     <span>{{ getHedgedTypeName(text) }}</span>
                 </template>
+                <!-- 套期状态 -->
+                <template #hedgeditemstatus="{ text }">
+                    <span>{{ getHedgedItemStatusName(text) }}</span>
+                </template>
             </a-table>
         </template>
     </mtp-table-scroll>
@@ -25,6 +29,7 @@
 import { queryTableList, MtpTableButton, defineComponent, handleComposeTable } from '@/common/export/commonTable'
 import { HedgedItemStatus } from '@/@next/constants/enum/hedgedItemStatus'
 import { getHedgedTypeName } from '@/@next/constants/enum/hedgedType'
+import { getHedgedItemStatusName } from '@/@next/constants/enum/hedgedItemStatus'
 import { Ermcp2HedgedItemReq, Ermcp2HedgedItemRsp } from '@/services/go/ermcp/hedgedItem/interface'
 import { queryErmcp2HedgedItem } from '@/services/go/ermcp/hedgedItem'
 import { useMenu } from '@/@next/hooks/common'
@@ -68,6 +73,7 @@ export default defineComponent({
             tableList,
             auth,
             getHedgedTypeName,
+            getHedgedItemStatusName,
         }
     }
 })

+ 63 - 11
src/views/hedgeditem/trade/running/index.vue

@@ -9,7 +9,7 @@
         <template #default="{ scroll }">
             <a-table :columns="columns" class="srcollYTable" :pagination="false" :loading="loading"
                 :rowClassName="rowClassName" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick"
-                :rowKey="(record, index) => index" :data-source="tableList" :scroll="scroll">
+                :rowKey="(record, index) => index" :data-source="dataList" :scroll="scroll">
                 <template #expandedRowRender="{ record }">
                     <mtp-table-button class="btn-list-sticky" :buttons="tableButtons" :record="record"
                         @click="openComponent" />
@@ -19,20 +19,20 @@
                     <span>{{ getHedgedTypeName(text) }}</span>
                 </template>
                 <!-- 套期商品 -->
-                <template #middlegoodsname="{ record }">
-                    <span>{{ record.middlegoodslist[0]?.middlegoodsname ?? '--' }}</span>
+                <template #middlegoodsname="{ text }">
+                    <span>{{ text || '--' }}</span>
                 </template>
                 <!-- 未执行套期量 -->
-                <template #unexehedgeqty="{ record }">
-                    <span>{{ record.middlegoodslist[0]?.unexehedgeqty ?? '--' }}</span>
+                <template #unexehedgeqty="{ text }">
+                    <span>{{ getDecimalsNum(text) }}</span>
                 </template>
                 <!-- 期货套期量 -->
-                <template #futurehedgeqty="{ record }">
-                    <span>{{ record.middlegoodslist[0]?.futurehedgeqty ?? '--' }}</span>
+                <template #futurehedgeqty="{ text }">
+                    <span>{{ getDecimalsNum(text) }}</span>
                 </template>
                 <!-- 期现敞口量 -->
-                <template #hiexpsoure="{ record }">
-                    <span>{{ record.middlegoodslist[0]?.hiexpsoure ?? '--' }}</span>
+                <template #hiexpsoure="{ text }">
+                    <span>{{ getDecimalsNum(text) }}</span>
                 </template>
             </a-table>
         </template>
@@ -42,12 +42,14 @@
 </template>
 
 <script lang="ts">
+import { computed } from 'vue'
 import { queryTableList, MtpTableButton, defineAsyncComponent, defineComponent, handleComposeTable } from '@/common/export/commonTable'
 import { getHedgedTypeName } from '@/@next/constants/enum/hedgedType'
-import { Ermcp8RunningHedgeditemReq, Ermcp2HedgedItemRsp } from '@/services/go/ermcp/hedgedItem/interface'
+import { Ermcp8RunningHedgeditemReq, Ermcp2HedgedItemRsp, HedgedItemMiddleGoodsList } from '@/services/go/ermcp/hedgedItem/interface'
 import { queryErmcp8RunningHedgeditem } from '@/services/go/ermcp/hedgedItem'
 import { useMenu } from '@/@next/hooks/common'
 import { getUserId } from '@/services/bus/user'
+import { getDecimalsNum } from '@/utils/number'
 import MtpTableScroll from '@/common/components/tableScroll/index.vue'
 import MtpTabComponent from '@/@next/components/base/tab-component/index.vue'
 import Filter from '../components/filter/index.vue'
@@ -86,12 +88,62 @@ export default defineComponent({
             tableName: 'table_pcweb_hedgeditem_trade_running',
         })
 
+        const dataList = computed(() => {
+            const result: (Ermcp2HedgedItemRsp & HedgedItemMiddleGoodsList)[] = [];
+            tableList.value.forEach((item) => {
+                const middleGoodsList = item.middlegoodslist;
+                if (!middleGoodsList.length) {
+                    middleGoodsList.push({
+                        futurehedgeqty: 0,
+                        hedgeditemid: '',
+                        hiexpsoure: 0,
+                        middlegoodscode: '',
+                        middlegoodsid: 0,
+                        middlegoodsname: '',
+                        unexehedgeqty: 0,
+                    })
+                }
+                middleGoodsList.forEach((mg) => {
+                    result.push({
+                        ...mg,
+                        ...item,
+                    })
+                })
+            })
+            return result;
+        })
+
+        const columns = computed(() => {
+            const result = composeTable.columns.value;
+            // result.forEach((e) => {
+            //     if (e.dataIndex === 'hedgeditemnum') {
+            //         e.customRender = ({ text, index }: { text: string, index: number }) => {
+            //             const rowSpan = dataList.value[index].middlegoodslist.length;
+
+            //             if(rowSpan>1){
+
+            //             }
+
+            //             return {
+            //                 children: text,
+            //                 props: {
+            //                     rowSpan
+            //                 }
+            //             }
+            //         }
+            //     }
+            // })
+            return composeTable.columns.value;
+        })
+
         return {
             ...composeTable,
+            columns,
             loading,
-            tableList,
+            dataList,
             headerButtons,
             tableButtons,
+            getDecimalsNum,
             getHedgedTypeName,
         }
     }