Переглянути джерело

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

li.shaoyi 4 роки тому
батько
коміт
ec246e5e47

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

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

+ 1 - 2
src/common/setup/table/button.ts

@@ -1,11 +1,11 @@
 import { BtnClassName, BtnListType } from '@/common/components/btnList/interface';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
+import router from '@/router';
 import { OperationTabMenu, OperationTabMenuAuth } from '@/services/go/commonService/interface';
 import { sessionStorageUtil } from "@/utils/storage";
 import { inject, ref, Ref, toRaw, unref } from 'vue';
 import { openModal } from "../modal";
 import { ButtonListKey } from './interface';
-import router from '@/router'
 
 /**
  * 获取class 名
@@ -242,7 +242,6 @@ export function getButtonList(menuType: EnumRouterName, hasDetail: boolean) {
             //         result.push(item)
             //     }
             // }
-            debugger
         })
     }
     // 详情

+ 2 - 3
src/common/setup/table/compose.ts

@@ -4,12 +4,12 @@ import { handleContextMenu } from "@/common/components/contextMenu/setup";
 import { TabList } from '@/common/components/description/interface';
 import { getTableColumns, getTableEvent, initData } from "@/common/export/table";
 import { handleModalComponent } from '@/common/setup/asyncComponent';
+import { getClassName } from '@/common/setup/table/button';
 import { onUnmounted, ref, Ref } from "vue";
-import { getBtnList_, getOrderBtnList, getThirdMenuData } from "./button";
+import { getBtnList_, getThirdMenuData } from "./button";
 import { handleTableColums } from './clolumn';
 import { handleTableDrawer } from "./drawer";
 import { ComposeOrderTableParam, ComposeTableDetailParam, ComposeTableParam, TableEventCB, TableParam } from "./interface";
-import { getClassName } from '@/common/setup/table/button'
 
 export type { ComposeTableParam, ComposeTableDetailParam };
 
@@ -101,7 +101,6 @@ export function handleComposeTable_detail<T>({ queryFn, tableName, tableFilterKe
         // if (type === 3) {
         //     tabList.value.push({ lable: title, code })
         // }
-        debugger
     })
 
     initData(() => {

+ 22 - 6
src/layout/components/menu.vue

@@ -1,5 +1,12 @@
 <template>
-  <a-menu theme="dark" mode="inline" class="left-menu" v-model:selectedKeys="selectedKeys" v-model:openKeys="openKeys" @click="menuClick">
+  <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 filterMenu()" :key="item.code">
       <template #title>
         <span>
@@ -17,11 +24,11 @@
 </template>
 
 <script lang="ts">
-import { defineComponent, ref, SetupContext, unref, watchEffect } from 'vue';
-import APP from '@/services';
 import { initData } from '@/common/methods';
-import { OperationTabMenu } from '@/services/go/commonService/interface';
 import { getHasBottom } from '@/common/setup/order/orderData';
+import APP from '@/services';
+import { OperationTabMenu } from '@/services/go/commonService/interface';
+import { defineComponent, ref, SetupContext, watchEffect } from 'vue';
 import { useRoute } from 'vue-router';
 
 function handleMenu(context: SetupContext) {
@@ -97,6 +104,15 @@ export default defineComponent({
           secondeIndex = 0;
         for (let i = 0; i < list.length; i++) {
           for (let j = 0; j < list[i].children.length; j++) {
+            if (matched[1].name === 'dymanicMarket') {
+              // 处理动态市场 刷新问题
+              const code = 'market-' + route.query.id
+              if (code === list[i].children[j].code) {
+                firstIndex = i;
+                secondeIndex = j;
+                break
+              }
+            }
             if (matched[1].name === list[i].children[j].code) {
               firstIndex = i;
               secondeIndex = j;
@@ -118,9 +134,9 @@ export default defineComponent({
 </script>
 <style lang="less">
 .left-menu_no_bottom {
-    height: calc(100vh - 86px) !important;
+  height: calc(100vh - 86px) !important;
 }
 .left-menu_bottom {
-    height: calc(100vh - 316px) !important;
+  height: calc(100vh - 316px) !important;
 }
 </style>

+ 13 - 3
src/layout/components/top.vue

@@ -75,16 +75,26 @@ export default defineComponent({
                     // 默认第一个tab页
                     name = value.children[0].code;
                     index.value = ['0'];
+                } else if (value?.code.includes('market-')) {
+                    // 动态市场
+                    const param = value.code.split('-')
+                    router.push({ name: 'dymanicMarket', query: { id: param[1] } });
+                    return
                 } else {
-                    router.push({ name: 'home' });
+                    router.push({ name: '404' });
                     return;
                 }
             } else {
                 // 这里处理页面刷新,还原 导航栏数据
                 const i = value.children.findIndex((e) => e.code === temp);
                 if (i === -1) {
-                    // 切换左边菜单栏
-                    if (value?.children.length) {
+                    if (value?.code.includes('market-')) {
+                        // 动态市场
+                        const param = value.code.split('-')
+                        router.push({ name: 'dymanicMarket', query: { id: param[1] } });
+                        return
+                    } else if (value?.children.length) {
+                        // 切换左边菜单栏
                         // 默认第一个tab页
                         name = value.children[0].code;
                         index.value = ['0'];

+ 2 - 2
src/router/dynamic.ts

@@ -1,7 +1,7 @@
-import { RouteRecordRaw } from 'vue-router'
-import router from '@/router'
+import router from '@/router';
 import { OperationTabMenu } from '@/services/go/commonService/interface';
 import { localStorageUtil } from '@/utils/storage';
+import { RouteRecordRaw } from 'vue-router';
 
 /**
  * 添加404页面

+ 7 - 5
src/router/index.ts

@@ -20,11 +20,7 @@ const routes: Array<RouteRecordRaw> = [
         name: 'logon',
         component: () => import('@/views/account/logon.vue'),
     },
-    {
-        path: '/home',
-        name: 'home',
-        component: () => import('@/views/home.vue'),
-    },
+
     {
         path: '/resetPassword',
         name: 'resetPassword',
@@ -41,6 +37,12 @@ const routes: Array<RouteRecordRaw> = [
                 name: 'home',
                 component: () => import('@/views/home.vue'),
             },
+            {
+                path: '/dymanicMarket/',
+                name: 'dymanicMarket',
+                component: () => import('@/views/market/index.vue'),
+                props: route => ({ id: route.query.id })
+            },
         ],
     },
     {

+ 47 - 3
src/services/go/Tjmd/index.ts

@@ -1,6 +1,7 @@
 import APP from '@/services';
 import { commonSearch_go } from "@/services/go";
 import { localStorageUtil } from '@/utils/storage';
+import { OperationTabMenu } from '../commonService/interface';
 import * as type from './interface';
 
 /**
@@ -40,17 +41,60 @@ export function queryTjmdTransferApply(req: type.QueryTjmdTransferApplyReq): Pro
 }
 
 function addMarketToMenu(markets: type.TjmdMarketSection[]) {
-    const list = localStorageUtil.getItem('menus');
-    markets.forEach(market => {
-
+    // 菜单JSON配置数据
+    const menus = localStorageUtil.getItem('menus')
+    const list = (menus ? menus : []) as OperationTabMenu[];
+    // 处理 市场配置
+    // 一开始市场是配置在菜单JSON里的,但后面修改为根据接口返回市场信息
+    // 此处为了兼容以前代码,如果在菜单json里没有找到市场配置,则创建一个新的市场配置
+    // 后续 应该根据服务返回,而不是前端在json里配置
+    let marketMenu = list.find(el => el.code === "market")
+    let hasMarketMenu = true
+    if (!marketMenu) {
+        hasMarketMenu = false
+        marketMenu = {
+            auth: [],
+            children: [],
+            code: "market",
+            component: "Layout",
+            path: "/market",
+            remark: "",
+            sort: 1,
+            title: "市场",
+            url: "",
+        }
+    }
+    // 市场板块
+    const marketsSection = markets.map(({ marketsectionname, marketsectionid, remark }) => {
+        return {
+            auth: [],
+            children: [],
+            code: `market-${marketsectionid}`, // code: (market- + 市场板块的id)
+            component: "Layout",
+            path: `market-${marketsectionid}`,
+            remark,
+            sort: 1,
+            title: marketsectionname,
+            url: "",
+        }
     })
+    marketMenu.children = [...marketMenu.children, ...marketsSection]
+
+    // 菜单jsonm 没有 配置市场
+    if (!hasMarketMenu) {
+        list.unshift(marketMenu)
+    }
+    localStorageUtil.setItem('menus', list)
+    APP.set('menus', list);
 }
 
+
 /**
  * 查询市场板块  /Tjmd/QueryTjmdMarketSection
  */
 export function queryTjmdMarketSection(): Promise<string> {
     return commonSearch_go('/Tjmd/QueryTjmdMarketSection', {}).then(res => {
+        addMarketToMenu(res)
         console.log('查询市场板块:  ', res)
         const list = localStorageUtil.getItem('menus');
         console.log('菜单', list)

+ 160 - 103
src/views/business/plan/components/recommit/index.vue

@@ -1,6 +1,13 @@
 <template>
   <!-- 计划 重新提交-->
-  <a-modal class="commonModal plan-recommit" title="重新提交" v-model:visible="visible" centered @cancel="cancel" width="890px">
+  <a-modal
+    class="commonModal plan-recommit"
+    title="重新提交"
+    v-model:visible="visible"
+    centered
+    @cancel="cancel"
+    width="890px"
+  >
     <template #footer>
       <a-button key="submit" type="primary" :loading="loading" @click="submit">完成</a-button>
     </template>
@@ -8,62 +15,114 @@
       <a-row :gutter="24">
         <a-col :span="12">
           <a-form-item label="计划类型" name="ContractType">
-            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.ContractType" placeholder="请选择计划类型">
-              <a-select-option v-for="item in planTye" :value="item.enumitemname" :key="item.autoid">
-                {{item.enumdicname}}
-              </a-select-option>
+            <a-select
+              class="inlineFormSelect"
+              style="width: 200px"
+              v-model:value="formState.ContractType"
+              placeholder="请选择计划类型"
+            >
+              <a-select-option
+                v-for="item in planTye"
+                :value="item.enumitemname"
+                :key="item.autoid"
+              >{{ item.enumdicname }}</a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="计划名称" name="HedgePlanNo">
-            <a-input class="dialogInput" v-model:value="formState.HedgePlanNo" style="width: 200px" placeholder="请输入计划名称" />
+            <a-input
+              class="dialogInput"
+              v-model:value="formState.HedgePlanNo"
+              style="width: 200px"
+              placeholder="请输入计划名称"
+            />
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="现货品种" name="DeliveryGoodsID">
-            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.DeliveryGoodsID" @change="chooseMG" placeholder="请选择现货品种">
-              <a-select-option v-for="item in DGList" :value="item.data.deliverygoodsid" :key="item.data.deliverygoodsid">
-                {{item.data.deliverygoodsname}}
-              </a-select-option>
+            <a-select
+              class="inlineFormSelect"
+              style="width: 200px"
+              v-model:value="formState.DeliveryGoodsID"
+              @change="chooseMG"
+              placeholder="请选择现货品种"
+            >
+              <a-select-option
+                v-for="item in DGList"
+                :value="item.data.deliverygoodsid"
+                :key="item.data.deliverygoodsid"
+              >{{ item.data.deliverygoodsname }}</a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="商品" name="WRStandardID">
-            <a-select class="inlineFormSelect" style="width: 200px" @change="chooseWR" v-model:value="formState.WRStandardID" placeholder="请选择商品">
-              <a-select-option v-for="item in gmlist" :value="item.wrstandardid" :key="item.wrstandardid">
-                {{item.wrstandardname}}
-              </a-select-option>
+            <a-select
+              class="inlineFormSelect"
+              style="width: 200px"
+              @change="chooseWR"
+              v-model:value="formState.WRStandardID"
+              placeholder="请选择商品"
+            >
+              <a-select-option
+                v-for="item in gmlist"
+                :value="item.wrstandardid"
+                :key="item.wrstandardid"
+              >{{ item.wrstandardname }}</a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="计划量" class="relative" name="PlanQty">
-            <a-input-number class="dialogInput" style="width: 200px" v-model:value="formState.PlanQty" placeholder="请输入计划量" />
+            <a-input-number
+              class="dialogInput"
+              style="width: 200px"
+              v-model:value="formState.PlanQty"
+              placeholder="请输入计划量"
+            />
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="交易用户" name="Tradeuserid">
-            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.Tradeuserid" placeholder="请选择交易用户">
-              <a-select-option v-for="item in tableList" :value="item.roleid" :key="item.roleid">
-                {{item.rolename}}
-              </a-select-option>
+            <a-select
+              class="inlineFormSelect"
+              style="width: 200px"
+              v-model:value="formState.Tradeuserid"
+              placeholder="请选择交易用户"
+            >
+              <a-select-option
+                v-for="item in tableList"
+                :value="item.roleid"
+                :key="item.roleid"
+              >{{ item.rolename }}</a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="12">
           <a-form-item label="结算币种" name="Currencyid">
-            <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.Currencyid" placeholder="请选择结算币种">
-              <a-select-option v-for="item in priceTyep" :key="item.enumitemname" :value="item.enumitemname">
-                {{item.enumdicname}}
-              </a-select-option>
+            <a-select
+              class="inlineFormSelect"
+              style="width: 200px"
+              v-model:value="formState.Currencyid"
+              placeholder="请选择结算币种"
+            >
+              <a-select-option
+                v-for="item in priceTyep"
+                :key="item.enumitemname"
+                :value="item.enumitemname"
+              >{{ item.enumdicname }}</a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="24">
           <a-form-item label="备注" class="relative" name="Remark">
-            <a-input class="dialogInput" v-model:value="formState.Remark" style="width: 636px" placeholder="请输入备注" />
+            <a-input
+              class="dialogInput"
+              v-model:value="formState.Remark"
+              style="width: 636px"
+              placeholder="请输入备注"
+            />
           </a-form-item>
         </a-col>
       </a-row>
@@ -91,88 +150,86 @@ import { validateAction } from '@/common/setup/form';
 import { handlerManagerList } from '@/common/setup/user';
 
 export default defineComponent({
-    name: 'plan-recommit',
-    emits: ['cancel', 'update'],
-    components: {},
-    props: {
-        selectedRow: {
-            type: Object as PropType<Ermcp3HedgePlan>,
-            default: {},
-        },
+  name: 'plan-recommit',
+  emits: ['cancel', 'update'],
+  components: {},
+  props: {
+    selectedRow: {
+      type: Object as PropType<Ermcp3HedgePlan>,
+      default: {},
     },
-    setup(props, context) {
-        const { visible, cancel } = _closeModal(context);
-        const loading = ref<boolean>(false);
-        const planTye = ref<AllEnums[]>(getSpotContractTypeEnumList());
-        // 表单
-        const { formRef, formState, rules } = handleForm();
-        // 品种、品类
-        const { DGList, getDG, gmlist, chooseMG, chooseWR } = getMiddleGoodsD(formState);
-        // 交易用户
-        const { tableList, queryTable } = handlerManagerList(loading, 2);
-        // 币种
-        const priceTyep = getPayCurrencyTypeEnumList();
-        watchEffect(() => {
-            if (visible.value) {
-                getDG();
-                queryTable();
-                mergeTwoObj(formState, props.selectedRow);
-                const { deliverygoodsid, planqty, wrstandardid, hedgeplanid } = props.selectedRow;
-                deliverygoodsid && chooseMG(deliverygoodsid);
-                formState.PlanQty = planqty;
-                formState.HedgePlanID = hedgeplanid;
-                debugger;
+  },
+  setup(props, context) {
+    const { visible, cancel } = _closeModal(context);
+    const loading = ref<boolean>(false);
+    const planTye = ref<AllEnums[]>(getSpotContractTypeEnumList());
+    // 表单
+    const { formRef, formState, rules } = handleForm();
+    // 品种、品类
+    const { DGList, getDG, gmlist, chooseMG, chooseWR } = getMiddleGoodsD(formState);
+    // 交易用户
+    const { tableList, queryTable } = handlerManagerList(loading, 2);
+    // 币种
+    const priceTyep = getPayCurrencyTypeEnumList();
+    watchEffect(() => {
+      if (visible.value) {
+        getDG();
+        queryTable();
+        mergeTwoObj(formState, props.selectedRow);
+        const { deliverygoodsid, planqty, wrstandardid, hedgeplanid } = props.selectedRow;
+        deliverygoodsid && chooseMG(deliverygoodsid);
+        formState.PlanQty = planqty;
+        formState.HedgePlanID = hedgeplanid;
 
-                if (wrstandardid) {
-                    formState.WRStandardID = wrstandardid;
-                    chooseWR(wrstandardid);
-                }
-            }
-        });
-        function submit() {
-            validateAction<FormState>(formRef, formState).then((param) => {
-                const loginId = geLoginID_number();
-                const userid = getAreaUserId();
-                const reqParam: ErmcpHedgePlanReq = {
-                    HedgePlanID: param.HedgePlanID,
-                    HedgePlanNo: param.HedgePlanNo, // 计划类型
-                    ContractType: param.ContractType, // 计划类型
-                    DeliveryGoodsID: Number(param.DeliveryGoodsID),
-                    WRStandardID: Number(param.WRStandardID), // 现货品种
-                    PlanQty: Number(param.PlanQty), // 计划数量
-                    OperateType: 2,
-                    ConvertFactor: param.ConvertFactor,
-                    Currencyid: param.Currencyid,
-                    ApplyId: Number(loginId),
-                    PlanTime: formatTime(new Date(), 's'),
-                    ProductType: 1,
-                    Biztype: 1,
-                    AreaUserID: userid,
-                    Remark: param.Remark,
-                    Tradeuserid: param.Tradeuserid, // 交易用户id
-                };
-                debugger;
-                requestResultLoadingAndInfo(hedgePlanReq, reqParam, loading, ['重新提交计划成功', '重新提交计划失败:']).then(() => {
-                    cancel(true);
-                });
-            });
+        if (wrstandardid) {
+          formState.WRStandardID = wrstandardid;
+          chooseWR(wrstandardid);
         }
-        return {
-            visible,
-            cancel,
-            submit,
-            loading,
-            planTye,
-            DGList,
-            gmlist,
-            chooseMG,
-            tableList,
-            priceTyep,
-            formRef,
-            formState,
-            rules,
-            chooseWR,
+      }
+    });
+    function submit() {
+      validateAction<FormState>(formRef, formState).then((param) => {
+        const loginId = geLoginID_number();
+        const userid = getAreaUserId();
+        const reqParam: ErmcpHedgePlanReq = {
+          HedgePlanID: param.HedgePlanID,
+          HedgePlanNo: param.HedgePlanNo, // 计划类型
+          ContractType: param.ContractType, // 计划类型
+          DeliveryGoodsID: Number(param.DeliveryGoodsID),
+          WRStandardID: Number(param.WRStandardID), // 现货品种
+          PlanQty: Number(param.PlanQty), // 计划数量
+          OperateType: 2,
+          ConvertFactor: param.ConvertFactor,
+          Currencyid: param.Currencyid,
+          ApplyId: Number(loginId),
+          PlanTime: formatTime(new Date(), 's'),
+          ProductType: 1,
+          Biztype: 1,
+          AreaUserID: userid,
+          Remark: param.Remark,
+          Tradeuserid: param.Tradeuserid, // 交易用户id
         };
-    },
+        requestResultLoadingAndInfo(hedgePlanReq, reqParam, loading, ['重新提交计划成功', '重新提交计划失败:']).then(() => {
+          cancel(true);
+        });
+      });
+    }
+    return {
+      visible,
+      cancel,
+      submit,
+      loading,
+      planTye,
+      DGList,
+      gmlist,
+      chooseMG,
+      tableList,
+      priceTyep,
+      formRef,
+      formState,
+      rules,
+      chooseWR,
+    };
+  },
 });
 </script>

+ 11 - 13
src/views/home.vue

@@ -1,27 +1,25 @@
 <template>
-  <div class="home">
-    首页
-  </div>
+  <div class="home">首页</div>
 </template>
 
 <script lang="ts">
 import { defineComponent } from 'vue';
 
 export default defineComponent({
-    name: 'home',
-    components: {},
-    setup() {
-        return {};
-    },
+  name: 'home',
+  components: {},
+  setup() {
+    return {};
+  },
 });
 </script>
 
 <style lang="less">
 .home {
-    .withus {
-        cursor: pointer;
-        margin-top: 35px;
-        padding-bottom: 25px;
-    }
+  .withus {
+    cursor: pointer;
+    margin-top: 35px;
+    padding-bottom: 25px;
+  }
 }
 </style>

+ 0 - 1
src/views/information/custom/compoments/add/index.vue

@@ -595,7 +595,6 @@ export default defineComponent({
           reqParam.loginpwd = toBase64String(toBase64String(param.loginpwd));
           reqParam.userstate = 2;
         }
-        debugger;
         requestResultLoadingAndInfo(addCustomerInfoOperate, reqParam, loading, OperateType === 1 ? ['保存草稿成功', '保存草稿失败:'] : ['新增客户资料成功', '新增客户资料失败:']).then(() => {
           cancel(true);
         });

+ 33 - 0
src/views/market/index.vue

@@ -0,0 +1,33 @@
+<template>
+  <div class="home">
+    市场
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+
+export default defineComponent({
+    components: {},
+    props: {
+      id: {
+        type: String,
+        default: ''
+      }
+    },
+    setup(props) {
+        console.log(props.id)
+        return {};
+    },
+});
+</script>
+
+<style lang="less">
+.home {
+    .withus {
+        cursor: pointer;
+        margin-top: 35px;
+        padding-bottom: 25px;
+    }
+}
+</style>

+ 0 - 1
src/views/market/spot_trade/setup.ts

@@ -55,7 +55,6 @@ export function handleSpotBtnList(menuType: EnumRouterName) {
         //Object.assign(buyMarket, fn(EnumRouterName.spot_trade_warehouse_buy_hall))
         // 处理卖大厅
         //Object.assign(sellMarket, fn(EnumRouterName.spot_trade_warehouse_sell_hall))
-        debugger
     }
     return { firstBtn, buyMarket, sellMarket }
 }

+ 2 - 3
src/views/order/commodity_contract/components/commodity_contract_bargain/components/commodity_contract_bargain_submit_order/index.vue

@@ -1,6 +1,6 @@
 <template>
-  <!-- 商品合约 议价单 撤单 -->
-  <div></div>
+    <!-- 商品合约 议价单 撤单 -->
+    <div></div>
 </template>
 
 <script lang="ts">
@@ -30,7 +30,6 @@ export default defineComponent({
 
         function submit() {
             console.log(geLoginID_number());
-            debugger;
             const param: TradeHoldTransferApplyAuditReqType = {
                 ApplyID: props.selectedRow.applyid,
                 ApplyStatus: 3, // 1:撤销2:拒绝3:通过