zzExchangeData.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <template>
  2. <div class="exchangedata-wrap">
  3. <span
  4. class="slide-btn-icon"
  5. :class="{'slide-left':isLeftWrapShow,'slide-right':!isLeftWrapShow}"
  6. @click="isLeftWrapShow = !isLeftWrapShow"
  7. >
  8. <i :class="{'el-icon-d-arrow-left':isLeftWrapShow,'el-icon-d-arrow-right':!isLeftWrapShow}"></i>
  9. </span>
  10. <div class="left-wrap box" v-show="isLeftWrapShow">
  11. <el-date-picker
  12. style="width:100%"
  13. v-model="time"
  14. type="date"
  15. placeholder="选择日期"
  16. value-format="yyyy-MM-dd"
  17. :clearable="false"
  18. @change="handleTimeChange"
  19. >
  20. </el-date-picker>
  21. <ul>
  22. <li
  23. :class="type===item&&'type-active'"
  24. v-for="item in typeList"
  25. :key="item"
  26. @click="handleChangeType(item)"
  27. >{{item}}</li>
  28. </ul>
  29. </div>
  30. <div class="right-wrap box" v-loading="loading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading">
  31. <div class="content" v-if="list.length>0">
  32. <table width="auto">
  33. <thead class="border-head">
  34. <tr>
  35. <td v-for="(val,index) in labelArr" :key="`${val}_${index}`">
  36. {{ val }}
  37. </td>
  38. </tr>
  39. </thead>
  40. <tbody>
  41. <tr v-for="item in list" :key="item.Rank">
  42. <td v-for="(val,key) in labelArr" :key="key">{{item.Rank==999&&key=='Rank'?'合计':item[key]}}</td>
  43. </tr>
  44. </tbody>
  45. <!-- <tfoot>
  46. <tr>
  47. <td v-for="(val,key) in labelArr" :key="key">
  48. {{
  49. val === "名次"
  50. ? "合计"
  51. : val === "会员简称" || val === "指标ID"
  52. ? ""
  53. : handleValCount(key)
  54. }}
  55. </td>
  56. </tr>
  57. </tfoot> -->
  58. </table>
  59. </div>
  60. <div class="empty-wrap" v-else>
  61. <tableNoData text="没有此日期的数据,请重新选择查询日期"/>
  62. </div>
  63. </div>
  64. </div>
  65. </template>
  66. <script>
  67. // 郑州交易所数据
  68. import { dataInterence } from "@/api/api.js";
  69. import http from "@/api/http.js";
  70. export default {
  71. name: "郑州交易所数据",
  72. data() {
  73. return {
  74. isLeftWrapShow:true,
  75. labelArr: {
  76. Rank: "名次",
  77. DealShortName: "会员简称",
  78. DealCode: "指标ID",
  79. DealValue: "成交量(手)",
  80. DealChange: "增减量",
  81. BuyShortName: "会员简称",
  82. BuyCode: "指标ID",
  83. BuyValue: "持买仓量",
  84. BuyChange: "增减量",
  85. SoldShortName: "会员简称",
  86. SoldCode: "指标ID",
  87. SoldValue: "持卖仓量",
  88. SoldChange: "增减量",
  89. },
  90. time:'',
  91. type:'',
  92. typeList:[],
  93. list:[],
  94. loading:false
  95. };
  96. },
  97. created () {
  98. // this.getLastWorkDay()
  99. this.getClassifyList()
  100. },
  101. methods: {
  102. // 获取上个工作日
  103. getLastWorkDay(){
  104. const today=new Date()
  105. let lastWorkDay=http.dateFormatter(new Date(today.getTime()-86400000),false).replace(/\./g,'-') //默认昨天
  106. if(today.getDay()===0){//周日
  107. lastWorkDay=http.dateFormatter(new Date(today.getTime()-86400000 * 2),false).replace(/\./g,'-')
  108. }else if(today.getDay()===6){//周六
  109. lastWorkDay=http.dateFormatter(new Date(today.getTime()-86400000 ),false).replace(/\./g,'-')
  110. }else if(today.getDay()===1){//周一
  111. lastWorkDay=http.dateFormatter(new Date(today.getTime()-86400000*3 ),false).replace(/\./g,'-')
  112. }
  113. this.time=lastWorkDay
  114. },
  115. handleChangeType(e){
  116. this.type=e
  117. this.getData()
  118. },
  119. // 时间切换
  120. handleTimeChange(){
  121. this.getData();
  122. },
  123. // 计算合计
  124. handleValCount(key){
  125. let count=0
  126. this.list.forEach(item=>{
  127. count=count+Number(item[key])
  128. })
  129. return count
  130. },
  131. // 获取分类
  132. async getClassifyList(){
  133. const res=await dataInterence.getResearcherClassifyList({
  134. Exchange:'zhengzhou'
  135. })
  136. if(res.Ret===200){
  137. this.typeList=res.Data&&res.Data[0]||[]
  138. this.time=res.Data&&res.Data[1][0]||''
  139. this.type=this.typeList[0]
  140. this.getData()
  141. }
  142. },
  143. async getData(){
  144. $('.content').animate({scrollTop:0},0)
  145. this.loading=true
  146. const res=await dataInterence.getZzExchangeData({
  147. Date: this.time,
  148. ClassifyName:this.type
  149. })
  150. setTimeout(() => {
  151. this.loading=false
  152. }, 200);
  153. if(res.Ret===200){
  154. this.list=res.Data&&res.Data[0].ItemList&&res.Data[0].ItemList[0].Item||[]
  155. }
  156. }
  157. }
  158. };
  159. </script>
  160. <style lang="scss" scoped>
  161. @import "../css/exchangedata.scss";
  162. thead{
  163. position: sticky;
  164. top: 0;
  165. left: 0;
  166. border-top: 1px solid #dcdfe6;
  167. }
  168. </style>