ソースを参照

Merge branch 'master' of http://47.101.159.18:3000/Muchinfo/MTP2.0_WEB

marymelisa 4 年 前
コミット
f59b44c12b
100 ファイル変更1689 行追加1620 行削除
  1. 140 143
      src/App.vue
  2. BIN
      src/assets/images/login1.png
  3. BIN
      src/assets/images/login2.png
  4. 0 0
      src/common/components/capitalInfo/index.vue
  5. 0 0
      src/common/components/contextMenu/contextMenu.vue
  6. 0 0
      src/common/components/contextMenu/index.vue
  7. 0 0
      src/common/components/contextMenu/interface.ts
  8. 0 0
      src/common/components/countDown/index.vue
  9. 147 0
      src/common/components/drawer/index.vue
  10. 0 0
      src/common/components/firstMenu/index.vue
  11. 0 0
      src/common/components/fiveGear/index.vue
  12. 0 0
      src/common/components/font-adaption.vue
  13. 136 0
      src/common/components/orderTable/index.vue
  14. 73 0
      src/common/components/quoteTable/index.vue
  15. 0 0
      src/common/components/secondeMenu/index.vue
  16. 95 0
      src/common/components/thirdMenu/index.vue
  17. 0 0
      src/common/constants/enumsName.ts
  18. 0 0
      src/common/constants/index.ts
  19. 0 0
      src/common/constants/routerName.ts
  20. 1 1
      src/common/methods/format/index.ts
  21. 0 0
      src/common/methods/goDetail/index.ts
  22. 0 0
      src/common/methods/index.ts
  23. 0 0
      src/common/methods/mixin/index.ts
  24. 0 0
      src/common/methods/statusfilter/index.ts
  25. 0 0
      src/common/setup/index.ts
  26. 5 0
      src/common/setup/modal/index.ts
  27. 0 0
      src/common/setup/modal/interface.ts
  28. 0 0
      src/common/setup/modal/modal.ts
  29. 9 9
      src/common/setup/router/index.ts
  30. 0 151
      src/components/drawer/index.vue
  31. 0 143
      src/components/orderTable/index.vue
  32. 0 80
      src/components/quoteTable/index.vue
  33. 0 97
      src/components/thirdMenu/index.vue
  34. 0 47
      src/goServiceAPI/ermcp/customInfo/index.ts
  35. 0 106
      src/goServiceAPI/ermcp/exposure/index.ts
  36. 0 21
      src/goServiceAPI/ermcp/goodsInfo/index.ts
  37. 0 33
      src/goServiceAPI/ermcp/inventory-report/index.ts
  38. 0 1
      src/goServiceAPI/ermcp/plan/index.ts
  39. 0 64
      src/goServiceAPI/ermcp/spot-report/index.ts
  40. 0 16
      src/goServiceAPI/ermcp/warehouse-info/index.ts
  41. 0 29
      src/goServiceAPI/ermcp/warehouse-info/interface.ts
  42. 102 106
      src/layout/bottom.vue
  43. 405 424
      src/layout/top.vue
  44. 0 0
      src/protoService/accountinfo/interface.ts
  45. 50 41
      src/router/index.ts
  46. 0 0
      src/router/operation/index.ts
  47. 1 1
      src/services/bus/error.ts
  48. 8 8
      src/services/bus/index.ts
  49. 3 3
      src/services/bus/login.ts
  50. 4 4
      src/services/bus/table.ts
  51. 1 1
      src/services/bus/token.ts
  52. 15 15
      src/services/dataCenter/initDataModel/account.ts
  53. 2 3
      src/services/dataCenter/interface.ts
  54. 0 0
      src/services/funcode/index.ts
  55. 3 4
      src/services/go/commonService/index.ts
  56. 0 0
      src/services/go/commonService/interface.ts
  57. 2 1
      src/services/go/ermcp/business-review/index.ts
  58. 0 0
      src/services/go/ermcp/business-review/interface.ts
  59. 52 0
      src/services/go/ermcp/customInfo/index.ts
  60. 0 0
      src/services/go/ermcp/customInfo/interface.ts
  61. 0 0
      src/services/go/ermcp/customInfo/type.ts
  62. 5 6
      src/services/go/ermcp/exposure-report/index.ts
  63. 0 0
      src/services/go/ermcp/exposure-report/interface.ts
  64. 86 0
      src/services/go/ermcp/exposure/index.ts
  65. 0 0
      src/services/go/ermcp/exposure/interface.ts
  66. 15 19
      src/services/go/ermcp/finance-report/index.ts
  67. 0 0
      src/services/go/ermcp/finance-report/interface.ts
  68. 0 0
      src/services/go/ermcp/finance-review/index.ts
  69. 0 0
      src/services/go/ermcp/finance-review/interface.ts
  70. 40 0
      src/services/go/ermcp/goodsInfo/index.ts
  71. 35 0
      src/services/go/ermcp/goodsInfo/interface.ts
  72. 31 0
      src/services/go/ermcp/inventory-report/index.ts
  73. 0 0
      src/services/go/ermcp/inventory-report/interface.ts
  74. 6 7
      src/services/go/ermcp/inventory-review/index.ts
  75. 0 0
      src/services/go/ermcp/inventory-review/interface.ts
  76. 0 0
      src/services/go/ermcp/outaccount-status/index.ts
  77. 0 0
      src/services/go/ermcp/outaccount-status/interface.ts
  78. 16 0
      src/services/go/ermcp/plan/index.ts
  79. 24 0
      src/services/go/ermcp/plan/interface.ts
  80. 7 8
      src/services/go/ermcp/purchase/index.ts
  81. 0 0
      src/services/go/ermcp/purchase/interface.ts
  82. 0 0
      src/services/go/ermcp/search-inventory/index.ts
  83. 0 0
      src/services/go/ermcp/search-inventory/interface.ts
  84. 7 8
      src/services/go/ermcp/sell/index.ts
  85. 0 0
      src/services/go/ermcp/sell/interface.ts
  86. 6 7
      src/services/go/ermcp/spot-contract/index.ts
  87. 0 0
      src/services/go/ermcp/spot-contract/interface.ts
  88. 59 0
      src/services/go/ermcp/spot-report/index.ts
  89. 0 0
      src/services/go/ermcp/spot-report/interface.ts
  90. 26 0
      src/services/go/ermcp/warehouse-info/index.ts
  91. 60 0
      src/services/go/ermcp/warehouse-info/interface.ts
  92. 9 10
      src/services/go/index.ts
  93. 0 0
      src/services/go/quote/enum.ts
  94. 0 0
      src/services/go/quote/index.ts
  95. 0 0
      src/services/go/quote/interface.ts
  96. 0 0
      src/services/go/useInfo/index.ts
  97. 0 0
      src/services/go/useInfo/interface.ts
  98. 1 1
      src/services/http/account/index.ts
  99. 1 1
      src/services/http/advert/index.ts
  100. 1 1
      src/services/http/getconf.ts

+ 140 - 143
src/App.vue

@@ -1,166 +1,163 @@
 <template>
-  <div class="app-container"
-       @contextmenu.prevent>
-    <a-spin :tip="tip"
-            :spinning="spinning"
-            size="large">
-      <router-view />
-    </a-spin>
-  </div>
+    <div class="app-container" @contextmenu.prevent>
+        <a-spin :tip="tip" :spinning="spinning" size="large">
+            <router-view />
+        </a-spin>
+    </div>
 </template>
 
 <script lang="ts">
-import { defineComponent, ref, watchEffect, provide } from 'vue';
-import { globalDataRefresh } from '@/services/bus/index';
-import { notice } from '@/services/bus/system';
-import eventBus from '@/utils/eventBus/index';
-import TimerUtils from '@/utils/tool/timerUtil';
-import Router from '@/router';
-import APP from '@/services';
-import { Modal } from 'ant-design-vue';
-import { setLoadComplete } from '@/setup/methods/index';
-import { isLogin, logout } from '@/services/bus/login';
-let lastTime = new Date().getTime();
+    import { defineComponent, ref, watchEffect, provide } from 'vue';
+    import { globalDataRefresh } from '@/services/bus/index';
+    import { notice } from '@/services/bus/system';
+    import eventBus from '@/utils/eventBus/index';
+    import TimerUtils from '@/utils/timer/timerUtil';
+    import Router from '@/router';
+    import APP from '@/services';
+    import { Modal } from 'ant-design-vue';
+    import { setLoadComplete } from '@/common/methods';
+    import { isLogin, logout } from '@/services/bus/login';
+    let lastTime = new Date().getTime();
 
-function logoutAction() {
-    logout();
-    APP.closeServer();
-    Router.replace('/login');
-}
+    function logoutAction() {
+        logout();
+        APP.closeServer();
+        Router.replace('/login');
+    }
 
