From f8b256ef152e54c19adb85856f62432d59c16b6e Mon Sep 17 00:00:00 2001
From: DESKTOP-CVS3R96\我恁爹 <11>
Date: Mon, 14 Nov 2022 19:00:29 +0800
Subject: [PATCH] wener~

---
 src/page/kline/index.vue |  419 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 366 insertions(+), 53 deletions(-)

diff --git a/src/page/kline/index.vue b/src/page/kline/index.vue
index 933266b..ec6ad48 100644
--- a/src/page/kline/index.vue
+++ b/src/page/kline/index.vue
@@ -8,44 +8,45 @@
               <img src="../../assets/img/zuojiantou.png" alt />
             </div>
             <div class="right_title">
-              <div class="t_t">
-                <span>{{ kLineDetails.name }}</span>
+              <div class="t_t" style="white-space: nowrap;">
+                <span>{{ kLineDetails.name | getName }}</span>
               </div>
               <div class="b_t">
                 <span>{{ singDetails.code }}</span>
               </div>
             </div>
           </div>
-          <div class="right_money sss" @click="openDialog()">
+          <div class="right_money sss">
             <div class="content_money">
               <div class="top_price">
                 <div class="left">
                   <span>{{ '余额' }}</span>
                 </div>
                 <div class="right">
