Browse Source

ETA1.6.0 广期所数据源

hbchen 1 year ago
parent
commit
8b840e0cde

+ 4 - 2
src/api/api.js

@@ -11,7 +11,8 @@ import {
   baiinfoInterface,
   nationalInterface,
   databankInterface,
-  yongyiInterface
+  yongyiInterface,
+  guangqiInterface
 } from './modules/thirdBaseApi';
 
 //手工指标 手工数据 手工数据权限
@@ -114,7 +115,8 @@ export {
   homeInterface,
   businessTripInterence,
   reportVarietyENInterence,
-  yongyiInterface
+  yongyiInterface,
+  guangqiInterface,
 };
 
 //老接口 研报 ppt等

+ 38 - 1
src/api/modules/thirdBaseApi.js

@@ -777,6 +777,42 @@ const yongyiInterface={
 	},
 }
 
+/* 广期所 */
+const guangqiInterface={
+	/**
+	 * 分类列表
+	 * @param {} params 
+	 * @returns 
+	 */
+	getClassifyList: params => {
+		return http.get('/data_source/gfex/classify/list',params);
+	},
+	/**
+	 * 获取数据最新日期
+	 */
+	getNewtestDate: params => {
+		return http.get('/data_source/gfex/max/date',params);
+	},
+	/**
+ * 获取分类下合约
+ * @param {} params 
+ * BaseFromTradeGuangzhouClassifyId TradeDate
+ * @returns 
+ */
+	getContractList:params=>{
+		return http.get('/data_source/gfex/contract',params);
+	},
+	/**
+ * 获取指标数据
+ * @param {} params 
+ * BaseFromTradeGuangzhouClassifyId BaseFromTradeGuangzhouContractId TradeDate
+ * @returns 
+ */
+	getIndexDataList:params=>{
+		return http.get('/data_source/gfex/index_data',params);
+	},
+}
+
 export { 
 	lzDataInterface,
 	glDataInterface,
@@ -788,5 +824,6 @@ export {
   baiinfoInterface,
   nationalInterface,
   databankInterface,
-  yongyiInterface
+  yongyiInterface,
+	guangqiInterface
 }

+ 1 - 1
src/routes/modules/dataRoutes.js

@@ -133,7 +133,7 @@ export default [
         },
       },
       {
-        path: "guangzhoushop",
+        path: "guangzhouFutures",
         component: () =>
           import("@/views/dataEntry_manage/thirdBase/gqExchangeData.vue"),
         name: "广期所",

+ 23 - 0
src/utils/common.js

@@ -229,4 +229,27 @@ const handleUploadToMinIO=(file,fileName,options={})=>{
       reject(error)
     }
   })
+}
+/**
+ * 等待几个请求返回才能进行下一步的中间函数
+ * @param {*} flag 执行下一步的标志 需要取到最新的值,传入返回值函数
+ * @param {*} callBack 回调
+ * @param {*} timeout 间隔
+ */
+export const waitRequestReturn=(flag,callBack,timeout)=>{
+  if(typeof(flag)!='function' || typeof(callBack)!='function'){
+    return console.error('waitRequestReturn--参数错误')
+  }
+  let timer=null
+  if(!flag()){
+      timer=setInterval(()=>{
+        // console.log(flag());
+          if(flag()){
+              clearInterval(timer)
+              callBack()
+          }
+      },+timeout||10)
+  }else{
+      callBack()
+  }
 }

+ 91 - 145
src/views/dataEntry_manage/thirdBase/gqExchangeData.vue

@@ -1,44 +1,27 @@
 <template>
     <div class="exchangedata-wrap">
-        <span
-            class="slide-btn-icon"
-            :class="{'slide-left':isLeftWrapShow,'slide-right':!isLeftWrapShow}"
-            @click="isLeftWrapShow = !isLeftWrapShow"
-        >
+        <span class="slide-btn-icon" :class="{'slide-left':isLeftWrapShow,'slide-right':!isLeftWrapShow}"
+        @click="isLeftWrapShow = !isLeftWrapShow">
             <i :class="{'el-icon-d-arrow-left':isLeftWrapShow,'el-icon-d-arrow-right':!isLeftWrapShow}"></i>
         </span>
         <div class="left-wrap box" v-show="isLeftWrapShow">
-            <el-date-picker 
-                style="width:100%" 
-                v-model="time" 
-                type="date" 
-                placeholder="选择日期"
-                value-format="yyyy-MM-dd"
-                :clearable="false"
-                @change="handleTimeChange"
-            >
+            <el-date-picker  style="width:100%"  v-model="time" type="date" placeholder="选择日期"
+            value-format="yyyy-MM-dd" :clearable="false" @change="handleTimeChange">
             </el-date-picker>
-            <!-- @click="handleChangeType(item)" -->
             <div class="scroll-wrap">