-// 设置太久没有操作界面,自动退出界面功能
-function setOvertime() {
-    window.addEventListener('mousemove', () => {
-        lastTime = new Date().getTime(); //更新当前时间
-    });
-    const mimut = 30;
-    const timeOut = mimut * 60 * 1000; //设置超时时间: 5分钟
-    TimerUtils.setInterval(
-        () => {
-            const currentTime = new Date().getTime();
-            if (currentTime - lastTime > timeOut) {
-                //判断是否超时
-                if (isLogin()) {
-                    Modal.info({
-                        title: '系统提示:',
-                        content: `您已超过${mimut}分钟没有进行任何操作,已自动退出登录!`,
-                        okType: 'primary',
-                        okText: '确定',
-                        keyboard: false,
-                    });
-                    logoutAction();
+    // 设置太久没有操作界面,自动退出界面功能
+    function setOvertime() {
+        window.addEventListener('mousemove', () => {
+            lastTime = new Date().getTime(); //更新当前时间
+        });
+        const mimut = 30;
+        const timeOut = mimut * 60 * 1000; //设置超时时间: 5分钟
+        TimerUtils.setInterval(
+            () => {
+                const currentTime = new Date().getTime();
+                if (currentTime - lastTime > timeOut) {
+                    //判断是否超时
+                    if (isLogin()) {
+                        Modal.info({
+                            title: '系统提示:',
+                            content: `您已超过${mimut}分钟没有进行任何操作,已自动退出登录!`,
+                            okType: 'primary',
+                            okText: '确定',
+                            keyboard: false,
+                        });
+                        logoutAction();
+                    }
                 }
-            }
-        },
-        timeOut,
-        'overtimeInterval'
-    );
-}
-
-export default defineComponent({
-    name: 'app',
-    components: {},
-    setup() {
-        let spinning = ref<boolean>(false);
-        const tip = ref<string>('');
+            },
+            timeOut,
+            'overtimeInterval'
+        );
+    }
 
-        // 登出状态展示
-        eventBus.$onOnly('logout', () => {
-            // debugger;
-            tip.value = '跳转中...';
-            spinning.value = true;
-            TimerUtils.setTimeout(
-                () => {
-                    spinning.value = false;
-                    logoutAction();
-                },
-                1000,
-                'logoutTimer'
-            );
-        });
-        // 登录成功
-        // eventBus.$onOnly('loginSuccess', setOvertime);
-        // 监听路由的变化
-        watchEffect(() => Router.currentRoute && provide('current-route', Router.currentRoute));
+    export default defineComponent({
+        name: 'app',
+        components: {},
+        setup() {
+            let spinning = ref<boolean>(false);
+            const tip = ref<string>('');
 
-        // 监听刷新事件
-        window.addEventListener(
-            'load',
-            () => {
-                tip.value = '数据初始化...';
-                lastTime = new Date().getTime(); //更新当前时间
+            // 登出状态展示
+            eventBus.$onOnly('logout', () => {
+                // debugger;
+                tip.value = '跳转中...';
                 spinning.value = true;
-                // 注册全局loadComplete事件 保证loadComplete变量及时更新
-                setLoadComplete(false);
-                globalDataRefresh()
-                    .then((res) => {
-                        setLoadComplete(true);
-                        eventBus.$emit('loadComplete');
+                TimerUtils.setTimeout(
+                    () => {
                         spinning.value = false;
-                    })
-                    .catch((err) => {
-                        console.error(err);
-                        spinning.value = false;
-                    });
-            },
-            true
-        );
+                        logoutAction();
+                    },
+                    1000,
+                    'logoutTimer'
+                );
+            });
+            // 登录成功
+            // eventBus.$onOnly('loginSuccess', setOvertime);
+            // 监听路由的变化
+            watchEffect(() => Router.currentRoute && provide('current-route', Router.currentRoute));
 
-        // setOvertime();
-        // 订阅交易通知
-        notice((msg: string) => {
-            Modal.info({
-                title: '系统提示:',
-                content: `${msg},请重新登录。`,
-                okType: 'primary',
-                okText: '确定',
-                keyboard: false,
-                onOk() {
-                    Router.replace('/login');
+            // 监听刷新事件
+            window.addEventListener(
+                'load',
+                () => {
+                    tip.value = '数据初始化...';
+                    lastTime = new Date().getTime(); //更新当前时间
+                    spinning.value = true;
+                    // 注册全局loadComplete事件 保证loadComplete变量及时更新
+                    setLoadComplete(false);
+                    globalDataRefresh()
+                        .then((res) => {
+                            setLoadComplete(true);
+                            eventBus.$emit('loadComplete');
+                            spinning.value = false;
+                        })
+                        .catch((err) => {
+                            console.error(err);
+                            spinning.value = false;
+                        });
                 },
+                true
+            );
+
+            // setOvertime();
+            // 订阅交易通知
+            notice((msg: string) => {
+                Modal.info({
+                    title: '系统提示:',
+                    content: `${msg},请重新登录。`,
+                    okType: 'primary',
+                    okText: '确定',
+                    keyboard: false,
+                    onOk() {
+                        Router.replace('/login');
+                    },
+                });
             });
-        });
 
-        return {
-            tip,
-            spinning,
-        };
-    },
-});
+            return {
+                tip,
+                spinning,
+            };
+        },
+    });
 </script>
 
 <style lang="less">
-.app-container {
-    width: 100%;
-    height: auto;
-    min-height: 100%;
-}
-#app {
-    width: 100%;
-    height: auto;
-    min-height: 100%;
-    font-family: Avenir, Helvetica, Arial, sans-serif;
-    -webkit-font-smoothing: antialiased;
-    -moz-osx-font-smoothing: grayscale;
-    text-align: center;
-    color: #2c3e50;
-    background-color: #fffefe;
-    display: flex;
-    justify-content: center;
-    overflow-y: hidden;
-    img {
-        cursor: pointer;
+    .app-container {
+        width: 100%;
+        height: auto;
+        min-height: 100%;
     }
-}
-
-#nav {
-    padding: 30px;
-    a {
-        font-weight: bold;
+    #app {
+        width: 100%;
+        height: auto;
+        min-height: 100%;
+        font-family: Avenir, Helvetica, Arial, sans-serif;
+        -webkit-font-smoothing: antialiased;
+        -moz-osx-font-smoothing: grayscale;
+        text-align: center;
         color: #2c3e50;
-        &.router-link-exact-active {
-            color: #42b983;
+        background-color: #fffefe;
+        display: flex;
+        justify-content: center;
+        overflow-y: hidden;
+        img {
+            cursor: pointer;
+        }
+    }
+
+    #nav {
+        padding: 30px;
+        a {
+            font-weight: bold;
+            color: #2c3e50;
+            &.router-link-exact-active {
+                color: #42b983;
+            }
         }
     }
-}
 </style>

BIN
src/assets/images/login1.png


BIN
src/assets/images/login2.png


+ 0 - 0
src/components/capitalInfo/index.vue → src/common/components/capitalInfo/index.vue


+ 0 - 0
src/components/contextMenu/contextMenu.vue → src/common/components/contextMenu/contextMenu.vue


+ 0 - 0
src/components/contextMenu/index.vue → src/common/components/contextMenu/index.vue


+ 0 - 0
src/components/contextMenu/interface.ts → src/common/components/contextMenu/interface.ts


+ 0 - 0
src/components/countDown/index.vue → src/common/components/countDown/index.vue


+ 147 - 0
src/common/components/drawer/index.vue

@@ -0,0 +1,147 @@
+<template>
+    <div class="drawer">
+        <a-drawer :placement="placement" :closable="false" :visible="visible" class="tradeDialog">
+            <!-- 摘牌是top  挂牌是bottom 期货交易是tradeDialog -->
+            <div class="collapse" @click="cancel"></div>
+            <div class="collapseCont">
+                <!-- <div class="title">{{ title }}</div> -->
+                <div class="content highContent">
+                    <!-- <Listed></Listed> -->
+                    <!-- <Delisting></Delisting> -->
+                    <Trade></Trade>
+                </div>
+            </div>
+        </a-drawer>
+    </div>
+</template>
+
+<script lang="ts">
+    import { defineComponent, ref, PropType } from 'vue';
+    import { closeModal, ModalName } from '@/common/setup/modal/index';
+    import Listed from '@/views/market/warehouseTrade/components/listed/index.vue';
+    import Delisting from '@/views/market/warehouseTrade/components/delisting/index.vue';
+    import Trade from '@/views/market/warehouseTrade/components/trade/index.vue';
+
+    interface Key {
+        [propName: string]: string;
+    }
+
+    export default defineComponent({
+        name: 'drawer',
+        props: {
+            modalName: {
+                default: 'drawer',
+                type: String as PropType<keyof ModalName>,
+            },
+            title: {
+                default: '',
+                type: String,
+            },
+            placement: {
+                // 需要绑定的值得 key
+                default: 'right',
+                type: String,
+            },
+        },
+        components: {
+            Listed,
+            Delisting,
+            Trade,
+        },
+        setup(props, context) {
+            const { visible, cancel } = closeModal(props.modalName);
+            return {
+                visible,
+                cancel,
+            };
+        },
+    });
+</script>
+
+<style lang="less">
+    .bottom {
+        .position(fixed, auto, 0, -2px, auto);
+        width: 586px;
+        height: 330px;
+        background: transparent;
+        z-index: 10;
+        .ant-drawer-content-wrapper {
+            width: 586px !important;
+        }
+    }
+    .top {
+        .position(fixed, 116px, 0, auto, auto);
+        width: 446px;
+        height: 350px;
+        background: transparent;
+        z-index: 10;
+        .ant-drawer-content-wrapper {
+            width: 446px !important;
+        }
+    }
+    .tradeDialog {
+        .position(fixed, 116px, 0, auto, auto);
+        width: 467px;
+        height: 310px;
+        background: transparent;
+        z-index: 10;
+        .ant-drawer-content-wrapper {
+            width: 467px !important;
+        }
+    }
+    .ant-drawer.ant-drawer-open {
+        .ant-drawer-mask {
+            background: transparent;
+        }
+        .ant-drawer-content-wrapper {
+            box-shadow: none;
+            .ant-drawer-content {
+                background: transparent;
+                .ant-drawer-wrapper-body {
+                    overflow: hidden;
+                    .ant-drawer-body {
+                        width: 100%;
+                        height: 100%;
+                        padding: 0;
+                        .inlineflex;
+                        .collapse {
+                            width: 26px;
+                            height: 66px;
+                            margin-top: 15px;
+                            background: url(../../../assets/images/dialogClose.png) center center no-repeat;
+                            background-size: cover;
+                        }
+                        .collapseCont {
+                            flex: 1;
+                            height: 100%;
+                            border: 2px solid @m-blue0;
+                            border-right: 0;
+                            .flex;
+                            flex-direction: column;
+                            .title {
+                                width: 100%;
+                                height: 36px;
+                                line-height: 36px;
+                                text-align: center;
+                                background: linear-gradient(0deg, @m-blue4, @m-blue5);
+                                font-size: 16px;
+                                color: @m-white1;
+                                border-bottom: 2px solid @m-blue0;
+                            }
+                            .content {
+                                flex: 1;
+                                width: 100%;
+                                max-height: calc(100% - 36px);
+                                overflow-y: auto;
+                                background: @m-grey11;
+                            }
+                            .highContent {
+                                max-height: 100%;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }</style
+>;

+ 0 - 0
src/components/firstMenu/index.vue → src/common/components/firstMenu/index.vue


+ 0 - 0
src/components/fiveGear/index.vue → src/common/components/fiveGear/index.vue


+ 0 - 0
src/components/font-adaption.vue → src/common/components/font-adaption.vue


+ 136 - 0
src/common/components/orderTable/index.vue

@@ -0,0 +1,136 @@
+<template>
+    <div @contextmenu.prevent="onContextMenu">
+        <a-table :columns="columns" :data-source="dataSource" class="order-table" bordered :scroll="{ x: true, y: 400 }" :pagination="false">
+            <template>
+                <a>Delete</a>
+            </template>
+            <template #expandedRowRender="{ record }">
+                <p style="margin: 0">
+                    {{ record.description }}
+                </p>
+            </template>
+        </a-table>
+        <contextMenu :contextMenu="context" @update="updateContextMenu" />
+    </div>
+</template>
+<script lang="ts">
+    import { defineComponent, reactive, PropType } from 'vue';
+    import contextMenu from '@/common/components/contextMenu/index.vue';
+    import { ContextMenu, MenuItem } from '@/common/components/contextMenu/interface';
+
+    // 右键事件
+    function handleContextMenu(props: any) {
+        const context = reactive<ContextMenu>({
+            position: { clientX: 0, clientY: 0 },
+            show: false,
+            menuList: [],
+            selectedData: null,
+        });
+        function onContextMenu(value: MouseEvent) {
+            const target = value.target as any;
+            // 获取点击表格的 tr  所在的 索引位置
+            const index = target.parentElement.rowIndex;
+            const { clientX, clientY } = value;
+            Object.assign(context.position, { clientX, clientY });
+            context.show = true;
+            context.selectedData = props.dataSource[index];
+        }
+        // 关闭右键弹窗
+        function updateContextMenu(value: boolean) {
+            context.show = value;
+        }
+        return { context, onContextMenu, updateContextMenu };
+    }
+
+    export default defineComponent({
+        components: {
+            contextMenu,
+        },
+        props: {
+            columns: {
+                default: [],
+                type: Array,
+            },
+            dataSource: {
+                default: [],
+                type: Array,
+            },
+            contextMenuList: {
+                default: [],
+                type: Object as PropType<MenuItem[]>,
+            },
+        },
+        setup(props) {
+            const { context, onContextMenu, updateContextMenu } = handleContextMenu(props);
+            context.menuList = props.contextMenuList;
+            return {
+                onContextMenu,
+                context,
+                updateContextMenu,
+            };
+        },
+    });
+</script>
+<style lang="less">
+    .order-table {
+        .ant-table-fixed {
+            width: max-content !important;
+            color: #e5e5e5;
+            background: #0e0e0f;
+            border-top-color: #0e0e0f !important;
+            border-left-color: #161a1c !important;
+        }
+        .ant-table-thead {
+            tr th {
+                background: #212629;
+                color: #556772;
+                font-size: 14px;
+                font-family: Adobe Heiti Std;
+            }
+        }
+        .ant-table-tbody > tr {
+            height: 40px;
+        }
+        .ant-table-tbody .ant-table-row-hover td {
+            background: #172b56 !important;
+        }
+        .ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {
+            background: #172b56;
+        }
+        .ant-table-bordered .ant-table-thead > tr > th,
+        .ant-table-bordered .ant-table-tbody > tr > td {
+            padding: 0;
+            height: 34px;
+            line-height: 34px;
+            border-color: #161a1c;
+            font-family: Adobe Heiti Std;
+            font-size: 16px;
+        }
+        ant-table-bordered .ant-table-thead > tr > th,
+        .ant-table-bordered .ant-table-tbody > tr > td {
+            padding: 0;
+            height: 34px;
+            line-height: 34px;
+            border-color: #161a1c;
+            font-family: Adobe Heiti Std;
+            font-size: 16px;
+        }
+        .ant-table-row-expand-icon {
+            width: 14px;
+            height: 14px;
+            line-height: 9px;
+            border: 1px solid @m-blue2;
+            border-radius: 3px;
+            background: inherit;
+        }
+        .ant-table-row-collapsed::after,
+        .ant-table-row-expanded::after {
+            color: @m-blue2;
+        }
+
+        .ant-table-expanded-row,
+        .ant-table-expanded-row:hover {
+            background: #121618;
+        }
+    }</style
+>;

+ 73 - 0
src/common/components/quoteTable/index.vue

@@ -0,0 +1,73 @@
+<template>
+    <contextMenu :contextMenuList="context" :tableList="dataSource">
+        <a-table class="quote-table" :columns="columns" :data-source="dataSource" bordered :pagination="false" :scroll="{ x: true, y: 262 }">
+            <template #action>
+                <a>action</a>
+            </template>
+        </a-table>
+    </contextMenu>
+</template>
+<script lang="ts">
+    import { defineComponent, ref } from 'vue';
+    import contextMenu from '@/common/components/contextMenu/index.vue';
+    import { MenuItem } from '@/common/components/contextMenu/interface';
+
+    export default defineComponent({
+        components: {
+            contextMenu,
+        },
+        props: {
+            columns: {
+                default: [],
+                type: Array,
+            },
+            dataSource: {
+                default: [],
+                type: Array,
+            },
+        },
+        setup(props) {
+            const contextMenuList = ref<MenuItem[]>([
+                {
+                    lable: '修改',
+                    callback: () => {
+                        console.log('lll');
+                    },
+                },
+            ]);
+            return {
+                contextMenuList,
+            };
+        },
+    });
+</script>
+<style lang="less">
+    .quoteTable {
+        width: 100%;
+        max-height: calc(100% - 68px);
+        flex: 1;
+    }
+    .quote-table {
+        height: 100%;
+        .ant-spin-nested-loading {
+            .ant-spin-container {
+            }
+        }
+        .ant-table td {
+            white-space: nowrap;
+        }
+        .ant-table-thead {
+            .ant-table-fixed-columns-in-body {
+                width: 100px;
+            }
+        }
+        .ant-table-fixed,
+        .ant-table-body {
+            .ant-table-row-hover {
+                td.ant-table-row-cell-break-word {
+                    background-color: @m-blue3 !important;
+                }
+            }
+        }
+    }</style
+>;

+ 0 - 0
src/components/secondeMenu/index.vue → src/common/components/secondeMenu/index.vue


+ 95 - 0
src/common/components/thirdMenu/index.vue

@@ -0,0 +1,95 @@
+<template>
+    <div class="thirdMenu">
+        <a-tabs default-active-key="1" @change="callback">
+            <a-tab-pane key="1" tab="一口价挂牌"> </a-tab-pane>
+            <a-tab-pane key="2" tab="浮动价挂牌"> </a-tab-pane>
+        </a-tabs>
+    </div>
+</template>
+
+<script lang="ts">
+    import { defineComponent, ref, PropType } from 'vue';
+
+    interface Key {
+        [propName: string]: string;
+    }
+
+    export default defineComponent({
+        name: 'third-menu',
+        props: {
+            list: {
+                default: [],
+                type: Object as PropType<Key[]>,
+            },
+            value: {
+                // 需要绑定的值得 key
+                default: '',
+                type: String,
+            },
+        },
+        components: {},
+        setup(props, context) {
+            function callback(key: any) {
+                console.log(key);
+            }
+            return {
+                callback,
+            };
+        },
+    });
+</script>
+
+<style lang="less">
+    .noBorderBottom {
+        border-bottom: none;
+    }
+    .thirdMenu {
+        width: 100%;
+        height: 28px;
+        padding-bottom: 2px;
+        background-color: @m-black5;
+        z-index: 2;
+        .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 {
+                            .ant-tabs-nav {
+                                .ant-tabs-tab {
+                                    width: 121px;
+                                    height: 26px;
+                                    line-height: 26px;
+                                    text-align: center;
+                                    color: @m-grey1;
+                                    padding: 0;
+                                    margin: 0;
+                                    background: url(../../../assets/images/tabbg.png) center center no-repeat;
+                                    background-size: cover;
+                                }
+                                .ant-tabs-tab-active.ant-tabs-tab {
+                                    color: @m-white0;
+                                    background: url(../../../assets/images/tabbgActive.png) center center no-repeat;
+                                    background-size: cover;
+                                    z-index: 2;
+                                }
+                                .ant-tabs-tab + .ant-tabs-tab {
+                                    margin-left: -14px;
+                                }
+                                .ant-tabs-ink-bar {
+                                    width: 0px !important;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }</style
+>;

+ 0 - 0
src/enums/enumsName.ts → src/common/constants/enumsName.ts


+ 0 - 0
src/enums/index.ts → src/common/constants/index.ts


+ 0 - 0
src/enums/routerName.ts → src/common/constants/routerName.ts


+ 1 - 1
src/setup/methods/format/index.ts → src/common/methods/format/index.ts

@@ -1,4 +1,4 @@
-import { serviceURL } from '@/utils/request/index';
+import { serviceURL } from '@/services/request/index';
 import moment from 'moment';
 
 function getMtpUlr(): string {

+ 0 - 0
src/setup/methods/goDetail/index.ts → src/common/methods/goDetail/index.ts


+ 0 - 0
src/setup/methods/index.ts → src/common/methods/index.ts


+ 0 - 0
src/setup/methods/mixin/index.ts → src/common/methods/mixin/index.ts


+ 0 - 0
src/setup/methods/statusfilter/index.ts → src/common/methods/statusfilter/index.ts


+ 0 - 0
src/setup/index.ts → src/common/setup/index.ts


+ 5 - 0
src/common/setup/modal/index.ts

@@ -0,0 +1,5 @@
+
+import { closeModal, ModalName, openModal } from './modal';
+
+export { closeModal, openModal };
+export type { ModalName };

+ 0 - 0
src/setup/modal/interface.ts → src/common/setup/modal/interface.ts


+ 0 - 0
src/setup/modal/modal.ts → src/common/setup/modal/modal.ts


+ 9 - 9
src/setup/router/index.ts → src/common/setup/router/index.ts

@@ -1,4 +1,4 @@
-import { OperationTabMenu } from '@/goServiceAPI/commonService/interface';
+import { OperationTabMenu } from '@/services/go/commonService/interface';
 import APP from '@/services';
 import { provide, ref, unref } from 'vue';
 import { Router, useRouter } from 'vue-router';
@@ -7,30 +7,30 @@ import { Router, useRouter } from 'vue-router';
 function mateRouter(router: Router) {
     const menuList = APP.getRef('menus');
     const list = unref(menuList);
-    const pathArr = router.currentRoute.value.fullPath.split('/')
-    let result: OperationTabMenu[] = []
+    const pathArr = router.currentRoute.value.fullPath.split('/');
+    let result: OperationTabMenu[] = [];
     if (pathArr.length > 1) {
         if (list.length && list[0].children && list[0].children.length) {
             const path = pathArr[1];
             for (let i = 0; i < list.length; i++) {
                 for (let j = 0; j < list[i].children.length; j++) {
                     if (path === list[i].children[j].code) {
-                        result = list[i].children[j].children
+                        result = list[i].children[j].children;
                         break;
                     }
                 }
             }
         }
     }
-    return result
+    return result;
 }
 
 export function handleRouterMenu() {
     const router = useRouter();
-    const list = ref<OperationTabMenu[]>([])
+    const list = ref<OperationTabMenu[]>([]);
     // 获取动态路由
     function getMenuList() {
-        list.value = mateRouter(router)
+        list.value = mateRouter(router);
     }
     // 切换路由
     function selectMenu(item: any) {
@@ -38,6 +38,6 @@ export function handleRouterMenu() {
 
         router.push({ name: item.code });
     }
-    provide('thirdMenuList', list)
+    provide('thirdMenuList', list);
     return { list, selectMenu, getMenuList };
-}
+}

+ 0 - 151
src/components/drawer/index.vue

@@ -1,151 +0,0 @@
-<template>
-  <div class="drawer">
-    <a-drawer :placement="placement"
-              :closable="false"
-              :visible="visible"
-              class="tradeDialog">
-      <!-- 摘牌是top  挂牌是bottom 期货交易是tradeDialog -->
-      <div class="collapse"
-           @click="cancel"></div>
-      <div class="collapseCont">
-        <!-- <div class="title">{{ title }}</div> -->
-        <div class="content highContent">
-          <!-- <Listed></Listed> -->
-          <!-- <Delisting></Delisting> -->
-          <Trade></Trade>
-        </div>
-      </div>
-    </a-drawer>
-  </div>
-</template>
-
-<script lang="ts">
-import { defineComponent, ref, PropType } from 'vue';
-import { closeModal, ModalName } from '@/setup/modal/index';
-import Listed from '@/views/market/warehouseTrade/components/listed/index.vue';
-import Delisting from '@/views/market/warehouseTrade/components/delisting/index.vue';
-import Trade from '@/views/market/warehouseTrade/components/trade/index.vue';
-
-interface Key {
-    [propName: string]: string;
-}
-
-export default defineComponent({
-    name: 'drawer',
-    props: {
-        modalName: {
-            default: 'drawer',
-            type: String as PropType<keyof ModalName>,
-        },
-        title: {
-            default: '',
-            type: String,
-        },
-        placement: {
-            // 需要绑定的值得 key
-            default: 'right',
-            type: String,
-        },
-    },
-    components: {
-        Listed,
-        Delisting,
-        Trade,
-    },
-    setup(props, context) {
-        const { visible, cancel } = closeModal(props.modalName);
-        return {
-            visible,
-            cancel,
-        };
-    },
-});
-</script>
-
-<style lang="less">
-.bottom {
-    .position(fixed, auto, 0, -2px, auto);
-    width: 586px;
-    height: 330px;
-    background: transparent;
-    z-index: 10;
-    .ant-drawer-content-wrapper {
-        width: 586px !important;
-    }
-}
-.top {
-    .position(fixed, 116px, 0, auto, auto);
-    width: 446px;
-    height: 350px;
-    background: transparent;
-    z-index: 10;
-    .ant-drawer-content-wrapper {
-        width: 446px !important;
-    }
-}
-.tradeDialog {
-    .position(fixed, 116px, 0, auto, auto);
-    width: 467px;
-    height: 310px;
-    background: transparent;
-    z-index: 10;
-    .ant-drawer-content-wrapper {
-        width: 467px !important;
-    }
-}
-.ant-drawer.ant-drawer-open {
-    .ant-drawer-mask {
-        background: transparent;
-    }
-    .ant-drawer-content-wrapper {
-        box-shadow: none;
-        .ant-drawer-content {
-            background: transparent;
-            .ant-drawer-wrapper-body {
-                overflow: hidden;
-                .ant-drawer-body {
-                    width: 100%;
-                    height: 100%;
-                    padding: 0;
-                    .inlineflex;
-                    .collapse {
-                        width: 26px;
-                        height: 66px;
-                        margin-top: 15px;
-                        background: url(../../assets/images/dialogClose.png) center center no-repeat;
-                        background-size: cover;
-                    }
-                    .collapseCont {
-                        flex: 1;
-                        height: 100%;
-                        border: 2px solid @m-blue0;
-                        border-right: 0;
-                        .flex;
-                        flex-direction: column;
-                        .title {
-                            width: 100%;
-                            height: 36px;
-                            line-height: 36px;
-                            text-align: center;
-                            background: linear-gradient(0deg, @m-blue4, @m-blue5);
-                            font-size: 16px;
-                            color: @m-white1;
-                            border-bottom: 2px solid @m-blue0;
-                        }
-                        .content {
-                            flex: 1;
-                            width: 100%;
-                            max-height: calc(100% - 36px);
-                            overflow-y: auto;
-                            background: @m-grey11;
-                        }
-                        .highContent {
-                            max-height: 100%;
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
-</style>;

+ 0 - 143
src/components/orderTable/index.vue

@@ -1,143 +0,0 @@
-<template>
-  <div @contextmenu.prevent="onContextMenu">
-    <a-table :columns="columns"
-             :data-source="dataSource"
-             class="order-table"
-             bordered
-             :scroll="{ x: true, y: 400 }"
-             :pagination="false">
-      <template>
-        <a>Delete</a>
-      </template>
-      <template #expandedRowRender="{ record }">
-        <p style="margin: 0">
-          {{ record.description }}
-        </p>
-      </template>
-    </a-table>
-    <contextMenu :contextMenu="context"
-                 @update="updateContextMenu" />
-  </div>
-</template>
-<script lang="ts">
-import { defineComponent, reactive, PropType } from 'vue';
-import contextMenu from '@/components/contextMenu/index.vue';
-import { ContextMenu, MenuItem } from '@/components/contextMenu/interface';
-
-// 右键事件
-function handleContextMenu(props: any) {
-    const context = reactive<ContextMenu>({
-        position: { clientX: 0, clientY: 0 },
-        show: false,
-        menuList: [],
-        selectedData: null,
-    });
-    function onContextMenu(value: MouseEvent) {
-        const target = value.target as any;
-        // 获取点击表格的 tr  所在的 索引位置
-        const index = target.parentElement.rowIndex;
-        const { clientX, clientY } = value;
-        Object.assign(context.position, { clientX, clientY });
-        context.show = true;
-        context.selectedData = props.dataSource[index];
-    }
-    // 关闭右键弹窗
-    function updateContextMenu(value: boolean) {
-        context.show = value;
-    }
-    return { context, onContextMenu, updateContextMenu };
-}
-
-export default defineComponent({
-    components: {
-        contextMenu,
-    },
-    props: {
-        columns: {
-            default: [],
-            type: Array,
-        },
-        dataSource: {
-            default: [],
-            type: Array,
-        },
-        contextMenuList: {
-            default: [],
-            type: Object as PropType<MenuItem[]>,
-        },
-    },
-    setup(props) {
-        const { context, onContextMenu, updateContextMenu } = handleContextMenu(props);
-        context.menuList = props.contextMenuList;
-        return {
-            onContextMenu,
-            context,
-            updateContextMenu,
-        };
-    },
-});
-</script>
-<style lang="less">
-.order-table {
-    .ant-table-fixed {
-        width: max-content !important;
-        color: #e5e5e5;
-        background: #0e0e0f;
-        border-top-color: #0e0e0f !important;
-        border-left-color: #161a1c !important;
-    }
-    .ant-table-thead {
-        tr th {
-            background: #212629;
-            color: #556772;
-            font-size: 14px;
-            font-family: Adobe Heiti Std;
-        }
-    }
-    .ant-table-tbody > tr {
-        height: 40px;
-    }
-    .ant-table-tbody .ant-table-row-hover td {
-        background: #172b56 !important;
-    }
-    .ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {
-        background: #172b56;
-    }
-    .ant-table-bordered .ant-table-thead > tr > th,
-    .ant-table-bordered .ant-table-tbody > tr > td {
-        padding: 0;
-        height: 34px;
-        line-height: 34px;
-        border-color: #161a1c;
-        font-family: Adobe Heiti Std;
-        font-size: 16px;
-    }
-    ant-table-bordered .ant-table-thead > tr > th,
-    .ant-table-bordered .ant-table-tbody > tr > td {
-        padding: 0;
-        height: 34px;
-        line-height: 34px;
-        border-color: #161a1c;
-        font-family: Adobe Heiti Std;
-        font-size: 16px;
-    }
-    .ant-table-row-expand-icon {
-        width: 14px;
-        height: 14px;
-        line-height: 9px;
-        border: 1px solid @m-blue2;
-        border-radius: 3px;
-        background: inherit;
-    }
-    .ant-table-row-collapsed::after,
-    .ant-table-row-expanded::after {
-        color: @m-blue2;
-    }
-
-    .ant-table-expanded-row,
-    .ant-table-expanded-row:hover {
-        background: #121618;
-    }
-}
-</style
->;

+ 0 - 80
src/components/quoteTable/index.vue

@@ -1,80 +0,0 @@
-<template>
-
-  <contextMenu :contextMenuList="context"
-               :tableList="dataSource">
-    <a-table class="quote-table"
-             :columns="columns"
-             :data-source="dataSource"
-             bordered
-             :pagination="false"
-             :scroll="{ x: true, y: 262 }">
-      <template #action>
-        <a>action</a>
-      </template>
-    </a-table>
-  </contextMenu>
-</template>
-<script lang="ts">
-import { defineComponent, ref } from 'vue';
-import contextMenu from '@/components/contextMenu/index.vue';
-import { MenuItem } from '@/components/contextMenu/interface';
-
-export default defineComponent({
-    components: {
-        contextMenu,
-    },
-    props: {
-        columns: {
-            default: [],
-            type: Array,
-        },
-        dataSource: {
-            default: [],
-            type: Array,
-        },
-    },
-    setup(props) {
-        const contextMenuList = ref<MenuItem[]>([
-            {
-                lable: '修改',
-                callback: () => {
-                    console.log('lll');
-                },
-            },
-        ]);
-        return {
-            contextMenuList,
-        };
-    },
-});
-</script>
-<style lang="less">
-.quoteTable {
-    width: 100%;
-    max-height: calc(100% - 68px);
-    flex: 1;
-}
-.quote-table {
-    height: 100%;
-    .ant-spin-nested-loading {
-        .ant-spin-container {
-        }
-    }
-    .ant-table td {
-        white-space: nowrap;
-    }
-    .ant-table-thead {
-        .ant-table-fixed-columns-in-body {
-            width: 100px;
-        }
-    }
-    .ant-table-fixed,
-    .ant-table-body {
-        .ant-table-row-hover {
-            td.ant-table-row-cell-break-word {
-                background-color: @m-blue3 !important;
-            }
-        }
-    }
-}
-</style>;

+ 0 - 97
src/components/thirdMenu/index.vue

@@ -1,97 +0,0 @@
-<template>
-  <div class="thirdMenu">
-    <a-tabs default-active-key="1" @change="callback">
-      <a-tab-pane key="1" tab="一口价挂牌">
-      </a-tab-pane>
-      <a-tab-pane key="2" tab="浮动价挂牌">
-      </a-tab-pane>
-    </a-tabs>
-  </div>
-</template>
-
-<script lang="ts">
-import { defineComponent, ref, PropType } from 'vue';
-
-interface Key {
-    [propName: string]: string;
-}
-
-export default defineComponent({
-    name: 'third-menu',
-    props: {
-        list: {
-            default: [],
-            type: Object as PropType<Key[]>,
-        },
-        value: {
-            // 需要绑定的值得 key
-            default: '',
-            type: String,
-        },
-    },
-    components: {},
-    setup(props, context) {
-        function callback(key: any) {
-            console.log(key);
-        };
-        return {
-            callback,
-        };
-    },
-});
-</script>
-
-<style lang="less">
-.noBorderBottom {
-    border-bottom: none;
-}
-.thirdMenu {
-    width: 100%;
-    height: 28px;
-    padding-bottom: 2px;
-    background-color: @m-black5;
-    z-index: 2;
-    .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 {
-                        .ant-tabs-nav {
-                            .ant-tabs-tab {
-                                width: 121px;
-                                height: 26px;
-                                line-height: 26px;
-                                text-align: center;
-                                color: @m-grey1;
-                                padding: 0;
-                                margin: 0;
-                                background: url(../../assets/images/tabbg.png) center center no-repeat;
-                                background-size: cover;
-                            }
-                            .ant-tabs-tab-active.ant-tabs-tab {
-                                color: @m-white0;
-                                background: url(../../assets/images/tabbgActive.png) center center no-repeat;
-                                background-size: cover;
-                                z-index: 2;
-                            }
-                            .ant-tabs-tab+.ant-tabs-tab {
-                                margin-left: -14px;
-                            }
-                            .ant-tabs-ink-bar {
-                                width: 0px !important;
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
-</style>;

+ 0 - 47
src/goServiceAPI/ermcp/customInfo/index.ts

@@ -1,47 +0,0 @@
-/** ================================= 客户资料 ================================**/
-
-import {BaseResponse, commonSearch_go, commonUpdate_go} from '@/goServiceAPI/index';
-import APP from '@/services';
-import {QueryCustomInfoEnum} from './type';
-import {AddUserInfoApplyReq, ModifyUserInfoApplyReq, QueryCustomInfoType} from "./interface";
-
-/**
- * 查询客户资料
- * @param MemberUserID  所属机构用户ID
- * @param queryType 查询类型(1:未提交 2:待审核 3:正常 4:停用)
- * @returns
- */
-export function QueryCustomInfo(queryType: QueryCustomInfoEnum): Promise<QueryCustomInfoType[]> {
-    const MemberUserID = APP.get('userAccount').memberuserid;
-    return commonSearch_go('/Ermcp/QueryUserInfo', {MemberUserID, queryType})
-        .catch(err => {
-            throw new Error(`查询客户资料: ${err.message}`);
-        })
-}
-
-/**
- * 新增客户申请
- * @param userInfoApply
- * @constructor
- */
-export function QueryAddUserInfoApply(userInfoApply: AddUserInfoApplyReq): Promise<BaseResponse> {
-    return commonUpdate_go('/Erms3/AddUserInfoApply', userInfoApply)
-        .catch(err => {
-            throw new Error(`新增客户申请: ${err.message}`);
-        })
-}
-
-/**
- * 修改客户申请 /Erms3/ModifyUserInfoApply
- * @param userInfoApply
- * @constructor
- */
-export function QueryModifyUserInfoApply(userInfoApply: ModifyUserInfoApplyReq): Promise<BaseResponse> {
-    return commonUpdate_go('/Erms3/ModifyUserInfoApply', userInfoApply)
-        .catch(err => {
-            throw new Error(`修改客户申请: ${err.message}`);
-        })
-}
-
-
-

+ 0 - 106
src/goServiceAPI/ermcp/exposure/index.ts

@@ -1,106 +0,0 @@
-import APP from "@/services";
-import {commonSearch_go} from "@/goServiceAPI";
-import {
-    Ermcp3AreaSpot,
-    Ermcp3AreaSpotDetail,
-    Ermcp3AreaSpotDetailReq,
-    Ermcp3ExposureDetail,
-    Ermcp3ExposureReq,
-    ErmcpExposurePostion,
-    ErmcpExposurePostionReq,
-    ErmcpHedgePosition,
-    ErmcpHedgePositionDetail,
-    ErmcpHedgePositionDetailReq,
-    ErmcpRealExposureModel
-} from "@/goServiceAPI/ermcp/exposure/interface";
-
-/** ================================= 敞口 ================================**/
-
-/**
- * 请求实时敞口 (敞口 -> 实时敞口) /Ermcp/QueryRealtimeExposure
- * @constructor
- */
-export function QueryActualExposure() : Promise<ErmcpRealExposureModel[]>{
-    const AreaUserID = APP.get('userAccount').memberuserid; // 所属机构id
-    return commonSearch_go('/Ermcp/QueryRealtimeExposure', {AreaUserID})
-        .catch(err => {
-            throw new Error(`查询敞口 -> 实时敞口: ${err.message}`);
-        })
-}
-
-/**
- * 请求实时敞口现货明细信息 (敞口 ->实时敞口 -> 现货明细) /Ermcp3/QueryExposureDetail
- * @param req.middlegoodsid 套保商品
- * @constructor
- */
-export function QueryActualExposureDetail(req: Ermcp3ExposureReq) : Promise<Ermcp3ExposureDetail[]>{
-    const areauserid = APP.get('userAccount').memberuserid; // 所属机构id
-    return commonSearch_go('/Ermcp3/QueryExposureDetail', {areauserid, ...req})
-        .catch(err => {
-            throw new Error(`查询敞口 ->实时敞口 -> 现货明细: ${err.message}`);
-        })
-}
-
-/**
- * 查询实时敞口期货头寸明细 (敞口 ->实时敞口 -> 期货明细) /Ermcp/QueryRealtimeExposurePosition
- * @param req.middleGoodsId 套保商品ID
- * @constructor
- */
-export function QueryAutualExposurePosition(req: ErmcpExposurePostionReq): Promise<ErmcpExposurePostion[]>{
-    const areaUserId = APP.get('userAccount').memberuserid; // 所属机构id
-    return commonSearch_go('/Ermcp3/QueryExposureDetail', {areaUserId, ...req})
-        .catch(err => {
-            throw new Error(`查询敞口 ->实时敞口 -> 期货明细: ${err.message}`);
-        })
-}
-
-/**
- * 请求敞口现货头寸 (敞口 -> 现货头寸) /Ermcp3/QueryExposureSpot
- * @constructor
- */
-export function QuerySpotPosition() : Promise<Ermcp3AreaSpot[]>{
-    const areauserid = APP.get('userAccount').memberuserid; // 所属机构id
-    return commonSearch_go('/Ermcp3/QueryExposureSpot', {areauserid})
-        .catch(err => {
-            throw new Error(`查询敞口 -> 现货头寸: ${err.message}`);
-        })
-}
-
-/**
- * 查询敞口现货头寸明细(敞口 -> 现货头寸 -> 现货明细) /Ermcp3/QueryExposureSpotDetail
- * req.deliverygoodsid  现货品种ID
- * @constructor
- */
-export function QuerySpotPositionDetail(req: Ermcp3AreaSpotDetailReq) : Promise<Ermcp3AreaSpotDetail[]>{
-    const areauserid = APP.get('userAccount').memberuserid; // 所属机构id
-    return commonSearch_go('/Ermcp3/QueryExposureSpotDetail', {areauserid, ...req})
-        .catch(err => {
-            throw new Error(`查询敞口 -> 现货头寸 -> 现货明细: ${err.message}`);
-        })
-}
-
-/**
- * 查询敞口期货头寸(菜单:敞口-> 期货头寸) /Ermcp/QueryExposureHedgePosition
- * @constructor
- */
-export function QueryExposureHedgePosition() : Promise<ErmcpHedgePosition>{
-    const areaUserId = APP.get('userAccount').memberuserid; // 所属机构id
-    return commonSearch_go('/Ermcp/QueryExposureHedgePosition', {areaUserId})
-        .catch(err => {
-            throw new Error(`查询敞口 -> 期货头寸: ${err.message}`);
-        })
-}
-
-/**
- * 查询敞口期货头寸期货明细(菜单:敞口 -> 期货头寸 -> 期货明细) /Ermcp/QueryExposureHedgePositionDetail
- * @param req.goodsId  商品id
- * @constructor
- */
-export function QueryExposureHedgePositionDetail(req : ErmcpHedgePositionDetailReq) :Promise<ErmcpHedgePositionDetail[]>{
-    const areaUserId = APP.get('userAccount').memberuserid; // 所属机构id
-    return commonSearch_go('/Ermcp/QueryExposureHedgePositionDetail', {areaUserId, ...req})
-        .catch(err => {
-            throw new Error(`查询敞口->期货头寸->期货明细: ${err.message}`);
-        })
-}
-

+ 0 - 21
src/goServiceAPI/ermcp/goodsInfo/index.ts

@@ -1,21 +0,0 @@
-/** ================================= 商品信息 ================================**/
-
-
-import APP from '@/services';
-import {commonSearch_go} from '@/goServiceAPI/index';
-import {ErmcpDeliveryGoodsReq, ErmcpDeliveryGoodsRsp} from "./interface";
-
-/**
- * 查询现货商品 /Ermcp3/QueryDeliveryGoods
- * @param excluudecfg 排除已配置的现货商品 1-排除
- * @constructor
- */
-export function QueryDeliveryGoods( req : ErmcpDeliveryGoodsReq) : Promise<ErmcpDeliveryGoodsRsp[]>{
-    const areauserid = APP.get('userAccount').memberuserid; // 所属机构id
-    return commonSearch_go('/Ermcp3/QueryDeliveryGoods', {areauserid ,  ...req})
-        .catch(err => {
-            throw new Error(`查询现货商品: ${err.message}`);
-        })
-}
-
-

+ 0 - 33
src/goServiceAPI/ermcp/inventory-report/index.ts

@@ -1,33 +0,0 @@
-/** ================================= 库存报表 ================================**/
-import APP from '@/services';
-import * as type from './interface';
-import {commonSearch_go} from '@/goServiceAPI/index';
-import {QueryAreaStockReportReq} from "./interface";
-import {QueryAreaStockReportDetailReq} from "./interface";
-/**
- * 查询库存报表
- * @param queryInfo 查询信息 
- * @returns 库存报表
- */
-export async function QueryAreaStockReport(queryInfo:QueryAreaStockReportReq):Promise<type.QueryAreaStockReportRsp[]>
-{
-    try {
-        return commonSearch_go('/Ermcp3/QueryAreaStockReport',  queryInfo );
-    } catch (err) {
-        throw new Error(err.message);
-    }
-}
-
-/**
- * 查询库存明细报表
- * @param queryInfo 查询信息 
- * @returns 库存明细报表
- */
-export async function QueryAreaStockReportDetail(queryInfo:QueryAreaStockReportDetailReq):Promise<type.QueryAreaStockReportDetailRsp[]>
-{
-    try {
-        return commonSearch_go('/Ermcp3/QueryAreaStockReportDetail',  queryInfo );
-    } catch (err) {
-        throw new Error(err.message);
-    }
-}

+ 0 - 1
src/goServiceAPI/ermcp/plan/index.ts

@@ -1 +0,0 @@
-/** ================================= 计划 ================================**/

+ 0 - 64
src/goServiceAPI/ermcp/spot-report/index.ts

@@ -1,64 +0,0 @@
-/** ================================= 现货报表 ================================**/
-import APP from '@/services';
-import * as type from './interface';
-import {commonSearch_go} from '@/goServiceAPI/index';
-import {QuerySpotDayReportReq} from "./interface";
-import {QuerySpotDayReportDetailReq} from "./interface";
-import {QuerySpotMonthReportReq} from "./interface";
-import {QuerySpotMonthReportDetailReq} from "./interface";
-/**
- * 查询现货报表
- * @param queryInfo 查询信息 
- * @returns 现货报表
- */
- export async function QuerySpotDayReport(queryInfo:QuerySpotDayReportReq):Promise<type.QuerySpotDayReportRsp[]>
- {
-     try {
-         return commonSearch_go('/Ermcp/QryReportDaySpot',  queryInfo );
-     } catch (err) {
-         throw new Error(err.message);
-     }
- }
- 
- /**
-  * 查询现货明细报表
-  * @param queryInfo 查询信息 
-  * @returns 现货明细报表
-  */
- export async function QuerySpotDayReportDetail(queryInfo:QuerySpotDayReportDetailReq):Promise<type.QuerySpotDayReportDetailRsp[]>
- {
-     try {
-         return commonSearch_go('/Ermcp/QryReportDaySpotDetail',  queryInfo );
-     } catch (err) {
-         throw new Error(err.message);
-     }
- }
-
-
- /**
- * 查询现货月报表
- * @param queryInfo 查询信息
- * @returns 现货月报表数据
- */
-  export async function QuerySpotMonthReport(queryInfo:QuerySpotMonthReportReq):Promise<type.QuerySpotMonthReportRsp[]>
-  {
-      try {
-          return commonSearch_go('/Ermcp/QryReportMonthSpot', { queryInfo });
-      } catch (err) {
-          throw new Error(err.message);
-      }
-  }
-
-   /**
-  * 查询现货月报表明细
-  * @param queryInfo 查询信息 
-  * @returns 现货月报表明细
-  */
- export async function QuerySpotMonthReportDetail(queryInfo:QuerySpotMonthReportDetailReq):Promise<type.QuerySpotMonthReportDetailRsp[]>
- {
-     try {
-         return commonSearch_go('/Ermcp/QryReportMonthSpotDetail', { queryInfo });
-     } catch (err) {
-         throw new Error(err.message);
-     }
- }

+ 0 - 16
src/goServiceAPI/ermcp/warehouse-info/index.ts

@@ -1,16 +0,0 @@
-/** ================================= 仓库信息 ================================**/
-import { commonSearch_go } from "@/goServiceAPI";
-import { ErmcpWareHouseInfo, WareHouseInfoReq } from "@/goServiceAPI/ermcp/warehouse-info/interface";
-
-/**
- * 查询仓库信息 /Ermcp/QueryWarehouseInfo
- * @param req.userid 用户id(必填)
- * @param req.status 仓库状态(可多项,逗号隔开) 1:正常 2:注销 3:待审核 4:审核拒绝
- * @constructor
- */
-export function QueryWareHouse(req: WareHouseInfoReq): Promise<ErmcpWareHouseInfo[]> {
-    return commonSearch_go('/Ermcp/QueryWarehouseInfo', req)
-        .catch(err => {
-            throw new Error(`查询仓库信息: ${err.message}`);
-        })
-}

+ 0 - 29
src/goServiceAPI/ermcp/warehouse-info/interface.ts

@@ -1,29 +0,0 @@
-/**
- * 查询仓单信息请求
- */
-export interface WareHouseInfoReq {
-    userid: number // 用户ID
-    status?: string // 仓库状态(可多项,逗号隔开) 1:正常 2:注销 3:待审核 4:审核拒绝
-}
-/**
- * 仓库信息
- */
-export interface ErmcpWareHouseInfo {
-    address: string;//详细地址
-    areauserid: number;//所属机构
-    autoid: number;//自增ID(仓库ID)
-    cityid: number;//市
-    contactname: string;//联系人
-    contactnum: string;//联系电话
-    countryid: number;//国家
-    createtime: string;//创建时间
-    districtid: number;//区
-    hasvideo: number;//是否有视频 - number; //:无 1:有
-    provinceid: number;//省
-    remark: string;//审核备注
-    videourl: string;//视频地址
-    warehousecode: string;//仓库代码
-    warehousename: string;//仓库名称
-    warehousestatus: number;//仓库状态 - 1:正常 2:注销 3:待审核 4:审核拒绝
-    warehousetype: number;//仓库类型 - 1 厂库 2 自有库 3 合作库
-}

+ 102 - 106
src/layout/bottom.vue

@@ -1,121 +1,117 @@
 <template>
-  <section class="layout-bottom">
-    <CapitalInfo class="capital-info-container"></CapitalInfo>
-    <main>
-        <div class="conditionIcon icon iconfont icon-shouqi"></div>
-        <firstMenu :list="list"
-            :value="'value'"
-            @selectMenu="selectMenu" />
-        <quoteTable :columns="columns"
-                :dataSource="data"
-                />
-        <thirdMenu></thirdMenu>
-    </main>
-  </section>
+    <section class="layout-bottom">
+        <CapitalInfo class="capital-info-container"></CapitalInfo>
+        <main>
+            <div class="conditionIcon icon iconfont icon-shouqi"></div>
+            <firstMenu :list="list" :value="'value'" @selectMenu="selectMenu" />
+            <quoteTable :columns="columns" :dataSource="data" />
+            <thirdMenu></thirdMenu>
+        </main>
+    </section>
 </template>
 <script lang="ts">
-import { defineComponent } from 'vue';
-import CapitalInfo from '@/components/capitalInfo/index.vue';
-import firstMenu from '@/components/firstMenu/index.vue';
-import thirdMenu from '@/components/thirdMenu/index.vue';
-import quoteTable from '@/components/quoteTable/index.vue';
-import { MenuItem } from '@/components/contextMenu/interface';
+    import { defineComponent } from 'vue';
+    import CapitalInfo from '@/common/components/capitalInfo/index.vue';
+    import firstMenu from '@/common/components/firstMenu/index.vue';
+    import thirdMenu from '@/common/components/thirdMenu/index.vue';
+    import quoteTable from '@/common/components/quoteTable/index.vue';
+    import { MenuItem } from '@/common/components/contextMenu/interface';
 
-const columns = [
-    { title: '序号', width: 100, dataIndex: 'name', key: 'name', fixed: 'left', align: 'center' },
-    { title: '品种', width: 100, dataIndex: 'age', key: 'age', fixed: 'left', align: 'center' },
-    { title: '种类', dataIndex: 'address', key: '1', width: 200, align: 'center' },
-    { title: '品牌', dataIndex: 'address', key: '2', width: 200, align: 'center' },
-    { title: '数量', dataIndex: 'address', key: '3', width: 200, align: 'center' },
-    { title: '价格', dataIndex: 'address', key: '4', width: 200, align: 'center' },
-    { title: '仓库', dataIndex: 'address', key: '5', width: 200, align: 'center' },
-    { title: '所在地', dataIndex: 'address', key: '6', width: 200, align: 'center' },
-    { title: '挂牌方', dataIndex: 'address', key: '7', width: 'auto', align: 'center' },
-    // {
-    //     title: 'Action',
-    //     key: 'operation',
-    //     fixed: 'right',
-    //     align: 'center',
-    //     width: 100,
-    //     slots: { customRender: 'action' },
-    // },
-];
+    const columns = [
+        { title: '序号', width: 100, dataIndex: 'name', key: 'name', fixed: 'left', align: 'center' },
+        { title: '品种', width: 100, dataIndex: 'age', key: 'age', fixed: 'left', align: 'center' },
+        { title: '种类', dataIndex: 'address', key: '1', width: 200, align: 'center' },
+        { title: '品牌', dataIndex: 'address', key: '2', width: 200, align: 'center' },
+        { title: '数量', dataIndex: 'address', key: '3', width: 200, align: 'center' },
+        { title: '价格', dataIndex: 'address', key: '4', width: 200, align: 'center' },
+        { title: '仓库', dataIndex: 'address', key: '5', width: 200, align: 'center' },
+        { title: '所在地', dataIndex: 'address', key: '6', width: 200, align: 'center' },
+        { title: '挂牌方', dataIndex: 'address', key: '7', width: 'auto', align: 'center' },
+        // {
+        //     title: 'Action',
+        //     key: 'operation',
+        //     fixed: 'right',
+        //     align: 'center',
+        //     width: 100,
+        //     slots: { customRender: 'action' },
+        // },
+    ];
 
-interface DataItem {
-    key: number;
-    name: string;
-    age: number;
-    address: string;
-}
+    interface DataItem {
+        key: number;
+        name: string;
+        age: number;
+        address: string;
+    }
 
-const data: DataItem[] = [];
-for (let i = 0; i < 100; i++) {
-    data.push({
-        key: i,
-        name: `Edrward ${i}`,
-        age: 32,
-        address: `London Park no. ${i}`,
-    });
-}
+    const data: DataItem[] = [];
+    for (let i = 0; i < 100; i++) {
+        data.push({
+            key: i,
+            name: `Edrward ${i}`,
+            age: 32,
+            address: `London Park no. ${i}`,
+        });
+    }
 
-function handleMenu() {
-    const list = [
-        { key: '1', value: '仓单贸易' },
-        { key: '2', value: '拍卖' },
-    ];
-    function selectMenu(item: any) {
-        console.log(item);
+    function handleMenu() {
+        const list = [
+            { key: '1', value: '仓单贸易' },
+            { key: '2', value: '拍卖' },
+        ];
+        function selectMenu(item: any) {
+            console.log(item);
+        }
+        return { list, selectMenu };
     }
-    return { list, selectMenu };
-}
 
-export default defineComponent({
-    name: 'layout-top',
-    components: {
-        CapitalInfo,
-        firstMenu,
-        quoteTable,
-        thirdMenu
-    },
-    setup() {
-        const { list, selectMenu } = handleMenu();
-        return {
-            columns,
-            data,
-            list,
-            selectMenu,
-        };
-    },
-});
+    export default defineComponent({
+        name: 'layout-top',
+        components: {
+            CapitalInfo,
+            firstMenu,
+            quoteTable,
+            thirdMenu,
+        },
+        setup() {
+            const { list, selectMenu } = handleMenu();
+            return {
+                columns,
+                data,
+                list,
+                selectMenu,
+            };
+        },
+    });
 </script>
 <style lang="less">
-.layout-bottom {
-    display: flex;
-    width: 100%;
-    overflow: hidden;
-    .capital-info-container {
-        width: 180px;
-    }
-    main {
-        max-width: calc(100% - 180px);
-        flex: 1;
-        .flex;
-        flex-direction: column;
-        background: rgb(14, 14, 15);
-        position: relative;
-        .conditionIcon {
-            font-size: 16px;
-            color: @m-grey1;
-            width: 16px;
-            height: 16px;
-            line-height: 16px;
-            cursor: pointer;
-            .position(absolute, 8px, 14px, auto, auto);
-            z-index: 2;
-            &:hover {
-                color: rgba(@m-grey1, .8);
+    .layout-bottom {
+        display: flex;
+        width: 100%;
+        overflow: hidden;
+        .capital-info-container {
+            width: 180px;
+        }
+        main {
+            max-width: calc(100% - 180px);
+            flex: 1;
+            .flex;
+            flex-direction: column;
+            background: rgb(14, 14, 15);
+            position: relative;
+            .conditionIcon {
+                font-size: 16px;
+                color: @m-grey1;
+                width: 16px;
+                height: 16px;
+                line-height: 16px;
+                cursor: pointer;
+                .position(absolute, 8px, 14px, auto, auto);
+                z-index: 2;
+                &:hover {
+                    color: rgba(@m-grey1, 0.8);
+                }
             }
         }
     }
-}
 </style>

+ 405 - 424
src/layout/top.vue

@@ -1,481 +1,462 @@
 <template>
-  <a-layout class="layout-top">
-    <a-layout-header class="m-layout-header">
-      <div>
-        <img src="../assets/images/logoHeader.png" />
-        <span>深圳市多元世纪信息技术股份有限公司</span>
-      </div>
-      <div class="m-layout-header-right">
-        <div @click="openDrawer">
-          <span>{{ username }},您好!</span>
-        </div>
-        <div class="relative">
-          <!-- <a-input-search ref="userNameInput"
+    <a-layout class="layout-top">
+        <a-layout-header class="m-layout-header">
+            <div>
+                <img src="../assets/images/logoHeader.png" />
+                <span>深圳市多元世纪信息技术股份有限公司</span>
+            </div>
+            <div class="m-layout-header-right">
+                <div @click="openDrawer">
+                    <span>{{ username }},您好!</span>
+                </div>
+                <div class="relative">
+                    <!-- <a-input-search ref="userNameInput"
                           class="searchInput"
                           readonly
                           placeholder="请输入代码/名称"
                           @pressEnter="search">
           </a-input-search> -->
-          <!-- <a-icon type="search" /> -->
-        </div>
-        <div class="news-container">
-          <a-badge @click="openNotice">
-            <svg class="icon svg-icon"
-                 aria-hidden="true">
-              <use xlink:href="#icon-xiaoxi"></use>
-            </svg>
-          </a-badge>
-        </div>
-        <div>
-          <a-popover v-model:visible="visible"
-                     trigger="click"
-                     placement="bottomRight">
-            <template #content>
-              <div v-for="item in setMenu"
-                   @click="chooseSetMenu(item.path)"
-                   :key="item.path">{{item.name}}</div>
-            </template>
-            <a-avatar :size="24">
-              <template #icon>
-                <UserOutlined />
-              </template>
-            </a-avatar>
-          </a-popover>
-          <Setting />
-        </div>
-      </div>
-    </a-layout-header>
-    <a-layout class="middleLayout">
-      <a-layout-sider class="m-layout-left"
-                      width="180"
-                      v-model:collapsed="collapsed"
-                      @collapse="collapse"
-                      collapsible>
-        <a-menu theme="dark"
-                mode="inline"
-                class="left-menu"
-                v-model:selectedKeys="selectedKeys"
-                v-model:openKeys="openKeys"
-                @click="menuClick">
-          <a-sub-menu v-for="item in menuList"
-                      :key="item.code">
-            <template #title>
-              <span>
-                <svg class="icon svg-icon"
-                     aria-hidden="true">
-                  <use :xlink:href="fontIcon(item.code)"></use>
-                </svg>
-                <span class="menu-item_title"
-                      v-show="!collapsed">{{ item.title }}</span>
-              </span>
-            </template>
-            <a-menu-item :key="subItem.code"
-                         v-for="subItem in item.children">
-              <span>{{ subItem.title }}</span>
-            </a-menu-item>
-          </a-sub-menu>
-        </a-menu>
-      </a-layout-sider>
-      <a-layout-content :style="{ background: '#0E0E0F', flex: 1 }">
-        <Drawer :title="'挂牌'"
-                :visible="visible"></Drawer>
-        <router-view />
-      </a-layout-content>
+                    <!-- <a-icon type="search" /> -->
+                </div>
+                <div class="news-container">
+                    <a-badge @click="openNotice">
+                        <svg class="icon svg-icon" aria-hidden="true">
+                            <use xlink:href="#icon-xiaoxi"></use>
+                        </svg>
+                    </a-badge>
+                </div>
+                <div>
+                    <a-popover v-model:visible="visible" trigger="click" placement="bottomRight">
+                        <template #content>
+                            <div v-for="item in setMenu" @click="chooseSetMenu(item.path)" :key="item.path">{{ item.name }}</div>
+                        </template>
+                        <a-avatar :size="24">
+                            <template #icon>
+                                <UserOutlined />
+                            </template>
+                        </a-avatar>
+                    </a-popover>
+                    <Setting />
+                </div>
+            </div>
+        </a-layout-header>
+        <a-layout class="middleLayout">
+            <a-layout-sider class="m-layout-left" width="180" v-model:collapsed="collapsed" @collapse="collapse" collapsible>
+                <a-menu theme="dark" mode="inline" class="left-menu" v-model:selectedKeys="selectedKeys" v-model:openKeys="openKeys" @click="menuClick">
+                    <a-sub-menu v-for="item in menuList" :key="item.code">
+                        <template #title>
+                            <span>
+                                <svg class="icon svg-icon" aria-hidden="true">
+                                    <use :xlink:href="fontIcon(item.code)"></use>
+                                </svg>
+                                <span class="menu-item_title" v-show="!collapsed">{{ item.title }}</span>
+                            </span>
+                        </template>
+                        <a-menu-item :key="subItem.code" v-for="subItem in item.children">
+                            <span>{{ subItem.title }}</span>
+                        </a-menu-item>
+                    </a-sub-menu>
+                </a-menu>
+            </a-layout-sider>
+            <a-layout-content :style="{ background: '#0E0E0F', flex: 1 }">
+                <Drawer :title="'挂牌'" :visible="visible"></Drawer>
+                <router-view />
+            </a-layout-content>
+        </a-layout>
     </a-layout>
-  </a-layout>
 </template>
 <script lang="ts">
-import { UserOutlined } from '@ant-design/icons-vue';
-import { defineComponent, ref, provide, unref } from 'vue';
-import Setting from '@/views/setting/index.vue';
-import CapitalInfo from '@/components/capitalInfo/index.vue';
-import SecondMenu from '@/components/secondeMenu/index.vue';
-import APP from '@/services';
-import { initData } from '@/setup/methods/index';
-import { useRouter } from 'vue-router';
-import { openModal } from '@/setup/modal/index';
-import Drawer from '@/components/drawer/index.vue';
+    import { UserOutlined } from '@ant-design/icons-vue';
+    import { defineComponent, ref, provide, unref } from 'vue';
+    import Setting from '@/views/setting/index.vue';
+    import CapitalInfo from '@/common/components/capitalInfo/index.vue';
+    import SecondMenu from '@/common/components/secondeMenu/index.vue';
+    import APP from '@/services';
+    import { initData } from '@/common/methods';
+    import { useRouter } from 'vue-router';
+    import { openModal } from '@/common/setup/modal/index';
+    import Drawer from '@/common/components/drawer/index.vue';
 
-// 菜单栏
-const handleMenu = () => {
-    const collapsed = ref<boolean>(false);
-    const selectedKeys = ref<string[]>(['1-1']);
-    const openKeys = ref<string[]>(['1']);
-    const preOpenKeys = ref<string[]>(['1']);
-    const menuList = APP.getRef('menus');
-    // const menuList = [
-    //     {
-    //       key: '1',
-    //       title: '市场',
-    //       code: 'market',
-    //       children: [
-    //         {
-    //           key: '1-1',
-    //           title: '现货贸易',
-    //           code: ''
-    //         },
-    //       ],
-    //     },
-    //     {
-    //       key: '2',
-    //       title: '查询',
-    //       code: 'search',
-    //       children: [
-    //         {
-    //           key: '2-1',
-    //           title: '单据记录',
-    //           code: ''
-    //         },
-    //         {
-    //           key: '2-2',
-    //           title: '资金流水',
-    //           code: ''
-    //         },
-    //         {
-    //           key: '2-3',
-    //           title: '出入库',
-    //           code: ''
-    //         },
-    //         {
-    //           key: '2-4',
-    //           title: '登录日志',
-    //           code: ''
-    //         },
-    //       ],
-    //     },
-    //     {
-    //       key: '3',
-    //       title: '报表',
-    //       code: 'report'
-    //     },
-    //   ];
-    const router = useRouter();
-    // 控制菜单是否隐藏
-    function collapse(collapsed: boolean) {
-        if (collapsed) {
-            preOpenKeys.value = openKeys.value;
-            openKeys.value = [];
-        } else {
-            openKeys.value = preOpenKeys.value;
+    // 菜单栏
+    const handleMenu = () => {
+        const collapsed = ref<boolean>(false);
+        const selectedKeys = ref<string[]>(['1-1']);
+        const openKeys = ref<string[]>(['1']);
+        const preOpenKeys = ref<string[]>(['1']);
+        const menuList = APP.getRef('menus');
+        // const menuList = [
+        //     {
+        //       key: '1',
+        //       title: '市场',
+        //       code: 'market',
+        //       children: [
+        //         {
+        //           key: '1-1',
+        //           title: '现货贸易',
+        //           code: ''
+        //         },
+        //       ],
+        //     },
+        //     {
+        //       key: '2',
+        //       title: '查询',
+        //       code: 'search',
+        //       children: [
+        //         {
+        //           key: '2-1',
+        //           title: '单据记录',
+        //           code: ''
+        //         },
+        //         {
+        //           key: '2-2',
+        //           title: '资金流水',
+        //           code: ''
+        //         },
+        //         {
+        //           key: '2-3',
+        //           title: '出入库',
+        //           code: ''
+        //         },
+        //         {
+        //           key: '2-4',
+        //           title: '登录日志',
+        //           code: ''
+        //         },
+        //       ],
+        //     },
+        //     {
+        //       key: '3',
+        //       title: '报表',
+        //       code: 'report'
+        //     },
+        //   ];
+        const router = useRouter();
+        // 控制菜单是否隐藏
+        function collapse(collapsed: boolean) {
+            if (collapsed) {
+                preOpenKeys.value = openKeys.value;
+                openKeys.value = [];
+            } else {
+                openKeys.value = preOpenKeys.value;
+            }
         }
-    }
-    // 配置是否显示下半部分
-    function setShowBottomPart(code: string): boolean {
-        // 显示下半部分 这里保存的是市场对应的 code
-        const show: string[] = [''];
-        return show.includes(code);
-    }
-    function menuClick(value: any) {
-        console.log('菜单: ', value);
-        const key = value.key;
-        setShowBottomPart(key);
-        router.push({ name: key });
-    }
-    // 一级菜单图标
-    function fontIcon(code: string): string {
-        let result = 'icon-jinrongfenxi';
-        switch (code) {
-            case 'market':
-                result = 'icon-jinrongfenxi';
-                break;
-            case 'info':
-                result = 'icon-zhangdan';
-                break;
-            case 'business':
-                result = 'icon-renwu';
-                break;
-            case 'manage':
-                result = 'icon-quanxian';
-                break;
-            case 'search':
-                result = 'icon-chazhaojilu';
-                break;
-            case 'report':
-                result = 'icon-bingtu';
-                break;
+        // 配置是否显示下半部分
+        function setShowBottomPart(code: string): boolean {
+            // 显示下半部分 这里保存的是市场对应的 code
+            const show: string[] = [''];
+            return show.includes(code);
+        }
+        function menuClick(value: any) {
+            console.log('菜单: ', value);
+            const key = value.key;
+            setShowBottomPart(key);
+            router.push({ name: key });
         }
-        return '#' + result;
+        // 一级菜单图标
+        function fontIcon(code: string): string {
+            let result = 'icon-jinrongfenxi';
+            switch (code) {
+                case 'market':
+                    result = 'icon-jinrongfenxi';
+                    break;
+                case 'info':
+                    result = 'icon-zhangdan';
+                    break;
+                case 'business':
+                    result = 'icon-renwu';
+                    break;
+                case 'manage':
+                    result = 'icon-quanxian';
+                    break;
+                case 'search':
+                    result = 'icon-chazhaojilu';
+                    break;
+                case 'report':
+                    result = 'icon-bingtu';
+                    break;
+            }
+            return '#' + result;
+        }
+        return { collapsed, selectedKeys, menuList, openKeys, collapse, menuClick, setShowBottomPart, fontIcon };
+    };
+
+    function testAction() {
+        const { openAction } = openModal('drawer');
+        return { openDrawer: openAction };
     }
-    return { collapsed, selectedKeys, menuList, openKeys, collapse, menuClick, setShowBottomPart, fontIcon };
-};
 
-function testAction() {
-    const { openAction } = openModal('drawer');
-    return { openDrawer: openAction };
-}
+    // 设置
+    const setFn = () => {
+        const visible = ref<boolean>(false);
+        const chooseSetupItem = ref<string>('');
+        provide('ControlModal', chooseSetupItem);
+        const setMenu = [
+            // { name: '修改密码', path: 'password' },
+            // { name: '收货地址', path: 'addresss' },
+            // // {name: '发票', path: 'setup-password'},
+            // { name: '手机号码绑定/解绑', path: 'phone' },
+            // { name: '关于我们', path: 'aboutUs' },
+            { name: '退出', path: 'logout' },
+        ];
+        const { openAction } = openModal('logout');
+        function chooseSetMenu(path: string) {
+            // chooseSetupItem.value = path;
+            openAction();
+            console.log(path);
+            visible.value = false;
+        }
 
-// 设置
-const setFn = () => {
-    const visible = ref<boolean>(false);
-    const chooseSetupItem = ref<string>('');
-    provide('ControlModal', chooseSetupItem);
-    const setMenu = [
-        // { name: '修改密码', path: 'password' },
-        // { name: '收货地址', path: 'addresss' },
-        // // {name: '发票', path: 'setup-password'},
-        // { name: '手机号码绑定/解绑', path: 'phone' },
-        // { name: '关于我们', path: 'aboutUs' },
-        { name: '退出', path: 'logout' },
-    ];
-    const { openAction } = openModal('logout');
-    function chooseSetMenu(path: string) {
-        // chooseSetupItem.value = path;
-        openAction();
-        console.log(path);
-        visible.value = false;
-    }
+        return { visible, setMenu, chooseSetMenu };
+    };
+    // 搜索
+    const onSearch = () => {
+        function search(value: string) {
+            console.log(value);
+        }
+        return { search };
+    };
 
-    return { visible, setMenu, chooseSetMenu };
-};
-// 搜索
-const onSearch = () => {
-    function search(value: string) {
-        console.log(value);
+    // 控制消息弹窗
+    function controlNotice() {
+        const { openAction } = openModal('notice');
+        return { openNotice: openAction };
     }
-    return { search };
-};
+    export default defineComponent({
+        name: 'layout-top',
+        components: {
+            Setting,
+            UserOutlined,
+            CapitalInfo,
+            SecondMenu,
+            Drawer,
+        },
+        setup(props, context) {
+            const { collapsed, selectedKeys, openKeys, menuList, collapse, menuClick, setShowBottomPart, fontIcon } = handleMenu();
+            const router = useRouter();
+            // 控制消息弹窗
+            const { openNotice } = controlNotice();
 
-// 控制消息弹窗
-function controlNotice() {
-    const { openAction } = openModal('notice');
-    return { openNotice: openAction };
-}
-export default defineComponent({
-    name: 'layout-top',
-    components: {
-        Setting,
-        UserOutlined,
-        CapitalInfo,
-        SecondMenu,
-        Drawer,
-    },
-    setup(props, context) {
-        const { collapsed, selectedKeys, openKeys, menuList, collapse, menuClick, setShowBottomPart, fontIcon } = handleMenu();
-        const router = useRouter();
-        // 控制消息弹窗
-        const { openNotice } = controlNotice();
-
-        initData(() => {
-            // 处理路由跳转到菜单栏里第一个对应的页面
-            const list = unref(menuList);
-            if (list.length && list[0].children && list[0].children.length) {
-                // 处理修改具体某个菜单栏,主要处理页面刷新
-                let firstIndex = 0,
-                    secondeIndex = 0;
-                for (let i = 0; i < list.length; i++) {
-                    for (let j = 0; j < list[i].children.length; j++) {
-                        if (window.location.hash.includes(list[i].children[j].code)) {
-                            firstIndex = i;
-                            secondeIndex = j;
-                            break;
+            initData(() => {
+                // 处理路由跳转到菜单栏里第一个对应的页面
+                const list = unref(menuList);
+                if (list.length && list[0].children && list[0].children.length) {
+                    // 处理修改具体某个菜单栏,主要处理页面刷新
+                    let firstIndex = 0,
+                        secondeIndex = 0;
+                    for (let i = 0; i < list.length; i++) {
+                        for (let j = 0; j < list[i].children.length; j++) {
+                            if (window.location.hash.includes(list[i].children[j].code)) {
+                                firstIndex = i;
+                                secondeIndex = j;
+                                break;
+                            }
                         }
                     }
+                    const code = list[firstIndex].children[secondeIndex].code;
+                    // selectedKeys.value.length = 0;
+                    // selectedKeys.value.push(code);
+                    // openKeys.value.length = 0;
+                    // openKeys.value.push(list[firstIndex].code);
+                    selectedKeys.value = [code];
+                    openKeys.value = [list[firstIndex].code];
+                    context.emit('chooseMenu', setShowBottomPart(code));
+                    // 处理页面刷新时候 引发路由乱跳的bug
+                    if (router.currentRoute.value.fullPath === '/home') {
+                        router.push(code);
+                    } else {
+                    }
                 }
-                const code = list[firstIndex].children[secondeIndex].code;
-                // selectedKeys.value.length = 0;
-                // selectedKeys.value.push(code);
-                // openKeys.value.length = 0;
-                // openKeys.value.push(list[firstIndex].code);
-                selectedKeys.value = [code];
-                openKeys.value = [list[firstIndex].code];
-                context.emit('chooseMenu', setShowBottomPart(code));
-                // 处理页面刷新时候 引发路由乱跳的bug
-                if (router.currentRoute.value.fullPath === '/home') {
-                    router.push(code);
-                } else {
-                }
-            }
-        });
+            });
 
-        const { openDrawer } = testAction();
+            const { openDrawer } = testAction();
 
-        const { visible, setMenu, chooseSetMenu } = setFn();
-        const username = APP.get('username');
-        const { search } = onSearch();
-        const searchName = ref<string[]>(['']);
-        return {
-            collapsed,
-            collapse,
-            selectedKeys,
-            openKeys,
-            menuClick,
-            username,
-            menuList,
-            visible,
-            setMenu,
-            chooseSetMenu,
-            fontIcon,
+            const { visible, setMenu, chooseSetMenu } = setFn();
+            const username = APP.get('username');
+            const { search } = onSearch();
+            const searchName = ref<string[]>(['']);
+            return {
+                collapsed,
+                collapse,
+                selectedKeys,
+                openKeys,
+                menuClick,
+                username,
+                menuList,
+                visible,
+                setMenu,
+                chooseSetMenu,
+                fontIcon,
 
-            openNotice,
+                openNotice,
 
-            openDrawer,
-        };
-    },
-});
+                openDrawer,
+            };
+        },
+    });
 </script>
 <style lang="less">
-.layout-top {
-    .flex;
-    width: 100%;
-    height: 100%;
-    flex-direction: column;
-    .m-layout-header {
+    .layout-top {
+        .flex;
         width: 100%;
-        height: 40px;
-        line-height: 40px;
-        background: @m-grey0;
-        color: @m-grey1;
-        padding: 0 20px;
-        .flex();
-        justify-content: space-between;
-        img {
-            margin-right: 16px;
-            width: 20px;
-            height: 20px;
-        }
-        .searchInput.ant-input-affix-wrapper {
-            width: 240px;
-            height: 30px;
-            line-height: 30px;
-            font-size: 14px;
-            background: @m-grey9;
-            border: 0;
-            vertical-align: middle;
-            padding-left: 40px;
-            position: relative;
-            .rounded-corners(15px);
-            .ant-input {
-                background: @m-grey9;
-                color: @m-white0;
+        height: 100%;
+        flex-direction: column;
+        .m-layout-header {
+            width: 100%;
+            height: 40px;
+            line-height: 40px;
+            background: @m-grey0;
+            color: @m-grey1;
+            padding: 0 20px;
+            .flex();
+            justify-content: space-between;
+            img {
+                margin-right: 16px;
+                width: 20px;
+                height: 20px;
             }
-            .ant-input-suffix {
-                margin-left: -215px;
-                .ant-input-search-icon {
-                    color: @m-grey10;
+            .searchInput.ant-input-affix-wrapper {
+                width: 240px;
+                height: 30px;
+                line-height: 30px;
+                font-size: 14px;
+                background: @m-grey9;
+                border: 0;
+                vertical-align: middle;
+                padding-left: 40px;
+                position: relative;
+                .rounded-corners(15px);
+                .ant-input {
+                    background: @m-grey9;
+                    color: @m-white0;
                 }
-            }
-        }
-        // .relative {
-        //     position: relative;
-        //     .a-icon {
-        //         font-size: 14px;
-        //         .position(absolute, 50%, auto, auto, 10px);
-        //         margin-top: -7px;
-        //         color: @m-grey10;
-        //         z-index: 10;
-        //     }
-        // }
-        .m-layout-header-right {
-            .flex();
-            .news-container {
-                padding-left: 10px;
-                padding-right: 16px;
-                .ant-badge {
-                    margin-top: 7px;
-                    cursor: pointer;
-                    > svg {
-                        font-size: 24px;
-                    }
-                    .ant-badge-dot {
-                        box-shadow: 0 0 0 1px @m-red0;
+                .ant-input-suffix {
+                    margin-left: -215px;
+                    .ant-input-search-icon {
+                        color: @m-grey10;
                     }
                 }
             }
+            // .relative {
+            //     position: relative;
+            //     .a-icon {
+            //         font-size: 14px;
+            //         .position(absolute, 50%, auto, auto, 10px);
+            //         margin-top: -7px;
+            //         color: @m-grey10;
+            //         z-index: 10;
+            //     }
+            // }
+            .m-layout-header-right {
+                .flex();
+                .news-container {
+                    padding-left: 10px;
+                    padding-right: 16px;
+                    .ant-badge {
+                        margin-top: 7px;
+                        cursor: pointer;
+                        > svg {
+                            font-size: 24px;
+                        }
+                        .ant-badge-dot {
+                            box-shadow: 0 0 0 1px @m-red0;
+                        }
+                    }
+                }
 
-            .ant-avatar-icon {
-                margin-top: -3px;
+                .ant-avatar-icon {
+                    margin-top: -3px;
+                }
             }
         }
-    }
 
-    .middleLayout {
-        flex: 1;
-        width: 100%;
-        .inlineflex;
-        border-bottom: 1px solid @m-black2;
-        .m-layout-left {
-            height: 100%;
-            background: @m-black4;
-            .ant-layout-sider-children {
-                ul.ant-menu.ant-menu-inline {
-                    li.ant-menu-submenu {
-                        padding-bottom: 0;
-                        .ant-menu-submenu-title {
-                            color: @m-grey2;
-                            font-size: 16px;
-                            height: 60px;
-                            line-height: 60px;
-                            margin-top: 0;
-                            margin-bottom: 0;
-                            padding: 5px 0;
-                            .icon {
-                                font-size: 20px;
-                            }
-                            .menu-item_title {
-                                display: inline-block;
+        .middleLayout {
+            flex: 1;
+            width: 100%;
+            .inlineflex;
+            border-bottom: 1px solid @m-black2;
+            .m-layout-left {
+                height: 100%;
+                background: @m-black4;
+                .ant-layout-sider-children {
+                    ul.ant-menu.ant-menu-inline {
+                        li.ant-menu-submenu {
+                            padding-bottom: 0;
+                            .ant-menu-submenu-title {
+                                color: @m-grey2;
                                 font-size: 16px;
-                                margin-left: 15px;
+                                height: 60px;
+                                line-height: 60px;
+                                margin-top: 0;
+                                margin-bottom: 0;
+                                padding: 5px 0;
+                                .icon {
+                                    font-size: 20px;
+                                }
+                                .menu-item_title {
+                                    display: inline-block;
+                                    font-size: 16px;
+                                    margin-left: 15px;
+                                }
                             }
-                        }
-                        .ant-menu-sub {
-                            .ant-menu-item {
-                                padding-left: 60px !important;
-                                margin-top: 5px;
-                                margin-bottom: 5px;
+                            .ant-menu-sub {
+                                .ant-menu-item {
+                                    padding-left: 60px !important;
+                                    margin-top: 5px;
+                                    margin-bottom: 5px;
+                                }
                             }
                         }
-                    }
-                    li.ant-menu-submenu-open {
-                        .ant-menu-submenu-title {
-                            color: @m-white0;
-                            .icon {
+                        li.ant-menu-submenu-open {
+                            .ant-menu-submenu-title {
                                 color: @m-white0;
+                                .icon {
+                                    color: @m-white0;
+                                }
                             }
-                        }
-                        .ant-menu-sub {
-                            .ant-menu-item.ant-menu-item-selected {
-                                background-color: @m-blue0;
+                            .ant-menu-sub {
+                                .ant-menu-item.ant-menu-item-selected {
+                                    background-color: @m-blue0;
+                                }
                             }
                         }
                     }
                 }
+                .ant-layout-sider-trigger {
+                    width: 100%;
+                    height: 40px;
+                    line-height: 40px;
+                    background: @m-black0;
+                    position: absolute;
+                }
             }
-            .ant-layout-sider-trigger {
-                width: 100%;
-                height: 40px;
-                line-height: 40px;
-                background: @m-black0;
-                position: absolute;
-            }
-        }
-        .ant-menu-vertical {
-            .ant-menu-submenu-vertical {
-                height: 60px;
-                line-height: 60px;
-                padding: 5px 0;
-                .ant-menu-submenu-title {
-                    height: 50px;
-                    line-height: 50px;
-                    .icon {
-                        font-size: 20px;
+            .ant-menu-vertical {
+                .ant-menu-submenu-vertical {
+                    height: 60px;
+                    line-height: 60px;
+                    padding: 5px 0;
+                    .ant-menu-submenu-title {
+                        height: 50px;
+                        line-height: 50px;
+                        .icon {
+                            font-size: 20px;
+                        }
                     }
                 }
-            }
-            .ant-menu-submenu {
-                .ant-menu-submenu-title {
-                    .menu-item_title {
-                        display: none;
+                .ant-menu-submenu {
+                    .ant-menu-submenu-title {
+                        .menu-item_title {
+                            display: none;
+                        }
                     }
                 }
             }
         }
-    }
 
-    .bottomLayout {
-        width: 100%;
-        flex: none;
-        height: @bottomHeight;
-        .inlineflex;
+        .bottomLayout {
+            width: 100%;
+            flex: none;
+            height: @bottomHeight;
+            .inlineflex;
+        }
     }
-}
 </style>

+ 0 - 0
src/protoService/accountinfo/interface.ts


+ 50 - 41
src/router/index.ts

@@ -1,4 +1,4 @@
-import * as EnumType from '@/enums/routerName';
+import * as EnumType from '@/common/constants/routerName';
 import Layout from '@/layout/index.vue';
 import { isLogin } from '@/services/bus/login';
 import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router';
@@ -35,7 +35,6 @@ const routes: Array<RouteRecordRaw> = [
                 path: '/futures',
                 name: 'forward',
                 component: () => import('@/views/market/forward/index.vue'),
-
             },
             {
                 path: '/warehouse-trade',
@@ -47,16 +46,18 @@ const routes: Array<RouteRecordRaw> = [
                 name: 'custom_info',
                 component: () => import('@/views/information/custom/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
+                },
+                redirect: (to) => {
+                    return { name: 'custom_info_normal' };
                 },
-                redirect: to => { return { name: 'custom_info_normal' } },
                 children: [
                     {
                         path: '/custom_info/normal',
                         name: 'custom_info_normal',
                         component: () => import('@/views/information/custom/list/normal-use/index.vue'),
                         meta: {
-                            requireAuth: true
+                            requireAuth: true,
                         },
                     },
                     {
@@ -64,7 +65,7 @@ const routes: Array<RouteRecordRaw> = [
                         name: 'custom_info_disabled',
                         component: () => import('@/views/information/custom/list/stop-use/index.vue'),
                         meta: {
-                            requireAuth: true
+                            requireAuth: true,
                         },
                     },
                 ],
@@ -74,16 +75,18 @@ const routes: Array<RouteRecordRaw> = [
                 name: 'goods_info',
                 component: () => import('@/views/information/goods/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
+                },
+                redirect: (to) => {
+                    return { name: 'goods_info_spot' };
                 },
-                redirect: to => { return { name: 'goods_info_spot' } },
                 children: [
                     {
                         path: '/goods_info/spot',
                         name: 'goods_info_spot',
                         component: () => import('@/views/information/goods/list/spot-variety/index.vue'),
                         meta: {
-                            requireAuth: true
+                            requireAuth: true,
                         },
                     },
                     {
@@ -91,7 +94,7 @@ const routes: Array<RouteRecordRaw> = [
                         name: 'goods_info_hedge',
                         component: () => import('@/views/information/goods/list/hedging-variety/index.vue'),
                         meta: {
-                            requireAuth: true
+                            requireAuth: true,
                         },
                     },
                 ],
@@ -101,7 +104,7 @@ const routes: Array<RouteRecordRaw> = [
                 name: 'outaccount_status',
                 component: () => import('@/views/search/outaccount_status/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
                 },
             },
             {
@@ -109,7 +112,7 @@ const routes: Array<RouteRecordRaw> = [
                 name: 'inventory',
                 component: () => import('@/views/search/inventory/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
                 },
             },
             {
@@ -117,16 +120,18 @@ const routes: Array<RouteRecordRaw> = [
                 name: 'spot_contract',
                 component: () => import('@/views/information/spot-contract/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
+                },
+                redirect: (to) => {
+                    return { name: 'spot_contract_unsubmitted' };
                 },
-                redirect: to => { return { name: 'spot_contract_unsubmitted' } },
                 children: [
                     {
                         path: '/spot_contract/not-commit',
                         name: 'spot_contract_unsubmitted',
                         component: () => import('@/views/information/spot-contract/list/not-commit/index.vue'),
                         meta: {
-                            requireAuth: true
+                            requireAuth: true,
                         },
                     },
                     {
@@ -134,7 +139,7 @@ const routes: Array<RouteRecordRaw> = [
                         name: 'spot_contract_checkpending',
                         component: () => import('@/views/information/spot-contract/list/done/index.vue'),
                         meta: {
-                            requireAuth: true
+                            requireAuth: true,
                         },
                     },
                     {
@@ -142,7 +147,7 @@ const routes: Array<RouteRecordRaw> = [
                         name: 'spot_contract_performance',
                         component: () => import('@/views/information/spot-contract/list/peddding/index.vue'),
                         meta: {
-                            requireAuth: true
+                            requireAuth: true,
                         },
                     },
                     {
@@ -150,26 +155,28 @@ const routes: Array<RouteRecordRaw> = [
                         name: 'spot_contract_finished',
                         component: () => import('@/views/information/spot-contract/list/performance/index.vue'),
                         meta: {
-                            requireAuth: true
+                            requireAuth: true,
                         },
                     },
-                ]
+                ],
             },
             {
                 path: '/warehouse_info',
                 name: 'warehouse_info',
                 component: () => import('@/views/information/warehouse-info/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
+                },
+                redirect: (to) => {
+                    return { name: 'warehouse_info_normal' };
                 },
-                redirect: to => { return { name: 'warehouse_info_normal' } },
                 children: [
                     {
                         path: '/warehouse_info/normal',
                         name: 'warehouse_info_normal',
                         component: () => import('@/views/information/warehouse-info/list/normal-use/index.vue'),
                         meta: {
-                            requireAuth: true
+                            requireAuth: true,
                         },
                     },
                     {
@@ -177,17 +184,17 @@ const routes: Array<RouteRecordRaw> = [
                         name: 'warehouse_info_disabled',
                         component: () => import('@/views/information/warehouse-info/list/stop-use/index.vue'),
                         meta: {
-                            requireAuth: true
+                            requireAuth: true,
                         },
                     },
-                ]
+                ],
             },
             {
                 path: '/exposure',
                 name: 'exposure',
                 component: () => import('@/views/business/exposure/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
                 },
             },
             {
@@ -195,7 +202,7 @@ const routes: Array<RouteRecordRaw> = [
                 name: 'plan',
                 component: () => import('@/views/business/plan/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
                 },
             },
             {
@@ -203,16 +210,18 @@ const routes: Array<RouteRecordRaw> = [
                 name: 'purchase',
                 component: () => import('@/views/business/purchase/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
+                },
+                redirect: (to) => {
+                    return { name: EnumType.Purchase.realTime };
                 },
-                redirect: to => { return { name: EnumType.Purchase.realTime } },
                 children: [
                     {
                         path: '/purchase/forward',
                         name: EnumType.Purchase.forward,
                         component: () => import('@/views/business/purchase/list/forward/index.vue'),
                         meta: {
-                            requireAuth: true
+                            requireAuth: true,
                         },
                     },
                     {
@@ -220,7 +229,7 @@ const routes: Array<RouteRecordRaw> = [
                         name: EnumType.Purchase.history,
                         component: () => import('@/views/business/purchase/list/history/index.vue'),
                         meta: {
-                            requireAuth: true
+                            requireAuth: true,
                         },
                     },
                     {
@@ -228,7 +237,7 @@ const routes: Array<RouteRecordRaw> = [
                         name: EnumType.Purchase.realTime,
                         component: () => import('@/views/business/purchase/list/real-time/index.vue'),
                         meta: {
-                            requireAuth: true
+                            requireAuth: true,
                         },
                     },
                     {
@@ -236,17 +245,17 @@ const routes: Array<RouteRecordRaw> = [
                         name: EnumType.Purchase.spot,
                         component: () => import('@/views/business/purchase/list/spot/index.vue'),
                         meta: {
-                            requireAuth: true
+                            requireAuth: true,
                         },
                     },
-                ]
+                ],
             },
             {
                 path: '/sell',
                 name: 'sell',
                 component: () => import('@/views/business/sell/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
                 },
             },
             {
@@ -254,7 +263,7 @@ const routes: Array<RouteRecordRaw> = [
                 name: 'business_review',
                 component: () => import('@/views/manage/business-review/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
                 },
             },
             {
@@ -262,7 +271,7 @@ const routes: Array<RouteRecordRaw> = [
                 name: 'finance_review',
                 component: () => import('@/views/manage/finance-review/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
                 },
             },
             {
@@ -270,7 +279,7 @@ const routes: Array<RouteRecordRaw> = [
                 name: 'inventory_review',
                 component: () => import('@/views/manage/inventory-review/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
                 },
             },
             {
@@ -278,7 +287,7 @@ const routes: Array<RouteRecordRaw> = [
                 name: 'exposure_report',
                 component: () => import('@/views/report/exposure-report/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
                 },
             },
             {
@@ -286,7 +295,7 @@ const routes: Array<RouteRecordRaw> = [
                 name: 'finance_report',
                 component: () => import('@/views/report/finance-report/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
                 },
             },
             {
@@ -294,7 +303,7 @@ const routes: Array<RouteRecordRaw> = [
                 name: 'inventory_report',
                 component: () => import('@/views/report/inventory-report/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
                 },
             },
             {
@@ -302,7 +311,7 @@ const routes: Array<RouteRecordRaw> = [
                 name: 'spot_report',
                 component: () => import('@/views/report/spot-report/index.vue'),
                 meta: {
-                    requireAuth: true
+                    requireAuth: true,
                 },
             },
         ],

+ 0 - 0
src/setup/methods/router/index.ts → src/router/operation/index.ts


+ 1 - 1
src/services/bus/error.ts

@@ -1,6 +1,6 @@
 import APP from '@/services';
 import { ErrorCodeList } from '@/services/dataCenter/interafce/error';
-import { localStorageUtil } from '@/utils/tool/storage';
+import { localStorageUtil } from '@/utils/storage';
 
 /**
  * 通过错误码找到对应的错误信息

+ 8 - 8
src/services/bus/index.ts

@@ -1,5 +1,5 @@
-import { GetPCMenus, QueryTableDefine } from '@/goServiceAPI/commonService/index';
-import { LoginQuery } from '@/goServiceAPI/useInfo/index';
+import { GetPCMenus, QueryTableDefine } from '@/services/go/commonService/index';
+import { LoginQuery } from '@/services/go/useInfo/index';
 import APP from '@/services';
 import { getAccoutIdList } from '@/services/bus/account';
 import { isLogin } from '@/services/bus/login';
@@ -11,8 +11,8 @@ import { getServerTime, queryErrorInfos } from '@/services/http/system/index';
 import { queryAccountInfo, queryAreaRoleMarket, queryTaAccountMarket, queryTradeDate } from '@/services/socket/account/index';
 import { querySystemParam } from '@/services/socket/error/index';
 import ProtobufCtr from '@/services/socket/protobuf/index';
-import { setServiceURL } from '@/utils/request/serviceURL';
-import { localStorageUtil } from '@/utils/tool/storage';
+import { setServiceURL } from '@/services/request/serviceURL';
+import { localStorageUtil } from '@/utils/storage';
 import { message } from 'ant-design-vue';
 import { pollingNotice } from '../http/notice';
 
@@ -104,11 +104,11 @@ export async function queryAfterLogin(): Promise<string> {
             }),
             isArea()
                 ? queryAreaRoleMarket().catch((err: string) => {
-                    throw '投资者查根据经纪会员查市场权限 查询失败: ' + err;
-                })
+                      throw '投资者查根据经纪会员查市场权限 查询失败: ' + err;
+                  })
                 : queryTaAccountMarket().catch((err: string) => {
-                    throw '非投资者查资金市场权限 查询失败: ' + err;
-                }),
+                      throw '非投资者查资金市场权限 查询失败: ' + err;
+                  }),
             querySystemParam().catch(() => {
                 throw '查询系统参数 查询失败';
             }),

+ 3 - 3
src/services/bus/login.ts

@@ -1,8 +1,8 @@
-import { GetPCMenus, getServerTime, QueryTableDefine } from '@/goServiceAPI/commonService/index';
-import { GetLoginID, LoginQuery } from '@/goServiceAPI/useInfo/index';
+import { GetPCMenus, getServerTime, QueryTableDefine } from '@/services/go/commonService/index';
+import { GetLoginID, LoginQuery } from '@/services/go/useInfo/index';
 import APP from '@/services';
 import { checkTokenLoop } from '@/services/bus/token';
-import { sessionStorageUtil } from '@/utils/tool/storage/index';
+import { sessionStorageUtil } from '@/utils/storage/index';
 import Long from 'long';
 import { logoutResponse } from '../socket/login';
 import { loginAction } from '../socket/login/index';

+ 4 - 4
src/services/bus/table.ts

@@ -1,4 +1,4 @@
-import { Column, TableDefineRsp } from '@/goServiceAPI/commonService/interface';
+import { Column, TableDefineRsp } from '@/services/go/commonService/interface';
 import APP from '@/services';
 
 interface CustomRender {
@@ -9,7 +9,7 @@ export interface ColumnType {
     key: string;
     dataIndex: string;
     title: string;
-    align: string;  //  AlignType 对齐方式 - 1:居中对齐 2:左对齐 3:右对齐
+    align: string; //  AlignType 对齐方式 - 1:居中对齐 2:左对齐 3:右对齐
     filteredValue?: string | null;
     slots?: CustomRender;
     onFilter?: Function;
@@ -26,5 +26,5 @@ interface TableKey {
  */
 export function getTableHead(tableKey: keyof TableKey): Column[] {
     const result = APP.get('tableHead').find((e: TableDefineRsp) => e.tablekey === tableKey);
-    return result ? result.columns : []
-}
+    return result ? result.columns : [];
+}

+ 1 - 1
src/services/bus/token.ts

@@ -1,6 +1,6 @@
 import APP from '@/services';
 import { tokenCheck } from '@/services/socket/login/index';
-import timerUtil from '@/utils/tool/timerUtil';
+import timerUtil from '@/utils/timer/timerUtil';
 import { getLoginData } from '@/services/bus/login';
 import Router from '@/router';
 

+ 15 - 15
src/services/dataCenter/initDataModel/account.ts

@@ -1,6 +1,6 @@
 import { LastUpdateTime, TradeDate } from '@/services/dataCenter/interafce/account';
 import Long from 'long';
-import { Loginaccount, Userinfo, Useraccount }from '@/goServiceAPI/useInfo/interface'
+import { Loginaccount, Userinfo, Useraccount } from '@/services/go/useInfo/interface';
 
 /**
  *  获取最后更新时间模型类
@@ -31,41 +31,41 @@ export class UserInfoModel implements Userinfo {
     bankcardfrontphotourl = '';
     bankid = '';
     bankname = '';
-    biznature  = 0;
+    biznature = 0;
     bizscope = '';
     cardbackphotourl = '';
     cardfrontphotourl = '';
     cardnum = '';
-    cardtypeid  = 0;
-    cityid  = 0;
+    cardtypeid = 0;
+    cityid = 0;
     company = '';
     contactname = '';
-    countryid  = 0;
+    countryid = 0;
     createtime = '';
-    creatorid  = 0;
+    creatorid = 0;
     customername = '';
-    districtid  = 0;
+    districtid = 0;
     email = '';
     fax = '';
     halfbodyphotourl = '';
-    hasencrypt  = 0;
+    hasencrypt = 0;
     headurl = '';
     legalcardbackphotourl = '';
     legalcardfrontphotourl = '';
     legalpersonname = '';
     mobile = '';
     mobile2 = '';
-    modifierid  = 0;
+    modifierid = 0;
     modifiertime = '';
-    needinvoice: 1
+    needinvoice: 1;
     nickname = '';
-    openmode  = 0;
+    openmode = 0;
     otherurl = '';
     postalcode = '';
-    provinceid  = 0;
+    provinceid = 0;
     qq = '';
     remark = '';
-    sex  = 0;
+    sex = 0;
     signpdfurl = '';
     telphone = '';
     userid = 0;
@@ -91,8 +91,8 @@ export class TradeDateModel implements TradeDate {
 }
 
 export class LoginaccountModel implements Loginaccount {
-    canoutin  = 0;
-    clientroleid  = 0;
+    canoutin = 0;
+    clientroleid = 0;
     haslogined = 0;
     hasupdatedpwd = 0;
     lastloginip = '';

+ 2 - 3
src/services/dataCenter/interface.ts

@@ -1,5 +1,5 @@
-import { OperationTabMenu, TableDefineRsp } from '@/goServiceAPI/commonService/interface';
-import * as useInfo from '@/goServiceAPI/useInfo/interface';
+import { OperationTabMenu, TableDefineRsp } from '@/services/go/commonService/interface';
+import * as useInfo from '@/services/go/useInfo/interface';
 import * as mineType from '@/services/http/mine/interface';
 import * as Type from '@/services/http/notice/interface';
 import * as advert from '../http/advert/interface';
@@ -35,7 +35,6 @@ export interface NeedClearSourceDataType {
     menus: OperationTabMenu[]; // 交易端菜单
     tableHead: TableDefineRsp[]; // 动态表头
 
-
     queryClientFixedADConfigs: advert.fixedADConfigs[]; //首页图片广告
     checkTokenTimeDiff: number; // 轮休校验token时间差
     accountList: AccountListItem[]; // 资金账户列表

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


+ 3 - 4
src/goServiceAPI/commonService/index.ts → src/services/go/commonService/index.ts

@@ -1,6 +1,6 @@
 import APP from '@/services';
 import { getLongTypeLoginID } from '@/services/bus/login';
-import { localStorageUtil } from '@/utils/tool/storage';
+import { localStorageUtil } from '@/utils/storage';
 import moment from 'moment';
 import { commonSearch_go } from '../index';
 import * as type from './interface';
@@ -93,7 +93,7 @@ export function GetPCMenus(): Promise<string> {
 
 /**
  * 查询交易端列表头信息
- * @returns 
+ * @returns
  */
 export function QueryTableDefine(): Promise<type.TableDefineRsp[]> {
     const param = {
@@ -102,11 +102,10 @@ export function QueryTableDefine(): Promise<type.TableDefineRsp[]> {
     return commonSearch_go('/Common/QueryTableDefine', param)
         .then((res) => {
             console.log('查询交易端列表头信息', res);
-            APP.set('tableHead', res)
+            APP.set('tableHead', res);
             return res;
         })
         .catch((err: Error) => {
             throw new Error(`查询交易端列表头信息:${err.message}`);
         });
 }
-

+ 0 - 0
src/goServiceAPI/commonService/interface.ts → src/services/go/commonService/interface.ts


+ 2 - 1
src/goServiceAPI/ermcp/business-review/index.ts → src/services/go/ermcp/business-review/index.ts

@@ -1 +1,2 @@
-/** ================================= 业务审核 ================================**/
+/** ================================= 业务审核 ================================**/
+

+ 0 - 0
src/goServiceAPI/ermcp/business-review/interface.ts → src/services/go/ermcp/business-review/interface.ts


+ 52 - 0
src/services/go/ermcp/customInfo/index.ts

@@ -0,0 +1,52 @@
+/** ================================= 客户资料 ================================**/
+
+import { BaseResponse, commonSearch_go, commonUpdate_go } from '@/services/go/index';
+import APP from '@/services';
+import { QueryCustomInfoEnum } from './type';
+import { AddUserInfoApplyReq, ModifyUserInfoApplyReq, QueryCustomInfoType } from './interface';
+
+/**
+ * 查询客户资料
+ * @param MemberUserID  所属机构用户ID
+ * @param queryType 查询类型(1:未提交 2:待审核 3:正常 4:停用)
+ * @returns
+ */
+export function QueryCustomInfo(queryType: QueryCustomInfoEnum): Promise<QueryCustomInfoType[]> {
+    const MemberUserID = APP.get('userAccount').memberuserid;
+    return commonSearch_go('/Ermcp/QueryUserInfo', { MemberUserID, queryType }).catch((err) => {
+        throw new Error(`查询客户资料: ${err.message}`);
+    });
+}
+
+/**
+ * 新增客户申请
+ * @param userInfoApply
+ * @constructor
+ */
+export function QueryAddUserInfoApply(userInfoApply: AddUserInfoApplyReq): Promise<BaseResponse> {
+    return commonUpdate_go('/Erms3/AddUserInfoApply', userInfoApply).catch((err) => {
+        throw new Error(`新增客户申请: ${err.message}`);
+    });
+}
+
+/**
+ * 修改客户申请 /Erms3/ModifyUserInfoApply
+ * @param userInfoApply
+ * @constructor
+ */
+export function QueryModifyUserInfoApply(userInfoApply: ModifyUserInfoApplyReq): Promise<BaseResponse> {
+    return commonUpdate_go('/Erms3/ModifyUserInfoApply', userInfoApply).catch((err) => {
+        throw new Error(`修改客户申请: ${err.message}`);
+    });
+}
+
+/**
+ * 删除客户申请
+ * @param userId 用户id  只可删除 UserState = 1 (未提交)状态的申请信息
+ * @constructor
+ */
+export function QueryDeleteUserInfoApply(userId: number): Promise<BaseResponse> {
+    return commonUpdate_go('/Erms3/DeleteUserInfoApply', { userId }, 'get').catch((err) => {
+        throw new Error(`删除客户申请: ${err.message}`);
+    });
+}

+ 0 - 0
src/goServiceAPI/ermcp/customInfo/interface.ts → src/services/go/ermcp/customInfo/interface.ts


+ 0 - 0
src/goServiceAPI/ermcp/customInfo/type.ts → src/services/go/ermcp/customInfo/type.ts


+ 5 - 6
src/goServiceAPI/ermcp/exposure-report/index.ts → src/services/go/ermcp/exposure-report/index.ts

@@ -2,19 +2,18 @@
 
 import APP from '@/services';
 import * as type from './interface';
-import {commonSearch_go} from '@/goServiceAPI/index';
-import {QueryExposureDayReportReq} from "./interface";
+import { commonSearch_go } from '@/services/go/index';
+import { QueryExposureDayReportReq } from './interface';
 
 /**
  * 查询敞口日报表
  * @param queryInfo 查询信息
  * @returns 敞口日报表
  */
-export async function QueryExposureDayReport(queryInfo:QueryExposureDayReportReq):Promise<type.QueryExposureDayReportRsp[]>
-{
+export async function QueryExposureDayReport(queryInfo: QueryExposureDayReportReq): Promise<type.QueryExposureDayReportRsp[]> {
     try {
-        return commonSearch_go('/Ermcp/QryReportDayExposure',  queryInfo );
+        return commonSearch_go('/Ermcp/QryReportDayExposure', queryInfo);
     } catch (err) {
         throw new Error(err.message);
     }
-}
+}

+ 0 - 0
src/goServiceAPI/ermcp/exposure-report/interface.ts → src/services/go/ermcp/exposure-report/interface.ts


+ 86 - 0
src/services/go/ermcp/exposure/index.ts

@@ -0,0 +1,86 @@
+import APP from '@/services';
+import { commonSearch_go } from '@/services/go';
+import { Ermcp3AreaSpot, Ermcp3AreaSpotDetail, Ermcp3AreaSpotDetailReq, Ermcp3ExposureDetail, Ermcp3ExposureReq, ErmcpExposurePostion, ErmcpExposurePostionReq, ErmcpHedgePosition, ErmcpHedgePositionDetail, ErmcpHedgePositionDetailReq, ErmcpRealExposureModel } from '@/services/go/ermcp/exposure/interface';
+
+/** ================================= 敞口 ================================**/
+
+/**
+ * 请求实时敞口 (敞口 -> 实时敞口) /Ermcp/QueryRealtimeExposure
+ * @constructor
+ */
+export function QueryActualExposure(): Promise<ErmcpRealExposureModel[]> {
+    const AreaUserID = APP.get('userAccount').memberuserid; // 所属机构id
+    return commonSearch_go('/Ermcp/QueryRealtimeExposure', { AreaUserID }).catch((err) => {
+        throw new Error(`查询敞口 -> 实时敞口: ${err.message}`);
+    });
+}
+
+/**
+ * 请求实时敞口现货明细信息 (敞口 ->实时敞口 -> 现货明细) /Ermcp3/QueryExposureDetail
+ * @param req.middlegoodsid 套保商品
+ * @constructor
+ */
+export function QueryActualExposureDetail(req: Ermcp3ExposureReq): Promise<Ermcp3ExposureDetail[]> {
+    const areauserid = APP.get('userAccount').memberuserid; // 所属机构id
+    return commonSearch_go('/Ermcp3/QueryExposureDetail', { areauserid, ...req }).catch((err) => {
+        throw new Error(`查询敞口 ->实时敞口 -> 现货明细: ${err.message}`);
+    });
+}
+
+/**
+ * 查询实时敞口期货头寸明细 (敞口 ->实时敞口 -> 期货明细) /Ermcp/QueryRealtimeExposurePosition
+ * @param req.middleGoodsId 套保商品ID
+ * @constructor
+ */
+export function QueryAutualExposurePosition(req: ErmcpExposurePostionReq): Promise<ErmcpExposurePostion[]> {
+    const areaUserId = APP.get('userAccount').memberuserid; // 所属机构id
+    return commonSearch_go('/Ermcp3/QueryExposureDetail', { areaUserId, ...req }).catch((err) => {
+        throw new Error(`查询敞口 ->实时敞口 -> 期货明细: ${err.message}`);
+    });
+}
+
+/**
+ * 请求敞口现货头寸 (敞口 -> 现货头寸) /Ermcp3/QueryExposureSpot
+ * @constructor
+ */
+export function QuerySpotPosition(): Promise<Ermcp3AreaSpot[]> {
+    const areauserid = APP.get('userAccount').memberuserid; // 所属机构id
+    return commonSearch_go('/Ermcp3/QueryExposureSpot', { areauserid }).catch((err) => {
+        throw new Error(`查询敞口 -> 现货头寸: ${err.message}`);
+    });
+}
+
+/**
+ * 查询敞口现货头寸明细(敞口 -> 现货头寸 -> 现货明细) /Ermcp3/QueryExposureSpotDetail
+ * req.deliverygoodsid  现货品种ID
+ * @constructor
+ */
+export function QuerySpotPositionDetail(req: Ermcp3AreaSpotDetailReq): Promise<Ermcp3AreaSpotDetail[]> {
+    const areauserid = APP.get('userAccount').memberuserid; // 所属机构id
+    return commonSearch_go('/Ermcp3/QueryExposureSpotDetail', { areauserid, ...req }).catch((err) => {
+        throw new Error(`查询敞口 -> 现货头寸 -> 现货明细: ${err.message}`);
+    });
+}
+
+/**
+ * 查询敞口期货头寸(菜单:敞口-> 期货头寸) /Ermcp/QueryExposureHedgePosition
+ * @constructor
+ */
+export function QueryExposureHedgePosition(): Promise<ErmcpHedgePosition> {
+    const areaUserId = APP.get('userAccount').memberuserid; // 所属机构id
+    return commonSearch_go('/Ermcp/QueryExposureHedgePosition', { areaUserId }).catch((err) => {
+        throw new Error(`查询敞口 -> 期货头寸: ${err.message}`);
+    });
+}
+
+/**
+ * 查询敞口期货头寸期货明细(菜单:敞口 -> 期货头寸 -> 期货明细) /Ermcp/QueryExposureHedgePositionDetail
+ * @param req.goodsId  商品id
+ * @constructor
+ */
+export function QueryExposureHedgePositionDetail(req: ErmcpHedgePositionDetailReq): Promise<ErmcpHedgePositionDetail[]> {
+    const areaUserId = APP.get('userAccount').memberuserid; // 所属机构id
+    return commonSearch_go('/Ermcp/QueryExposureHedgePositionDetail', { areaUserId, ...req }).catch((err) => {
+        throw new Error(`查询敞口->期货头寸->期货明细: ${err.message}`);
+    });
+}

+ 0 - 0
src/goServiceAPI/ermcp/exposure/interface.ts → src/services/go/ermcp/exposure/interface.ts


+ 15 - 19
src/goServiceAPI/ermcp/finance-report/index.ts → src/services/go/ermcp/finance-report/index.ts

@@ -2,19 +2,18 @@
 
 import APP from '@/services';
 import * as type from './interface';
-import {commonSearch_go} from '@/goServiceAPI/index';
-import {QueryFinanceDayReportReq} from "./interface";
-import {QueryFinanceMonthReportReq} from "./interface";
+import { commonSearch_go } from '@/services/go/index';
+import { QueryFinanceDayReportReq } from './interface';
+import { QueryFinanceMonthReportReq } from './interface';
 
 /**
  * 查询财务日报表
  * @param queryInfo 查询信息
  * @returns 财务日报表数据
  */
-export async function QueryFinanceDayReport(queryInfo:QueryFinanceDayReportReq):Promise<type.QueryFinanceDayReportRsp[]>
-{
+export async function QueryFinanceDayReport(queryInfo: QueryFinanceDayReportReq): Promise<type.QueryFinanceDayReportRsp[]> {
     try {
-        return commonSearch_go('/Ermcp/QryReportDayFinance',  queryInfo );
+        return commonSearch_go('/Ermcp/QryReportDayFinance', queryInfo);
     } catch (err) {
         throw new Error(err.message);
     }
@@ -25,10 +24,9 @@ export async function QueryFinanceDayReport(queryInfo:QueryFinanceDayReportReq):
  * @param queryInfo 查询信息
  * @returns 财务发票日报表
  */
-export async function QueryFinanceInvoiceDayReport(queryInfo:QueryFinanceDayReportReq):Promise<type.QueryFinanceInvoiceDayReportRsp[]>
-{
+export async function QueryFinanceInvoiceDayReport(queryInfo: QueryFinanceDayReportReq): Promise<type.QueryFinanceInvoiceDayReportRsp[]> {
     try {
-        return commonSearch_go('/Ermcp/QryReportDayFinanceFp', queryInfo );
+        return commonSearch_go('/Ermcp/QryReportDayFinanceFp', queryInfo);
     } catch (err) {
         throw new Error(err.message);
     }
@@ -39,8 +37,7 @@ export async function QueryFinanceInvoiceDayReport(queryInfo:QueryFinanceDayRepo
  * @param queryInfo 查询信息
  * @returns 财务付款日报表
  */
-export async function QueryFinancePayDayReport(queryInfo:QueryFinanceDayReportReq):Promise<type.QueryFinancePayDayReportRsp[]>
-{
+export async function QueryFinancePayDayReport(queryInfo: QueryFinanceDayReportReq): Promise<type.QueryFinancePayDayReportRsp[]> {
     try {
         return commonSearch_go('/Ermcp/QryReportDayFinanceKx', { queryInfo });
     } catch (err) {
@@ -53,11 +50,10 @@ export async function QueryFinancePayDayReport(queryInfo:QueryFinanceDayReportRe
  * @param queryInfo 查询信息
  * @returns 财务月报表数据
  */
- export async function QueryFinanceMonthReport(queryInfo:QueryFinanceMonthReportReq):Promise<type.QueryFinanceMonthReportRsp[]>
- {
-     try {
-         return commonSearch_go('/Ermcp/QryReportMonthFinance', { queryInfo });
-     } catch (err) {
-         throw new Error(err.message);
-     }
- }
+export async function QueryFinanceMonthReport(queryInfo: QueryFinanceMonthReportReq): Promise<type.QueryFinanceMonthReportRsp[]> {
+    try {
+        return commonSearch_go('/Ermcp/QryReportMonthFinance', { queryInfo });
+    } catch (err) {
+        throw new Error(err.message);
+    }
+}

+ 0 - 0
src/goServiceAPI/ermcp/finance-report/interface.ts → src/services/go/ermcp/finance-report/interface.ts


+ 0 - 0
src/goServiceAPI/ermcp/finance-review/index.ts → src/services/go/ermcp/finance-review/index.ts


+ 0 - 0
src/goServiceAPI/ermcp/finance-review/interface.ts → src/services/go/ermcp/finance-review/interface.ts


+ 40 - 0
src/services/go/ermcp/goodsInfo/index.ts

@@ -0,0 +1,40 @@
+/** ================================= 商品信息 ================================**/
+
+import APP from '@/services';
+import { commonSearch_go } from '@/services/go/index';
+import { Ermcp3Brand, Ermcp3Wrstandard, ErmcpDeliveryGoodsReq, ErmcpDeliveryGoodsRsp } from './interface';
+
+/**
+ * 查询现货商品 /Ermcp3/QueryDeliveryGoods
+ * @param excluudecfg 排除已配置的现货商品 1-排除
+ * @constructor
+ */
+export function QueryDeliveryGoods(req: ErmcpDeliveryGoodsReq): Promise<ErmcpDeliveryGoodsRsp[]> {
+    const areauserid = APP.get('userAccount').memberuserid; // 所属机构id
+    return commonSearch_go('/Ermcp3/QueryDeliveryGoods', { areauserid, ...req }).catch((err) => {
+        throw new Error(`查询现货商品: ${err.message}`);
+    });
+}
+
+/**
+ * 查询商品品类 /Ermcp3/QueryGoodsWrstandard
+ * @param deliverygoodsid 现货商品id
+ * @constructor
+ */
+export function QueryGoodsWrstandard(deliverygoodsid: number): Promise<Ermcp3Wrstandard[]> {
+    const areauserid = APP.get('userAccount').memberuserid; // 所属机构id
+    return commonSearch_go('/Ermcp3/QueryGoodsWrstandard', { areauserid, deliverygoodsid }).catch((err) => {
+        throw new Error(`查询商品品类: ${err.message}`);
+    });
+}
+
+/**
+ * 查询商品品牌 /Ermcp3/QueryGoodsbrand
+ * @constructor
+ */
+export function QueryGoodsbrand(): Promise<Ermcp3Brand[]> {
+    const areauserid = APP.get('userAccount').memberuserid; // 所属机构id
+    return commonSearch_go('/Ermcp3/QueryGoodsbrand', { areauserid }).catch((err) => {
+        throw new Error(`查询商品品牌: ${err.message}`);
+    });
+}

+ 35 - 0
src/goServiceAPI/ermcp/goodsInfo/interface.ts → src/services/go/ermcp/goodsInfo/interface.ts

@@ -29,3 +29,38 @@ export interface ErmcpDeliveryGoodsRsp{
     standardqty	:number;//标准数量(库位数量) [标准品特有]
     standardqtyrange	:number;//标准数量偏差范围 [标准品特有]
 }
+
+/**
+ * 现货商品品类
+ */
+export interface Ermcp3Wrstandard{
+    areauserid	:number;//所属机构
+    convertfactor	:number;//标仓系数
+    createtime	:string;//创建时间
+    creatorid	:number;//创建人
+    deliverygoodsid	:number;//现货品种ID
+    enumdicname	:string;//品类单位名称
+    isvalid	:number;//是否有效 number;
+//-无效(停用) 1-有效(正常)
+    minivalue	:number;//最小变动值
+    minivaluedp	:number;//最小变动值小数位
+    realminivalue	:number;//实际最小变动值
+    realminivaluedp	:number;//实际最小变动值小数位
+    remark	:string;//备注
+    unitid	:number;//品类单位ID
+    updatetime	:string;//更新时间
+    wrstandardcode	:string;//品类代码
+    wrstandardid	:number;//品类ID(SEQ_WRSTANDARD)
+    wrstandardname	:string;//品类名称
+}
+
+/**
+ * 现货商品品牌
+ */
+export interface Ermcp3Brand{
+    areauserid	:number;//用户id
+    brandid	:number;//品牌id
+    brandname	:string;//品牌名称
+    deliverygoodsid	:number;//品种ID
+}
+

+ 31 - 0
src/services/go/ermcp/inventory-report/index.ts

@@ -0,0 +1,31 @@
+/** ================================= 库存报表 ================================**/
+import APP from '@/services';
+import * as type from './interface';
+import { commonSearch_go } from '@/services/go/index';
+import { QueryAreaStockReportReq } from './interface';
+import { QueryAreaStockReportDetailReq } from './interface';
+/**
+ * 查询库存报表
+ * @param queryInfo 查询信息
+ * @returns 库存报表
+ */
+export async function QueryAreaStockReport(queryInfo: QueryAreaStockReportReq): Promise<type.QueryAreaStockReportRsp[]> {
+    try {
+        return commonSearch_go('/Ermcp3/QueryAreaStockReport', queryInfo);
+    } catch (err) {
+        throw new Error(err.message);
+    }
+}
+
+/**
+ * 查询库存明细报表
+ * @param queryInfo 查询信息
+ * @returns 库存明细报表
+ */
+export async function QueryAreaStockReportDetail(queryInfo: QueryAreaStockReportDetailReq): Promise<type.QueryAreaStockReportDetailRsp[]> {
+    try {
+        return commonSearch_go('/Ermcp3/QueryAreaStockReportDetail', queryInfo);
+    } catch (err) {
+        throw new Error(err.message);
+    }
+}

+ 0 - 0
src/goServiceAPI/ermcp/inventory-report/interface.ts → src/services/go/ermcp/inventory-report/interface.ts


+ 6 - 7
src/goServiceAPI/ermcp/inventory-review/index.ts → src/services/go/ermcp/inventory-review/index.ts

@@ -1,5 +1,5 @@
-import {commonSearch_go} from "@/goServiceAPI";
-import {Ermcp3AreaStockApply, QueryAreaStockApplyReq} from "@/goServiceAPI/ermcp/inventory-review/interface";
+import { commonSearch_go } from '@/services/go';
+import { Ermcp3AreaStockApply, QueryAreaStockApplyReq } from '@/services/go/ermcp/inventory-review/interface';
 
 /** ================================= 库存审核 ================================**/
 
@@ -9,8 +9,7 @@ import {Ermcp3AreaStockApply, QueryAreaStockApplyReq} from "@/goServiceAPI/ermcp
  * @constructor
  */
 export function QueryAreaStock(req: QueryAreaStockApplyReq): Promise<Ermcp3AreaStockApply[]> {
-    return commonSearch_go('/Ermcp3/QueryAreaStockApply', req)
-        .catch(err => {
-            throw new Error(`查询库存申请: ${err.message}`);
-        })
-}
+    return commonSearch_go('/Ermcp3/QueryAreaStockApply', req).catch((err) => {
+        throw new Error(`查询库存申请: ${err.message}`);
+    });
+}

+ 0 - 0
src/goServiceAPI/ermcp/inventory-review/interface.ts → src/services/go/ermcp/inventory-review/interface.ts


+ 0 - 0
src/goServiceAPI/ermcp/outaccount-status/index.ts → src/services/go/ermcp/outaccount-status/index.ts


+ 0 - 0
src/goServiceAPI/ermcp/outaccount-status/interface.ts → src/services/go/ermcp/outaccount-status/interface.ts


+ 16 - 0
src/services/go/ermcp/plan/index.ts

@@ -0,0 +1,16 @@
+import { commonSearch_go } from '@/services/go';
+import { Ermcp3HedgePlan } from '@/services/go/ermcp/plan/interface';
+
+/** ================================= 计划 ================================**/
+
+/**
+ * 查询套保计划 /Ermcp3/QueryHedgePlan
+ * @param userId 用户ID
+ * @param hedgeplanstatus 套保计划状态(允许多个,逗号隔开) - 0:未提交 1:待审核 2:执行中 3:正常完结 4:审核拒绝 5:异常完结 6:已撤回
+ * @constructor
+ */
+export function QueryHedgePlan(userId: number, hedgeplanstatus: string): Promise<Ermcp3HedgePlan[]> {
+    return commonSearch_go('/Erms3/QueryHedgePlan', { userId, hedgeplanstatus }).catch((err) => {
+        throw new Error(`查询套保计划: ${err.message}`);
+    });
+}

+ 24 - 0
src/services/go/ermcp/plan/interface.ts

@@ -0,0 +1,24 @@
+export interface Ermcp3HedgePlan{
+    areauserid	:number;//用户ID
+    audittime	:string;//审核时间
+    contracttype	:number;//计划类型 - 1:采购 -1:销售
+    convertfactor	:number;//标仓系数
+    createtime	:string;//创建时间
+    deliverygoodscode	:string;//现货品种代码
+    deliverygoodsid	:number;//现货品种ID
+    deliverygoodsname	:string;//现货品种名称
+    enumdicname	:string;//单位名称
+    hedgeplanid	:string;//套保计划ID(6number;
+//1+Unix秒时间戳(1number;
+//位)+xxxxxx)
+    hedgeplanno	:string;//套保计划编号(名称)
+    hedgeplanstatus	:number;//套保计划状态 - number;
+//:未提交 1:待审核 2:执行中 3:正常完结 4:审核拒绝 5:异常完结 6:已撤回
+    planqty	:number;//计划数量
+    plantime	:string;//计划时间
+    producttype	:number;//产品类型 - 1:标准仓单 2:等标 3:非标
+    remark	:string;//备注
+    spotgoodsdesc	:string;//商品型号
+    unitid	:number;//单位id
+    updatetime	:string;//更新时间
+}

+ 7 - 8
src/goServiceAPI/ermcp/purchase/index.ts → src/services/go/ermcp/purchase/index.ts

@@ -1,5 +1,5 @@
-import {commonSearch_go} from "@/goServiceAPI";
-import {Ermcp3SellBuyContract, SellBuyContractReq} from "@/goServiceAPI/ermcp/purchase/interface";
+import { commonSearch_go } from '@/services/go';
+import { Ermcp3SellBuyContract, SellBuyContractReq } from '@/services/go/ermcp/purchase/interface';
 
 /** ================================= 采购 ================================**/
 /**
@@ -12,9 +12,8 @@ import {Ermcp3SellBuyContract, SellBuyContractReq} from "@/goServiceAPI/ermcp/pu
  * @param req.contractid 合同ID(SpotContractId)
  * @constructor
  */
-export function QueryPurchase( req : SellBuyContractReq) : Promise<Ermcp3SellBuyContract[]>{
-    return commonSearch_go('/Ermcp3/QuerySpotContractBS', req)
-        .catch(err => {
-            throw new Error(`查询采购信息: ${err.message}`);
-        })
-}
+export function QueryPurchase(req: SellBuyContractReq): Promise<Ermcp3SellBuyContract[]> {
+    return commonSearch_go('/Ermcp3/QuerySpotContractBS', req).catch((err) => {
+        throw new Error(`查询采购信息: ${err.message}`);
+    });
+}

+ 0 - 0
src/goServiceAPI/ermcp/purchase/interface.ts → src/services/go/ermcp/purchase/interface.ts


+ 0 - 0
src/goServiceAPI/ermcp/search-inventory/index.ts → src/services/go/ermcp/search-inventory/index.ts


+ 0 - 0
src/goServiceAPI/ermcp/plan/interface.ts → src/services/go/ermcp/search-inventory/interface.ts


+ 7 - 8
src/goServiceAPI/ermcp/sell/index.ts → src/services/go/ermcp/sell/index.ts

@@ -1,6 +1,6 @@
 /** ================================= 销售 ================================**/
-import {Ermcp3SellBuyContract, SellBuyContractReq} from "@/goServiceAPI/ermcp/purchase/interface";
-import {commonSearch_go} from "@/goServiceAPI";
+import { Ermcp3SellBuyContract, SellBuyContractReq } from '@/services/go/ermcp/purchase/interface';
+import { commonSearch_go } from '@/services/go';
 
 /**
  * 查询销售信息(这个接口和采购是同一个接口) /Ermcp3/QuerySpotContractBS
@@ -12,9 +12,8 @@ import {commonSearch_go} from "@/goServiceAPI";
  * @param req.contractid 合同ID(SpotContractId)
  * @constructor
  */
-export function QueryWareHouse(req : SellBuyContractReq) : Promise<Ermcp3SellBuyContract[]>{
-    return commonSearch_go('/Ermcp3/QuerySpotContractBS', req)
-        .catch(err => {
-            throw new Error(`查询销售信息: ${err.message}`);
-        })
-}
+export function QueryWareHouse(req: SellBuyContractReq): Promise<Ermcp3SellBuyContract[]> {
+    return commonSearch_go('/Ermcp3/QuerySpotContractBS', req).catch((err) => {
+        throw new Error(`查询销售信息: ${err.message}`);
+    });
+}

+ 0 - 0
src/goServiceAPI/ermcp/search-inventory/interface.ts → src/services/go/ermcp/sell/interface.ts


+ 6 - 7
src/goServiceAPI/ermcp/spot-contract/index.ts → src/services/go/ermcp/spot-contract/index.ts

@@ -1,6 +1,6 @@
 /** ================================= 现货合同 ================================**/
-import { commonSearch_go } from "@/goServiceAPI";
-import { Ermcp3ContractReq, Ermcp3ContractRsp } from "@/goServiceAPI/ermcp/spot-contract/interface";
+import { commonSearch_go } from '@/services/go';
+import { Ermcp3ContractReq, Ermcp3ContractRsp } from '@/services/go/ermcp/spot-contract/interface';
 
 /**
  * 查询现货合同 /Ermcp3/QuerySpotContract
@@ -13,8 +13,7 @@ import { Ermcp3ContractReq, Ermcp3ContractRsp } from "@/goServiceAPI/ermcp/spot-
 export function QuerySpotContract(req: Ermcp3ContractReq): Promise<Ermcp3ContractRsp[]> {
     // const areauserid = APP.get('userAccount').memberuserid; // 所属机构id
     const areauserid = 10000; // 所属机构id
-    return commonSearch_go('/Ermcp3/QuerySpotContract', { areauserid, ...req })
-        .catch(err => {
-            throw new Error(`查询现货合同: ${err.message}`);
-        })
-}
+    return commonSearch_go('/Ermcp3/QuerySpotContract', { areauserid, ...req }).catch((err) => {
+        throw new Error(`查询现货合同: ${err.message}`);
+    });
+}

+ 0 - 0
src/goServiceAPI/ermcp/spot-contract/interface.ts → src/services/go/ermcp/spot-contract/interface.ts


+ 59 - 0
src/services/go/ermcp/spot-report/index.ts

@@ -0,0 +1,59 @@
+/** ================================= 现货报表 ================================**/
+import APP from '@/services';
+import * as type from './interface';
+import { commonSearch_go } from '@/services/go/index';
+import { QuerySpotDayReportReq } from './interface';
+import { QuerySpotDayReportDetailReq } from './interface';
+import { QuerySpotMonthReportReq } from './interface';
+import { QuerySpotMonthReportDetailReq } from './interface';
+/**
+ * 查询现货报表
+ * @param queryInfo 查询信息
+ * @returns 现货报表
+ */
+export async function QuerySpotDayReport(queryInfo: QuerySpotDayReportReq): Promise<type.QuerySpotDayReportRsp[]> {
+    try {
+        return commonSearch_go('/Ermcp/QryReportDaySpot', queryInfo);
+    } catch (err) {
+        throw new Error(err.message);
+    }
+}
+
+/**
+ * 查询现货明细报表
+ * @param queryInfo 查询信息
+ * @returns 现货明细报表
+ */
+export async function QuerySpotDayReportDetail(queryInfo: QuerySpotDayReportDetailReq): Promise<type.QuerySpotDayReportDetailRsp[]> {
+    try {
+        return commonSearch_go('/Ermcp/QryReportDaySpotDetail', queryInfo);
+    } catch (err) {
+        throw new Error(err.message);
+    }
+}
+
+/**
+ * 查询现货月报表
+ * @param queryInfo 查询信息
+ * @returns 现货月报表数据
+ */
+export async function QuerySpotMonthReport(queryInfo: QuerySpotMonthReportReq): Promise<type.QuerySpotMonthReportRsp[]> {
+    try {
+        return commonSearch_go('/Ermcp/QryReportMonthSpot', { queryInfo });
+    } catch (err) {
+        throw new Error(err.message);
+    }
+}
+
+/**
+ * 查询现货月报表明细
+ * @param queryInfo 查询信息
+ * @returns 现货月报表明细
+ */
+export async function QuerySpotMonthReportDetail(queryInfo: QuerySpotMonthReportDetailReq): Promise<type.QuerySpotMonthReportDetailRsp[]> {
+    try {
+        return commonSearch_go('/Ermcp/QryReportMonthSpotDetail', { queryInfo });
+    } catch (err) {
+        throw new Error(err.message);
+    }
+}

+ 0 - 0
src/goServiceAPI/ermcp/spot-report/interface.ts → src/services/go/ermcp/spot-report/interface.ts


+ 26 - 0
src/services/go/ermcp/warehouse-info/index.ts

@@ -0,0 +1,26 @@
+/** ================================= 仓库信息 ================================**/
+import { commonSearch_go } from '@/services/go';
+import { Ermcp3AreaStock, ErmcpWareHouseInfo, WareHouseInfoReq } from '@/services/go/ermcp/warehouse-info/interface';
+
+/**
+ * 查询仓库信息 /Ermcp/QueryWarehouseInfo
+ * @param req.userid 用户id(必填)
+ * @param req.status 仓库状态(可多项,逗号隔开) 1:正常 2:注销 3:待审核 4:审核拒绝
+ * @constructor
+ */
+export function QueryWareHouse(req: WareHouseInfoReq): Promise<ErmcpWareHouseInfo[]> {
+    return commonSearch_go('/Ermcp/QueryWarehouseInfo', req).catch((err) => {
+        throw new Error(`查询仓库信息: ${err.message}`);
+    });
+}
+
+/**
+ * 查询机构库存(库存管理/当前库存)
+ * @param userid 用户id
+ * @constructor
+ */
+export function QueryAreaStock(userid: number): Promise<Ermcp3AreaStock[]> {
+    return commonSearch_go('/Ermcp3/QueryAreaStock', { userid }).catch((err) => {
+        throw new Error(`查询机构库存(库存管理/当前库存): ${err.message}`);
+    });
+}

+ 60 - 0
src/services/go/ermcp/warehouse-info/interface.ts

@@ -0,0 +1,60 @@
+/**
+ * 查询仓单信息请求
+ */
+export interface WareHouseInfoReq {
+    userid: number // 用户ID
+    status?: string // 仓库状态(可多项,逗号隔开) 1:正常 2:注销 3:待审核 4:审核拒绝
+}
+/**
+ * 仓库信息
+ */
+export interface ErmcpWareHouseInfo {
+    address: string;//详细地址
+    areauserid: number;//所属机构
+    autoid: number;//自增ID(仓库ID)
+    cityid: number;//市
+    contactname: string;//联系人
+    contactnum: string;//联系电话
+    countryid: number;//国家
+    createtime: string;//创建时间
+    districtid: number;//区
+    hasvideo: number;//是否有视频 - number; //:无 1:有
+    provinceid: number;//省
+    remark: string;//审核备注
+    videourl: string;//视频地址
+    warehousecode: string;//仓库代码
+    warehousename: string;//仓库名称
+    warehousestatus: number;//仓库状态 - 1:正常 2:注销 3:待审核 4:审核拒绝
+    warehousetype: number;//仓库类型 - 1 厂库 2 自有库 3 合作库
+}
+
+/**
+ * 查询机构库存(库存管理/当前库存)
+ */
+export interface Ermcp3AreaStock{
+    brandname	:string;//品牌名称
+    curstock	:number;//期末库存量(今日量)
+    deliverygoodscode	:string;//现货品种代码
+    deliverygoodsid	:number;//现货品种id
+    deliverygoodsname	:string;//现货品种名称
+    enumdicname	:string;//单位名称
+    goodsunitid	:number;//现货商品单位id
+    oristock	:number;//期初库存量(昨日量)
+    spotgoodsbrandid	:number;//现货品牌ID
+    todaybuyinqty	:number;//今日采购入库量
+    todayproduceinqty	:number;//今日生产入库量
+    todayproduceoutqty	:number;//今日生产出库量
+    todayselloutqty	:number;//今日销售出库量
+    unitid	:number;//单位id
+    updatetime	:string;//更新时间
+    userid	:number;//机构ID
+    username	:string;//机构名称
+    warehousecode	:string;//仓库代码
+    warehouseinfoid	:string;//仓库ID
+    warehousename	:string;//仓库名称
+    warehousetype	:number;//仓库类型 - 1 厂库 2 自有库 3 合作库
+    wrstandardcode	:string;//品类代码
+    wrstandardid	:string;//品类ID
+    wrstandardname	:string;//品类名称
+}
+

+ 9 - 10
src/goServiceAPI/index.ts → src/services/go/index.ts

@@ -1,5 +1,5 @@
-import { request, goCommonSearchUrl } from '@/utils/request/index';
-import { Method } from 'axios'
+import { request, goCommonSearchUrl } from '@/services/request/index';
+import { Method } from 'axios';
 
 /**
  *  go 接口通用查询
@@ -18,10 +18,9 @@ export function commonSearch_go(url: string, params: Object, method: Method = 'g
         .catch((err) => Promise.reject(err));
 }
 
-
-export interface BaseResponse{
-    result: boolean
-    message: String
+export interface BaseResponse {
+    result: boolean;
+    message: String;
 }
 
 /**
@@ -37,10 +36,10 @@ export function commonUpdate_go(url: string, params: Object, method: Method = 'p
         params,
     })
         .then((value) => {
-             return {
+            return {
                 result: value.data.code === 200 ? true : false,
-                message: value.data.msg
-            }
+                message: value.data.msg,
+            };
         })
         .catch((err) => Promise.reject(err));
-}
+}

+ 0 - 0
src/goServiceAPI/quote/enum.ts → src/services/go/quote/enum.ts


+ 0 - 0
src/goServiceAPI/quote/index.ts → src/services/go/quote/index.ts


+ 0 - 0
src/goServiceAPI/quote/interface.ts → src/services/go/quote/interface.ts


+ 0 - 0
src/goServiceAPI/useInfo/index.ts → src/services/go/useInfo/index.ts


+ 0 - 0
src/goServiceAPI/useInfo/interface.ts → src/services/go/useInfo/interface.ts


+ 1 - 1
src/services/http/account/index.ts

@@ -1,4 +1,4 @@
-import { request, goCommonSearchUrl } from '@/utils/request/index';
+import { request, goCommonSearchUrl } from '@/services/request/index';
 import * as type from './interface';
 
 /**

+ 1 - 1
src/services/http/advert/index.ts

@@ -1,4 +1,4 @@
-import { request, goCommonSearchUrl } from '@/utils/request/index';
+import { request, goCommonSearchUrl } from '@/services/request/index';
 import { AxiosPromise } from 'axios';
 import * as advert from './interface';
 

+ 1 - 1
src/services/http/getconf.ts

@@ -1,4 +1,4 @@
-import { request } from '@/utils/request/index';
+import { request } from '@/services/request/index';
 /**
  * 获取 config文件下的配置信息
  */

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません