瀏覽代碼

业务路由

liucong 4 年之前
父節點
當前提交
4e2eb88722

+ 31 - 10
src/common/constants/routerName.ts

@@ -4,30 +4,51 @@
 // 客户资料
 export const enum CustomInfo {
     normal = 'custom_info_normal', // 正常
-    stop = 'custom_info_stop',  // 停用
+    stop = 'custom_info_stop', // 停用
 }
 // 商品信息
 export const enum GoodsInfo {
     spot = 'goods_info_spot', // 现货品种
-    hedging = 'goods_info_hedging',  // 套保品种
+    hedging = 'goods_info_hedging', // 套保品种
 }
 // 现货合同
 export const enum SpotContract {
     notCommit = 'spot_contract-not-commit', // 未提交
-    peddding = 'spot_contract-peddding',  // 待审核
-    performance = 'spot_contract-performance',  // 履约中
-    done = 'spot_contract-done',  // 已完成
+    peddding = 'spot_contract-peddding', // 待审核
+    performance = 'spot_contract-performance', // 履约中
+    done = 'spot_contract-done', // 已完成
 }
 // 仓库信息
 export const enum WarehouseInfo {
     normal = 'warehouse-info-normal', // 正常
-    stop = 'warehouse-info-stop',  // 停用
+    stop = 'warehouse-info-stop', // 停用
 }
+
 // 采购
 export const enum Purchase {
-    realTime = 'purchase-real-time', // 实时敞口
-    spot = 'purchase-spot-position',  // 现货头寸
-    forward = 'purchase-forward-position',  // 期货头寸
-    history = 'purchase-history',  // 历史敞口
+    pending = 'purchase_pending', // 待点价
+    performance = 'purchase_performance', // 履约交收
+    all = 'purchase_all', // 全部
+}
+
+// 销售
+export const enum Sell {
+    pending = 'sell_pending', // 待点价
+    performance = 'sell_performance', // 履约交收
+    all = 'sell_all', // 全部
 }
 
+// 敞口
+export const enum Exposure {
+    realTime = 'exposure_realtime', // 实时敞口
+    spot = 'exposure_spot', // 现货头寸
+    futures = 'exposure_futures', // 期货头寸
+    history = 'exposure_history', // 历史敞口
+}
+
+// 计划
+export const enum Plan {
+    uncommitted = 'plan_uncommitted', // 未提交
+    audit = 'plan_audit_audit', // 待审核
+    running = 'plan_running', // 执行中
+}

+ 50 - 50
src/layout/index.vue

@@ -1,64 +1,64 @@
 <template>
-  <div class="layout">
-    <LayoutTop @chooseMenu="chooseMenu" />
-    <template v-if="isShowBottomPart">
-      <div class="sliderLayout">
-        <div class="shortLine"></div>
-      </div>
-      <LayoutBottom />
-    </template>
-  </div>
+    <div class="layout">
+        <LayoutTop @chooseMenu="chooseMenu" />
+        <template v-if="isShowBottomPart">
+            <div class="sliderLayout">
+                <div class="shortLine"></div>
+            </div>
+            <LayoutBottom />
+        </template>
+    </div>
 </template>
 <script lang="ts">
-import LayoutTop from './top.vue';
-import LayoutBottom from './bottom.vue';
+    import LayoutTop from './top.vue';
+    import LayoutBottom from './bottom.vue';
 
-import { defineComponent, ref } from 'vue';
+    import { defineComponent, ref } from 'vue';
 