-                  <span v-if="$store.state.userInfo.userAmt==undefined">¥0.00</span>
-                  <span
-                    v-if="$store.state.userInfo&&kLineDetails.if_zhishu!='0'"
-                    style="white-space: nowarp;"
-                  >
-                    {{ '¥' + $store.state.userInfo.userIndexAmt
+                  <span v-if="$store.state.userInfo.userAmt == undefined">¥0.00</span>
+                  <span v-if="$store.state.userInfo && kLineDetails.if_zhishu != '0'" style="white-space: nowarp;">
+                    {{ kLineDetails.if_us == 1 ? '$' + Number(Number($store.state.userInfo.userIndexAmt) /
+                        7.1).toFixed(2) :
+                        kLineDetails.if_us == 2 ? 'HK$' + (Number($store.state.userInfo.userIndexAmt) / 0.9).toFixed(2) :
+                          '¥' +
+                          $store.state.userInfo.userIndexAmt
                     }}
                   </span>
-                  <span
-                    v-if="$store.state.userInfo.userAmt!=undefined&&kLineDetails.if_zhishu=='0'"
-                    style="white-space: nowarp;"
-                  >
-                    {{ '¥ ' + $store.state.userInfo.userAmt
+                  <span v-if="$store.state.userInfo.userAmt != undefined && kLineDetails.if_zhishu == '0'"
+                    style="white-space: nowarp;">
+                    {{ kLineDetails.if_us == 1 ? '$' + Number(Number($store.state.userInfo.userAmt) / 7.1).toFixed(2) :
+                        kLineDetails.if_us == 2 ? 'HK$' + (Number($store.state.userInfo.userAmt) / 0.9).toFixed(2) : '¥ ' +
+                          $store.state.userInfo.userAmt
                     }}
                   </span>
                 </div>
                 <div class="sanjiao">
-                  <img
+                  <!-- <img
                     :class="dialogFlag ? 'xuanz' : ''"
                     style="transition: all 0.5s;"
                     src="../../assets/img/xiala.png"
                     alt
-                  />
+                  /> -->
                 </div>
               </div>
               <div class="bottom_balance">
@@ -70,7 +71,8 @@
                     ? '+' : ''
                 }}{{ (singDetails.nowPrice - singDetails.preclose_px).toFixed(2) }}</span>
               </div>
-              <div class="tew" :class="singDetails.nowPrice - singDetails.preclose_px < 0 ? 'number green' : 'number red'">
+              <div class="tew"
+                :class="singDetails.nowPrice - singDetails.preclose_px < 0 ? 'number green' : 'number red'">
                 <span v-if="singDetails.nowPrice == 0">-</span>
                 <span v-else>({{ singDetails.nowPrice - singDetails.preclose_px > 0 ? '+' : '' }}
                   {{ singDetails.hcrate ? singDetails.hcrate : '0' }}%)</span>
@@ -109,10 +111,11 @@
           </div>
         </div>
       </div>
-      <div class="k_line_detail">
-        <Kline />
+      <div class="k_line_detail" >
+        <Kline :type="singDetails.type"/>
       </div>
-      <div class="priect_top_bottom">
+      <div class="priect_top_bottom"
+        v-if="(kLineDetails.if_us != 1 && kLineDetails.type != 'hk') && kLineDetails.type != 'hk' && kLineDetails.if_zhishu == 0">
         <div class="t_title">
           <span>{{ '五档' }}</span>
         </div>
@@ -211,12 +214,97 @@
           </div>
         </div>
       </div>
-      <div class="jianjie" :class="acseFlag ? 'isjj' : ''" ref="isjj" id="isjj">
+      <div class="priect_top_bottom" v-if="kLineDetails.if_us == 1">
+        <div class="t_title">
+          <span>{{ '分时成交' }}</span>
+        </div>
+        <div class="charts">
+          <div class="left_s">
+            <div class="t_ma">
+              <span>{{ '时间' }}</span>
+            </div>
+            <div class="ets" v-for="item in timedata.data.details">
+              <div class="left_sell1">
+                <span>{{ item.split(',')[0] }}</span>
+              </div>
+              <div class="right_sell1">
+                <span>{{ }}</span>
+              </div>
+            </div>
+
+          </div>
+          <div class="right_h">
+            <div class="t_ma">
+              <span>{{ '价格' }}</span>
+            </div>
+            <div class="ets" v-for="item in timedata.data.details">
+              <div class="left_sell1">
+                <span>{{ item.split(',')[1] }}</span>
+              </div>
+              <div class="right_sell1">
+                <span>{{ }}</span>
+              </div>
+            </div>
+
+          </div>
+          <div class="right_h">
+            <div class="t_ma">
+              <span>{{ '成交量' }}</span>
+            </div>
+            <div class="ets" v-for="item in timedata.data.details">
+              <div class="left_sell1">
+                <span>{{ item.split(',')[2] }}</span>
+              </div>
+              <div class="right_sell1">
+                <span>{{ }}</span>
+              </div>
+            </div>
+
+          </div>
+        </div>
+      </div>
+      <div class="jianjie" v-if="!(kLineDetails.if_zhishu != '0' && singDetails.gid.indexOf('hk') > -1)"
+        :class="acseFlag ? 'isjj' : ''" ref="isjj" id="isjj">
         <div class="top_jj">
           <span>{{ '简介' }}</span>
         </div>
         <div class="jet">
           <span>{{ jianjie }}</span>
+        </div>
+      </div>
+      <div class="hknews" v-if="kLineDetails.if_zhishu != '0' && singDetails.gid.indexOf('hk') > -1">
+
+        <div class="news-tab">
+          <div class="t_title">
+            <span>{{ '新闻' }}</span>
+          </div>
+          <mt-tab-container v-model="news" :swipeable="false" style="padding-top: 0.5rem;">
+            <mt-tab-container-item id="tab_2">
+              <div class="news-content">
+                <div class="item-out" v-for="(item, inde) in newsdetailList" :key="inde">
+                  <div class="item-times">{{ item.Art_ShowTime | utc2beijing }}</div>
+                  <div class="titContent" style="-webkit-box-orient: vertical;">{{ item.Art_Title }}</div>
+                </div>
+              </div>
+            </mt-tab-container-item>
+          </mt-tab-container>
+        </div>
+      </div>
+      <div class="hknews" v-else>
+        <div class="news-tab">
+          <div class="t_title">
+            <span>{{ '新闻' }}</span>
+          </div>
+          <mt-tab-container v-model="news" :swipeable="false" style="padding-top: 0.5rem;">
+            <mt-tab-container-item id="tab_2">
+              <div class="news-content">
+                <div class="item-out" v-for="(item, inde) in newsdetailList" :key="inde">
+                  <div class="item-times">{{ item.addTime | gettime }}</div>
+                  <div class="titContent" style="-webkit-box-orient: vertical;">{{ item.title }}</div>
+                </div>
+              </div>
+            </mt-tab-container-item>
+          </mt-tab-container>
         </div>
       </div>
       <div class="border_bottom"></div>
@@ -228,7 +316,7 @@
           <img src="../../assets/img/shoucangle.png" alt v-else />
         </div>
         <div class="right_xx" @click="handleJj()">
-          <a href="#isjj"><img src="../../assets/img/xiaoxi.png" alt /></a>
+          <a href="#"><img src="../../assets/img/xiaoxi.png" alt /></a>
         </div>
       </div>
       <div class="rights">
@@ -261,30 +349,55 @@
   name: "kline",
   data() {
     return {
+      news: 'tab_2',
       kLineDetails: {}, // K线图详情数据
       singDetails: {},
       scFlag: false,
       acseFlag: false,
       jianjie: "",
-      optionBtn:false,
-      isOptionOpt:false,
-      dialogFlag:false,
+      optionBtn: false,
+      isOptionOpt: false,
+      dialogFlag: false,
+      timedata: [],
+      newsdetailList: []
     };
   },
   components: {
     Kline
   },
   created() {
+    
     const { query } = this.$route;
     this.kLineDetails = query;
+    if (query.if_us == '1') {
+
+      this.getSingDetailUs();
+    } else {
+      this.getSingDetails();
+    }
     this.getOpation();
     // this.$Lazyload();
-    this.getSingDetails();
     this.getUserInfo();
   },
+
+  // beforeDestroy() {
+  //   this.Klinetype = false;
+  //   window.clearInterval()
+  // },
   methods: {
+    async getHknews() {
+      await api.queryIndexNews().then(res => {
+        if (res.status == 0) {
+          this.newsdetailList = res.data.data;
+        }
+      });
+    },
+    async getNohknews() {
+      let data = await api.queryNewsList(4);
+      this.newsdetailList = data.data.list
+    },
     async option() {
-      if(this.optionBtn){
+      if (this.optionBtn) {
         return
       };
       this.optionBtn = true;
@@ -295,8 +408,10 @@
           this.optionBtn = false;
         } else {
           this.optionBtn = false;
-          console.log(data.msg);
-         
+          this.$message({
+          message: data.msg,
+          type: 'warning'
+        });
         }
       } else {
         let data = await api.addOption({ code: this.kLineDetails.code });
@@ -304,9 +419,16 @@
           this.getOpation();
           this.optionBtn = false;
         } else {
-          console.log(data.msg);
+          this.$message({
+          message: data.msg,
+          type: 'warning'
+        });
           this.optionBtn = false;
         }
+      }
+      if (navigator.vibrate) {
+        // 支持
+        navigator.vibrate([55]);
       }
     },
     async getUserInfo() {
@@ -321,18 +443,18 @@
       }
       this.$store.state.user = this.user;
     },
