li.shaoyi 3 년 전
부모
커밋
3e6f86ca9d
46개의 변경된 파일1250개의 추가작업 그리고 1042개의 파일을 삭제
  1. 1 1
      public/config/app.config.json
  2. 0 44
      src/common/components/resize/index.vue
  3. 12 0
      src/common/components/tableScroll/index.less
  4. 62 0
      src/common/components/tableScroll/index.vue
  5. 3 12
      src/common/components/thirdMenu/index.vue
  6. 1 1
      src/hooks/account/index.ts
  7. 14 6
      src/layout/components/bottom.vue
  8. 17 15
      src/layout/components/main.vue
  9. 105 121
      src/layout/components/top.vue
  10. 15 17
      src/utils/time/index.ts
  11. 33 27
      src/views/business/exposure/list/futures/index.vue
  12. 44 38
      src/views/business/exposure/list/realTime/index.vue
  13. 18 12
      src/views/business/exposure/list/spot/index.vue
  14. 24 18
      src/views/business/plan/list/audit/index.vue
  15. 24 18
      src/views/business/plan/list/running/index.vue
  16. 26 20
      src/views/business/plan/list/uncommitted/index.vue
  17. 45 39
      src/views/business/purchase/list/all/index.vue
  18. 15 9
      src/views/business/search/plan/index.vue
  19. 15 9
      src/views/business/search/spot/index.vue
  20. 36 30
      src/views/business/sell/list/all/index.vue
  21. 18 12
      src/views/business/spotmarket/list/price/index.vue
  22. 42 36
      src/views/information/custom/index.vue
  23. 54 48
      src/views/information/spot-contract/list/audit/index.vue
  24. 57 52
      src/views/information/spot-contract/list/purchase/index.vue
  25. 57 51
      src/views/information/spot-contract/list/sell/index.vue
  26. 32 26
      src/views/information/warehouse-info/list/normal-use/index.vue
  27. 33 27
      src/views/manage/business-review/list/settlement/index.vue
  28. 33 27
      src/views/manage/business-review/list/someprice/index.vue
  29. 46 40
      src/views/manage/finance-review/list/funds/index.vue
  30. 38 32
      src/views/manage/finance-review/list/invoice/index.vue
  31. 38 32
      src/views/manage/inventory-review/list/audit/index.vue
  32. 17 13
      src/views/market/futures/index.vue
  33. 19 20
      src/views/order/funding_information/components/funding_information_funding_log/index.vue
  34. 8 4
      src/views/order/funding_information/components/funding_information_funding_summary/index.vue
  35. 13 9
      src/views/order/futures_information/components/futures_information_entrust/index.vue
  36. 13 9
      src/views/order/futures_information/components/futures_information_position/index.vue
  37. 13 9
      src/views/order/futures_information/components/futures_information_success/index.vue
  38. 27 27
      src/views/order/futures_information/index.vue
  39. 25 19
      src/views/report/exposure-report/list/exposure_report/index.vue
  40. 14 8
      src/views/report/finance-report/list/finance_report_finance/index.vue
  41. 22 13
      src/views/report/future_report/list/future_report/index.vue
  42. 14 8
      src/views/report/inventory-report/list/category/index.vue
  43. 14 8
      src/views/report/inventory-report/list/warehouse/index.vue
  44. 45 39
      src/views/report/spot-report/list/spot_report/index.vue
  45. 31 25
      src/views/report/sum_pl_report/list/sum_pl_report/index.vue
  46. 17 11
      src/views/search/inventory/list/inventory_current/index.vue

+ 1 - 1
public/config/app.config.json

@@ -1,3 +1,3 @@
 {
-    "apiUrl": "http://192.168.31.139:8080/cfg?key=test_139"
+    "apiUrl": "http://192.168.31.203:8080/cfg?key=test_203"
 }

+ 0 - 44
src/common/components/resize/index.vue

@@ -1,44 +0,0 @@
-<template>
-  <div ref="resize" class="resize">
-    <slot :scroll="scroll"></slot>
-  </div>
-</template>
-
-<script lang="ts">
-import { defineComponent, ref, onMounted } from 'vue';
-import { debounce } from '@/utils/time'
-import ResizeObserver from 'resize-observer-polyfill';
-
-export default defineComponent({
-  setup() {
-    // 表格滚动区域宽高
-    const scroll = ref({
-      x: '100%',
-      y: '100%',
-    })
-
-    const resize = ref<HTMLDivElement>()
-
-    onMounted(() => {
-      // 监听元素变化
-      const resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {
-        debounce(() => {
-          for (const entry of entries) {
-            const { left, top, width, height } = entry.contentRect;
-            console.log(left, top, width, height)
-            scroll.value.y = height + 'px';
-          }
-        })
-      });
-      if (resize.value) {
-        resizeObserver.observe(resize.value);
-      }
-    })
-
-    return {
-      scroll,
-      resize,
-    }
-  },
-})
-</script>

+ 12 - 0
src/common/components/tableScroll/index.less

@@ -0,0 +1,12 @@
+.mtp-table-scroll {
+    flex          : 1;
+    overflow-y    : auto;
+    display       : flex;
+    flex-direction: column;
+    height        : 100%;
+
+    &__container {
+        flex      : 1;
+        overflow-y: auto;
+    }
+}

+ 62 - 0
src/common/components/tableScroll/index.vue

@@ -0,0 +1,62 @@
+<template>
+  <div class="mtp-table-scroll">
+    <slot name="header"></slot>
+    <div class="mtp-table-scroll__container" ref="scrollElement">
+      <slot :scroll="scroll"></slot>
+    </div>
+    <slot name="footer"></slot>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent, ref, onMounted } from 'vue';
+import { debounce } from '@/utils/time';
+import { v4 } from 'uuid';
+import ResizeObserver from 'resize-observer-polyfill';
+
+export default defineComponent({
+  emits: ['ready'],
+  props: {
+    // 表头高度
+    top: {
+      type: Number,
+      default: 27,
+    }
+  },
+  setup(props, { emit }) {
+    // 表格滚动区域宽高
+    const scroll = ref({
+      x: '100%',
+      y: 'auto',
+    })
+
+    const uuid = v4();
+    const scrollElement = ref<HTMLDivElement>();
+
+    onMounted(() => {
+      // 监听元素变化
+      const resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {
+        debounce(() => {
+          for (const entry of entries) {
+            const { height } = entry.contentRect;
+            scroll.value.y = (height - props.top) + 'px';
+          }
+        }, 50, uuid);
+      });
+      if (scrollElement.value) {
+        resizeObserver.observe(scrollElement.value);
+      }
+      emit('ready');
+    })
+
+    return {
+      scroll,
+      scrollElement,
+    }
+  },
+})
+</script>
+
+<style lang="less" scoped>
+@import './index.less';
+</style>

+ 3 - 12
src/common/components/thirdMenu/index.vue