-                <el-tree
-                ref="treeRef"
-                class="target_tree custom-tree"
-                :data="typeList"
-                node-key="ClassifyId"
-                :default-expanded-keys="defaultShowNodes"
+                <el-tree ref="treeRef" class="target_tree custom-tree" :data="typeList" 
+                node-key="BaseFromTradeGuangzhouClassifyId" :default-expanded-keys="defaultShowNodes"
                 :props="{
                     label: 'ClassifyName',
                     children: 'Children',
                 }"
-                :current-node-key="type"
-                empty-text="暂无分类"
-                @current-change="handleChangeType">
+                :current-node-key="type" empty-text="暂无分类" @current-change="handleChangeType">
                     <span slot-scope="{ node, data }">{{ data.ClassifyName }}</span>
                 </el-tree>
             </div>
         </div>
         <div class="right-wrap box" v-loading="loading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading">
-            <div class="content" style="height:90%" v-if="list.length>0">
+            <div class="content" v-if="list.length>0">
                 <table width="auto" border="0">
                     <thead class="border-head">
                         <tr>
@@ -48,22 +31,20 @@
                         </tr>
                     </thead>
                     <tbody>
-                        <tr v-for="item in list" :key="item.Rank">
-                            <td v-for="(val,key) in labelArr" :key="key">{{item.Rank==999&&key=='Rank'?'合计':item[key]}}</td>
+                        <tr v-for="item in list" :key="item.BaseFromTradeGuangzhouIndexId">
+                            <td v-for="(val,key) in labelArr" :key="key">{{item[key]}}</td>
                         </tr>
                     </tbody>
                 </table>
             </div>
-            <div class="empty-wrap" style="height:90%" v-else>
+            <div class="empty-wrap" v-else>
                 <tableNoData text="暂无数据"/>
             </div>
-            <div class="num-warp">
-                <div 
-                    v-for="item in numList" 
-                    :key="item" 
-                    :class="['num-box',num===item&&'num-active']"
-                    @click="handleChangeNum(item)"
-                >{{item}}</div>
+            <div class="num-warp" v-if="numList.length>0">
+                <div v-for="item in numList" :key="item.BaseFromTradeGuangzhouContractId" 
+                :class="['num-box',num===item.BaseFromTradeGuangzhouContractId&&'num-active']" @click="handleChangeNum(item)">
+                    {{item.Contract}}
+                </div>
             </div>
         </div>
     </div>
@@ -71,40 +52,21 @@
 
 <script>
 // 广期所数据