-    async getOpation () {
-        let opts = {
-          code: this.$route.query.code
-        }
-        let data = await api.isOption(opts)
-        if (data.status === 0) {
-          // 0 --> 未添加
-          this.isOptionOpt = false
-        } else {
-          this.isOptionOpt = true
-        }
-      },
+    async getOpation() {
+      let opts = {
+        code: this.$route.query.code
+      }
+      let data = await api.isOption(opts)
+      if (data.status === 0) {
+        // 0 --> 未添加
+        this.isOptionOpt = false
+      } else {
+        this.isOptionOpt = true
+      }
+    },
     async getSingDetails() {
       let opts = {
         code: this.kLineDetails.code,
@@ -341,11 +463,44 @@
       await api.getSingleStock(opts).then(res => {
         if (res.status === 0) {
           this.singDetails = res.data.stock;
+          
           if (res.data.introduction) {
-            this.jianjie = res.data.introduction.result.data.fareArea;
+            this.jianjie = res.data.introduction;
           } else {
             this.jianjie = res.data.indexintroduction;
           }
+          console.log(this.singDetails);
+          if (this.kLineDetails.if_zhishu != '0' && this.singDetails.gid.indexOf('hk') > -1) {
+            this.getHknews();
+          } else {
+            this.getNohknews();
+          }
+        }
+      });
+    },
+    async getSingDetailUs() {
+      let opts = {
+        code: this.kLineDetails.code,
+        stockType: this.kLineDetails.type
+      };
+      await api.getUsDetail(opts).then(res => {
+        // console.log(res,1111123);
+        // var that = this
+        // if(!res){
+        //   setTimeout(() => {
+        //     that.getSingDetailUs()
+        //   }, 3000);
+          
+        // }
+        if (res.status === 0) {
+          this.singDetails = res.data.stock;
+          this.timedata = res.data.timedata;
+          if (res.data.introduction) {
+            this.jianjie = res.data.introduction;
+          } else {
+            this.jianjie = res.data.indexintroduction;
+          }
+          this.getNohknews();
           console.log(this.singDetails);
         }
       });
@@ -355,6 +510,10 @@
       setTimeout(() => {
         this.acseFlag = false;
       }, 1000);
+      if (navigator.vibrate) {
+        // 支持
+        navigator.vibrate([55]);
+      }
     },
     handleBack() {
       this.$router.go(-1);
@@ -366,23 +525,169 @@
       this.$router.push({
         path: "/TradingBuy",
         query: {
-          t:index,
-          code:this.kLineDetails.code,
-          m:this.singDetails.nowPrice,
-          type:this.kLineDetails.if_zhishu,
-          name:this.kLineDetails.name,
+          t: index,
+          code: this.kLineDetails.code,
+          m: this.singDetails.nowPrice,
+          type: this.kLineDetails.if_zhishu,
+          name: this.kLineDetails.name,
+          if_us: this.kLineDetails.if_us,
         }
       });
+      if (navigator.vibrate) {
+        // 支持
+        navigator.vibrate([55]);
+      }
+    }
+  },
+  filters: {
+    getName(name) {
+      if (name.length > 15) {
+        return name.substring(0, 14);
+      } else {
+        return name;
+      }
+    },
+    gettime(time) {
+      if (!time) {
+        return "";
+      }
+      var nd = new Date(time);
+      var y = nd.getFullYear();
+      var mm = nd.getMonth() + 1;
+      var d = nd.getDate();
+      var h = nd.getHours();
+      var m = nd.getMinutes();
+      var c = nd.getSeconds();
+      if (mm < 10) {
+        mm = "0" + mm;
+      }
+      if (d < 10) {
+        d = "0" + d;
+      }
+      if (h < 10) {
+        h = "0" + h;
+      }
+      if (m < 10) {
+        m = "0" + m;
+      }
+      if (c < 10) {
+        c = "0" + c;
+      }
+      //17:35:2922-06-2022
+      return y + "-" + mm + "-" + d + " " + h + ":" + m + ":" + c;
+    },
+    utc2beijing(utc_datetime) {
+      // 转为正常的时间格式 年-月-日 时:分:秒
+      var T_pos = utc_datetime.indexOf('T');
+      var Z_pos = utc_datetime.indexOf('Z');
+      var year_month_day = utc_datetime.substr(0, T_pos);
+      var hour_minute_second = utc_datetime.substr(T_pos + 1, Z_pos - T_pos - 1);
+      var new_datetime = year_month_day + " " + hour_minute_second; // 2017-03-31 08:02:06
+
+      // 处理成为时间戳
+      timestamp = new Date(Date.parse(new_datetime));
+      timestamp = timestamp.getTime();
+      timestamp = timestamp / 1000;
+
+      // 增加8个小时,北京时间比utc时间多八个时区
+      var timestamp = timestamp + 8 * 60 * 60;
+
+      // 时间戳转为时间
+      var beijing_datetime = new Date(parseInt(timestamp) * 1000).toLocaleString().replace(/年|月/g, "-").replace(/日/g, " ");
+      return beijing_datetime; // 2017-03-31 16:02:06
     }
   }
 };
 </script>
 
 <style scoped lang="less">