-// 控制下半部分是否显示
-function submitBottomIsShow() {
-    const isShowBottomPart = ref<boolean>(false);
-    function chooseMenu(value: boolean) {
-        isShowBottomPart.value = value;
+    // 控制下半部分是否显示
+    function submitBottomIsShow() {
+        const isShowBottomPart = ref<boolean>(false);
+        function chooseMenu(value: boolean) {
+            isShowBottomPart.value = value;
+        }
+        return { isShowBottomPart, chooseMenu };
     }
-    return { isShowBottomPart, chooseMenu };
-}
 
-export default defineComponent({
-    name: 'layout',
-    components: {
-        LayoutTop,
-        LayoutBottom,
-    },
-    setup() {
-        const { isShowBottomPart, chooseMenu } = submitBottomIsShow();
-        const visible = ref<boolean>(true);
+    export default defineComponent({
+        name: 'layout',
+        components: {
+            LayoutTop,
+            LayoutBottom,
+        },
+        setup() {
+            const { isShowBottomPart, chooseMenu } = submitBottomIsShow();
+            const visible = ref<boolean>(true);
 
-        return { isShowBottomPart, chooseMenu, visible };
-    },
-});
+            return { isShowBottomPart, chooseMenu, visible };
+        },
+    });
 </script>
 <style lang="less">
-.layout {
-    .flex;
-    width: 100%;
-    height: 100%;
-    flex-direction: column;
-    .sliderLayout {
+    .layout {
+        .flex;
         width: 100%;
-        height: 4px;
-        background: #242a2e;
-        border-top: 1px solid @m-grey5;
-        border-bottom: 1px solid @m-grey5;
-        position: relative;
-        .shortLine {
-            width: 30px;
-            height: 2px;
-            background: #4b5861;
-            border-radius: 1px;
-            .position(absolute, 50%, auto, auto, 50%);
-            transform: translate(-50%, -50%);
+        height: 100%;
+        flex-direction: column;
+        .sliderLayout {
+            width: 100%;
+            height: 4px;
+            background: #242a2e;
+            border-top: 1px solid @m-grey5;
+            border-bottom: 1px solid @m-grey5;
+            position: relative;
+            .shortLine {
+                width: 30px;
+                height: 2px;
+                background: #4b5861;
+                border-radius: 1px;
+                .position(absolute, 50%, auto, auto, 50%);
+                transform: translate(-50%, -50%);
+            }
         }
     }
-}
 </style>

+ 109 - 28
src/router/index.ts

@@ -189,61 +189,114 @@ const routes: Array<RouteRecordRaw> = [
                     },
                 ],
             },
+
             {
-                path: '/exposure',
-                name: 'exposure',
-                component: () => import('@/views/business/exposure/index.vue'),
+                path: '/purchase',
+                name: 'purchase',
+                component: () => import('@/views/business/purchase/index.vue'),
                 meta: {
                     requireAuth: true,
                 },
+                redirect: { name: EnumType.Purchase.pending },
+                children: [
+                    {
+                        path: '/purchase/pending',
+                        name: EnumType.Purchase.pending,
+                        component: () => import('@/views/business/purchase/list/pending/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/purchase/performance',
+                        name: EnumType.Purchase.performance,
+                        component: () => import('@/views/business/purchase/list/performance/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/purchase/all',
+                        name: EnumType.Purchase.all,
+                        component: () => import('@/views/business/purchase/list/all/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                ],
             },
             {
-                path: '/plan',
-                name: 'plan',
-                component: () => import('@/views/business/plan/index.vue'),
+                path: '/sell',
+                name: 'sell',
+                component: () => import('@/views/business/sell/index.vue'),
                 meta: {
                     requireAuth: true,
                 },
+                redirect: { name: EnumType.Sell.pending },
+                children: [
+                    {
+                        path: '/sell/pending',
+                        name: EnumType.Sell.pending,
+                        component: () => import('@/views/business/sell/list/pending/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/sell/performance',
+                        name: EnumType.Sell.performance,
+                        component: () => import('@/views/business/sell/list/performance/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/sell/all',
+                        name: EnumType.Sell.all,
+                        component: () => import('@/views/business/sell/list/all/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                ],
             },
             {
-                path: '/purchase',
-                name: 'purchase',
-                component: () => import('@/views/business/purchase/index.vue'),
+                path: '/exposure',
+                name: 'exposure',
+                component: () => import('@/views/business/exposure/index.vue'),
                 meta: {
                     requireAuth: true,
                 },
-                redirect: (to) => {
-                    return { name: EnumType.Purchase.realTime };
-                },
+                redirect: { name: EnumType.Exposure.realTime },
                 children: [
                     {
-                        path: '/purchase/forward',
-                        name: EnumType.Purchase.forward,
-                        component: () => import('@/views/business/purchase/list/forward/index.vue'),
+                        path: '/exposure/realTime',
+                        name: EnumType.Exposure.realTime,
+                        component: () => import('@/views/business/exposure/list/realTime/index.vue'),
                         meta: {
                             requireAuth: true,
                         },
                     },
                     {
-                        path: '/purchase/history',
-                        name: EnumType.Purchase.history,
-                        component: () => import('@/views/business/purchase/list/history/index.vue'),
+                        path: '/exposure/spot',
+                        name: EnumType.Exposure.spot,
+                        component: () => import('@/views/business/exposure/list/spot/index.vue'),
                         meta: {
                             requireAuth: true,
                         },
                     },
                     {
-                        path: '/purchase/real-time',
-                        name: EnumType.Purchase.realTime,
-                        component: () => import('@/views/business/purchase/list/real-time/index.vue'),
+                        path: '/exposure/futures',
+                        name: EnumType.Exposure.futures,
+                        component: () => import('@/views/business/exposure/list/futures/index.vue'),
                         meta: {
                             requireAuth: true,
                         },
                     },
                     {
-                        path: '/purchase/spot',
-                        name: EnumType.Purchase.spot,
-                        component: () => import('@/views/business/purchase/list/spot/index.vue'),
+                        path: '/exposure/history',
+                        name: EnumType.Exposure.history,
+                        component: () => import('@/views/business/exposure/list/history/index.vue'),
                         meta: {
                             requireAuth: true,
                         },
@@ -251,15 +304,43 @@ const routes: Array<RouteRecordRaw> = [
                 ],
             },
             {
-                path: '/sell',
-                name: 'sell',
-                component: () => import('@/views/business/sell/index.vue'),
+                path: '/plan',
+                name: 'plan',
+                component: () => import('@/views/business/plan/index.vue'),
                 meta: {
                     requireAuth: true,
                 },
+                redirect: { name: EnumType.Plan.uncommitted },
+                children: [
+                    {
+                        path: '/plan/pending',
+                        name: EnumType.Plan.uncommitted,
+                        component: () => import('@/views/business/plan/list/uncommitted/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/plan/audit',
+                        name: EnumType.Plan.audit,
+                        component: () => import('@/views/business/plan/list/audit/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/plan/running',
+                        name: EnumType.Plan.running,
+                        component: () => import('@/views/business/plan/list/running/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                ],
             },
+
             {
-                path: '/business_review',
+                path: '_review',
                 name: 'business_review',
                 component: () => import('@/views/manage/business-review/index.vue'),
                 meta: {

+ 0 - 0
src/views/business/purchase/list/forward/index.vue → src/views/business/exposure/list/futures/index.vue


+ 0 - 0
src/views/business/purchase/list/history/index.vue → src/views/business/exposure/list/history/index.vue


+ 0 - 0
src/views/business/purchase/list/real-time/index.vue → src/views/business/exposure/list/realTime/index.vue


+ 83 - 0
src/views/business/exposure/list/spot/index.vue

@@ -0,0 +1,83 @@
+<template>
+    <!-- 采购: 实时敞口-->
+    <div class="purchase-real-time">
+        采购: 实时敞口
+    </div>
+</template>
+
+<script lang="ts">
+    import { defineComponent, ref } from 'vue';
+    import { QueryCustomInfo } from '@/services/go/ermcp/customInfo/index';
+    import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+    import { message } from 'ant-design-vue';
+    import { initData } from '@/common/methods';
+
+    // 查询客户资料列表
+    function getCustomList() {
+        // const filteredInfo = ref();
+        // const sortedInfo = ref();
+        // const columns = computed(() => {
+        //     const filtered = filteredInfo.value || {};
+        //     const sorted = sortedInfo.value || {};
+        //     return [
+        //         {
+        //             title: '序号',
+        //             dataIndex: 'index',
+        //             key: 'index',
+        //             align: 'center',
+        //             width: 50,
+        //             customRender: (param: any) => `${param.index + 1}`,
+        //         },
+        //         {
+        //             title: 'Age',
+        //             dataIndex: 'age',
+        //             key: 'age',
+        //             sorter: (a: DataItem, b: DataItem) => a.age - b.age,
+        //             sortOrder: sorted.columnKey === 'age' && sorted.order,
+        //         },
+        //         {
+        //             title: 'Address',
+        //             dataIndex: 'address',
+        //             key: 'address',
+        //             filters: [
+        //                 { text: 'London', value: 'London' },
+        //                 { text: 'New York', value: 'New York' },
+        //             ],
+        //             filteredValue: filtered.address || null,
+        //             onFilter: (value: string, record: DataItem) => record.address.includes(value),
+        //             sorter: (a: DataItem, b: DataItem) => a.address.length - b.address.length,
+        //             sortOrder: sorted.columnKey === 'address' && sorted.order,
+        //             ellipsis: true,
+        //         },
+        //     ];
+        // });
+        const customList = ref<QueryCustomInfoType[]>([]);
+        function actionQuery() {
+            QueryCustomInfo(4)
+                .then((res) => {
+                    console.log('L', res);
+                })
+                .catch((err) => message.error(err));
+        }
+
+        return { customList, actionQuery };
+    }
+
+    export default defineComponent({
+        name: 'purchase-real-time',
+        components: {},
+        setup() {
+            const { customList, actionQuery } = getCustomList();
+            initData(() => {
+                actionQuery();
+                // 加载数据在这里
+            });
+            return { customList };
+        },
+    });
+</script>
+
+<style lang="less">
+    .purchase-real-time {
+    }</style
+>;

+ 15 - 15
src/views/business/plan/index.vue

@@ -1,23 +1,23 @@
 <template>
-  <!-- 计划 -->
-  <div class="plan">
-    计划
-  </div>
+    <!-- 计划 -->
+    <div class="plan">
+        计划
+    </div>
 </template>
 
 <script lang="ts">
-import { defineComponent } from 'vue';
+    import { defineComponent } from 'vue';
 
-export default defineComponent({
-    name: 'plan',
-    components: {},
-    setup() {
-        return {};
-    },
-});
+    export default defineComponent({
+        name: 'plan',
+        components: {},
+        setup() {
+            return {};
+        },
+    });
 </script>
 
 <style lang="less">
-.plan {
-}
-</style>;
+    .plan {
+    }</style
+>;

+ 83 - 0
src/views/business/plan/list/audit/index.vue

@@ -0,0 +1,83 @@
+<template>
+    <!-- 采购: 历史敞口-->
+    <div class="purchase-history">
+        采购:历史敞口
+    </div>
+</template>
+
+<script lang="ts">
+    import { defineComponent, ref } from 'vue';
+    import { QueryCustomInfo } from '@/services/go/ermcp/customInfo/index';
+    import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+    import { message } from 'ant-design-vue';
+    import { initData } from '@/common/methods';
+
+    // 查询客户资料列表
+    function getCustomList() {
+        // const filteredInfo = ref();
+        // const sortedInfo = ref();
+        // const columns = computed(() => {
+        //     const filtered = filteredInfo.value || {};
+        //     const sorted = sortedInfo.value || {};
+        //     return [
+        //         {
+        //             title: '序号',
+        //             dataIndex: 'index',
+        //             key: 'index',
+        //             align: 'center',
+        //             width: 50,
+        //             customRender: (param: any) => `${param.index + 1}`,
+        //         },
+        //         {
+        //             title: 'Age',
+        //             dataIndex: 'age',
+        //             key: 'age',
+        //             sorter: (a: DataItem, b: DataItem) => a.age - b.age,
+        //             sortOrder: sorted.columnKey === 'age' && sorted.order,
+        //         },
+        //         {
+        //             title: 'Address',
+        //             dataIndex: 'address',
+        //             key: 'address',
+        //             filters: [
+        //                 { text: 'London', value: 'London' },
+        //                 { text: 'New York', value: 'New York' },
+        //             ],
+        //             filteredValue: filtered.address || null,
+        //             onFilter: (value: string, record: DataItem) => record.address.includes(value),
+        //             sorter: (a: DataItem, b: DataItem) => a.address.length - b.address.length,
+        //             sortOrder: sorted.columnKey === 'address' && sorted.order,
+        //             ellipsis: true,
+        //         },
+        //     ];
+        // });
+        const customList = ref<QueryCustomInfoType[]>([]);
+        function actionQuery() {
+            QueryCustomInfo(4)
+                .then((res) => {
+                    console.log('L', res);
+                })
+                .catch((err) => message.error(err));
+        }
+
+        return { customList, actionQuery };
+    }
+
+    export default defineComponent({
+        name: 'purchase-history',
+        components: {},
+        setup() {
+            const { customList, actionQuery } = getCustomList();
+            initData(() => {
+                actionQuery();
+                // 加载数据在这里
+            });
+            return { customList };
+        },
+    });
+</script>
+
+<style lang="less">
+    .purchase-history {
+    }</style
+>;

+ 3 - 3
src/views/business/purchase/list/spot/index.vue → src/views/business/plan/list/running/index.vue

@@ -1,6 +1,6 @@
 <template>
     <!-- 采购: 现货头寸-->
-    <div class="purchase-spot-position">
+    <div class="spot-contract-peddding">
         采购: 现货头寸
     </div>
 </template>
@@ -64,7 +64,7 @@
     }
 
     export default defineComponent({
-        name: 'purchase-spot-position',
+        name: 'spot-contract-peddding',
         components: {},
         setup() {
             const { customList, actionQuery } = getCustomList();
@@ -78,6 +78,6 @@
 </script>
 
 <style lang="less">
-    .purchase-spot-position {
+    .spot-contract-peddding {
     }</style
 >;

+ 83 - 0
src/views/business/plan/list/uncommitted/index.vue

@@ -0,0 +1,83 @@
+<template>
+    <!-- 采购: 实时敞口-->
+    <div class="purchase-real-time">
+        采购: 实时敞口
+    </div>
+</template>
+
+<script lang="ts">
+    import { defineComponent, ref } from 'vue';
+    import { QueryCustomInfo } from '@/services/go/ermcp/customInfo/index';
+    import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+    import { message } from 'ant-design-vue';
+    import { initData } from '@/common/methods';
+
+    // 查询客户资料列表
+    function getCustomList() {
+        // const filteredInfo = ref();
+        // const sortedInfo = ref();
+        // const columns = computed(() => {
+        //     const filtered = filteredInfo.value || {};
+        //     const sorted = sortedInfo.value || {};
+        //     return [
+        //         {
+        //             title: '序号',
+        //             dataIndex: 'index',
+        //             key: 'index',
+        //             align: 'center',
+        //             width: 50,
+        //             customRender: (param: any) => `${param.index + 1}`,
+        //         },
+        //         {
+        //             title: 'Age',
+        //             dataIndex: 'age',
+        //             key: 'age',
+        //             sorter: (a: DataItem, b: DataItem) => a.age - b.age,
+        //             sortOrder: sorted.columnKey === 'age' && sorted.order,
+        //         },
+        //         {
+        //             title: 'Address',
+        //             dataIndex: 'address',
+        //             key: 'address',
+        //             filters: [
+        //                 { text: 'London', value: 'London' },
+        //                 { text: 'New York', value: 'New York' },
+        //             ],
+        //             filteredValue: filtered.address || null,
+        //             onFilter: (value: string, record: DataItem) => record.address.includes(value),
+        //             sorter: (a: DataItem, b: DataItem) => a.address.length - b.address.length,
+        //             sortOrder: sorted.columnKey === 'address' && sorted.order,
+        //             ellipsis: true,
+        //         },
+        //     ];
+        // });
+        const customList = ref<QueryCustomInfoType[]>([]);
+        function actionQuery() {
+            QueryCustomInfo(4)
+                .then((res) => {
+                    console.log('L', res);
+                })
+                .catch((err) => message.error(err));
+        }
+
+        return { customList, actionQuery };
+    }
+
+    export default defineComponent({
+        name: 'purchase-real-time',
+        components: {},
+        setup() {
+            const { customList, actionQuery } = getCustomList();
+            initData(() => {
+                actionQuery();
+                // 加载数据在这里
+            });
+            return { customList };
+        },
+    });
+</script>
+
+<style lang="less">
+    .purchase-real-time {
+    }</style
+>;

+ 83 - 0
src/views/business/purchase/list/all/index.vue

@@ -0,0 +1,83 @@
+<template>
+    <!-- 采购: 实时敞口-->
+    <div class="purchase-real-time">
+        采购: 实时敞口
+    </div>
+</template>
+
+<script lang="ts">
+    import { defineComponent, ref } from 'vue';
+    import { QueryCustomInfo } from '@/services/go/ermcp/customInfo/index';
+    import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+    import { message } from 'ant-design-vue';
+    import { initData } from '@/common/methods';
+
+    // 查询客户资料列表
+    function getCustomList() {
+        // const filteredInfo = ref();
+        // const sortedInfo = ref();
+        // const columns = computed(() => {
+        //     const filtered = filteredInfo.value || {};
+        //     const sorted = sortedInfo.value || {};
+        //     return [
+        //         {
+        //             title: '序号',
+        //             dataIndex: 'index',
+        //             key: 'index',
+        //             align: 'center',
+        //             width: 50,
+        //             customRender: (param: any) => `${param.index + 1}`,
+        //         },
+        //         {
+        //             title: 'Age',
+        //             dataIndex: 'age',
+        //             key: 'age',
+        //             sorter: (a: DataItem, b: DataItem) => a.age - b.age,
+        //             sortOrder: sorted.columnKey === 'age' && sorted.order,
+        //         },
+        //         {
+        //             title: 'Address',
+        //             dataIndex: 'address',
+        //             key: 'address',
+        //             filters: [
+        //                 { text: 'London', value: 'London' },
+        //                 { text: 'New York', value: 'New York' },
+        //             ],
+        //             filteredValue: filtered.address || null,
+        //             onFilter: (value: string, record: DataItem) => record.address.includes(value),
+        //             sorter: (a: DataItem, b: DataItem) => a.address.length - b.address.length,
+        //             sortOrder: sorted.columnKey === 'address' && sorted.order,
+        //             ellipsis: true,
+        //         },
+        //     ];
+        // });
+        const customList = ref<QueryCustomInfoType[]>([]);
+        function actionQuery() {
+            QueryCustomInfo(4)
+                .then((res) => {
+                    console.log('L', res);
+                })
+                .catch((err) => message.error(err));
+        }
+
+        return { customList, actionQuery };
+    }
+
+    export default defineComponent({
+        name: 'purchase-real-time',
+        components: {},
+        setup() {
+            const { customList, actionQuery } = getCustomList();
+            initData(() => {
+                actionQuery();
+                // 加载数据在这里
+            });
+            return { customList };
+        },
+    });
+</script>
+
+<style lang="less">
+    .purchase-real-time {
+    }</style
+>;

+ 83 - 0
src/views/business/purchase/list/pending/index.vue

@@ -0,0 +1,83 @@
+<template>
+    <!-- 采购: 现货头寸-->
+    <div class="spot-contract-peddding">
+        采购: 现货头寸
+    </div>
+</template>
+
+<script lang="ts">
+    import { defineComponent, ref } from 'vue';
+    import { QueryCustomInfo } from '@/services/go/ermcp/customInfo/index';
+    import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+    import { message } from 'ant-design-vue';
+    import { initData } from '@/common/methods';
+
+    // 查询客户资料列表
+    function getCustomList() {
+        // const filteredInfo = ref();
+        // const sortedInfo = ref();
+        // const columns = computed(() => {
+        //     const filtered = filteredInfo.value || {};
+        //     const sorted = sortedInfo.value || {};
+        //     return [
+        //         {
+        //             title: '序号',
+        //             dataIndex: 'index',
+        //             key: 'index',
+        //             align: 'center',
+        //             width: 50,
+        //             customRender: (param: any) => `${param.index + 1}`,
+        //         },
+        //         {
+        //             title: 'Age',
+        //             dataIndex: 'age',
+        //             key: 'age',
+        //             sorter: (a: DataItem, b: DataItem) => a.age - b.age,
+        //             sortOrder: sorted.columnKey === 'age' && sorted.order,
+        //         },
+        //         {
+        //             title: 'Address',
+        //             dataIndex: 'address',
+        //             key: 'address',
+        //             filters: [
+        //                 { text: 'London', value: 'London' },
+        //                 { text: 'New York', value: 'New York' },
+        //             ],
+        //             filteredValue: filtered.address || null,
+        //             onFilter: (value: string, record: DataItem) => record.address.includes(value),
+        //             sorter: (a: DataItem, b: DataItem) => a.address.length - b.address.length,
+        //             sortOrder: sorted.columnKey === 'address' && sorted.order,
+        //             ellipsis: true,
+        //         },
+        //     ];
+        // });
+        const customList = ref<QueryCustomInfoType[]>([]);
+        function actionQuery() {
+            QueryCustomInfo(4)
+                .then((res) => {
+                    console.log('L', res);
+                })
+                .catch((err) => message.error(err));
+        }
+
+        return { customList, actionQuery };
+    }
+
+    export default defineComponent({
+        name: 'spot-contract-peddding',
+        components: {},
+        setup() {
+            const { customList, actionQuery } = getCustomList();
+            initData(() => {
+                actionQuery();
+                // 加载数据在这里
+            });
+            return { customList };
+        },
+    });
+</script>
+
+<style lang="less">
+    .spot-contract-peddding {
+    }</style
+>;

+ 83 - 0
src/views/business/purchase/list/performance/index.vue

@@ -0,0 +1,83 @@
+<template>
+    <!-- 采购: 历史敞口-->
+    <div class="purchase-history">
+        采购:历史敞口
+    </div>
+</template>
+
+<script lang="ts">
+    import { defineComponent, ref } from 'vue';
+    import { QueryCustomInfo } from '@/services/go/ermcp/customInfo/index';
+    import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+    import { message } from 'ant-design-vue';
+    import { initData } from '@/common/methods';
+
+    // 查询客户资料列表
+    function getCustomList() {
+        // const filteredInfo = ref();
+        // const sortedInfo = ref();
+        // const columns = computed(() => {
+        //     const filtered = filteredInfo.value || {};
+        //     const sorted = sortedInfo.value || {};
+        //     return [
+        //         {
+        //             title: '序号',
+        //             dataIndex: 'index',
+        //             key: 'index',
+        //             align: 'center',
+        //             width: 50,
+        //             customRender: (param: any) => `${param.index + 1}`,
+        //         },
+        //         {
+        //             title: 'Age',
+        //             dataIndex: 'age',
+        //             key: 'age',
+        //             sorter: (a: DataItem, b: DataItem) => a.age - b.age,
+        //             sortOrder: sorted.columnKey === 'age' && sorted.order,
+        //         },
+        //         {
+        //             title: 'Address',
+        //             dataIndex: 'address',
+        //             key: 'address',
+        //             filters: [
+        //                 { text: 'London', value: 'London' },
+        //                 { text: 'New York', value: 'New York' },
+        //             ],
+        //             filteredValue: filtered.address || null,
+        //             onFilter: (value: string, record: DataItem) => record.address.includes(value),
+        //             sorter: (a: DataItem, b: DataItem) => a.address.length - b.address.length,
+        //             sortOrder: sorted.columnKey === 'address' && sorted.order,
+        //             ellipsis: true,
+        //         },
+        //     ];
+        // });
+        const customList = ref<QueryCustomInfoType[]>([]);
+        function actionQuery() {
+            QueryCustomInfo(4)
+                .then((res) => {
+                    console.log('L', res);
+                })
+                .catch((err) => message.error(err));
+        }
+
+        return { customList, actionQuery };
+    }
+
+    export default defineComponent({
+        name: 'purchase-history',
+        components: {},
+        setup() {
+            const { customList, actionQuery } = getCustomList();
+            initData(() => {
+                actionQuery();
+                // 加载数据在这里
+            });
+            return { customList };
+        },
+    });
+</script>
+
+<style lang="less">
+    .purchase-history {
+    }</style
+>;

+ 83 - 0
src/views/business/sell/list/all/index.vue

@@ -0,0 +1,83 @@
+<template>
+    <!-- 采购: 实时敞口-->
+    <div class="purchase-real-time">
+        采购: 实时敞口
+    </div>
+</template>
+
+<script lang="ts">
+    import { defineComponent, ref } from 'vue';
+    import { QueryCustomInfo } from '@/services/go/ermcp/customInfo/index';
+    import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+    import { message } from 'ant-design-vue';
+    import { initData } from '@/common/methods';
+
+    // 查询客户资料列表
+    function getCustomList() {
+        // const filteredInfo = ref();
+        // const sortedInfo = ref();
+        // const columns = computed(() => {
+        //     const filtered = filteredInfo.value || {};
+        //     const sorted = sortedInfo.value || {};
+        //     return [
+        //         {
+        //             title: '序号',
+        //             dataIndex: 'index',
+        //             key: 'index',
+        //             align: 'center',
+        //             width: 50,
+        //             customRender: (param: any) => `${param.index + 1}`,
+        //         },
+        //         {
+        //             title: 'Age',
+        //             dataIndex: 'age',
+        //             key: 'age',
+        //             sorter: (a: DataItem, b: DataItem) => a.age - b.age,
+        //             sortOrder: sorted.columnKey === 'age' && sorted.order,
+        //         },
+        //         {
+        //             title: 'Address',
+        //             dataIndex: 'address',
+        //             key: 'address',
+        //             filters: [
+        //                 { text: 'London', value: 'London' },
+        //                 { text: 'New York', value: 'New York' },
+        //             ],
+        //             filteredValue: filtered.address || null,
+        //             onFilter: (value: string, record: DataItem) => record.address.includes(value),
+        //             sorter: (a: DataItem, b: DataItem) => a.address.length - b.address.length,
+        //             sortOrder: sorted.columnKey === 'address' && sorted.order,
+        //             ellipsis: true,
+        //         },
+        //     ];
+        // });
+        const customList = ref<QueryCustomInfoType[]>([]);
+        function actionQuery() {
+            QueryCustomInfo(4)
+                .then((res) => {
+                    console.log('L', res);
+                })
+                .catch((err) => message.error(err));
+        }
+
+        return { customList, actionQuery };
+    }
+
+    export default defineComponent({
+        name: 'purchase-real-time',
+        components: {},
+        setup() {
+            const { customList, actionQuery } = getCustomList();
+            initData(() => {
+                actionQuery();
+                // 加载数据在这里
+            });
+            return { customList };
+        },
+    });
+</script>
+
+<style lang="less">
+    .purchase-real-time {
+    }</style
+>;

+ 83 - 0
src/views/business/sell/list/pending/index.vue

@@ -0,0 +1,83 @@
+<template>
+    <!-- 采购: 现货头寸-->
+    <div class="spot-contract-peddding">
+        采购: 现货头寸
+    </div>
+</template>
+
+<script lang="ts">
+    import { defineComponent, ref } from 'vue';
+    import { QueryCustomInfo } from '@/services/go/ermcp/customInfo/index';
+    import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+    import { message } from 'ant-design-vue';
+    import { initData } from '@/common/methods';
+
+    // 查询客户资料列表
+    function getCustomList() {
+        // const filteredInfo = ref();
+        // const sortedInfo = ref();
+        // const columns = computed(() => {
+        //     const filtered = filteredInfo.value || {};
+        //     const sorted = sortedInfo.value || {};
+        //     return [
+        //         {
+        //             title: '序号',
+        //             dataIndex: 'index',
+        //             key: 'index',
+        //             align: 'center',
+        //             width: 50,
+        //             customRender: (param: any) => `${param.index + 1}`,
+        //         },
+        //         {
+        //             title: 'Age',
+        //             dataIndex: 'age',
+        //             key: 'age',
+        //             sorter: (a: DataItem, b: DataItem) => a.age - b.age,
+        //             sortOrder: sorted.columnKey === 'age' && sorted.order,
+        //         },
+        //         {
+        //             title: 'Address',
+        //             dataIndex: 'address',
+        //             key: 'address',
+        //             filters: [
+        //                 { text: 'London', value: 'London' },
+        //                 { text: 'New York', value: 'New York' },
+        //             ],
+        //             filteredValue: filtered.address || null,
+        //             onFilter: (value: string, record: DataItem) => record.address.includes(value),
+        //             sorter: (a: DataItem, b: DataItem) => a.address.length - b.address.length,
+        //             sortOrder: sorted.columnKey === 'address' && sorted.order,
+        //             ellipsis: true,
+        //         },
+        //     ];
+        // });
+        const customList = ref<QueryCustomInfoType[]>([]);
+        function actionQuery() {
+            QueryCustomInfo(4)
+                .then((res) => {
+                    console.log('L', res);
+                })
+                .catch((err) => message.error(err));
+        }
+
+        return { customList, actionQuery };
+    }
+
+    export default defineComponent({
+        name: 'spot-contract-peddding',
+        components: {},
+        setup() {
+            const { customList, actionQuery } = getCustomList();
+            initData(() => {
+                actionQuery();
+                // 加载数据在这里
+            });
+            return { customList };
+        },
+    });
+</script>
+
+<style lang="less">
+    .spot-contract-peddding {
+    }</style
+>;

+ 83 - 0
src/views/business/sell/list/performance/index.vue

@@ -0,0 +1,83 @@
+<template>
+    <!-- 采购: 历史敞口-->
+    <div class="purchase-history">
+        采购:历史敞口
+    </div>
+</template>
+
+<script lang="ts">
+    import { defineComponent, ref } from 'vue';
+    import { QueryCustomInfo } from '@/services/go/ermcp/customInfo/index';
+    import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+    import { message } from 'ant-design-vue';
+    import { initData } from '@/common/methods';
+
+    // 查询客户资料列表
+    function getCustomList() {
+        // const filteredInfo = ref();
+        // const sortedInfo = ref();
+        // const columns = computed(() => {
+        //     const filtered = filteredInfo.value || {};
+        //     const sorted = sortedInfo.value || {};
+        //     return [
+        //         {
+        //             title: '序号',
+        //             dataIndex: 'index',
+        //             key: 'index',
+        //             align: 'center',
+        //             width: 50,
+        //             customRender: (param: any) => `${param.index + 1}`,
+        //         },
+        //         {
+        //             title: 'Age',
+        //             dataIndex: 'age',
+        //             key: 'age',
+        //             sorter: (a: DataItem, b: DataItem) => a.age - b.age,
+        //             sortOrder: sorted.columnKey === 'age' && sorted.order,
+        //         },
+        //         {
+        //             title: 'Address',
+        //             dataIndex: 'address',
+        //             key: 'address',
+        //             filters: [
+        //                 { text: 'London', value: 'London' },
+        //                 { text: 'New York', value: 'New York' },
+        //             ],
+        //             filteredValue: filtered.address || null,
+        //             onFilter: (value: string, record: DataItem) => record.address.includes(value),
+        //             sorter: (a: DataItem, b: DataItem) => a.address.length - b.address.length,
+        //             sortOrder: sorted.columnKey === 'address' && sorted.order,
+        //             ellipsis: true,
+        //         },
+        //     ];
+        // });
+        const customList = ref<QueryCustomInfoType[]>([]);
+        function actionQuery() {
+            QueryCustomInfo(4)
+                .then((res) => {
+                    console.log('L', res);
+                })
+                .catch((err) => message.error(err));
+        }
+
+        return { customList, actionQuery };
+    }
+
+    export default defineComponent({
+        name: 'purchase-history',
+        components: {},
+        setup() {
+            const { customList, actionQuery } = getCustomList();
+            initData(() => {
+                actionQuery();
+                // 加载数据在这里
+            });
+            return { customList };
+        },
+    });
+</script>
+
+<style lang="less">
+    .purchase-history {
+    }</style
+>;

+ 1 - 1
src/views/market/forward/index.vue

@@ -40,7 +40,7 @@
         //   { title: 'Column 8', dataIndex: 'address', key: '13', width: 200 , align: 'center' },
         {
             title: 'Action',
-            key: 'operation',
+            key: '12',
             fixed: 'right',
             align: 'center',
             width: 100,