-import { dataInterence } from "@/api/api.js";
-import http from "@/api/http.js";
+import { guangqiInterface } from "@/api/api.js";
+import {waitRequestReturn} from '@/utils/common.js'
 export default {
     name: "gqExchangeData",
     data() {
         return {
             isLeftWrapShow:true,
             labelArr: {
-                Rank: "指标ID",
-                DealShortName: "指标名称",
-                DealCode: "数值",
-                DealValue: "单位",
-                DealChange: "频度",
-                BuyShortName: "起始日期",
-                BuyCode: "最新日期",
-                // BuyValue: "持买仓量",
-                // BuyChange: "增减量",
-                // SoldShortName: "会员简称",
-                // SoldCode: "指标ID",
-                // SoldValue: "持卖仓量",
-                // SoldChange: "增减量",
-                // Rank: "名次",
-                // DealShortName: "会员简称",
-                // DealCode: "指标ID",
-                // DealValue: "成交量(手)",
-                // DealChange: "增减量",
-                // BuyShortName: "会员简称",
-                // BuyCode: "指标ID",
-                // BuyValue: "持买仓量",
-                // BuyChange: "增减量",
-                // SoldShortName: "会员简称",
-                // SoldCode: "指标ID",
-                // SoldValue: "持卖仓量",
-                // SoldChange: "增减量",
+                IndexCode: "指标ID",
+                IndexName: "指标名称",
+                Value: "数值",
+                Unit: "单位",
+                Frequency: "频度",
+                StartDate: "起始日期",
+                EndDate: "最新日期"
             },
             time:'',
             type:'',
@@ -117,110 +79,82 @@ export default {
         };
     },
     created () {
-        this.getClassifyList()  
+        this.getClassifyListFun()  
+        this.getNewtestDateFun()  
+        waitRequestReturn(()=> this.type && this.time,this.getNumList,10)
     },
     methods: {
 
         handleChangeNum(e){
-            this.num=e
+            this.num=e.BaseFromTradeGuangzhouContractId
             this.getData()
         },
 
         // 时间切换
         handleTimeChange(){
-            // this.getData();
-            // this.getClassifyList()
+            this.getNumList()
         },
 
-        // 计算合计
-        handleValCount(key){
-            let count=0
-            this.list.forEach(item=>{
-                count=count+Number(item[key])
+        // 获取分类
+        getClassifyListFun(){
+            guangqiInterface.getClassifyList().then(res=>{
+                if(res.Ret===200){
+                    this.typeList=res.Data || []
+                    try {
+                        this.type=this.typeList[0].Children[0].BaseFromTradeGuangzhouClassifyId
+                        this.$nextTick(() => {
+                            this.$refs.treeRef.setCurrentKey(this.type);
+                        });
+                        this.defaultShowNodes=[this.typeList[0].BaseFromTradeGuangzhouClassifyId,this.typeList[0].Children[0].BaseFromTradeGuangzhouClassifyId]
+                        // this.getNumList()
+                    } catch (error) {
+                        console.error('Data的返回存在问题或为空');
+                    }
+                }
             })
-            return count
         },
-
-        // 获取分类
-        async getClassifyList(){
-            // const res=await dataInterence.getResearcherClassifyList({
-            //     Exchange:'dalian',
-            //     DataTime:this.time
-            // })
-            // if(res.Ret===200){
-            //     this.typeList=res.Data&&res.Data[0]||[]
-            //     if(!this.time){
-            //         // 第一次取 后端返回的最新日期
-            //         this.time=res.Data&&res.Data[1][0]||''
-            //     }
-            //     this.type=this.typeList[0]
-            //     this.getNumList()
-            // }
-            // TODO: 分类接口对接
-            this.typeList=[{ClassifyId:1,ClassifyName:'300系不锈钢',Children:[{ClassifyId:11,ClassifyName:'300系不锈钢-1'},{ClassifyId:12,ClassifyName:'300系不锈钢-2'}]},
-            {ClassifyId:2,ClassifyName:'原生镍',Children:[{ClassifyId:21,ClassifyName:'原生镍-1'},{ClassifyId:22,ClassifyName:'原生镍-2'}]}]
-            this.type=this.typeList[0].Children[0].ClassifyId
-            this.defaultShowNodes=[this.typeList[0].ClassifyId,this.typeList[0].Children[0].ClassifyId]
-            this.getNumList()
+        // 获取最新日期
+        getNewtestDateFun(){
+            guangqiInterface.getNewtestDate().then(res=>{
+                if(res.Ret == 200){
+                    this.time=res.Data || this.$moment(new Date()).format('YYYY-MM-DD')
+                }
+            })
         },
         handleChangeType(data, node) {
-            if (data.ClassifyId === this.type) return;
+            if (data.BaseFromTradeGuangzhouClassifyId == this.type || (!data.ParentId)) return;
+            this.type = data.BaseFromTradeGuangzhouClassifyId
             this.getNumList()
         },
         // 获取合约号
         async getNumList(){
-            // const res=await dataInterence.getExchangeClassifyContract({
-            //     Exchange:'dalian',
-            //     Classify:this.type,
-            //     DataTime:this.time
-            // })
-            // if(res.Ret===200){
-            //     this.numList=res.Data||[]
-            //     this.num=this.numList[0]||''
-            //     this.getData()
-            // }
-            // TODO: 合约接口对接
-            this.numList=['si2308','si23081','si23084','si23087','si23088','si23089']
-            this.num=this.numList[0]||''
-            this.getData()
+            guangqiInterface.getContractList({
+                BaseFromTradeGuangzhouClassifyId:this.type,
+                TradeDate:this.time,
+            }).then(res=>{
+                if(res.Ret===200){
+                    this.numList=res.Data||[]
+                    this.num=this.numList[0]?this.numList[0].BaseFromTradeGuangzhouContractId||'':''
+                    this.getData()
+                }
+            })
         },
 
-        async getData(){
+        getData(){
             $('.content').animate({scrollTop:0},0)
-            // this.loading=true
-            // const res=await dataInterence.getDlExchangeData({
-            //     Date: this.time,
-            //     ClassifyName:this.type,
-            //     ClassifyType:this.num
-            // })
-            
-            // if(res.Ret===200){
-            //     this.list=res.Data&&res.Data[0].ItemList&&res.Data[0].ItemList[0].Item||[]
-            // }
-            this.list=[{Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'},
-            {Rank:'Si2401open',DealShortName:'工业硅2401开盘价',DealCode:'13955',DealValue:'%',DealChange:'日度',BuyShortName:'2019-04-10',BuyCode:'2023-12-22'}]
+            this.loading=true
+            guangqiInterface.getIndexDataList({
+                BaseFromTradeGuangzhouClassifyId:this.type,
+                TradeDate:this.time,
+                BaseFromTradeGuangzhouContractId:this.num
+            }).then(res =>{
+                if(res.Ret===200){
+                    this.list=res.Data || []
+                }
+            }).finally(()=>{
+                this.loading=false
+            })
+
         }
     }
 };
@@ -230,6 +164,18 @@ export default {
 @import "../css/exchangedata.scss";
 
 .exchangedata-wrap{
+    .right-wrap{
+        display: flex;
+        flex-direction: column;
+        .content{
+            flex-grow: 1;
+            min-height: 90%;
+        }
+        .empty-wrap{
+            min-height: 90%;
+            flex-grow: 1;
+        }
+    }
     .slide-btn-icon{
         &.slide-left{
             left:285px;