+.news-tab {
+  width: 100%;
+  position: relative;
+  left: 0;
+  right: 0;
+  margin: auto;
+  margin-top: 0.2rem;
+  border-radius: 0.4rem 0.4rem 0 0;
+  padding-top: 0.3rem;
+
+  .t_title {
+    width: 100%;
+    font-size: 0.4546rem;
+    margin-top: 0.2rem;
+    padding: 0 0.3rem;
+    
+    span{
+      font-weight: 700;
+    }
+  }
+
+  /deep/.is-selected .tab-name {
+    position: relative;
+  }
+
+  /deep/.mint-navbar .mint-tab-item.is-selected {
+    border: 0 !important;
+    border-bottom: none;
+  }
+
+  /deep/.is-selected .tab-name:after {
+    position: absolute;
+    display: block;
+    content: '';
+    height: .07rem;
+    background-color: #1381A4;
+    width: 100%;
+    left: 0;
+    bottom: -.25rem;
+  }
+}
+
+.news-content {
+  position: relative;
+  padding: 0.3rem;
+}
+
+.item-out {
+  position: relative;
+  border-left: 0.01rem solid rgba(192, 192, 192, 0.8);
+  padding: 0 0.25rem 1rem 0.25rem;
+}
+
+.item-out::before {
+  content: "●";
+  position: absolute;
+  top: -0.1rem;
+  left: -0.128rem;
+  margin: auto;
+}
+
+.item-times {
+  color: #999;
+  margin-bottom: 0.15rem;
+}
+
+.titContent {
+  position: relative;
+  width: 100%;
+  font-size: .35rem;
+  line-height: .46rem;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  -webkit-line-clamp: 2;
+  display: -webkit-box;
+}
+
+
+
+
+
+
 .ti_cont {
   width: 100%;
   display: flex;
 }