@@ -55,19 +55,17 @@ export default defineComponent({
 }
 .thirdMenu {
     width: 100%;
-    height: 28px;
-    padding: 1px 0;
+    padding-top: 2px;
     background-color: @m-black5;
     z-index: 2;
+    margin-top: auto;
     .ant-tabs {
-        line-height: 26px;
         .flex;
         .ant-tabs-bar {
             margin-bottom: 0;
             border-bottom: 0;
             .ant-tabs-nav-container {
                 margin-bottom: 0;
-                line-height: 100%;
                 .ant-tabs-nav-wrap {
                     margin-bottom: 0;
                     .ant-tabs-nav-scroll {
@@ -102,11 +100,4 @@ export default defineComponent({
         }
     }
 }
-.layout-bottom {
-    .thirdMenu {
-        .position(absolute, auto, 0, 0, 0);
-        z-index: 2;
-    }
-}
-</style
->;
+</style>

+ 1 - 1
src/hooks/account/index.ts

@@ -65,6 +65,7 @@ export function useTradeAccount() {
 
     // 切换资金账户
     const tradeAccountChange = (accountId: number) => {
+        tradePositionList.length = 0;
         // 停止上次订阅
         stopSubcribe && stopSubcribe();
 
@@ -78,7 +79,6 @@ export function useTradeAccount() {
             stopSubcribe = subcriteGoodsQuote(account.positionList.map((e) => e.goodscode));
         } else {
             tradeAccount.value = undefined;
-            tradePositionList.length = 0;
         }
     }
 

+ 14 - 6
src/layout/components/bottom.vue

@@ -11,9 +11,7 @@
           <div class="conditionIcon icon iconfont icon-shouqi" @click="handleShowBottom"></div>
         </div>
       </firstMenu>
-      <div v-show="isShowBottom">
-        <component :is="componentId" v-if="componentId"></component>
-      </div>
+      <component class="layout-bottom__container" :is="componentId" v-if="componentId"></component>
     </main>
   </section>
 </template>
@@ -110,7 +108,7 @@ export default defineComponent({
     height: 280px;
 }
 .layout-bottom-hidden {
-    height: 40px;
+    height: 36px;
 }
 .layout-bottom {
     display: flex;
@@ -128,17 +126,27 @@ export default defineComponent({
         position: relative;
         overflow: hidden;
         .conditionIcon {
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            height: initial;
             font-size: 16px;
             color: @m-grey1;
             width: 16px;
             cursor: pointer;
-            height: 40px;
-            line-height: 40px;
             margin-right: 10px;
             &:hover {
                 color: @m-grey1-hover;
             }
         }
     }
+
+    &__container {
+        flex: 1;
+        overflow-y: auto;
+        display: flex;
+        flex-direction: column;
+        border-bottom: 2px solid transparent;
+    }
 }
 </style>

+ 17 - 15
src/layout/components/main.vue

@@ -18,26 +18,28 @@ import { useRouter } from 'vue-router';
 import { OperationTabMenu } from '@/services/go/commonService/interface';
 
 export default defineComponent({
-    name: 'MAIN',
-    components: {},
-    setup() {
-        const router = useRouter();
-        const list = inject('thirdMenuList') as Ref<OperationTabMenu[]>;
-        const selectedKey = inject('index');
-        // 切换路由
-        function selectMenu(value: any) {
-            if ((selectedKey as unknown as any).value[0] !== value.key) {
-                const index = +value.key;
-                router.push({ name: list.value[index].code });
-            }
-        }
-        return { selectMenu, list, selectedKey };
-    },
+  name: 'MAIN',
+  components: {},
+  setup() {
+    const router = useRouter();
+    const list = inject('thirdMenuList') as Ref<OperationTabMenu[]>;
+    const selectedKey = inject('index');
+    // 切换路由
+    function selectMenu(value: any) {
+      if ((selectedKey as unknown as any).value[0] !== value.key) {
+        const index = +value.key;
+        router.push({ name: list.value[index].code });
+      }
+    }
+    return { selectMenu, list, selectedKey };
+  },
 });
 </script>
 
 <style lang="less">
 .exposure {
+    display: flex;
+    flex-direction: column;
     height: 100%;
     position: relative;
 }

+ 105 - 121
src/layout/components/top.vue

@@ -1,25 +1,19 @@
 <template>
-    <a-layout :class="['layout-top', isBottom ? 'layout-top-bottom' : 'layout-top-no-bottom']">
-        <a-layout-header class="m-layout-header">
-            <Header />
-        </a-layout-header>
-        <a-layout class="middleLayout">
-            <a-layout-sider
-                class="m-layout-left"
-                width="160"
-                v-model:collapsed="collapsed"
-                @collapse="collapse"
-                collapsible
-            >
-                <Menu @chooseMenu="chooseMenu" :collapsed="collapsed" />
-            </a-layout-sider>
-            <a-layout-content :style="{ background: '#0E0E0F', flex: 1 }">
-                <!-- <Drawer :title="'挂牌'" :visible="visible"></Drawer> -->
-                <!-- <Main /> -->
-                <router-view />
-            </a-layout-content>
-        </a-layout>
+  <a-layout :class="['layout-top', isBottom ? 'layout-top-bottom' : 'layout-top-no-bottom']">
+    <a-layout-header class="m-layout-header">
+      <Header />
+    </a-layout-header>
+    <a-layout class="middleLayout">
+      <a-layout-sider class="m-layout-left" width="160" v-model:collapsed="collapsed" @collapse="collapse" collapsible>
+        <Menu @chooseMenu="chooseMenu" :collapsed="collapsed" />
+      </a-layout-sider>
+      <a-layout-content :style="{ background: '#0E0E0F', flex: 1 }">
+        <!-- <Drawer :title="'挂牌'" :visible="visible"></Drawer> -->
+        <!-- <Main /> -->
+        <router-view />
+      </a-layout-content>
     </a-layout>
+  </a-layout>
 </template>
 <script lang="ts">
 import { defineComponent, ref, provide } from 'vue';
@@ -35,98 +29,98 @@ import { OperationTabMenu } from '@/services/go/commonService/interface';
 import { getHasBottom } from '@/common/setup/order/orderData';
 
 export default defineComponent({
-    name: 'layout-top',
-    emits: ['chooseMenu'],
-    components: {
-        CapitalInfo,
-        SecondMenu,
-        Drawer,
-        Main,
-        Menu,
-        Header,
-    },
-    setup(props, context) {
-        const router = useRouter();
-        const route = useRoute();
-        const list = ref<OperationTabMenu[]>([]); // 右边tab栏 需要的列表数据
-        const index = ref<string[]>(['0']); // 右边tab栏 具体选中的哪一个数据 默认第一个
-        // 配置是否显示下半部分
-        function setShowBottomPart(code: string) {
-            // 显示下半部分 这里保存的是市场对应的 code
-            const show: string[] = [''];
-            context.emit('chooseMenu', show.includes(code));
-        }
-        const isBottom = getHasBottom();
-        // 选中菜单
-        function chooseMenu(value: OperationTabMenu) {
-            const matched = route.matched;
-            const len = matched.length;
-            let temp = 'home';
-            if (matched.length > 2) {
-                temp = matched[2].name as string;
-            } else {
-                temp = matched[len - 1].name as string;
-            }
-            let name = temp;
+  name: 'layout-top',
+  emits: ['chooseMenu'],
+  components: {
+    CapitalInfo,
+    SecondMenu,
+    Drawer,
+    Main,
+    Menu,
+    Header,
+  },
+  setup(props, context) {
+    const router = useRouter();
+    const route = useRoute();
+    const list = ref<OperationTabMenu[]>([]); // 右边tab栏 需要的列表数据
+    const index = ref<string[]>(['0']); // 右边tab栏 具体选中的哪一个数据 默认第一个
+    // 配置是否显示下半部分
+    function setShowBottomPart(code: string) {
+      // 显示下半部分 这里保存的是市场对应的 code
+      const show: string[] = [''];
+      context.emit('chooseMenu', show.includes(code));
+    }
+    const isBottom = getHasBottom();
+    // 选中菜单
+    function chooseMenu(value: OperationTabMenu) {
+      const matched = route.matched;
+      const len = matched.length;
+      let temp = 'home';
+      if (matched.length > 2) {
+        temp = matched[2].name as string;
+      } else {
+        temp = matched[len - 1].name as string;
+      }
+      let name = temp;
 
-            if (temp === 'home') {
-                // 第一次进入项目
-                if (value?.children.length) {
-                    // 默认第一个tab页
-                    name = value.children[0].code;
-                    index.value = ['0'];
-                } else if (value?.code.includes('market-')) {
-                    // 动态市场
-                    const param = value.code.split('-')
-                    router.push({ name: 'dymanicMarket', query: { id: param[1] } });
-                    return
-                } else {
-                    router.push({ name: '404' });
-                    return;
-                }
-            } else {
-                // 这里处理页面刷新,还原 导航栏数据
-                const i = value.children.findIndex((e) => e.code === temp);
-                if (i === -1) {
-                    if (value?.code.includes('market-')) {
-                        // 动态市场
-                        const param = value.code.split('-')
-                        router.push({ name: 'dymanicMarket', query: { id: param[1] } });
-                        return
-                    } else if (value?.children.length) {
-                        // 切换左边菜单栏
-                        // 默认第一个tab页
-                        name = value.children[0].code;
-                        index.value = ['0'];
-                    } else {
-                        router.push({ name: '404' });
-                        return;
-                    }
-                } else {
-                    // 切换右边上面tab 栏
-                    index.value = [`${i}`];
-                }
-            }
-            list.value = value.children;
-            setShowBottomPart(value.code);
-            router.push({ name: name as string });
+      if (temp === 'home') {
+        // 第一次进入项目
+        if (value?.children.length) {
+          // 默认第一个tab页
+          name = value.children[0].code;
+          index.value = ['0'];
+        } else if (value?.code.includes('market-')) {
+          // 动态市场
+          const param = value.code.split('-')
+          router.push({ name: 'dymanicMarket', query: { id: param[1] } });
+          return
+        } else {
+          router.push({ name: '404' });
+          return;
         }
-        // 选中菜单的数据
-        provide('thirdMenuList', list);
-        provide('index', index);
-        // 控制菜单是否隐藏
-        const collapsed = ref<boolean>(false);
-        function collapse(show: boolean) {
-            collapsed.value = show;
+      } else {
+        // 这里处理页面刷新,还原 导航栏数据
+        const i = value.children.findIndex((e) => e.code === temp);
+        if (i === -1) {
+          if (value?.code.includes('market-')) {
+            // 动态市场
+            const param = value.code.split('-')
+            router.push({ name: 'dymanicMarket', query: { id: param[1] } });
+            return
+          } else if (value?.children.length) {
+            // 切换左边菜单栏
+            // 默认第一个tab页
+            name = value.children[0].code;
+            index.value = ['0'];
+          } else {
+            router.push({ name: '404' });
+            return;
+          }
+        } else {
+          // 切换右边上面tab 栏
+          index.value = [`${i}`];
         }
+      }
+      list.value = value.children;
+      setShowBottomPart(value.code);
+      router.push({ name: name as string });
+    }
+    // 选中菜单的数据
+    provide('thirdMenuList', list);
+    provide('index', index);
+    // 控制菜单是否隐藏
+    const collapsed = ref<boolean>(false);
+    function collapse(show: boolean) {
+      collapsed.value = show;
+    }
 
-        return {
-            collapsed,
-            collapse,
-            chooseMenu,
-            isBottom,
-        };
-    },
+    return {
+      collapsed,
+      collapse,
+      chooseMenu,
+      isBottom,
+    };
+  },
 });
 </script>
 <style lang="less">
@@ -203,11 +197,8 @@ export default defineComponent({
     .middleLayout {
         flex: 1;
         width: 100%;
-        height: calc(100% - 32px);
-        max-height: calc(100% - 32px);
         background: @m-grey18;
         .inlineflex;
-        border-bottom: 1px solid @m-black2;
         .ant-layout-sider-has-trigger {
             padding-bottom: 30px;
             background: @m-black4;
@@ -216,7 +207,6 @@ export default defineComponent({
             }
         }
         .m-layout-left {
-            min-height: calc(100vh - 316px);
             background: @m-black4;
             border-right: 1px solid @m-black32;
             overflow: hidden;
@@ -302,6 +292,7 @@ export default defineComponent({
         .ant-layout-content {
             overflow: hidden;
             background: @m-black31 !important;
+            border-bottom: 2px solid transparent;
         }
         .ant-menu-vertical {
             .ant-menu-submenu-vertical {
@@ -333,15 +324,8 @@ export default defineComponent({
         .inlineflex;
     }
     .ant-menu-inline-collapsed > .ant-menu-item,
-    .ant-menu-inline-collapsed
-        > .ant-menu-item-group
-        > .ant-menu-item-group-list
-        > .ant-menu-item,
-    .ant-menu-inline-collapsed
-        > .ant-menu-item-group
-        > .ant-menu-item-group-list
-        > .ant-menu-submenu
-        > .ant-menu-submenu-title,
+    .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item,
+    .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title,
     .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title {
         padding: 0 20px !important;
     }

+ 15 - 17
src/utils/time/index.ts

@@ -84,16 +84,16 @@ const throttleMap = new Map<string, number>();
  * @returns 
  */
 export function debounce(callback: () => void, ms = 100, timeoutId = 'timer') {
-    const timer = window.setTimeout(() => {
-        debounceMap.delete(timeoutId);
-        callback();
-    }, ms)
-
     if (debounceMap.has(timeoutId)) {
         const t = debounceMap.get(timeoutId);
         clearTimeout(t);
     }
 
+    const timer = window.setTimeout(() => {
+        debounceMap.delete(timeoutId);
+        callback();
+    }, ms)
+
     debounceMap.set(timeoutId, timer);
 }
 
@@ -104,19 +104,17 @@ export function debounce(callback: () => void, ms = 100, timeoutId = 'timer') {
  * @param timeoutId 节流ID
  * @returns 
  */
-export function throttle<T>(callback: (event: T) => void, ms = 100, timeoutId = 'timer') {
-    if (!throttleMap.has(timeoutId)) {
-        throttleMap.set(timeoutId, 0);
+export function throttle(callback: () => void, ms = 100, timeoutId = 'timer') {
+    if (throttleMap.has(timeoutId)) {
+        const t = throttleMap.get(timeoutId);
+        if (t) return;
     }
 
-    let timer = throttleMap.get(timeoutId);
+    let timer = window.setTimeout(() => {
+        timer = 0;
+        throttleMap.delete(timeoutId);
+        callback();
+    }, ms);
 
-    return function (params?: T) {
-        if (timer) return;
-        timer = window.setTimeout(() => {
-            timer = 0;
-            throttleMap.delete(timeoutId);
-            callback(params as T);
-        }, ms);
-    }
+    throttleMap.set(timeoutId, timer);
 }

+ 33 - 27
src/views/business/exposure/list/futures/index.vue

@@ -1,38 +1,43 @@
 <template>
   <!-- 敞口: 期货头寸-->
-  <div class="exposure-futures table-height" :loading="loading">
-    <filterCustomTable @search="updateColumn"> </filterCustomTable>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :pagination="false" :rowKey="(record,index)=>index" :data-source="tableList">
-      <template #totalydqty="{ record }">
-        <span>{{ record.totalydqty + ' 手' }}</span>
-      </template>
-      <template #increaseqty="{ record }">
-        <span>{{ record.increaseqty + ' 手' }}</span>
-      </template>
-      <template #decreaseqty="{ record }">
-        <span>{{ record.decreaseqty + ' 手' }}</span>
-      </template>
-      <template #totalcurqty="{ record }">
-        <span>{{ record.totalcurqty + ' 手' }}</span>
-      </template>
-    </a-table>
-    <!-- 明细 -->
-    <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-      <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: '175px' }">
-        <!-- 买卖方向 -->
-        <template #buyorsell="{ record }">
-          <span>{{ getBuyOrSellName(record.buyorsell) }}</span>
+  <mtp-table-scroll>
+    <template #header>
+      <filterCustomTable @search="updateColumn"> </filterCustomTable>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :scroll="scroll" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :pagination="false" :rowKey="(record,index)=>index" :data-source="tableList">
+        <template #totalydqty="{ record }">
+          <span>{{ record.totalydqty + ' 手' }}</span>
         </template>
-        <!-- 开屏方向 -->
-        <template #channelbuildtype="{ record }">
-          <span>{{ getChannelBuildName(record.channelbuildtype) }}</span>
+        <template #increaseqty="{ record }">
+          <span>{{ record.increaseqty + ' 手' }}</span>
+        </template>
+        <template #decreaseqty="{ record }">
+          <span>{{ record.decreaseqty + ' 手' }}</span>
+        </template>
+        <template #totalcurqty="{ record }">
+          <span>{{ record.totalcurqty + ' 手' }}</span>
         </template>
       </a-table>
-    </Description>
-  </div>
+    </template>
+  </mtp-table-scroll>
+  <!-- 明细 -->
+  <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
+    <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: '175px' }">
+      <!-- 买卖方向 -->
+      <template #buyorsell="{ record }">
+        <span>{{ getBuyOrSellName(record.buyorsell) }}</span>
+      </template>
+      <!-- 开屏方向 -->
+      <template #channelbuildtype="{ record }">
+        <span>{{ getChannelBuildName(record.channelbuildtype) }}</span>
+      </template>
+    </a-table>
+  </Description>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { defineComponent, watchEffect } from 'vue';
 import filterCustomTable from '../../components/filterTable/index.vue';
 import { QueryExposureHedgePositionDetail, QueryExposureHedgePosition } from '@/services/go/ermcp/exposure/index';
@@ -52,6 +57,7 @@ import moment from 'moment';
 export default defineComponent({
   name: EnumRouterName.exposure_futures,
   components: {
+    MtpTableScroll,
     filterCustomTable,
     Description,
   },

+ 44 - 38
src/views/business/exposure/list/realTime/index.vue

@@ -1,51 +1,56 @@
 <template>
   <!-- 实时敞口-->
-  <div class="exposure-real-time table-height" :loading="loading">
-    <div class="real-time-header" v-if="isPingAnOem()">
-      <span class="dialogSpan">每隔</span>
-      <a-select class="typeSelect real-time-select" style="width: 100px" v-model:value="timer" @change="timerChange" placeholder="请选择间隔时间">
-        <a-select-option :value="item.id" v-for="item in diffTimes" :key="item.id">
-          {{ item.name }}
-        </a-select-option>
-      </a-select>
-      <span class="dialogSpan">刷新一次,倒计时 </span> <span class="red">{{ num }}</span>
-      <a-button type="button" class="operBtn ant-btn" @click="setTimerAction">{{ isStart ? '停止监控' : '开始监控' }}</a-button>
-    </div>
-    <filterCustomTable @search="updateColumn" v-else> </filterCustomTable>
-    <a-table :columns="columns" class="srcollYTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
-      <template v-if="isPingAnOem()" #index="{ index }">
-        <span>{{ index + 1 }}</span>
-      </template>
-      <template #MiddleGoodsName="{ record }">
-        <span>{{ `${record.MiddleGoodsName}/${record.MiddleGoodsCode}` }}</span>
-      </template>
-    </a-table>
-    <!-- 明细 -->
-    <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-      <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
-        <!-- 套保品种/代码 -->
-        <template #middlegoodsname="{ record }" v-if="!isPingAnOem()">
-          <span>{{ record.middlegoodsname + '/' + record.middlegoodscode }}</span>
-        </template>
-        <template #convertfactor="{record}">
-          <span>{{record.convertratio}}</span>
-        </template>
-        <template #goodsname="{ record }" v-if="!isPingAnOem()">
-          <span>{{ record.goodsname + '/' + record.goodscode }}</span>
-        </template>
+  <mtp-table-scroll>
+    <template #header>
+      <div class="real-time-header" v-if="isPingAnOem()">
+        <span class="dialogSpan">每隔</span>
+        <a-select class="typeSelect real-time-select" style="width: 100px" v-model:value="timer" @change="timerChange" placeholder="请选择间隔时间">
+          <a-select-option :value="item.id" v-for="item in diffTimes" :key="item.id">
+            {{ item.name }}
+          </a-select-option>
+        </a-select>
+        <span class="dialogSpan">刷新一次,倒计时 </span> <span class="red">{{ num }}</span>
+        <a-button type="button" class="operBtn ant-btn" @click="setTimerAction">{{ isStart ? '停止监控' : '开始监控' }}</a-button>
+      </div>
+      <filterCustomTable @search="updateColumn" v-else> </filterCustomTable>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList" :scroll="scroll">
         <template v-if="isPingAnOem()" #index="{ index }">
           <span>{{ index + 1 }}</span>
         </template>
-        <!-- 类型 -->
-        <template #contracttype="{ record }">
-          <span>{{ getPlanContractType(record.contracttype) }}</span>
+        <template #MiddleGoodsName="{ record }">
+          <span>{{ `${record.MiddleGoodsName}/${record.MiddleGoodsCode}` }}</span>
         </template>
       </a-table>
-    </Description>
-  </div>
+    </template>
+  </mtp-table-scroll>
+  <!-- 明细 -->
+  <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
+    <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
+      <!-- 套保品种/代码 -->
+      <template #middlegoodsname="{ record }" v-if="!isPingAnOem()">
+        <span>{{ record.middlegoodsname + '/' + record.middlegoodscode }}</span>
+      </template>
+      <template #convertfactor="{record}">
+        <span>{{record.convertratio}}</span>
+      </template>
+      <template #goodsname="{ record }" v-if="!isPingAnOem()">
+        <span>{{ record.goodsname + '/' + record.goodscode }}</span>
+      </template>
+      <template v-if="isPingAnOem()" #index="{ index }">
+        <span>{{ index + 1 }}</span>
+      </template>
+      <!-- 类型 -->
+      <template #contracttype="{ record }">
+        <span>{{ getPlanContractType(record.contracttype) }}</span>
+      </template>
+    </a-table>
+  </Description>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { defineComponent, onUnmounted, ref, watchEffect } from 'vue';
 import filterCustomTable from '../../components/filterTable/index.vue';
 import { QueryActualExposure, QueryActualExposureDetail, QueryAutualExposurePosition } from '@/services/go/ermcp/exposure/index';
@@ -69,6 +74,7 @@ import { getTableButton } from '@/common/setup/table/button';
 export default defineComponent({
   name: EnumRouterName.exposure_realtime,
   components: {
+    MtpTableScroll,
     Description,
     filterCustomTable,
   },

+ 18 - 12
src/views/business/exposure/list/spot/index.vue

@@ -1,20 +1,25 @@
 <template>
   <!-- 敞口: 现货头寸-->
-  <div class="exposure-spot table-height" :loading="loading">
-    <filterCustomTable @search="updateColumn"> </filterCustomTable>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :pagination="false" :rowKey="(record,index)=>index" :data-source="tableList"></a-table>
-    <!-- 明细 -->
-    <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-      <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
-      <!-- 类型 -->
-      <template #logtype="{ record }">
-        <span>{{ getLogType(record.logtype) }}</span>
-      </template>
-    </Description>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <filterCustomTable @search="updateColumn"> </filterCustomTable>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :scroll="scroll" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :pagination="false" :rowKey="(record,index)=>index" :data-source="tableList"></a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 明细 -->
+  <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
+    <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
+    <!-- 类型 -->
+    <template #logtype="{ record }">
+      <span>{{ getLogType(record.logtype) }}</span>
+    </template>
+  </Description>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { defineComponent, watchEffect } from 'vue';
 import filterCustomTable from '../../components/filterTable/index.vue';
 import { QuerySpotPosition, QuerySpotPositionDetail } from '@/services/go/ermcp/exposure/index';
@@ -32,6 +37,7 @@ import { columns, columnsDetail } from './setup';
 export default defineComponent({
   name: EnumRouterName.exposure_spot,
   components: {
+    MtpTableScroll,
     Description,
     filterCustomTable,
   },

+ 24 - 18
src/views/business/plan/list/audit/index.vue

@@ -1,26 +1,31 @@
 <template>
   <!-- 计划: 审核中-->
-  <div class="plan_uncommitted" :loading="loading">
-    <Filter @search="updateColumn"></Filter>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :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" />
-      </template>
-      <template #contracttype="{ text }">
-        <a>{{ getPlanContractType(text) }}</a>
-      </template>
-      <template #hedgeplanstatus="{ text }">
-        <a>{{ getPlanStatusName(text) }}</a>
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"> </component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <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">
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+          <mtp-table-button class="btn-list-sticky" :buttons="buttons" :record="record" @click="openComponent" />
+        </template>
+        <template #contracttype="{ text }">
+          <a>{{ getPlanContractType(text) }}</a>
+        </template>
+        <template #hedgeplanstatus="{ text }">
+          <a>{{ getPlanStatusName(text) }}</a>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"> </component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { queryTableList, MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
 import { Filter } from '../../components';
 import { getPlanContractType, getPlanStatusName } from '@/views/business/plan/setup';
@@ -33,6 +38,7 @@ import { useRoute } from 'vue-router';
 export default defineComponent({
   name: EnumRouterName.plan_audit,
   components: {
+    MtpTableScroll,
     contextMenu,
     MtpTableButton,
     Filter,

+ 24 - 18
src/views/business/plan/list/running/index.vue

@@ -1,26 +1,31 @@
 <template>
   <!-- 计划: 执行中-->
-  <div class="plan_running" :loading="loading">
-    <Filter @search="updateColumn"></Filter>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :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" />
-      </template>
-      <template #contracttype="{ text }">
-        <a>{{ getPlanContractType(text) }}</a>
-      </template>
-      <template #hedgeplanstatus="{ text }">
-        <a>{{ getPlanStatusName(text) }}</a>
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"> </component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <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">
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+          <mtp-table-button class="btn-list-sticky" :buttons="buttons" :record="record" @click="openComponent" />
+        </template>
+        <template #contracttype="{ text }">
+          <a>{{ getPlanContractType(text) }}</a>
+        </template>
+        <template #hedgeplanstatus="{ text }">
+          <a>{{ getPlanStatusName(text) }}</a>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"> </component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { queryTableList, MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
 import { Filter } from '../../components';
 import { getPlanContractType, getPlanStatusName } from '@/views/business/plan/setup';
@@ -32,6 +37,7 @@ import { getTableButton } from '@/common/setup/table/button';
 export default defineComponent({
   name: EnumRouterName.plan_running,
   components: {
+    MtpTableScroll,
     contextMenu,
     MtpTableButton,
     Filter,

+ 26 - 20
src/views/business/plan/list/uncommitted/index.vue

@@ -1,28 +1,33 @@
 <template>
   <!-- 计划: 未提交-->
-  <div class="plan-uncommitted" :loading="loading">
-    <Filter @search="updateColumn">
-      <mtp-table-button class="btn-list-sticky" :buttons="firstBtn" @click="openComponent" />
-    </Filter>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :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="handleBtnList(record)" :record="record" @click="openComponent" />
-      </template>
-      <template #contracttype="{ text }">
-        <a>{{ getPlanContractType(text) }}</a>
-      </template>
-      <template #hedgeplanstatus="{ text }">
-        <a>{{ getPlanStatusName(text) }}</a>
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handleBtnList(selectedRow)"></contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @search="updateColumn">
+        <mtp-table-button class="btn-list-sticky" :buttons="firstBtn" @click="openComponent" />
+      </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">
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+          <mtp-table-button class="btn-list-sticky" :buttons="handleBtnList(record)" :record="record" @click="openComponent" />
+        </template>
+        <template #contracttype="{ text }">
+          <a>{{ getPlanContractType(text) }}</a>
+        </template>
+        <template #hedgeplanstatus="{ text }">
+          <a>{{ getPlanStatusName(text) }}</a>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handleBtnList(selectedRow)"></contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { queryTableList, MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
 import { Filter } from '../../components';
 import { getPlanContractType, getPlanStatusName } from '@/views/business/plan/setup';
@@ -34,6 +39,7 @@ import { getTableButton } from '@/common/setup/table/button';
 export default defineComponent({
   name: EnumRouterName.plan_uncommitted,
   components: {
+    MtpTableScroll,
     contextMenu,
     MtpTableButton,
     Filter,

+ 45 - 39
src/views/business/purchase/list/all/index.vue

@@ -1,47 +1,52 @@
 <template>
   <!-- 采购合同: 特点价合同-待交收合同-->
-  <div class="purchase-peddding" :loading="loading">
-    <filterCustomTable @search="updateColumn"></filterCustomTable>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :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" />
-      </template>
-      <template #pricedqty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-      <template #accountname="{ record}">
-        {{record.nickname}}
-      </template>
-      <template #unsureqty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-      <template #qty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-      <template #unpricedqty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-      <template #unpayamount="{ record }">
-        <span>{{ record.unpayamount.toFixed(2) }}</span>
-      </template>
-      <template #daikaiamount="{ record }">
-        <span>{{ record.daikaiamount.toFixed(2) }}</span>
-      </template>
-      <template #deliverystartdate,deliveryenddate="{ record }">
-        <span>{{ formatValue(formatTime(record.deliverystartdate, 'd') + '--' + formatTime(record.deliveryenddate, 'd')) }}</span>
-      </template>
-      <template #startdate,enddate="{ record }">
-        <span>{{ formatValue(formatTime(record.startdate, 'd') + '--' + formatTime(record.enddate, 'd')) }}</span>
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <filterCustomTable @search="updateColumn"></filterCustomTable>
+    </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">
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+          <mtp-table-button class="btn-list-sticky" :buttons="buttons" :record="record" @click="openComponent" />
+        </template>
+        <template #pricedqty="{ text, record }">
+          <span>{{ handleEnumdic(text, record) }}</span>
+        </template>
+        <template #accountname="{ record}">
+          {{record.nickname}}
+        </template>
+        <template #unsureqty="{ text, record }">
+          <span>{{ handleEnumdic(text, record) }}</span>
+        </template>
+        <template #qty="{ text, record }">
+          <span>{{ handleEnumdic(text, record) }}</span>
+        </template>
+        <template #unpricedqty="{ text, record }">
+          <span>{{ handleEnumdic(text, record) }}</span>
+        </template>
+        <template #unpayamount="{ record }">
+          <span>{{ record.unpayamount.toFixed(2) }}</span>
+        </template>
+        <template #daikaiamount="{ record }">
+          <span>{{ record.daikaiamount.toFixed(2) }}</span>
+        </template>
+        <template #deliverystartdate,deliveryenddate="{ record }">
+          <span>{{ formatValue(formatTime(record.deliverystartdate, 'd') + '--' + formatTime(record.deliveryenddate, 'd')) }}</span>
+        </template>
+        <template #startdate,enddate="{ record }">
+          <span>{{ formatValue(formatTime(record.startdate, 'd') + '--' + formatTime(record.enddate, 'd')) }}</span>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { queryTableList, MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
 import { Ermcp3SellBuyContract } from '../index';
 import { filterCustomTable } from '../../components';
@@ -55,6 +60,7 @@ import { useRoute } from 'vue-router';
 export default defineComponent({
   name: EnumRouterName.purchase_pending,
   components: {
+    MtpTableScroll,
     contextMenu,
     filterCustomTable,
     MtpTableButton,

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

@@ -1,17 +1,22 @@
 <template>
   <!-- 现货查询: 购销计划-->
-  <div class="search-plan" :loading="loading">
-    <filterCustomTable @search="updateColumn"></filterCustomTable>
-    <a-table :columns="columns" class="srcollYTable" :pagination="false" :rowKey="(record,index)=>index" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :data-source="tableList" :scroll="{ x: 'calc(100% - 160px)', y: 'calc(100vh - 163px)' }">
-      <template #index="{ index }">
-        <span>{{ index + 1 }}</span>
-      </template>
-    </a-table>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <filterCustomTable @search="updateColumn"></filterCustomTable>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :pagination="false" :rowKey="(record,index)=>index" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :data-source="tableList" :scroll="scroll">
+        <template #index="{ index }">
+          <span>{{ index + 1 }}</span>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { queryTableList, MtpTableButton, defineComponent, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
 import filterCustomTable from './components/filter/index.vue';
 import { formatTime, formatValue } from '@/common/methods';
@@ -24,6 +29,7 @@ import moment from 'moment';
 export default defineComponent({
   name: 'search-plan',
   components: {
+    MtpTableScroll,
     filterCustomTable,
     MtpTableButton,
   },

+ 15 - 9
src/views/business/search/spot/index.vue

@@ -1,17 +1,22 @@
 <template>
   <!-- 现货查询: 采购合同-销售合同-->
-  <div class="spot-contract-search" :loading="loading">
-    <filterCustomTable @search="updateColumn"></filterCustomTable>
-    <a-table :columns="columns" class="srcollYTable" :pagination="false" :rowKey="(record,index)=>index" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :data-source="tableList" :scroll="{ x: 'calc(100% - 160px)', y: 'calc(100vh - 163px)' }">
-      <template #index="{ index }">
-        <span>{{ index + 1 }}</span>
-      </template>
-    </a-table>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <filterCustomTable @search="updateColumn"></filterCustomTable>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :pagination="false" :rowKey="(record,index)=>index" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :data-source="tableList" :scroll="scroll">
+        <template #index="{ index }">
+          <span>{{ index + 1 }}</span>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { queryTableList, MtpTableButton, defineComponent, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
 import filterCustomTable from './components/filter/index.vue';
 import { formatTime, formatValue } from '@/common/methods';
@@ -25,6 +30,7 @@ import moment from 'moment';
 export default defineComponent({
   name: 'spot-contract-search',
   components: {
+    MtpTableScroll,
     filterCustomTable,
     MtpTableButton,
   },

+ 36 - 30
src/views/business/sell/list/all/index.vue

@@ -1,38 +1,43 @@
 <template>
   <!-- 销售合同: 特点价合同-待交收合同-->
-  <div class="sell-peddding" :loading="loading">
-    <filterCustomTable @search="updateColumn"></filterCustomTable>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :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" />
-      </template>
-      <template #pricedqty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-      <template #unsureqty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-      <template #qty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-      <template #unpricedqty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-      <template #deliverystartdate,deliveryenddate="{ record }">
-        <span>{{ formatValue(formatTime(record.deliverystartdate, 'd') + '--' + formatTime(record.deliveryenddate, 'd')) }}</span>
-      </template>
-      <template #startdate,enddate="{ record }">
-        <span>{{ formatValue(formatTime(record.startdate, 'd') + '--' + formatTime(record.enddate, 'd')) }}</span>
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <filterCustomTable @search="updateColumn"></filterCustomTable>
+    </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">
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+          <mtp-table-button class="btn-list-sticky" :buttons="buttons" :record="record" @click="openComponent" />
+        </template>
+        <template #pricedqty="{ text, record }">
+          <span>{{ handleEnumdic(text, record) }}</span>
+        </template>
+        <template #unsureqty="{ text, record }">
+          <span>{{ handleEnumdic(text, record) }}</span>
+        </template>
+        <template #qty="{ text, record }">
+          <span>{{ handleEnumdic(text, record) }}</span>
+        </template>
+        <template #unpricedqty="{ text, record }">
+          <span>{{ handleEnumdic(text, record) }}</span>
+        </template>
+        <template #deliverystartdate,deliveryenddate="{ record }">
+          <span>{{ formatValue(formatTime(record.deliverystartdate, 'd') + '--' + formatTime(record.deliveryenddate, 'd')) }}</span>
+        </template>
+        <template #startdate,enddate="{ record }">
+          <span>{{ formatValue(formatTime(record.startdate, 'd') + '--' + formatTime(record.enddate, 'd')) }}</span>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
 import { queryTableList, MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
 import { QueryWareHouse } from '@/services/go/ermcp/sell';
@@ -46,6 +51,7 @@ import { useRoute } from 'vue-router';
 export default defineComponent({
   name: EnumRouterName.sell_pending,
   components: {
+    MtpTableScroll,
     contextMenu,
     filterCustomTable,
     MtpTableButton,

+ 18 - 12
src/views/business/spotmarket/list/price/index.vue

@@ -1,20 +1,25 @@
 <template>
   <!-- 现货参考价 -->
-  <div class="spotmarket_price" :loading="loading">
-    <mtp-table-filter @search="updateColumn"></mtp-table-filter>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :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" />
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"> </component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <mtp-table-filter @search="updateColumn"></mtp-table-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">
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+          <mtp-table-button class="btn-list-sticky" :buttons="buttons" :record="record" @click="openComponent" />
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"> </component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { queryTableList, MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
 import { Ermcp3SpotGoodsPrice } from '@/services/go/ermcp/qhj/interface';
@@ -26,6 +31,7 @@ import MtpTableFilter from '../../components/filter/index.vue';
 export default defineComponent({
   name: 'spotmarket_price',
   components: {
+    MtpTableScroll,
     contextMenu,
     MtpTableFilter,
     MtpTableButton,

+ 42 - 36
src/views/information/custom/index.vue

@@ -1,44 +1,49 @@
 <template>
   <!-- 客户资料 -->
-  <div class="plan_uncommitted" :loading="loading">
-    <Filter @search="search">
-      <mtp-table-button class="btn-list-sticky" :buttons="addButton" @click="openComponent" />
-    </Filter>
-    <a-table :columns="getColumns(columns)" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :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="handleBtnList(buttons,record)" :record="record" @click="openComponent" />
-      </template>
-      <template #status="{ text }">
-        <a>{{ getStatusName(text) }}</a>
-      </template>
-      <template #customername="{record}">
-        {{record.username}}
-      </template>
-      <template #birthday="{text}">
-        {{text && text !== '--' ? formatTime(text, 'd') : '--'}}
-      </template>
-      <template #userinfotype="{ text }">
-        <a>{{ getUserInfoTypeName(text) }}</a>
-      </template>
-      <!-- 客户简称 -->
-      <template #nickname="{ record }">
-        {{ record.userinfotype === 1 ? record.customername : record.nickname }}
-      </template>
-      <template #attachment1="{ text, record }">
-        <a>{{ text }}</a><a>{{ record.attachment2 }}</a>
-      </template>
-      <template #cardtype="{ text }">
-        <a>{{ getCardTypeEnumItemName(text) }}</a>
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"> </component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @search="search">
+        <mtp-table-button class="btn-list-sticky" :buttons="addButton" @click="openComponent" />
+      </Filter>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="getColumns(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="handleBtnList(buttons,record)" :record="record" @click="openComponent" />
+        </template>
+        <template #status="{ text }">
+          <a>{{ getStatusName(text) }}</a>
+        </template>
+        <template #customername="{record}">
+          {{record.username}}
+        </template>
+        <template #birthday="{text}">
+          {{text && text !== '--' ? formatTime(text, 'd') : '--'}}
+        </template>
+        <template #userinfotype="{ text }">
+          <a>{{ getUserInfoTypeName(text) }}</a>
+        </template>
+        <!-- 客户简称 -->
+        <template #nickname="{ record }">
+          {{ record.userinfotype === 1 ? record.customername : record.nickname }}
+        </template>
+        <template #attachment1="{ text, record }">
+          <a>{{ text }}</a><a>{{ record.attachment2 }}</a>
+        </template>
+        <template #cardtype="{ text }">
+          <a>{{ getCardTypeEnumItemName(text) }}</a>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"> </component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { BtnListType } from '@/common/components/btnList/interface';
 import { isPingAnOem, isQianHaiJin } from '@/common/config/projectName';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
@@ -56,6 +61,7 @@ import { pingan_custom_column, qian_hai_jin_custom_column } from './setup';
 export default defineComponent({
   name: EnumRouterName.plan_audit,
   components: {
+    MtpTableScroll,
     contextMenu,
     MtpTableButton,
     Filter,

+ 54 - 48
src/views/information/spot-contract/list/audit/index.vue

@@ -1,56 +1,61 @@
 <template>
   <!-- 现货合同: 待审核-已审核-->
-  <div class="spot-contract-peddding" :loading="loading">
-    <filterCustomTable @search="updateColumn"></filterCustomTable>
-    <a-table :columns="columns" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :data-source="tableList" :scroll="{ x: 'calc(100% - 160px)', y: 'calc(100vh - 163px)' }">
-      <!-- 额外的展开行 -->
-      <!-- 额外的展开行 -->
-      <template #expandedRowRender="{ record }">
-        <mtp-table-button class="btn-list-sticky" :buttons="buttons" :record="record" @click="openComponent" />
-      </template>
-      <template #biztype="{ text }">
-        <a>{{ getBizTypeName(text) }}</a>
-      </template>
-      <template #pricetype="{ text }">
-        <a>{{ getPriceTypeName(text) }}</a>
-      </template>
-      <template #contracctstatus="{ text }">
-        <a>{{ getContractStatusName(text) }}</a>
-      </template>
-      <template #contracttype="{ text }">
-        <a>{{ getContractTypeName(text) }}</a>
-      </template>
-      <!-- 对手方 -->
-      <template #negative="{ record }">
-        <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
-      </template>
-      <template #startdate="{ record }">
-        <span>{{ formatValue(formatTime(record.startdate, 'd') + '--' + formatTime(record.enddate, 'd')) }}</span>
-      </template>
-      <!-- 交收期 -->
-      <template #deliverystartdate="{ record }">
-        <span>{{ formatValue(formatTime(record.deliverystartdate, 'd') + '--' + formatTime(record.deliveryenddate, 'd')) }}</span>
-      </template>
-      <!-- 业务员 -->
-      <template #saleuserid="{ record }">
-        <span>{{ findManagerName(record.saleuserid) }}</span>
-      </template>
-      <!-- 跟单员 -->
-      <template #meruserid="{ record }">
-        <span>{{ findManagerName(record.meruserid) }}</span>
-      </template>
-      <!-- 合同量 -->
-      <template #qty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <filterCustomTable @search="updateColumn"></filterCustomTable>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :data-source="tableList" :scroll="scroll">
+        <!-- 额外的展开行 -->
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+          <mtp-table-button class="btn-list-sticky" :buttons="buttons" :record="record" @click="openComponent" />
+        </template>
+        <template #biztype="{ text }">
+          <a>{{ getBizTypeName(text) }}</a>
+        </template>
+        <template #pricetype="{ text }">
+          <a>{{ getPriceTypeName(text) }}</a>
+        </template>
+        <template #contracctstatus="{ text }">
+          <a>{{ getContractStatusName(text) }}</a>
+        </template>
+        <template #contracttype="{ text }">
+          <a>{{ getContractTypeName(text) }}</a>
+        </template>
+        <!-- 对手方 -->
+        <template #negative="{ record }">
+          <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
+        </template>
+        <template #startdate="{ record }">
+          <span>{{ formatValue(formatTime(record.startdate, 'd') + '--' + formatTime(record.enddate, 'd')) }}</span>
+        </template>
+        <!-- 交收期 -->
+        <template #deliverystartdate="{ record }">
+          <span>{{ formatValue(formatTime(record.deliverystartdate, 'd') + '--' + formatTime(record.deliveryenddate, 'd')) }}</span>
+        </template>
+        <!-- 业务员 -->
+        <template #saleuserid="{ record }">
+          <span>{{ findManagerName(record.saleuserid) }}</span>
+        </template>
+        <!-- 跟单员 -->
+        <template #meruserid="{ record }">
+          <span>{{ findManagerName(record.meruserid) }}</span>
+        </template>
+        <!-- 合同量 -->
+        <template #qty="{ text, record }">
+          <span>{{ handleEnumdic(text, record) }}</span>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { queryTableList, MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
 import { filterCustomTable } from '../../components';
 import { getBizTypeName, getContractStatusName, getContractTypeName, getPriceTypeName } from '@/common/constants/enumsName';
@@ -66,6 +71,7 @@ import moment from 'moment';
 export default defineComponent({
   name: EnumRouterName.spot_contract_checkpending,
   components: {
+    MtpTableScroll,
     filterCustomTable,
     contextMenu,
     detail: defineAsyncComponent(() => import('../../components/detail/index.vue')),

+ 57 - 52
src/views/information/spot-contract/list/purchase/index.vue

@@ -1,59 +1,64 @@
 <template>
   <!-- 采购合同: 新增合同-已完结合同-->
-  <div class="spot-contract-not-commit" :loading="loading">
-    <filterCustomTable @search="updateColumn">
-      <mtp-table-button :buttons="firstBtn" @click="openComponent" />
-    </filterCustomTable>
-    <a-table :columns="columns" class="srcollYTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
-      <!-- 额外的展开行 -->
-      <!-- 额外的展开行 -->
-      <template #expandedRowRender="{ record }">
-        <mtp-table-button class="btn-list-sticky" :buttons="handleBtnList(record)" :record="record" @click="openComponent" />
-      </template>
-      <template #biztype="{ text }">
-        <a>{{ getBizTypeName(text) }}</a>
-      </template>
-      <template #pricetype="{ text }">
-        <span>{{ getPriceTypeName(text) }}</span>
-      </template>
-      <template #contracctstatus="{ text }">
-        <a>{{ getContractStatusName(text) }}</a>
-      </template>
-      <template #contracttype="{ text }">
-        <a>{{ getContractTypeName(text) }}</a>
-      </template>
-      <!-- 对手方 -->
-      <template #negative="{ record }">
-        <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
-      </template>
-      <!-- 点假期 -->
-      <template #startdate="{ record }">
-        <span>{{ formatValue(formatTime(record.startdate, 'd') + '--' + formatTime(record.enddate, 'd')) }}</span>
-      </template>
-      <!-- 交收期 -->
-      <template #deliverystartdate="{ record }">
-        <span>{{ formatValue(formatTime(record.deliverystartdate, 'd') + '--' + formatTime(record.deliveryenddate, 'd')) }}</span>
-      </template>
-      <!-- 业务员 -->
-      <template #saleuserid="{ record }">
-        <span>{{ findManagerName(record.saleuserid) }}</span>
-      </template>
-      <!-- 跟单员 -->
-      <template #meruserid="{ record }">
-        <span>{{ findManagerName(record.meruserid) }}</span>
-      </template>
-      <!-- 合同量 -->
-      <template #qty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handleBtnList(selectedRow)"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" :contractType="1" @cancel="closeComponent"></component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <filterCustomTable @search="updateColumn">
+        <mtp-table-button :buttons="firstBtn" @click="openComponent" />
+      </filterCustomTable>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList" :scroll="scroll">
+        <!-- 额外的展开行 -->
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+          <mtp-table-button class="btn-list-sticky" :buttons="handleBtnList(record)" :record="record" @click="openComponent" />
+        </template>
+        <template #biztype="{ text }">
+          <a>{{ getBizTypeName(text) }}</a>
+        </template>
+        <template #pricetype="{ text }">
+          <span>{{ getPriceTypeName(text) }}</span>
+        </template>
+        <template #contracctstatus="{ text }">
+          <a>{{ getContractStatusName(text) }}</a>
+        </template>
+        <template #contracttype="{ text }">
+          <a>{{ getContractTypeName(text) }}</a>
+        </template>
+        <!-- 对手方 -->
+        <template #negative="{ record }">
+          <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
+        </template>
+        <!-- 点假期 -->
+        <template #startdate="{ record }">
+          <span>{{ formatValue(formatTime(record.startdate, 'd') + '--' + formatTime(record.enddate, 'd')) }}</span>
+        </template>
+        <!-- 交收期 -->
+        <template #deliverystartdate="{ record }">
+          <span>{{ formatValue(formatTime(record.deliverystartdate, 'd') + '--' + formatTime(record.deliveryenddate, 'd')) }}</span>
+        </template>
+        <!-- 业务员 -->
+        <template #saleuserid="{ record }">
+          <span>{{ findManagerName(record.saleuserid) }}</span>
+        </template>
+        <!-- 跟单员 -->
+        <template #meruserid="{ record }">
+          <span>{{ findManagerName(record.meruserid) }}</span>
+        </template>
+        <!-- 合同量 -->
+        <template #qty="{ text, record }">
+          <span>{{ handleEnumdic(text, record) }}</span>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handleBtnList(selectedRow)"> </contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" :contractType="1" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { queryTableList, MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
 import { filterCustomTable } from '../../components';
 import { formatTime, formatValue } from '@/common/methods';
@@ -63,12 +68,12 @@ import { Ermcp3ContractRsp } from '@/services/go/ermcp/spot-contract/interface';
 import { QuerySpotContract } from '@/services/go/ermcp/spot-contract';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
 import { getTableButton } from '@/common/setup/table/button';
-import { BtnListType } from '@/common/components/btnList/interface';
 import { useRoute } from 'vue-router';
 
 export default defineComponent({
   name: EnumRouterName.spot_contract_unsubmitted,
   components: {
+    MtpTableScroll,
     filterCustomTable,
     contextMenu,
     detail: defineAsyncComponent(() => import('../../components/detail/index.vue')),

+ 57 - 51
src/views/information/spot-contract/list/sell/index.vue

@@ -1,59 +1,64 @@
 <template>
   <!-- 销售合同: 新增合同-已完结合同-->
-  <div class="spot-contract-not-commit" :loading="loading">
-    <filterCustomTable @search="updateColumn">
-      <mtp-table-button :buttons="firstBtn" @click="openComponent" />
-    </filterCustomTable>
-    <a-table :columns="columns" class="srcollYTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
-      <!-- 额外的展开行 -->
-      <!-- 额外的展开行 -->
-      <template #expandedRowRender="{ record }">
-        <mtp-table-button class="btn-list-sticky" :buttons="secondBtn" :record="record" @click="openComponent" />
-      </template>
-      <template #biztype="{ text }">
-        <a>{{ getBizTypeName(text) }}</a>
-      </template>
-      <template #pricetype="{ text }">
-        <span>{{ getPriceTypeName(text) }}</span>
-      </template>
-      <template #contracctstatus="{ text }">
-        <a>{{ getContractStatusName(text) }}</a>
-      </template>
-      <template #contracttype="{ text }">
-        <a>{{ getContractTypeName(text) }}</a>
-      </template>
-      <!-- 对手方 -->
-      <template #negative="{ record }">
-        <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
-      </template>
-      <!-- 点假期 -->
-      <template #startdate="{ record }">
-        <span>{{ formatValue(formatTime(record.startdate, 'd') + '--' + formatTime(record.enddate, 'd')) }}</span>
-      </template>
-      <!-- 交收期 -->
-      <template #deliverystartdate="{ record }">
-        <span>{{ formatValue(formatTime(record.deliverystartdate, 'd') + '--' + formatTime(record.deliveryenddate, 'd')) }}</span>
-      </template>
-      <!-- 业务员 -->
-      <template #saleuserid="{ record }">
-        <span>{{ findManagerName(record.saleuserid) }}</span>
-      </template>
-      <!-- 跟单员 -->
-      <template #meruserid="{ record }">
-        <span>{{ findManagerName(record.meruserid) }}</span>
-      </template>
-      <!-- 合同量 -->
-      <template #qty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="secondBtn"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" :contractType="-1" @cancel="closeComponent"></component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <filterCustomTable @search="updateColumn">
+        <mtp-table-button :buttons="firstBtn" @click="openComponent" />
+      </filterCustomTable>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList" :scroll="scroll">
+        <!-- 额外的展开行 -->
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+          <mtp-table-button class="btn-list-sticky" :buttons="secondBtn" :record="record" @click="openComponent" />
+        </template>
+        <template #biztype="{ text }">
+          <a>{{ getBizTypeName(text) }}</a>
+        </template>
+        <template #pricetype="{ text }">
+          <span>{{ getPriceTypeName(text) }}</span>
+        </template>
+        <template #contracctstatus="{ text }">
+          <a>{{ getContractStatusName(text) }}</a>
+        </template>
+        <template #contracttype="{ text }">
+          <a>{{ getContractTypeName(text) }}</a>
+        </template>
+        <!-- 对手方 -->
+        <template #negative="{ record }">
+          <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
+        </template>
+        <!-- 点假期 -->
+        <template #startdate="{ record }">
+          <span>{{ formatValue(formatTime(record.startdate, 'd') + '--' + formatTime(record.enddate, 'd')) }}</span>
+        </template>
+        <!-- 交收期 -->
+        <template #deliverystartdate="{ record }">
+          <span>{{ formatValue(formatTime(record.deliverystartdate, 'd') + '--' + formatTime(record.deliveryenddate, 'd')) }}</span>
+        </template>
+        <!-- 业务员 -->
+        <template #saleuserid="{ record }">
+          <span>{{ findManagerName(record.saleuserid) }}</span>
+        </template>
+        <!-- 跟单员 -->
+        <template #meruserid="{ record }">
+          <span>{{ findManagerName(record.meruserid) }}</span>
+        </template>
+        <!-- 合同量 -->
+        <template #qty="{ text, record }">
+          <span>{{ handleEnumdic(text, record) }}</span>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="secondBtn"> </contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" :contractType="-1" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { queryTableList, MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
 import { filterCustomTable } from '../../components';
 import { formatTime, formatValue } from '@/common/methods';
@@ -68,6 +73,7 @@ import { useRoute } from 'vue-router';
 export default defineComponent({
   name: EnumRouterName.spot_contract_unsubmitted,
   components: {
+    MtpTableScroll,
     filterCustomTable,
     contextMenu,
     detail: defineAsyncComponent(() => import('../../components/detail/index.vue')),

+ 32 - 26
src/views/information/warehouse-info/list/normal-use/index.vue

@@ -1,34 +1,39 @@
 <template>
   <!-- 仓库信息: 正常 -->
-  <div class="warehouse-info-normal" :loading="loading">
-    <Filter @search="updateColumn">
-      <mtp-table-button class="btn-list-sticky" :buttons="addButton" @click="openComponent" />
-    </Filter>
-    <a-table :columns="isPingAnOem() ? pingan_cwarehousecolumn() : columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :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" />
-      </template>
-      <template v-if="isPingAnOem()" #index="{ index }">
-        <span>{{ index + 1 }}</span>
-      </template>
-      <template #warehousetype="{ text }">
-        <span>{{ getWareHouseTypeName(text) }}</span>
-      </template>
-      <template #warehousestatus="{ text }">
-        <span>{{ gerWareHouseStatusName(text) }}</span>
-      </template>
-      <template #address="{ record }">
-        <span>{{ getProvinceName(record.provinceid) + getCityName(record.cityid) + getDistrictName(record.districtid) + record.address }}</span>
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"> </component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @search="updateColumn">
+        <mtp-table-button class="btn-list-sticky" :buttons="addButton" @click="openComponent" />
+      </Filter>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="isPingAnOem() ? pingan_cwarehousecolumn() : columns" class="srcollYTable" :scroll="scroll" :pagination="false" :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" />
+        </template>
+        <template v-if="isPingAnOem()" #index="{ index }">
+          <span>{{ index + 1 }}</span>
+        </template>
+        <template #warehousetype="{ text }">
+          <span>{{ getWareHouseTypeName(text) }}</span>
+        </template>
+        <template #warehousestatus="{ text }">
+          <span>{{ gerWareHouseStatusName(text) }}</span>
+        </template>
+        <template #address="{ record }">
+          <span>{{ getProvinceName(record.provinceid) + getCityName(record.cityid) + getDistrictName(record.districtid) + record.address }}</span>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"> </component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { ComposeTableParam, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, MtpTableButton, queryTableList } from '@/common/export/commonTable';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
 import { isPingAnOem } from '@/common/config/projectName';
@@ -44,6 +49,7 @@ import { getAddress } from '@/services/go/adress';
 export default defineComponent({
   name: 'warehouse-info-normal',
   components: {
+    MtpTableScroll,
     contextMenu,
     MtpTableButton,
     Filter,

+ 33 - 27
src/views/manage/business-review/list/settlement/index.vue

@@ -1,35 +1,40 @@
 <template>
   <!-- 管理-业务审核-交收 -->
-  <div class="business-review-js" :loading="loading">
-    <Filter @search="updateColumn"></Filter>
-    <a-table :columns="columns" class="topTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :data-source="tableList">
-      <!-- 额外的展开行 -->
-      <template #expandedRowRender="{ record }">
-        <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
-      </template>
-      <template #operateapplytype="{ text }">
-        <a>{{ getPriceTypeName(text) }}</a>
-      </template>
-      <template #contracttype="{ text }">
-        <a>{{ getContractTypeName(text) }}</a>
-      </template>
-      <template #applystatus="{ text }">
-        <a>{{ getApplyStatusName(text) }}</a>
-      </template>
-      <template #buyusernameOrsellusername="{ record }">
-        <a>{{ getAnalogueName(record.contracttype, record.buyusername, record.sellusername) }}</a>
-      </template>
-      <template #addmargin||decmargin="{ record }">
-        <a>{{ record.addmargin !== 0 && record.addmargin !== undefined ? '+' + record.addmargin : record.decmargin === 0 || record.decmargin === undefined ? '' : '-' + record.decmargin }} </a>
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @search="updateColumn"></Filter>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="topTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :scroll="scroll" :data-source="tableList">
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+          <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
+        </template>
+        <template #operateapplytype="{ text }">
+          <a>{{ getPriceTypeName(text) }}</a>
+        </template>
+        <template #contracttype="{ text }">
+          <a>{{ getContractTypeName(text) }}</a>
+        </template>
+        <template #applystatus="{ text }">
+          <a>{{ getApplyStatusName(text) }}</a>
+        </template>
+        <template #buyusernameOrsellusername="{ record }">
+          <a>{{ getAnalogueName(record.contracttype, record.buyusername, record.sellusername) }}</a>
+        </template>
+        <template #addmargin||decmargin="{ record }">
+          <a>{{ record.addmargin !== 0 && record.addmargin !== undefined ? '+' + record.addmargin : record.decmargin === 0 || record.decmargin === undefined ? '' : '-' + record.decmargin }} </a>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, ComposeTableParam, queryTableList } from '@/common/export/commonTable';
 import { Filter } from '../../components';
 import { invoiceStatusName } from '@/views/manage/finance-review/setup';
@@ -46,6 +51,7 @@ import { useRoute } from 'vue-router';
 export default defineComponent({
   name: 'business-review-js',
   components: {
+    MtpTableScroll,
     contextMenu,
     Filter,
     MtpTableButton,

+ 33 - 27
src/views/manage/business-review/list/someprice/index.vue

@@ -1,35 +1,40 @@
 <template>
   <!-- 管理-业务审核-点价 -->
-  <div class="business-review-dj" :loading="loading">
-    <Filter @search="updateColumn"></Filter>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList">
-      <!-- 额外的展开行 -->
-      <template #expandedRowRender="{ record }">
-        <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
-      </template>
-      <template #pricetype="{ text }">
-        <a>{{ getPriceTypeName(text) }}</a>
-      </template>
-      <template #applystatus="{ text }">
-        <a>{{ getApplyStatusName(text) }}</a>
-      </template>
-      <template #contracttype="{ text }">
-        <a>{{ getContractTypeName(text) }}</a>
-      </template>
-      <template #contractstatus="{ text }">
-        <a>{{ getContractStatusName(text) }}</a>
-      </template>
-      <template #buyusernameOrsellusername="{ record }">
-        <a>{{ getAnalogueName(record.contracttype, record.buyusername, record.sellusername) }}</a>
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @search="updateColumn"></Filter>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :scroll="scroll" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList">
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+          <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
+        </template>
+        <template #pricetype="{ text }">
+          <a>{{ getPriceTypeName(text) }}</a>
+        </template>
+        <template #applystatus="{ text }">
+          <a>{{ getApplyStatusName(text) }}</a>
+        </template>
+        <template #contracttype="{ text }">
+          <a>{{ getContractTypeName(text) }}</a>
+        </template>
+        <template #contractstatus="{ text }">
+          <a>{{ getContractStatusName(text) }}</a>
+        </template>
+        <template #buyusernameOrsellusername="{ record }">
+          <a>{{ getAnalogueName(record.contracttype, record.buyusername, record.sellusername) }}</a>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, ComposeTableParam, queryTableList } from '@/common/export/commonTable';
 import { Filter } from '../../components';
 import { getPriceTypeName, getContractStatusName, getContractTypeName, getApplyStatusName } from '@/common/constants/enumsName';
@@ -46,6 +51,7 @@ import moment from 'moment';
 export default defineComponent({
   name: 'business-review-dj',
   components: {
+    MtpTableScroll,
     contextMenu,
     Filter,
     MtpTableButton,

+ 46 - 40
src/views/manage/finance-review/list/funds/index.vue

@@ -1,48 +1,53 @@
 <template>
   <!-- 管理 - 财务审核 - 款项 -->
-  <div class="business-review-js" :loading="loading">
-    <Filter @search="updateColumn"></Filter>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList">
-      <!-- 额外的展开行 -->
-      <template #expandedRowRender="{ record }">
-        <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
-      </template>
-      <!-- 现货合同类型 -->
-      <template #contractstatus="{ record }">
-        <a>{{ getApplyStatusName(record.applystatus) }}</a>
-      </template>
-      <!-- 合同类型-->
-      <template #contracttype="{ record }">
-        <a>{{ getContractTypeName(record.contracttype) }}</a>
-      </template>
-      <!-- 状态 -->
-      <template #applystatus="{ text }">
-        <a>{{ getApplyStatusName(text) }}</a>
-      </template>
-      <!-- 点价类型 -->
-      <template #operateapplytype="{ text }">
-        <a>{{ operateApplyTypeName(text) }}</a>
-      </template>
-      <!-- 款项类型 -->
-      <template #kxtype="{ record }">
-        <a>{{ stateName(record.deductamount, record.contracttype) }}</a>
-      </template>
-      <!-- 对手方 -->
-      <template #buyusernameOrsellusername="{ record }">
-        <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
-      </template>
-      <!-- 金额 如果是退款 则使用deductamount  如果是付款则使用payamount-->
-      <template #payamount="{ record }">
-        <a>{{ record.deductamount === undefined || record.deductamount === 0 ? record.payamount : record.deductamount }}</a>
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @search="updateColumn"></Filter>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :scroll="scroll" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList">
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+          <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
+        </template>
+        <!-- 现货合同类型 -->
+        <template #contractstatus="{ record }">
+          <a>{{ getApplyStatusName(record.applystatus) }}</a>
+        </template>
+        <!-- 合同类型-->
+        <template #contracttype="{ record }">
+          <a>{{ getContractTypeName(record.contracttype) }}</a>
+        </template>
+        <!-- 状态 -->
+        <template #applystatus="{ text }">
+          <a>{{ getApplyStatusName(text) }}</a>
+        </template>
+        <!-- 点价类型 -->
+        <template #operateapplytype="{ text }">
+          <a>{{ operateApplyTypeName(text) }}</a>
+        </template>
+        <!-- 款项类型 -->
+        <template #kxtype="{ record }">
+          <a>{{ stateName(record.deductamount, record.contracttype) }}</a>
+        </template>
+        <!-- 对手方 -->
+        <template #buyusernameOrsellusername="{ record }">
+          <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
+        </template>
+        <!-- 金额 如果是退款 则使用deductamount  如果是付款则使用payamount-->
+        <template #payamount="{ record }">
+          <a>{{ record.deductamount === undefined || record.deductamount === 0 ? record.payamount : record.deductamount }}</a>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { queryTableList, MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
 import { Filter } from '../../components';
 import { invoiceStatusName, operateApplyTypeName, stateName } from '@/views/manage/finance-review/setup';
@@ -58,6 +63,7 @@ import { useRoute } from 'vue-router';
 export default defineComponent({
   name: 'business-review-js',
   components: {
+    MtpTableScroll,
     contextMenu,
     Filter,
     MtpTableButton,

+ 38 - 32
src/views/manage/finance-review/list/invoice/index.vue

@@ -1,40 +1,45 @@
 <template>
   <!-- 管理 - 财务审核 - 发票 -->
-  <div class="finance_review_invoice" :loading="loading">
-    <Filter @search="updateColumn"> </Filter>
-    <a-table :columns="columns" class="topTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :data-source="tableList">
-      <!-- 额外的展开行 -->
-      <template #expandedRowRender="{ record }">
-        <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
-      </template>
-      <!-- 现货合同类型 -->
-      <template #contracttype="{ text }">
-        <a>{{ getContractTypeName(text) }}</a>
-      </template>
-      <!-- 发票类型-->
-      <template #invoicetype="{ text }">
-        <a>{{ getReceiptName(text) }}</a>
-      </template>
-      <!-- 状态 -->
-      <template #applystatus="{ text }">
-        <a>{{ getApplyStatusName(text) }}</a>
-      </template>
-      <!-- 点价类型 -->
-      <template #pricetype="{ text }">
-        <a>{{ getPriceTypeName(text) }}</a>
-      </template>
-      <!-- 对手方 -->
-      <template #buyusernameOrsellusername="{ record }">
-        <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @search="updateColumn"></Filter>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="topTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :scroll="scroll" :data-source="tableList">
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+          <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
+        </template>
+        <!-- 现货合同类型 -->
+        <template #contracttype="{ text }">
+          <a>{{ getContractTypeName(text) }}</a>
+        </template>
+        <!-- 发票类型-->
+        <template #invoicetype="{ text }">
+          <a>{{ getReceiptName(text) }}</a>
+        </template>
+        <!-- 状态 -->
+        <template #applystatus="{ text }">
+          <a>{{ getApplyStatusName(text) }}</a>
+        </template>
+        <!-- 点价类型 -->
+        <template #pricetype="{ text }">
+          <a>{{ getPriceTypeName(text) }}</a>
+        </template>
+        <!-- 对手方 -->
+        <template #buyusernameOrsellusername="{ record }">
+          <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { queryTableList, MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
 import { Filter } from '../../components';
 import { Column, ColumnType } from '@/common/setup/table';
@@ -49,6 +54,7 @@ import { useRoute } from 'vue-router';
 export default defineComponent({
   name: 'finance_review_invoice',
   components: {
+    MtpTableScroll,
     contextMenu,
     Filter,
     MtpTableButton,

+ 38 - 32
src/views/manage/inventory-review/list/audit/index.vue

@@ -1,40 +1,45 @@
 <template>
   <!-- 库存审核 入库-->
-  <div class="inventory_review_checkin" :loading="loading">
-    <Filter @search="updateColumn" :inOrOut="'in'"></Filter>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList">
-      <!-- 额外的展开行 -->
-      <template #expandedRowRender="{ record }">
-        <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
-      </template>
-      <!-- 状态 -->
-      <template #applystatus="{ text }">
-        <a>{{ getApplyStatusName(text) }}</a>
-      </template>
-      <!-- 现货合同类型 -->
-      <template #contracttype="{ text }">
-        <a>{{ getContractTypeName(text) }}</a>
-      </template>
-      <!-- 点价类型 -->
-      <template #pricetype="{ text }">
-        <a>{{ getPriceTypeName(text) }}</a>
-      </template>
-      <!-- 出入库类型 -->
-      <template #inouttype="{ text }">
-        <a>{{ InOutTypeName(text) }}</a>
-      </template>
-      <!-- 对手方 -->
-      <template #buynicknameOrsellusername="{ record }">
-        <a>{{ handleName(record) }}</a>
-      </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @search="updateColumn" :inOrOut="'in'"></Filter>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :scroll="scroll" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList">
+        <!-- 额外的展开行 -->
+        <template #expandedRowRender="{ record }">
+          <mtp-table-button class="btn-list-sticky" :buttons="handlePermissionBtn(buttons, record)" :record="record" @click="openComponent" />
+        </template>
+        <!-- 状态 -->
+        <template #applystatus="{ text }">
+          <a>{{ getApplyStatusName(text) }}</a>
+        </template>
+        <!-- 现货合同类型 -->
+        <template #contracttype="{ text }">
+          <a>{{ getContractTypeName(text) }}</a>
+        </template>
+        <!-- 点价类型 -->
+        <template #pricetype="{ text }">
+          <a>{{ getPriceTypeName(text) }}</a>
+        </template>
+        <!-- 出入库类型 -->
+        <template #inouttype="{ text }">
+          <a>{{ InOutTypeName(text) }}</a>
+        </template>
+        <!-- 对手方 -->
+        <template #buynicknameOrsellusername="{ record }">
+          <a>{{ handleName(record) }}</a>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="handlePermissionBtn(buttons, selectedRow)"> </contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, handleComposeTable, ComposeTableParam, queryTableList } from '@/common/export/commonTable';
 import { Filter } from '../../components';
 import { QueryAreaStockApply } from '@/services/go/ermcp/inventory-review';
@@ -51,6 +56,7 @@ import { useRoute } from 'vue-router';
 export default defineComponent({
   name: 'inventory_review_checkin',
   components: {
+    MtpTableScroll,
     contextMenu,
     Filter,
     MtpTableButton,

+ 17 - 13
src/views/market/futures/index.vue

@@ -1,19 +1,24 @@
 <template>
   <!--期货-->
-  <div class="futures topTableHeight">
-    <a-table :columns="getColumnsList()" :class="['srcollYTable', isBottom ? 'futures-table-up' : 'futures-table-down', tableList.length ? 'noPlaceHolder' : 'hasPlaceHolder']" :scroll="{ x: '100%', y: 'auto' }" :pagination="false" :loading="loading" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList">
-      <template #index="{ index }">
-        <span>{{index + 1}}</span>
-      </template>
-    </a-table>
-    <ThridMenu :list="tabList" @selectMenu="changeTab" />
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"></contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </div>
+  <mtp-table-scroll>
+    <template #default="{ scroll }">
+      <a-table :columns="getColumnsList()" class="srcollYTable" :scroll="scroll" :pagination="false" :loading="loading" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList">
+        <template #index="{ index }">
+          <span>{{index + 1}}</span>
+        </template>
+      </a-table>
+    </template>
+    <template #footer>
+      <ThridMenu :list="tabList" @selectMenu="changeTab" />
+    </template>
+  </mtp-table-scroll>
+  <!-- 右键 -->
+  <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"></contextMenu>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import ThridMenu from '@/common/components/thirdMenu/index.vue';
 import { getShowBottomValue } from '@/common/config/constrolBottom';
 import { handleModalComponent } from '@/common/setup/asyncComponent';
@@ -26,12 +31,11 @@ import { TableEventCB } from '@/common/setup/table/interface';
 import { getTableEvent } from '@/common/export/table';
 import { ContextMenuTemp } from '@/common/components/contextMenu/interface';
 import { BtnListType } from '@/common/components/btnList/interface';
-import MtpResize from '@/common/components/resize/index.vue'
 
 export default defineComponent({
   name: 'spot_trade_order_transaction_swap',
   components: {
-    MtpResize,
+    MtpTableScroll,
     ThridMenu,
     contextMenu,
     chart: defineAsyncComponent(() => import('../spot_trade/components/goods-chart/index.vue')),

+ 19 - 20
src/views/order/funding_information/components/funding_information_funding_log/index.vue

@@ -1,31 +1,32 @@
 <template>
   <!-- 资金流水 -->
-  <section>
-    <a-table :columns="columns" class="srcollYTable expandLeftTable" :scroll="{ x: '100%', y: '190px' }" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :expandIcon="expandIcon" :expandIconAsCell="false" :rowKey="(record,index)=>index" :data-source="tableList">
-      <!-- 额外的展开行 -->
-      <template v-if="btnList.length" #expandedRowRender="{ record }">
-        <BtnList :btnList="btnList" :record="record" class="btn-list-sticky" @click="openComponent" />
-      </template>
-      <template #createtime="{ record }">
-        <a>{{ formatTime(record.createtime) }}</a>
-      </template>
-    </a-table>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </section>
+  <mtp-table-scroll>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :scroll="scroll" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :expandIcon="expandIcon" :expandIconAsCell="false" :rowKey="(record,index)=>index" :data-source="tableList">
+        <!-- 额外的展开行 -->
+        <template v-if="btnList.length" #expandedRowRender="{ record }">
+          <BtnList :btnList="btnList" :record="record" class="btn-list-sticky" @click="openComponent" />
+        </template>
+        <template #createtime="{ record }">
+          <a>{{ formatTime(record.createtime) }}</a>
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { enumOrderComponents } from '@/common/constants/enumOrderComponents';
-import { queryTableList, BtnList, defineAsyncComponent, defineComponent } from '@/common/export/commonTable';
-import { QueryPerformancePlan, queryWrTradeDetail } from '@/services/go/wrtrade';
-import { QueryPerformancePlanReq, WrPerformancePlan } from '@/services/go/wrtrade/interface';
+import { queryTableList, BtnList, defineComponent } from '@/common/export/commonTable';
+import { WrPerformancePlan } from '@/services/go/wrtrade/interface';
 import { getRecordItemTab } from '@/common/setup/order/orderData';
 import { handleComposeOrderTable } from '@/common/setup/table/compose';
 import { ComposeOrderTableParam } from '@/common/setup/table/interface';
 import { queryAmountLog } from '@/services/go/TaAccount';
 import { QueryAmountLogReq } from '@/services/go/TaAccount/interface';
 import { getSelectedAccountId } from '@/services/bus/account';
-import { getOperateTypeEnumItemName, getOperateTypeName } from '@/common/constants/enumsName';
 import { formatTime } from '@/common/methods';
 import Bus from '@/utils/eventBus/index';
 import { expandIcon } from '@/common/setup/table/clolumn';
@@ -33,6 +34,7 @@ import { expandIcon } from '@/common/setup/table/clolumn';
 export default defineComponent({
   name: enumOrderComponents.funding_information_funding_log,
   components: {
+    MtpTableScroll,
     BtnList,
   },
   setup() {
@@ -65,7 +67,4 @@ export default defineComponent({
     };
   },
 });
-</script>
-
-<style lang="less">
-</style>;
+</script>

+ 8 - 4
src/views/order/funding_information/components/funding_information_funding_summary/index.vue

@@ -1,12 +1,15 @@
 <template>
   <!-- 资金汇总 -->
-  <section>
-    <a-table :columns="getColumns()" class="srcollYTable expandLeftTable" :scroll="{ x: '100%', y: '190px' }" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :expandIcon="expandIcon" :expandIconAsCell="false" :rowKey="(record,index)=>index" :data-source="tradeAccountList"></a-table>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </section>
+  <mtp-table-scroll>
+    <template #default="{ scroll }">
+      <a-table :columns="getColumns()" class="srcollYTable" :scroll="scroll" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :expandIcon="expandIcon" :expandIconAsCell="false" :rowKey="(record,index)=>index" :data-source="tradeAccountList"></a-table>
+    </template>
+  </mtp-table-scroll>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { enumOrderComponents } from '@/common/constants/enumOrderComponents';
 import { BtnList, defineComponent } from '@/common/export/commonTable';
 import { getRecordItemTab } from '@/common/setup/order/orderData';
@@ -20,6 +23,7 @@ import { useTradeAccount } from '@/hooks/account';
 export default defineComponent({
   name: enumOrderComponents.funding_information_funding_summary,
   components: {
+    MtpTableScroll,
     BtnList,
   },
   setup() {

+ 13 - 9
src/views/order/futures_information/components/futures_information_entrust/index.vue

@@ -1,18 +1,21 @@
 <template>
   <!-- 期货订单-委托 -->
-  <section class="futures_information_position">
-    <a-table :columns="getColumns()" class="srcollYTable" :scroll="{ x: '100%', y: '190px' }" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :expandIcon="expandIcon" :expandIconAsCell="false" :rowKey="(record,index)=>index" :data-source="tableList">
-      <!-- 额外的展开行 -->
-      <template v-if="btnList.length" #expandedRowRender="{ record }">
-        <BtnList :btnList="handleBtnList(btnList,record)" :record="record" class="btn-list-sticky" @click="openComponent" />
-      </template>
-    </a-table>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </section>
+  <mtp-table-scroll>
+    <template #default="{ scroll }">
+      <a-table :columns="getColumns()" class="srcollYTable" :scroll="scroll" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :expandIcon="expandIcon" :expandIconAsCell="false" :rowKey="(record,index)=>index" :data-source="tableList">
+        <!-- 额外的展开行 -->
+        <template v-if="btnList.length" #expandedRowRender="{ record }">
+          <BtnList :btnList="handleBtnList(btnList,record)" :record="record" class="btn-list-sticky" @click="openComponent" />
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
 import { defineComponent } from 'vue';
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { queryTableList, BtnList } from '@/common/export/commonTable';
 import { handleComposeOrderTable } from '@/common/setup/table/compose';
 import { ComposeOrderTableParam } from '@/common/setup/table/interface';
@@ -26,6 +29,7 @@ import { cancel } from './setup';
 
 export default defineComponent({
   components: {
+    MtpTableScroll,
     BtnList,
     cancel,
   },

+ 13 - 9
src/views/order/futures_information/components/futures_information_position/index.vue

@@ -1,17 +1,20 @@
 <template>
   <!-- 期货订单-持仓 -->
-  <section class="futures_information_position">
-    <a-table :columns="getColumns()" class="srcollYTable" :scroll="{ x: '100%', y: '190px' }" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :expandIcon="expandIcon" :expandIconAsCell="false" :rowKey="(record,index)=>index" :data-source="tradePositionList">
-      <!-- 额外的展开行 -->
-      <template v-if="btnList.length" #expandedRowRender="{ record }">
-        <BtnList :btnList="btnList" :record="record" class="btn-list-sticky" @click="openComponent" />
-      </template>
-    </a-table>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </section>
+  <mtp-table-scroll>
+    <template #default="{ scroll }">
+      <a-table :columns="getColumns()" class="srcollYTable" :scroll="scroll" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :expandIcon="expandIcon" :expandIconAsCell="false" :rowKey="(record,index)=>index" :data-source="tradePositionList">
+        <!-- 额外的展开行 -->
+        <template v-if="btnList.length" #expandedRowRender="{ record }">
+          <BtnList :btnList="btnList" :record="record" class="btn-list-sticky" @click="openComponent" />
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { defineComponent, defineAsyncComponent } from 'vue';
 import { BtnList } from '@/common/export/commonTable';
 import { handleComposeOrderTable } from '@/common/setup/table/compose';
@@ -23,6 +26,7 @@ import { useTradeAccount } from '@/hooks/account'
 
 export default defineComponent({
   components: {
+    MtpTableScroll,
     BtnList,
     close: defineAsyncComponent(() => import('@/views/market/futures/compoments/futures-trade/index.vue')),
   },

+ 13 - 9
src/views/order/futures_information/components/futures_information_success/index.vue

@@ -1,18 +1,21 @@
 <template>
   <!-- 期货订单-成交 -->
-  <section class="futures_information_position">
-    <a-table :columns="getColumns()" class="srcollYTable" :scroll="{ x: '100%', y: '190px' }" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :expandIcon="expandIcon" :expandIconAsCell="false" :rowKey="(record,index)=>index" :data-source="tableList">
-      <!-- 额外的展开行 -->
-      <template v-if="btnList.length" #expandedRowRender="{ record }">
-        <BtnList :btnList="btnList" :record="record" class="btn-list-sticky" @click="openComponent" />
-      </template>
-    </a-table>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </section>
+  <mtp-table-scroll>
+    <template #default="{ scroll }">
+      <a-table :columns="getColumns()" class="srcollYTable" :scroll="scroll" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :expandIcon="expandIcon" :expandIconAsCell="false" :rowKey="(record,index)=>index" :data-source="tableList">
+        <!-- 额外的展开行 -->
+        <template v-if="btnList.length" #expandedRowRender="{ record }">
+          <BtnList :btnList="btnList" :record="record" class="btn-list-sticky" @click="openComponent" />
+        </template>
+      </a-table>
+    </template>
+  </mtp-table-scroll>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
 import { defineComponent } from 'vue';
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { queryTableList, BtnList } from '@/common/export/commonTable';
 import { handleComposeOrderTable } from '@/common/setup/table/compose';
 import { ComposeOrderTableParam } from '@/common/setup/table/interface';
@@ -24,6 +27,7 @@ import { getColumns } from './columns';
 
 export default defineComponent({
   components: {
+    MtpTableScroll,
     BtnList,
   },
   setup() {

+ 27 - 27
src/views/order/futures_information/index.vue

@@ -14,35 +14,35 @@ import { handleOrderDetailList } from '@/common/setup/order/orderData';
 import Bus from '@/utils/eventBus/index';
 
 export default defineComponent({
-    components: {
-        thirdMenu,
-        futures_information_position: defineAsyncComponent(() => import('./components/futures_information_position/index.vue')), // 持仓
-        futures_information_entrust: defineAsyncComponent(() => import('./components/futures_information_entrust/index.vue')), // 委托
-        futures_information_success: defineAsyncComponent(() => import('./components/futures_information_success/index.vue')), // 成交
-    },
-    setup() {
-        const { componentId, tabList, changeTab } = handleOrderDetailList('futures_information');
+  components: {
+    thirdMenu,
+    futures_information_position: defineAsyncComponent(() => import('./components/futures_information_position/index.vue')), // 持仓
+    futures_information_entrust: defineAsyncComponent(() => import('./components/futures_information_entrust/index.vue')), // 委托
+    futures_information_success: defineAsyncComponent(() => import('./components/futures_information_success/index.vue')), // 成交
+  },
+  setup() {
+    const { componentId, tabList, changeTab } = handleOrderDetailList('futures_information');
 
-        // 组件重新加载
-        function componentReload() {
-            const code = componentId.value;
-            componentId.value = '';
-            nextTick(() => {
-                componentId.value = code;
-            });
-        }
+    // 组件重新加载
+    function componentReload() {
+      const code = componentId.value;
+      componentId.value = '';
+      nextTick(() => {
+        componentId.value = code;
+      });
+    }
 
-        // 注册账户变化事件,待通知调用
-        Bus.$onOnly('taAccountChangedNtf', () => {
-            // 重新加载组件
-            componentReload();
-        });
+    // 注册账户变化事件,待通知调用
+    Bus.$onOnly('taAccountChangedNtf', () => {
+      // 重新加载组件
+      componentReload();
+    });
 
-        return {
-            componentId,
-            tabList,
-            changeTab,
-        };
-    },
+    return {
+      componentId,
+      tabList,
+      changeTab,
+    };
+  },
 });
 </script>

+ 25 - 19
src/views/report/exposure-report/list/exposure_report/index.vue

@@ -1,27 +1,32 @@
 <template>
   <!-- 敞口报表 -->
-  <div class="table-detail-container table-height" :loading="loading">
-    <Filter @update="search" @filter="updateColumn"></Filter>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList"> </a-table>
-    <!-- 明细 -->
-    <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-      <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
-        <!-- 合同类型 -->
-        <template #contracttype="{ text }">
-          <a>{{ getContractTypeName(text) }}</a>
-        </template>
-        <template #biztype="{ text }">
-          <a>{{ getBizTypeName(text) }}</a>
-        </template>
-        <template #buyorsell="{ text }">
-          <a>{{ getBuyOrSellName(text) }}</a>
-        </template>
-      </a-table>
-    </Description>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @update="search" @filter="updateColumn"></Filter>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :scroll="scroll" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList"> </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 明细 -->
+  <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
+    <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
+      <!-- 合同类型 -->
+      <template #contracttype="{ text }">
+        <a>{{ getContractTypeName(text) }}</a>
+      </template>
+      <template #biztype="{ text }">
+        <a>{{ getBizTypeName(text) }}</a>
+      </template>
+      <template #buyorsell="{ text }">
+        <a>{{ getBuyOrSellName(text) }}</a>
+      </template>
+    </a-table>
+  </Description>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import Filter from '../../components/filterTable/index.vue';
 import { defineComponent, queryTableList } from '@/common/export/table';
 import { TypeAndTime } from '@/views/report/interface';
@@ -40,6 +45,7 @@ import { getTableButton } from '@/common/setup/table/button';
 export default defineComponent({
   name: EnumRouterName.exposure_report_exposure,
   components: {
+    MtpTableScroll,
     Filter,
     Description,
   },

+ 14 - 8
src/views/report/finance-report/list/finance_report_finance/index.vue

@@ -1,16 +1,21 @@
 <template>
   <!-- 财务报表 -->
-  <div class="table-detail-container table-height" :loading="loading">
-    <Filter @update="search"></Filter>
-    <a-table :columns="columns" class="srcollYTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
-    <!-- 明细 -->
-    <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-      <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
-    </Description>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @update="search"></Filter>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList" :scroll="scroll"> </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 明细 -->
+  <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
+    <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
+  </Description>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import Filter from '../../components/filterTable/index.vue';
 import { defineComponent, queryTableList } from '@/common/export/table';
 import { TypeAndTime } from '@/views/report/interface';
@@ -28,6 +33,7 @@ import { getTableButton } from '@/common/setup/table/button';
 export default defineComponent({
   name: 'finance-report',
   components: {
+    MtpTableScroll,
     Filter,
     Description,
   },

+ 22 - 13
src/views/report/future_report/list/future_report/index.vue

@@ -1,26 +1,34 @@
 <template>
   <!-- 期货报表 -->
-  <div class="table-detail-container table-height" :loading="loading">
-    <Filter @update="search"></Filter>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList">
-      <!-- 持仓方向 -->
-      <template #buyorsell="{ record }">
-        <a>{{ record.buyorsell === 1 ? '卖出' : '买入' }}</a>
-      </template>
-    </a-table>
-    <!-- 明细 -->
-    <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-      <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @update="search"></Filter>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :scroll="scroll" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList">
         <!-- 持仓方向 -->
         <template #buyorsell="{ record }">
           <a>{{ record.buyorsell === 1 ? '卖出' : '买入' }}</a>
         </template>
       </a-table>
-    </Description>
-  </div>
+    </template>
+    <template #footer>
+      <ThridMenu :list="tabList" @selectMenu="changeTab" />
+    </template>
+  </mtp-table-scroll>
+  <!-- 明细 -->
+  <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
+    <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
+      <!-- 持仓方向 -->
+      <template #buyorsell="{ record }">
+        <a>{{ record.buyorsell === 1 ? '卖出' : '买入' }}</a>
+      </template>
+    </a-table>
+  </Description>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import Filter from '../../components/filterTable/index.vue';
 import { defineComponent, queryTableList } from '@/common/export/table';
 import { ComposeTableDetailParam, handleComposeTable_detail } from '@/common/setup/table/compose';
@@ -38,6 +46,7 @@ import { getTableButton } from '@/common/setup/table/button';
 export default defineComponent({
   name: 'inventory_report_inventory_category',
   components: {
+    MtpTableScroll,
     Filter,
     Description,
   },

+ 14 - 8
src/views/report/inventory-report/list/category/index.vue

@@ -1,16 +1,21 @@
 <template>
   <!-- 库存报表(品类) -->
-  <div class="table-detail-container table-height" :loading="loading">
-    <Filter @update="search" @filter="updateColumn"></Filter>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList"> </a-table>
-    <!-- 明细 -->
-    <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-      <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
-    </Description>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @update="search" @filter="updateColumn"></Filter>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :scroll="scroll" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList"> </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 明细 -->
+  <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
+    <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
+  </Description>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import Filter from '../../components/filterTable/index.vue';
 import { defineComponent, queryTableList } from '@/common/export/table';
 import { ComposeTableDetailParam, handleComposeTable_detail } from '@/common/setup/table/compose';
@@ -28,6 +33,7 @@ import { getTableButton } from '@/common/setup/table/button';
 export default defineComponent({
   name: 'inventory_report_inventory_category',
   components: {
+    MtpTableScroll,
     Filter,
     Description,
   },

+ 14 - 8
src/views/report/inventory-report/list/warehouse/index.vue

@@ -1,16 +1,21 @@
 <template>
   <!-- 库存报表(仓库) -->
-  <div class="table-detail-container table-height" :loading="loading">
-    <Filter @update="search" @filter="updateColumn"></Filter>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList"> </a-table>
-    <!-- 明细 -->
-    <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-      <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
-    </Description>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @update="search" @filter="updateColumn"></Filter>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :scroll="scroll" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList"> </a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 明细 -->
+  <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
+    <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"> </a-table>
+  </Description>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import Filter from '../../components/filterTable/index.vue';
 import { defineComponent, queryTableList } from '@/common/export/table';
 import { ComposeTableDetailParam, handleComposeTable_detail } from '@/common/setup/table/compose';
@@ -28,6 +33,7 @@ import { getTableButton } from '@/common/setup/table/button';
 export default defineComponent({
   name: 'inventory_report_warehouse',
   components: {
+    MtpTableScroll,
     Filter,
     Description,
   },

+ 45 - 39
src/views/report/spot-report/list/spot_report/index.vue

@@ -1,42 +1,11 @@
 <template>
   <!-- 现货报表 -->
-  <div class="table-detail-container table-height" :loading="loading">
-    <Filter @update="search" @filter="updateColumn" :tableList="tableList"></Filter>
-    <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList">
-      <template #curaverageprice="{ record }">
-        <span>{{ record.curaverageprice.toFixed(2) }}</span>
-      </template>
-      <template #oriaverageprice="{ record }">
-        <span>{{ record.oriaverageprice.toFixed(2) }}</span>
-      </template>
-      <template #oriamount="{ record }">
-        <span>{{ record.oriamount.toFixed(2) }}</span>
-      </template>
-      <template #todaybuyamount="{ record }">
-        <span>{{ record.todaybuyamount.toFixed(2) }}</span>
-      </template>
-      <template #todaybuyaverageprice="{ record }">
-        <span>{{ record.todaybuyaverageprice.toFixed(2) }}</span>
-      </template>
-      <template #todaysellaverageprice="{ record }">
-        <span>{{ record.todaysellaverageprice.toFixed(2) }}</span>
-      </template>
-      <template #actualpl="{ record }">
-        <span>{{ record.actualpl.toFixed(2) }}</span>
-      </template>
-      <template #curspotprice="{ record }">
-        <span>{{ record.curspotprice.toFixed(2) }}</span>
-      </template>
-      <template #floatpl="{ record }">
-        <span>{{ record.floatpl.toFixed(2) }}</span>
-      </template>
-      <template #curmarketvalue="{ record }">
-        <span>{{ record.curmarketvalue.toFixed(2) }}</span>
-      </template>
-    </a-table>
-    <!-- 明细 -->
-    <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-      <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @update="search" @filter="updateColumn" :tableList="tableList"></Filter>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="srcollYTable" :scroll="scroll" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :rowKey="(record,index)=>index" :data-source="tableList">
         <template #curaverageprice="{ record }">
           <span>{{ record.curaverageprice.toFixed(2) }}</span>
         </template>
@@ -68,11 +37,47 @@
           <span>{{ record.curmarketvalue.toFixed(2) }}</span>
         </template>
       </a-table>
-    </Description>
-  </div>
+    </template>
+  </mtp-table-scroll>
+  <!-- 明细 -->
+  <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
+    <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
+      <template #curaverageprice="{ record }">
+        <span>{{ record.curaverageprice.toFixed(2) }}</span>
+      </template>
+      <template #oriaverageprice="{ record }">
+        <span>{{ record.oriaverageprice.toFixed(2) }}</span>
+      </template>
+      <template #oriamount="{ record }">
+        <span>{{ record.oriamount.toFixed(2) }}</span>
+      </template>
+      <template #todaybuyamount="{ record }">
+        <span>{{ record.todaybuyamount.toFixed(2) }}</span>
+      </template>
+      <template #todaybuyaverageprice="{ record }">
+        <span>{{ record.todaybuyaverageprice.toFixed(2) }}</span>
+      </template>
+      <template #todaysellaverageprice="{ record }">
+        <span>{{ record.todaysellaverageprice.toFixed(2) }}</span>
+      </template>
+      <template #actualpl="{ record }">
+        <span>{{ record.actualpl.toFixed(2) }}</span>
+      </template>
+      <template #curspotprice="{ record }">
+        <span>{{ record.curspotprice.toFixed(2) }}</span>
+      </template>
+      <template #floatpl="{ record }">
+        <span>{{ record.floatpl.toFixed(2) }}</span>
+      </template>
+      <template #curmarketvalue="{ record }">
+        <span>{{ record.curmarketvalue.toFixed(2) }}</span>
+      </template>
+    </a-table>
+  </Description>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import Filter from '../../components/filterTable/index.vue';
 import { defineComponent, queryTableList } from '@/common/export/table';
 import { handleInitTypeAndTime } from '@/views/report/setup';
@@ -91,6 +96,7 @@ import { columns } from './setup';
 export default defineComponent({
   name: 'spot-report',
   components: {
+    MtpTableScroll,
     Filter,
     Description,
   },

+ 31 - 25
src/views/report/sum_pl_report/list/sum_pl_report/index.vue

@@ -1,33 +1,38 @@
 <template>
   <!-- 汇总损益报表 -->
-  <div class="table-detail-container table-height" :loading="loading">
-    <Filter @update="search"></Filter>
-    <a-table :columns="getColumns()" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="customRow" :rowKey="(record,index)=>index" :data-source="tableList"></a-table>
-    <!-- 明细 -->
-    <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-      <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
-        <!-- 出现浮点失真  强行处理 * 2-->
-        <template #spotactualpl="{ record }">
-          <span>{{ record.spotactualpl.toFixed(2) }}</span>
-        </template>
-        <template #spotfloatpl="{ record }">
-          <span>{{ record.spotfloatpl.toFixed(2) }}</span>
-        </template>
-        <template #futureactualpl="{ record }">
-          <span>{{ record.futureactualpl.toFixed(2) }}</span>
-        </template>
-        <template #sumactualpl="{ record }">
-          <span>{{ record.sumactualpl.toFixed(2) }}</span>
-        </template>
-        <template #sumpl="{ record }">
-          <span>{{ record.sumpl.toFixed(2) }}</span>
-        </template>
-      </a-table>
-    </Description>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @update="search"></Filter>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="getColumns()" class="srcollYTable" :scroll="scroll" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="customRow" :rowKey="(record,index)=>index" :data-source="tableList"></a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 明细 -->
+  <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
+    <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }">
+      <!-- 出现浮点失真  强行处理 * 2-->
+      <template #spotactualpl="{ record }">
+        <span>{{ record.spotactualpl.toFixed(2) }}</span>
+      </template>
+      <template #spotfloatpl="{ record }">
+        <span>{{ record.spotfloatpl.toFixed(2) }}</span>
+      </template>
+      <template #futureactualpl="{ record }">
+        <span>{{ record.futureactualpl.toFixed(2) }}</span>
+      </template>
+      <template #sumactualpl="{ record }">
+        <span>{{ record.sumactualpl.toFixed(2) }}</span>
+      </template>
+      <template #sumpl="{ record }">
+        <span>{{ record.sumpl.toFixed(2) }}</span>
+      </template>
+    </a-table>
+  </Description>
 </template>
 
 <script lang="ts">
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import Description from '@/common/components/description/index.vue';
 import { TabList } from '@/common/components/description/interface';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
@@ -46,6 +51,7 @@ import { getColumns } from './setup';
 export default defineComponent({
   name: 'sum_pl_report',
   components: {
+    MtpTableScroll,
     Filter,
     Description,
   },

+ 17 - 11
src/views/search/inventory/list/inventory_current/index.vue

@@ -1,20 +1,25 @@
 <template>
   <!-- 库存查询: 当前库存-->
-  <div class="inventory_current" :loading="loading">
-    <Filter @search="updateColumn">
-      <mtp-table-button class="btn-list-sticky" :buttons="buttons" @click="openComponent" />
-    </Filter>
-    <a-table :columns="columns" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :data-source="tableList"></a-table>
-    <!-- 明细 -->
-    <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
-      <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"></a-table>
-    </Description>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
-  </div>
+  <mtp-table-scroll>
+    <template #header>
+      <Filter @search="updateColumn">
+        <mtp-table-button class="btn-list-sticky" :buttons="buttons" @click="openComponent" />
+      </Filter>
+    </template>
+    <template #default="{ scroll }">
+      <a-table :columns="columns" class="topTable" :scroll="scroll" :pagination="false" :rowKey="(record,index)=>index" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :data-source="tableList"></a-table>
+    </template>
+  </mtp-table-scroll>
+  <!-- 明细 -->
+  <Description v-if="visible" @close="closeDrawer" @changeTab="changeTab" :tabList="tabList">
+    <a-table :columns="columnsDetail" class="topTable" :pagination="false" :rowKey="(record,index)=>index" :data-source="detailTableList" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"></a-table>
+  </Description>
+  <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
 </template>
 
 <script lang="ts">
 import { ref } from 'vue';
+import MtpTableScroll from '@/common/components/tableScroll/index.vue';
 import { queryTableList, MtpTableButton, contextMenu, defineAsyncComponent, defineComponent } from '@/common/export/commonTable';
 import Filter from '../../components/filterTable/index.vue';
 import { QueryAreaStockApply } from '@/services/go/ermcp/search-inventory/index';
@@ -34,6 +39,7 @@ import { ColumnType } from '@/common/methods/table';
 export default defineComponent({
   name: 'inventory_current',
   components: {
+    MtpTableScroll,
     Filter,
     contextMenu,
     add: defineAsyncComponent(() => import('../../components/add/index.vue')),