huangbin преди 4 години
родител
ревизия
eb37a82a8c

+ 7 - 0
src/services/bus/account.ts

@@ -95,3 +95,10 @@ export function getCanUserMoney() {
     }
     return result;
 }
+
+/**
+ * 获取选中的资金账号(目前 写死第一个,后期账号切换的时候在进行修改)
+ */
+export function getSelectedAccount(): LongType | null {
+    return getAccount_longType()
+}

+ 137 - 132
src/services/go/ermcp/goodsInfo/interface.ts

@@ -1,73 +1,73 @@
 /**
  * 查询现货商品
  */
-export interface ErmcpDeliveryGoodsReq{
-    excludecfg? :number; // 排除已配置的现货商品 1-排除
+export interface ErmcpDeliveryGoodsReq {
+    excludecfg?: number; // 排除已配置的现货商品 1-排除
 }
 
 /**
  * 现货商品返回
  */
-export interface ErmcpDeliveryGoodsRsp{
-    agreeunit	:number;//合约单位[散货时默认为1, 整装时默认为标准数量]
-    areauserid	:number;//所属机构
-    auditflag	:number;//交割是否需要审核 - number;
-//:不需要 1:需要审核 默认为number;//
-    categoryid	:number;//类别ID(SEQ_WRCATEGORY)
-    deliverygoodscode	:string;//现货品种代码
-    deliverygoodsid	:number;//现货品种ID(SEQ_DELIVERYGOODS)
-    deliverygoodsname	:string;//现货品种名称
-    deliverygoodstype	:number;//现货品种类型: 1-整装不拆分 2-散装记录明细 3:整装拆分 4:散装不记录明细
-    dgstatus	:number;//品种状态 - 作废 - number;
-//:未激活 1:正常
-    enumdicname	:string;//现货品种单位名称
-    goodsunitid	:number;//现货品种单位ID
-    isvalid	:number;//是否有效 - number;
-//:无效 1:有效
-    qtydecimalplace	:number;//成交量小数位
-    remark	:string;//备注
-    standardqty	:number;//标准数量(库位数量) [标准品特有]
-    standardqtyrange	:number;//标准数量偏差范围 [标准品特有]
+export interface ErmcpDeliveryGoodsRsp {
+    agreeunit: number;//合约单位[散货时默认为1, 整装时默认为标准数量]
+    areauserid: number;//所属机构
+    auditflag: number;//交割是否需要审核 - number;
+    //:不需要 1:需要审核 默认为number;//
+    categoryid: number;//类别ID(SEQ_WRCATEGORY)
+    deliverygoodscode: string;//现货品种代码
+    deliverygoodsid: number;//现货品种ID(SEQ_DELIVERYGOODS)
+    deliverygoodsname: string;//现货品种名称
+    deliverygoodstype: number;//现货品种类型: 1-整装不拆分 2-散装记录明细 3:整装拆分 4:散装不记录明细
+    dgstatus: number;//品种状态 - 作废 - number;
+    //:未激活 1:正常
+    enumdicname: string;//现货品种单位名称
+    goodsunitid: number;//现货品种单位ID
+    isvalid: number;//是否有效 - number;
+    //:无效 1:有效
+    qtydecimalplace: number;//成交量小数位
+    remark: string;//备注
+    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 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
+export interface Ermcp3Brand {
+    areauserid: number;//用户id
+    brandid: number;//品牌id
+    brandname: string;//品牌名称
+    deliverygoodsid: number;//品种ID
 }
 
 /**
  * 查询新货商品详情
  */
-export interface ErmcpDeliveryGoodsDetailEx{
+export interface ErmcpDeliveryGoodsDetailEx {
     data: ErmcpDeliveryGoods;  // 现货商品信息
     gblist: Ermcp3Brand[];     // 品牌
     gmlist: Ermcp3Wrstandard[]; // 品类列表
@@ -77,29 +77,29 @@ export interface ErmcpDeliveryGoodsDetailEx{
 /**
  * 现货商品信息
  */
-export interface ErmcpDeliveryGoods{
-    agreeunit	:number;//合约单位[散货时默认为1, 整装时默认为标准数量]
-    areauserid	:number;//所属机构
-    auditflag	:number;//交割是否需要审核 - number;
-//:不需要 1:需要审核 默认为number;//
-    categoryid	:number;//类别ID(SEQ_WRCATEGORY)
-    deliverygoodscode	:string;//现货品种代码
-    deliverygoodsid	:number;//现货品种ID(SEQ_DELIVERYGOODS)
-    deliverygoodsname	:string;//现货品种名称
-    deliverygoodstype	:number;//现货品种类型: 1-整装不拆分 2-散装记录明细 3:整装拆分 4:散装不记录明细
-    dgstatus	:number;//品种状态 - 作废 - number;
-//:未激活 1:正常
-    enumdicname	:string;//现货品种单位名称
-    goodsunitid	:number;//现货品种单位ID
-    isvalid	:number;//是否有效 - number;
-//:无效 1:有效
-    qtydecimalplace	:number;//成交量小数位
-    remark	:string;//备注
-    standardqty	:number;//标准数量(库位数量) [标准品特有]
-    standardqtyrange	:number;//标准数量偏差范围 [标准品特有]
+export interface ErmcpDeliveryGoods {
+    agreeunit: number;//合约单位[散货时默认为1, 整装时默认为标准数量]
+    areauserid: number;//所属机构
+    auditflag: number;//交割是否需要审核 - number;
+    //:不需要 1:需要审核 默认为number;//
+    categoryid: number;//类别ID(SEQ_WRCATEGORY)
+    deliverygoodscode: string;//现货品种代码
+    deliverygoodsid: number;//现货品种ID(SEQ_DELIVERYGOODS)
+    deliverygoodsname: string;//现货品种名称
+    deliverygoodstype: number;//现货品种类型: 1-整装不拆分 2-散装记录明细 3:整装拆分 4:散装不记录明细
+    dgstatus: number;//品种状态 - 作废 - number;
+    //:未激活 1:正常
+    enumdicname: string;//现货品种单位名称
+    goodsunitid: number;//现货品种单位ID
+    isvalid: number;//是否有效 - number;
+    //:无效 1:有效
+    qtydecimalplace: number;//成交量小数位
+    remark: string;//备注
+    standardqty: number;//标准数量(库位数量) [标准品特有]
+    standardqtyrange: number;//标准数量偏差范围 [标准品特有]
 }
 
-export interface Ermcp3MiddleGoodsDetail2{
+export interface Ermcp3MiddleGoodsDetail2 {
     convertratio: number  // 套保系数(折算系数)
     gplist: Ermcp3GoodsGroupEx[] // 关联商品组列表
     mg: ErmcpMiddleGoodsModel[] // 套保品种
@@ -108,84 +108,89 @@ export interface Ermcp3MiddleGoodsDetail2{
 /**
  * 套保品种
  */
-export interface ErmcpMiddleGoodsModel{
-    areauserid	:number;//机构用户ID
-    createtime	:string;//修改时间
-    enumdicname	:string;//单位名称
-    evaluateratio	:number;//估价系数
-    goodsgroupid	:number;//关联期货品种ID
-    goodsunitid	:number;//单位ID
-    isvalid	:number;//状态 number;
-//-无效(停用) 1-有效(正常)
-    middlegoodscode	:string;//套保品种代码
-    middlegoodsid	:number;//套保品种ID(SEQ_ERMS_MIDDLEGOODS)
-    middlegoodsname	:string;//套保品种名称
-    modifytime	:string;//修改时间
-    needhedgeratio	:number;//套保比率
-    qtydecimalplace	:number;//数量小数位
-    relatedgoodsid	:number;//关联交易商品ID
-    relatedgoodstype	:number;//关联商品类型 - 1:期货合约 2:现货品种
-    remark	:string;//备注
+export interface ErmcpMiddleGoodsModel {
+    areauserid: number;//机构用户ID
+    createtime: string;//修改时间
+    enumdicname: string;//单位名称
+    evaluateratio: number;//估价系数
+    goodsgroupid: number;//关联期货品种ID
+    goodsunitid: number;//单位ID
+    isvalid: number;//状态 number;
+    //-无效(停用) 1-有效(正常)
+    middlegoodscode: string;//套保品种代码
+    middlegoodsid: number;//套保品种ID(SEQ_ERMS_MIDDLEGOODS)
+    middlegoodsname: string;//套保品种名称
+    modifytime: string;//修改时间
+    needhedgeratio: number;//套保比率
+    qtydecimalplace: number;//数量小数位
+    relatedgoodsid: number;//关联交易商品ID
+    relatedgoodstype: number;//关联商品类型 - 1:期货合约 2:现货品种
+    remark: string;//备注
 }
 
 /**
  * 期货商品信息
  */
-export interface Ermcp3Goods{
-    agreeunit	:number;//合约单位(合约乘数)
-    enumdicname	:string;//单位名称
-    exexchangecode	:string;//交易所代码
-    goodscode	:string;//期货商品代码
-    goodsid	:number;//期货商品id
-    goodsname	:string;//期货商品名称
+export interface Ermcp3Goods {
+    agreeunit: number;//合约单位(合约乘数)
+    enumdicname: string;//单位名称
+    exexchangecode: string;//交易所代码
+    goodscode: string;//期货商品代码
+    goodsid: number;//期货商品id
+    goodsname: string;//期货商品名称
 }
 
 /**
  * 商品组信息
  */
-export interface Ermcp3GoodsGroupEx{
-    convertratio	:number;//折算系数(品种系数)
-    enumdicname	:string;//单位名称
-    exexchangecode	:string;//交易所代码
-    glist: 	Ermcp3Goods[]
-    goodsgroupid	:number;//商品组id
-    goodsgroupname	:string;//商品组名称
-    goodsunitid	:number;//单位id
-    middlegoodsid	:number;//套保商品id
+export interface Ermcp3GoodsGroupEx {
+    convertratio: number;//折算系数(品种系数)
+    enumdicname: string;//单位名称
+    exexchangecode: string;//交易所代码
+    glist: Ermcp3Goods[]
+    goodsgroupid: number;//商品组id
+    goodsgroupname: string;//商品组名称
+    goodsunitid: number;//单位id
+    middlegoodsid: number;//套保商品id
 }
 
 /**
  *  期货商品组
  */
-export interface Ermcp3GoodsGroup{
-    agreeunit	:number;//合约单位
-    areauserid	:number;//所属机构id(套保品是有areauserid的,当要排除已配置商品组时需要areauserid过滤)
-    canshort	:number;//是否允许做空[通道交易] - number;
-//:不能做空 1:可以做空
-    closepricemode	:number;//强平价格方式 - 1:市价 2:最新价 3:涨跌停(未实现)
-    createtime	:string;//创建时间
-    creatorid	:number;//创建人
-    currencyid	:number;//报价货币ID
-    decimalplace	:number;//报价小数位
-    enumdicname	:string;//单位名称
-    excludecfg	:number;//排除套保品已配置期货分类下的商品组(但显示已配置商品组) 1-排除
-    exexchangeid	:number;//外部交易所ID[通道交易]
-    goodsgroupid	:number;//商品组ID(自增ID)
-    goodsgroupname	:string;//商品组名称
-    goodsgroupstatus	:number;//商品组状态 - 1:正常 2:注销
-    goodunitid	:number;//报价单位ID
-    groupcategroyid	:number;//品种分类ID
-    innerdealmode	:number;//内部成交方式[通道交易] - 1:净头寸 2:开平 3:平今
-    marketid	:number;//所属市场ID
-    modifierid	:number;//修改人
-    modifytime	:string;//修改时间
-    outerdealmode	:number;//外部成交方式[通道交易]- 1:净头寸 2:开平 3:平今
-    outergroupcode	:string;//外部商品组代码[通道交易]
-    quoteminunit	:number;//行情最小变动单位 [整数,报价小数位一起使用]
-    quotesourcegroupid	:number;//所属行情源分组ID[参考行情市场用\通道交易]
-    syncgoodsqty	:number;//同步合约数[通道交易-投资管理用] - number;
-//表示不限
+export interface Ermcp3GoodsGroup {
+    agreeunit: number;//合约单位
+    areauserid: number;//所属机构id(套保品是有areauserid的,当要排除已配置商品组时需要areauserid过滤)
+    canshort: number;//是否允许做空[通道交易] - number;
+    //:不能做空 1:可以做空
+    closepricemode: number;//强平价格方式 - 1:市价 2:最新价 3:涨跌停(未实现)
+    createtime: string;//创建时间
+    creatorid: number;//创建人
+    currencyid: number;//报价货币ID
+    decimalplace: number;//报价小数位
+    enumdicname: string;//单位名称
+    excludecfg: number;//排除套保品已配置期货分类下的商品组(但显示已配置商品组) 1-排除
+    exexchangeid: number;//外部交易所ID[通道交易]
+    goodsgroupid: number;//商品组ID(自增ID)
+    goodsgroupname: string;//商品组名称
+    goodsgroupstatus: number;//商品组状态 - 1:正常 2:注销
+    goodunitid: number;//报价单位ID
+    groupcategroyid: number;//品种分类ID
+    innerdealmode: number;//内部成交方式[通道交易] - 1:净头寸 2:开平 3:平今
+    marketid: number;//所属市场ID
+    modifierid: number;//修改人
+    modifytime: string;//修改时间
+    outerdealmode: number;//外部成交方式[通道交易]- 1:净头寸 2:开平 3:平今
+    outergroupcode: string;//外部商品组代码[通道交易]
+    quoteminunit: number;//行情最小变动单位 [整数,报价小数位一起使用]
+    quotesourcegroupid: number;//所属行情源分组ID[参考行情市场用\通道交易]
+    syncgoodsqty: number;//同步合约数[通道交易-投资管理用] - number;
+    //表示不限
 }
 
-
-
+interface MenuItem {
+    key: string;
+    title: string;
+}
+export interface MenuList extends MenuItem {
+    children?: MenuItem[]
+}

+ 2 - 0
src/utils/objHandle/index.ts

@@ -11,7 +11,9 @@ interface ObjType {
  */
 export function mergeObj(a: ObjType, ...rest: ObjType[]): void {
     Object.keys(a).forEach((key) => {
+        debugger
         rest.forEach((param) => {
+            debugger
             if (Reflect.has(param, key)) {
                 a[key] = param[key];
             }

+ 131 - 157
src/views/information/goods/components/leftMenu/index.vue

@@ -1,187 +1,161 @@
 <template>
-    <div class="leftMenu">
-        <a-menu theme="dark" mode="inline" class="left-menu" @click="menuClick">
-            <a-sub-menu v-for="item in menuList" :key="item.key">
-                <template #title>
-                    <span>
-                        <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>
-    </div>
+  <div class="leftMenu">
+    <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.key">
+        <template #title>
+          <span>
+            <span class="menu-item_title"
+                  v-show="!collapsed">{{ item.title }}</span>
+          </span>
+        </template>
+        <a-menu-item :key="subItem.key"
+                     v-for="subItem in item.children">
+          <span>{{ subItem.title }}</span>
+        </a-menu-item>
+      </a-sub-menu>
+    </a-menu>
+  </div>
 </template>
 
 <script lang="ts">
-    import { defineComponent, ref, PropType } from 'vue';
-    import APP from '@/services';
+import { defineComponent, ref, PropType } from 'vue';
+import { MenuList } from '@/services/go/ermcp/goodsInfo/interface';
 
-    interface Key {
-        [propName: string]: string;
-    }
-    // 菜单栏
-    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: '正常',
-                children: [
-                    {
-                        key: '1-1',
-                        title: '铜杆(吨)',
-                    },
-                    {
-                        key: '1-2',
-                        title: '铜板(吨)',
-                    },
-                ],
-            },
-            {
-                key: '2',
-                title: '停用',
-                children: [
-                    {
-                        key: '2-1',
-                        title: 'SHFE-银锭(千克)',
-                    },
-                ],
-            },
-        ];
+// 菜单栏
+const handleMenu = () => {
+    const collapsed = ref<boolean>(false);
+    const selectedKeys = ref<string[]>(['1-0']);
+    const openKeys = ref<string[]>(['1']);
+    const preOpenKeys = ref<string[]>(['1']);
 
-        // 控制菜单是否隐藏
-        function collapse(collapsed: boolean) {
-            if (collapsed) {
-                preOpenKeys.value = openKeys.value;
-                openKeys.value = [];
-            } else {
-                openKeys.value = preOpenKeys.value;
-            }
+    // 控制菜单是否隐藏
+    function collapse(collapsed: boolean) {
+        if (collapsed) {
+            preOpenKeys.value = openKeys.value;
+            openKeys.value = [];
+        } else {
+            openKeys.value = preOpenKeys.value;
         }
+    }
 
-        function menuClick(value: any) {
-            console.log(value);
-        }
-        return { collapsed, selectedKeys, menuList, openKeys, collapse, menuClick };
-    };
+    function menuClick(value: any) {
+        console.log(value);
+    }
+    return { collapsed, selectedKeys, openKeys, collapse, menuClick };
+};
 
-    export default defineComponent({
-        name: 'leftMenu',
-        props: {
-            list: {
-                default: [],
-                type: Object as PropType<Key[]>,
-            },
-            value: {
-                // 需要绑定的值得 key
-                default: '',
-                type: String,
-            },
+export default defineComponent({
+    name: 'leftMenu',
+    props: {
+        menuList: {
+            default: [
+                { key: '1', title: '正常', children: [] },
+                { key: '2', title: '停用', children: [] },
+            ],
+            type: Object as PropType<MenuList[]>,
         },
-        components: {},
-        setup(props, context) {
-            const { collapsed, selectedKeys, openKeys, menuList, collapse, menuClick } = handleMenu();
-            const current = ref<string[]>(['0']);
+    },
+    components: {},
+    setup(props, context) {
+        const { collapsed, selectedKeys, openKeys, collapse, menuClick } = handleMenu();
 
-            return {
-                current,
-                menuClick,
-                collapsed,
-                collapse,
-                selectedKeys,
-                openKeys,
-                menuList,
-            };
-        },
-    });
+        return {
+            menuClick,
+            collapsed,
+            collapse,
+            selectedKeys,
+            openKeys,
+        };
+    },
+});
 </script>
 
 <style lang="less">
-    .leftMenu {
-        height: 100%;
-        ul.ant-menu.ant-menu-inline {
-            background-color: transparent;
-            li.ant-menu-submenu {
-                padding-bottom: 0;
-                .ant-menu-submenu-title {
-                    color: @m-grey2;
+.leftMenu {
+    height: 100%;
+    ul.ant-menu.ant-menu-inline {
+        background-color: transparent;
+        li.ant-menu-submenu {
+            padding-bottom: 0;
+            .ant-menu-submenu-title {
+                color: @m-grey2;
+                font-size: 16px;
+                height: 45px;
+                line-height: 45px;
+                margin-top: 0;
+                margin-bottom: 0;
+                padding: 0;
+                padding-left: 32px !important;
+                .icon {
+                    font-size: 20px;
+                }
+                .menu-item_title {
+                    display: inline-block;
                     font-size: 16px;
-                    height: 45px;
-                    line-height: 45px;
+                    color: @m-grey2;
+                }
+                .ant-menu-submenu-arrow {
+                    left: 12px;
+                    color: @m-white0;
+                }
+            }
+            .ant-menu-inline.ant-menu-sub {
+                background-color: transparent;
+                box-shadow: none;
+                .ant-menu-item {
+                    padding-left: 64px !important;
+                    height: 30px;
+                    line-height: 30px;
+                    color: @m-grey2;
+                    font-size: 14px;
                     margin-top: 0;
                     margin-bottom: 0;
-                    padding: 0;
-                    padding-left: 32px !important;
-                    .icon {
-                        font-size: 20px;
-                    }
-                    .menu-item_title {
-                        display: inline-block;
-                        font-size: 16px;
-                        color: @m-grey2;
-                    }
-                    .ant-menu-submenu-arrow {
-                        left: 12px;
-                        color: @m-white0;
-                    }
-                }
-                .ant-menu-inline.ant-menu-sub {
-                    background-color: transparent;
-                    box-shadow: none;
-                    .ant-menu-item {
-                        padding-left: 64px !important;
-                        height: 30px;
-                        line-height: 30px;
-                        color: @m-grey2;
-                        font-size: 14px;
-                        margin-top: 0;
-                        margin-bottom: 0;
-                        padding-right: 0;
-                    }
+                    padding-right: 0;
                 }
             }
-            li.ant-menu-submenu-open {
-                .ant-menu-submenu-title {
+        }
+        li.ant-menu-submenu-open {
+            .ant-menu-submenu-title {
+                color: @m-white0;
+                .icon {
                     color: @m-white0;
-                    .icon {
-                        color: @m-white0;
-                    }
                 }
-                .ant-menu-sub {
-                    .ant-menu-item.ant-menu-item-selected {
-                        color: @m-blue0;
-                        background-color: transparent;
-                    }
+            }
+            .ant-menu-sub {
+                .ant-menu-item.ant-menu-item-selected {
+                    color: @m-blue0;
+                    background-color: transparent;
                 }
             }
         }
     }
-    .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;
             }
         }
-    }</style
+    }
+}
+</style
 >;

+ 9 - 4
src/views/information/goods/list/spot-variety/index.vue

@@ -1,13 +1,15 @@
 <template>
   <!-- 现货品种 -->
-  <div class="spot-variety">
+  <div class="spot-variety"
+       :loading="loading">
     <filterCustomTable @search="search">
       <a-button class="operBtn"
                 @click="addAction">新增</a-button>
     </filterCustomTable>
     <div class="spotTableCont">
       <div class="leftSpot">
-        <leftMenu></leftMenu>
+        <leftMenu :menuList="menuList"
+                  @chooseMenu="chooseMenu"></leftMenu>
       </div>
       <div class="rightCont">
         <rightSpot></rightSpot>
@@ -39,12 +41,15 @@ export default defineComponent({
     },
     setup() {
         const { openAction: addAction } = openModal('spot_contract_btn_add');
-        const { loading, deliveryGoodsList, queryDG } = handleDG();
+        const { loading, deliveryGoodsList, menuList, queryDG } = handleDG();
+        function chooseMenu(key: string) {
+            deliveryGoodsList.value.find((e) => e.data.deliverygoodsid === Number(key));
+        }
         initData(() => {
             // 加载数据在这里
             queryDG();
         });
-        return { addAction };
+        return { addAction, loading, menuList };
     },
 });
 </script>

+ 58 - 6
src/views/information/goods/list/spot-variety/setup.ts

@@ -1,6 +1,8 @@
 import { QueryDeliveryGoodsDetail } from '@/services/go/ermcp/goodsInfo';
-import { ErmcpDeliveryGoodsDetailEx } from '@/services/go/ermcp/goodsInfo/interface';
-import { ref } from "vue";
+import { ErmcpDeliveryGoodsDetailEx, MenuList } from '@/services/go/ermcp/goodsInfo/interface';
+import { mergeObj } from '@/utils/objHandle';
+import { message } from 'ant-design-vue';
+import { reactive, ref } from 'vue';
 
 /**
  * 获取现货品种数据
@@ -8,16 +10,66 @@ import { ref } from "vue";
  */
 export function handleDG() {
     const loading = ref<boolean>(false);
+    // 现货品种列表
     const deliveryGoodsList = ref<ErmcpDeliveryGoodsDetailEx[]>([])
+    // 选中的具体某一天现货品种数据
+    const selctedDeliveryGoods = reactive<ErmcpDeliveryGoodsDetailEx>({
+        data: {
+            agreeunit: 0,
+            areauserid: 0,
+            auditflag: 0,
+            categoryid: 0,
+            deliverygoodscode: '',
+            deliverygoodsid: 0,
+            deliverygoodsname: '--',
+            deliverygoodstype: 0,
+            dgstatus: 0,
+            enumdicname: '--',
+            goodsunitid: 0,
+            isvalid: 0,
+            qtydecimalplace: 0,
+            remark: '',
+            standardqty: 0,
+            standardqtyrange: 0
+        },
+        gblist: [],
+        gmlist: [],
+        mgList: [],
+    })
+    const menuList = ref<MenuList[]>([
+        { key: '1', title: '正常', children: [] },
+        { key: '2', title: '停用', children: [] },
+    ]);
+    // 获取现货品种数据
     function queryDG(param?: number) {
         loading.value = true;
         QueryDeliveryGoodsDetail(param).then(res => {
             deliveryGoodsList.value = res;
-            console.log('QueryDeliveryGoodsDetail', res);
+            res.forEach(e => {
+                const { dgstatus, isvalid, deliverygoodsname, deliverygoodsid } = e.data
+                if (isvalid) { // 有效 
+                    const index = dgstatus ? 0 : 1; // 0:未激活 1:正常
+                    const obj = { key: deliverygoodsid.toString(), title: deliverygoodsname }
+                    menuList.value[index].children?.push(obj)
+                }
+            })
+            // 获取默认第一条数据
+            if (menuList.value[0].children?.length) {
+                chooseDG(menuList.value[0].children[0].key)
+            } else if (menuList.value[1].children?.length) {
+                chooseDG(menuList.value[1].children[0].key)
+            }
+            console.log('selctedDeliveryGoods', selctedDeliveryGoods);
         }).catch(err => {
-            console.log('err', err);
-
+            message.error(err)
         }).finally(() => loading.value = false)
     }
-    return { loading, deliveryGoodsList, queryDG }
+    // 选择某条现货数据
+    function chooseDG(key: string) {
+        const obj = deliveryGoodsList.value.find(e => e.data.deliverygoodsid === Number(key))
+        if (obj) {
+            mergeObj(selctedDeliveryGoods, obj)
+        }
+    }
+    return { loading, deliveryGoodsList, menuList, queryDG, selctedDeliveryGoods, chooseDG }
 }