+
 .kline_detail_page {
   width: 100%;
   height: calc(100% - 1.7rem);
@@ -394,6 +699,7 @@
     position: relative;
   }
 }
+
 .sss {
   width: 50%;
   height: 1.2rem;
@@ -401,6 +707,7 @@
   justify-content: flex-end;
   align-items: center;
 }
+
 .detail_title {
   width: 100%;
   height: 3.2rem;
@@ -752,12 +1059,12 @@
 
 .jianjie {
   width: 100%;
-  height: 5rem;
+  // height: 5rem;
   background: rgb(255, 255, 255);
   margin-top: 0.2rem;
-  border-radius: 0.3rem 0.3rem 0 0;
-  margin-bottom: 1.7rem;
-  padding: 0 0.3rem;
+  border-radius: 0.3rem;
+  margin-bottom: 0.3rem;
+  padding: 0.4rem 0.3rem;
 
   .top_jj {
     width: 100%;
@@ -780,7 +1087,7 @@
   }
 }
 
-  @-webkit-keyframes zy{
+@-webkit-keyframes zy {
   10% {
     transform: rotate(15deg);
   }
@@ -813,10 +1120,12 @@
   animation: zy 2.5s 0.15s linear infinite;
   animation: zy 2.5s 0.15s linear infinite;
 }
+
 .content_money {
   width: 80%;
   height: 80%;
 }
+
 .sanjiao {
   width: 0.4rem;
   height: 0.4rem;
@@ -829,12 +1138,14 @@
     height: 0.4rem;
   }
 }
+
 .top_price {
   width: 100%;
   height: 70%;
   display: flex;
   align-items: center;
   justify-content: flex-end;
+
   .left {
     width: 0.8rem;
     height: 0.4103rem;
@@ -863,12 +1174,14 @@
     margin-left: 0.1rem;
     margin-right: 0.1rem;
     min-width: 1.9rem;
+
     span {
       font-weight: 600;
       text-align: right;
     }
   }
 }
+
 .bottom_balance {
   width: 100%;
   height: 30%;

--
Gitblit v1.9.3