li.shaoyi 3 tahun lalu
induk
melakukan
aa2c4514a2

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

@@ -20,7 +20,7 @@ export function getTableEvent<T>(param: TableEventCB = {}) {
 
     // 选中行的样式
     const rowClassName = (record: T) => {
-        return record === selectedRow.value ? 'ant-table-row--selected' : '';
+        return JSON.stringify(record) === JSON.stringify(selectedRow.value) ? 'ant-table-row--selected' : '';
     }
 
     const Rowclick = (record: T, index: number) => {

+ 8 - 1
src/views/hedgeditem/exposure/components/plan/index.vue

@@ -3,7 +3,12 @@
     <mtp-table-scroll>
         <template #default="{ scroll }">
             <a-table :columns="columns" class="srcollYTable" :pagination="false" :rowKey="(record, index) => index"
-                :data-source="tableList" :scroll="scroll"></a-table>
+                :data-source="tableList" :scroll="scroll">
+                <!-- 计划类型 -->
+                <template #hedgedtype="{ text }">
+                    <span>{{ getHedgedTypeName(text) }}</span>
+                </template>
+            </a-table>
         </template>
     </mtp-table-scroll>
 </template>
@@ -11,6 +16,7 @@
 <script lang="ts">
 import { PropType, watch } from 'vue'
 import { queryTableList, defineComponent, handleComposeTable } from '@/common/export/commonTable';
+import { getHedgedTypeName } from '@/@next/constants/enum/hedgedType'
 import { Ermcp2AreaExposureRsp, Ermcp2HedgedItemsDetailReq, Ermcp2HedgedItemsDetailRsp } from '@/services/go/ermcp/hedgedItem/interface'
 import { queryErmcp2HedgedItemsDetail } from '@/services/go/ermcp/hedgedItem'
 import { getUserId } from '@/services/bus/user'
@@ -53,6 +59,7 @@ export default defineComponent({
             ...composeTable,
             loading,
             tableList,
+            getHedgedTypeName,
         }
     }
 })

+ 66 - 4
src/views/hedgeditem/exposure/list/index.vue

@@ -1,6 +1,15 @@
 <template>
     <!-- 套期交易-敞口监控 -->
     <mtp-table-scroll>
+        <template #header>
+            <div class="real-time-header">
+                <span class="dialogSpan">每隔</span>
+                <a-input-number class="commonInput real-time-select" :min="10" :max="60" :disabled="isStart"
+                    v-model:value="second"></a-input-number>
+                <span class="dialogSpan">秒刷新一次,倒计时 </span> <span class="red">{{ counter }}</span>
+                <a-button class="operBtn ant-btn" @click="setTimerAction">{{ isStart ? '停止监控' : '开始监控' }}</a-button>
+            </div>
+        </template>
         <template #default="{ scroll }">
             <a-table :columns="columns" class="srcollYTable" :pagination="false" :rowClassName="rowClassName"
                 :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record, index) => index"
@@ -13,6 +22,7 @@
 </template>
 
 <script lang="ts">
+import { ref } from 'vue'
 import { queryTableList, MtpTableButton, defineComponent, handleComposeTable } from '@/common/export/commonTable'
 import { Ermcp2AreaExposureReq, Ermcp2AreaExposureRsp } from '@/services/go/ermcp/hedgedItem/interface'
 import { queryErmcp2AreaExposure } from '@/services/go/ermcp/hedgedItem'
@@ -28,15 +38,47 @@ export default defineComponent({
     },
     setup() {
         const { loading, tableList, queryTable } = queryTableList<Ermcp2AreaExposureRsp>(true, 2); // 表格列表数据
+        const timer = ref(0);
+        const second = ref(10); // 倒计时秒数
+        const counter = ref(0); // 倒计时计数器
+        const isStart = ref(false);
+
+        const setTimerAction = () => {
+            clearInterval(timer.value)
+            isStart.value = !isStart.value;
+            counter.value = 0;
+
+            if (isStart.value) {
+                counter.value = second.value;
+                countdown();
+            }
+        }
+
+        const countdown = () => {
+            timer.value = window.setInterval(() => {
+                if (counter.value) {
+                    counter.value--;
+                } else {
+                    counter.value = second.value;
+                    queryFn();
+                }
+            }, 1000);
+        }
 
         const queryFn = () => {
             const param: Ermcp2AreaExposureReq = {
                 userid: getUserId()
             }
             queryTable(queryErmcp2AreaExposure, param).then((res) => {
-                if (res.length) {
-                    composeTable.selectedRow.value = res[0];
-                }
+                const selectedRow = composeTable.selectedRow.value;
+                composeTable.selectedRow.value = undefined;
+
+                window.setTimeout(() => {
+                    composeTable.selectedRow.value = selectedRow;
+                    if (!selectedRow && res.length) {
+                        composeTable.selectedRow.value = res[0];
+                    }
+                }, 0)
             })
         }
 
@@ -50,7 +92,27 @@ export default defineComponent({
             ...composeTable,
             loading,
             tableList,
+            second,
+            counter,
+            isStart,
+            setTimerAction,
         }
     }
 })
-</script>
+</script>
+
+<style lang="less">
+.real-time-header {
+    margin-left: auto;
+    padding: 6px;
+}
+
+.real-time-select {
+    margin-left: 5px;
+    margin-right: 5px;
+
+    .ant-input-number-input {
+        text-align: center;
+    }
+}
+</style>

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

@@ -8,9 +8,6 @@
             <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">
-                <template #expandedRowRender="{ record }">
-                    <mtp-table-button class="btn-list-sticky" :buttons="auth" :record="record" @click="openComponent" />
-                </template>
                 <!-- 套期类型 -->
                 <template #hedgedtype="{ text }">
                     <span>{{ getHedgedTypeName(text) }}</span>
@@ -32,7 +29,6 @@ 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'
 import { getUserId } from '@/services/bus/user'
 import MtpTableScroll from '@/common/components/tableScroll/index.vue'
 import MtpTabComponent from '@/@next/components/base/tab-component/index.vue'
@@ -46,7 +42,6 @@ export default defineComponent({
         Filter
     },
     setup() {
-        const { auth } = useMenu();
         const { loading, tableList, queryTable } = queryTableList<Ermcp2HedgedItemRsp>(true, 2); // 表格列表数据
 
         const queryFn = () => {
@@ -71,7 +66,6 @@ export default defineComponent({
             ...composeTable,
             loading,
             tableList,
-            auth,
             getHedgedTypeName,
             getHedgedItemStatusName,
         }

+ 33 - 20
src/views/hedgeditem/trade/running/index.vue

@@ -113,32 +113,45 @@ export default defineComponent({
             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;
+        // 自定义表格列,合并行选项
+        // const columns = computed(() => {
+        //     const filters = ['middlegoodsname', 'unexehedgeqty', 'futurehedgeqty', 'hiexpsoure']
+        //     const result = composeTable.columns.value;
 
-            //             if(rowSpan>1){
+        //     result.forEach((e) => {
+        //         if (!filters.includes(e.dataIndex!)) {
+        //             let parentKey = ''; // 初始化前一条记录的key,用来比较当前记录和前一条记录是否相同
 
-            //             }
+        //             e.customRender = (row: { text: string; record: Ermcp2HedgedItemRsp }) => {
+        //                 const { text, record } = row;
+        //                 const rowSpan = record.middlegoodslist.length; // 通过商品列表数计算需要合并的行数
+        //                 const option = {
+        //                     children: text,
+        //                     props: {
+        //                         rowSpan: rowSpan
+        //                     }
+        //                 }
 
-            //             return {
-            //                 children: text,
-            //                 props: {
-            //                     rowSpan
-            //                 }
-            //             }
-            //         }
-            //     }
-            // })
-            return composeTable.columns.value;
-        })
+        //                 if (e.dataIndex === 'hedgedtype') {
+        //                     option.children = getHedgedTypeName(record.hedgedtype);
+        //                 }
+
+        //                 if (record.hedgeditemid === parentKey) {
+        //                     option.props.rowSpan = 0;
+        //                 }
+
+        //                 parentKey = record.hedgeditemid;
+        //                 return option;
+        //             }
+        //         }
+        //     })
+
+        //     return result;
+        // })
 
         return {
             ...composeTable,
-            columns,
+            //columns,
             loading,
             dataList,
             headerButtons,