From 90d901daf17ba0644eb5c3096450262cfd76ef58 Mon Sep 17 00:00:00 2001
From: dcc <dcc@163.com>
Date: Thu, 27 Jun 2024 18:28:50 +0800
Subject: [PATCH] 123

---
 src/page/list/trading-list.vue |  743 ++++----------------------------------------------------
 1 files changed, 62 insertions(+), 681 deletions(-)

diff --git a/src/page/list/trading-list.vue b/src/page/list/trading-list.vue
index 402d7d7..9b62ffe 100644
--- a/src/page/list/trading-list.vue
+++ b/src/page/list/trading-list.vue
@@ -1,726 +1,107 @@
 <template>
-  <div class="tr_list_page">
-    <div class="content">
-      <div class="tabs">
-        <div class="bottom_content" v-if="tabsIndex === 1">
-          <!-- 搜索框 -->
-          <div class="search">
-            <div class="search_content">
-              <div class="left_search">
-                <div class="search_img">
-                  <img src="../../assets/img/searchs.png" alt />
-                </div>
-                <div class="search_input">
-                  <input type="text" class="searchs" placeholder="输入品种名称/代码搜索" />
-                </div>
-              </div>
-            </div>
+  <div>
+    <!-- 搜索框 -->
+    <div class="search">
+      <div class="search_content">
+        <div class="left_search">
+          <div class="search_img">
+            <img src="../../assets/img/searchs.png" alt />
           </div>
-          <div class="tab_class">
-            <div class="scroll_tab">
-              <div class="tab_items" v-for="(item, index) in tabsClassArr" :key="index"
-                @click="handleTabsItem(item, index)">
-                <span :class="tabsItemIndex === index ? 'active' : ''">{{ item.name }}</span>
-              </div>
-            </div>
-          </div>
-          <div class="kai_mess">
-            <div class="left_identity_img">
-              <img src="../../assets/img/shenfen2.png" alt />
-            </div>
-            <div class="text">
-              <span>{{ '开户即可入金交易' }}</span>
-            </div>
-            <div class="right_go">
-              <img src="../../assets/img/yuoujiantou.png" alt />
-            </div>
-          </div>
-          <div class="list_title">
-            <div class="item_title varieties">
-              <span>{{ '品种' }}</span>
-            </div>
-            <div class="item_title latest_price">
-              <span>{{ '最新价' }}</span>
-            </div>
-            <div class="item_title applies">
-              <span>{{ '涨跌幅' }}</span>
-            </div>
-          </div>
-          <div class="list">
-            <div class="list_items">
-              <div class="item" v-for="(item, index) in listArr" :key="index">
-                <div class="left_title">
-                  <div class="tp">
-                    <span class="collection" @click="handleCollectionClick(item)">
-                      <span class="shu"></span>
-                    </span>
-                    <span class="title_color">{{ tabsItemIndex == 3 ? item.futuresName : item.indexName }}</span>
-                  </div>
-                  <div class="bt">
-                    <span>{{ tabsItemIndex == 3 ? item.futuresCode : item.indexCode }}</span>
-                  </div>
-                </div>
-                <div class="center_price">
-                  <div class="tp">
-                    <span class="price_color">{{ tabsItemIndex == 3 ? Number(item.nowPrice).toFixed(2) : item.currentPoint
-                    }}</span>
-                  </div>
-                  <div class="bt">
-                    <span>{{ item.addTime | gettime }}</span>
-                  </div>
-                </div>
-                <div class="right_bs">
-                  <div class="tp">
-                    <span class="price_color">{{ tabsItemIndex == 3 ? item.coinRate : item.floatRate + '%' }}</span>
-                  </div>
-                  <div class="bt"></div>
-                </div>
-              </div>
-            </div>
+          <div class="search_input">
+            <input
+              type="text"
+              class="searchs"
+              :placeholder="$t('hj37')"
+              ref="search"
+              id="sousuo"
+              v-model="gpcode"
+              @input="gpinput"
+            />
           </div>
         </div>
+        <div class="right_search" @click="sousuo">{{ $t("Search") }}</div>
       </div>
     </div>
-    <div class="shai" v-if="dialogFlag" @click="openDialog()"></div>
-    <div class="top_title" ref="topTitle">
-      <div>
-        <div class="tabs_title">
-          <div class="tb" v-for="(item, index) in tabsArr" :key="index" @click="handleTabsClick(item, index)">
-            <span :class="index === tabsIndex ? 'active' : ''">{{ item }}</span>
-          </div>
-        </div>
-        <div class="right_money" @click="openDialog()">
-          <div class="content_money" v-if="tabsIndex === 1">
-            <div class="top_price">
-              <div class="left">
-                <span>{{ '余额' }}</span>
-              </div>
-              <div class="right">
-                <span>{{ '¥ 49,656.79' }}</span>
-              </div>
-              <div class="sanjiao">
-                <img src="../../assets/img/xiala.png" alt />
-              </div>
-            </div>
-            <div class="bottom_balance">
-              <div>
-                <span>{{ '可用余额' }}</span>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
+    <tabsList ref="tabsList" />
   </div>
 </template>
 
 <script>
-import * as api from "@/axios/api";
-import elalert from "@/components/elalert.vue";
+import tabsList from "./tradingList/tabs";
 export default {
-  name: "trading",
-  components: {
-    elalert
-  },
+  name: "TradingList",
+  components: { tabsList },
   data() {
     return {
-      tabsIndex: 1,
-      tabsArr: ["自选", "市场"],
-      tabClassActive: 1,
-      dialogFlag: false,
-      pageNum: 1,
-      stockPlate: "",
-      alertShow: false,
-      elType: "warning",
-      texts: "",
-      tabsClassArr: [
-        {
-          name: "指数",
-          type: 0
-        },
-        {
-          name: "沪深",
-          type: 1
-        },
-        {
-          name: "科创",
-          type: 2
-        },
-        {
-          name: "期货",
-          type: 3
-        }
-      ],
-      tabsItemIndex: 0,
-      listArr: []
+      gpcode: "",
     };
   },
-  mounted() {
-    this.getListMarket();
-
-  },
   methods: {
-    closeAlert() {
-      this.alertShow = false;
+    sousuo() {
+      this.$refs.tabsList.sousuo = this.gpcode;
     },
-    async getListMarket() {
-
-      // 获取指数列表
-      let result = await api.getListMarket()
-      if (result.status === 0) {
-        this.listArr = result.data
-      } else {
-        this.texts = result.msg;
-        this.alertShow = true;
-      }
+    gpinput(e) {
+      this.gpcode = e.target.value;
+      this.$refs.tabsList.sousuo = e.target.value;
     },
-    async getStock() {
-      let opt = {
-        pageNum: this.pageNum,
-        pageSize: 15,
-        stockPlate: this.stockPlate,
-      }
-      let data = await api.getListMarket(opt)
-      if (data.status === 0) {
-
-        data.data.forEach(element => {
-          this.listArr.push(element)
-        })
-      } else {
-        this.texts = data.msg;
-        this.alertShow = true;
-      }
-    },
-    async getFutures() {
-      // 获取期货列表
-      let opt = {
-        homeShow: 1,
-        pageNum: this.pageNum,
-        pageSize: 15
-      }
-      let data = await api.getHomeFutures(opt)
-      if (data.status === 0) {
-        console.log(this.tabsItemIndex)
-        this.listArr = data.data
-        console.log("期货", this.listArr)
-      } else {
-        this.texts = data.msg;
-        this.alertShow = true;
-      }
-    },
-    handleTabsClick(item, index) {
-      if (index == 0) {
-        this.$refs['topTitle'].style.height = '1.2821rem'
-        setTimeout(() => {
-          this.dialogFlag = false;
-          this.tabsIndex = index;
-        }, 800);
-      } else {
-        this.tabsIndex = index;
-      }
-
-
-    },
-    handleTabsItem(item, index) {
-      this.tabsItemIndex = index;
-      switch (item.type) {
-        case 0:
-          this.listArr = [];
-          this.getListMarket();
-          break;
-        case 1:
-          this.stockPlate = ""
-          this.listArr = [];
-          this.getStock();
-          break;
-        case 2:
-          this.stockPlate = "科创"
-          this.listArr = [];
-          this.getStock();
-          break;
-        case 3:
-          this.listArr = [];
-          this.getFutures();
-          break;
-      }
-    },
-    handleCollectionClick(item) {
-      item.collection = !item.collection;
-    },
-    openDialog() {
-      if (!this.dialogFlag) {
-        this.$refs['topTitle'].style.height = '7rem'
-      } else {
-        this.$refs['topTitle'].style.height = '1.2821rem'
-      }
-      this.dialogFlag = !this.dialogFlag;
-    }
-  },
-  filters: {
-    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 h + ":" + m + ":" + c;
-    }
   },
 };
 </script>
 
 <style scoped lang="less">
-.tr_list_page {
-  width: 100%;
-  height: calc(100% - 1.3rem);
-  background: #fff;
-
-  >.content {
-    width: 100%;
-    height: 100%;
-  }
-}
-
-.tabs {
-  width: 100%;
-  height: 100%;
-  position: relative;
-
-  .search {
-    width: 100%;
-    height: 1rem;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    padding: 0 0.3rem;
-
-    .search_content {
-      width: 100%;
-      height: 90%;
-      display: flex;
-      align-items: center;
-    }
-
-    .left_search {
-      width: 100%;
-      height: 100%;
-      background: #f6f6f6;
-      border-radius: 0.15rem;
-      display: flex;
-
-      .search_img {
-        width: 1rem;
-        height: 100%;
-        display: flex;
-        justify-content: center;
-        align-items: center;
-
-        img {
-          width: 0.5rem;
-          height: 0.5rem;
-        }
-      }
-
-      .search_input {
-        width: 100%;
-        overflow: hidden;
-        height: 100%;
-        display: flex;
-      }
-    }
-
-    .right_search_class {
-      width: 13%;
-      height: 100%;
-      display: flex;
-      justify-content: flex-end;
-      align-items: center;
-
-      img {
-        width: 0.6rem;
-        height: 0.6rem;
-      }
-    }
-  }
-}
-
-.top_title {
-  width: 100%;
-  height: 1.2821rem;
-  padding: 0 0.3rem;
-  position: fixed;
-  background: #fff;
-  top: 0;
-  z-index: 9999999;
-  transition: all 1s;
-
-  >div {
-    width: 100%;
-    height: 1.2821rem;
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-  }
-
-  .tabs_title {
-    width: 23%;
-    height: 100%;
-    display: flex;
-  }
-
-  .tb {
-    width: 50%;
-    height: 100%;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    font-size: 0.4103rem;
-  }
-
-  .active {
-    font-size: 0.5003rem;
-    font-weight: 800;
-  }
-}
-
-.bottom_content {
-  width: 100%;
-  height: calc(100% - 1.2821rem);
-  position: relative;
-  top: 7%;
-}
-
-.scroll_tab {
-  width: 100%;
+.search {
   height: 1rem;
-  overflow-x: scroll;
-  -webkit-overflow-scrolling: touch;
-  display: -webkit-box;
-  white-space: nowrap;
-
-  >div {
-    display: inline-block;
-    width: 15%;
-    height: 100%;
-    display: flex;
-    font-size: 0.4rem;
-    align-items: center;
-
-    span {
-      display: inline-block;
-      min-width: 40%;
-      height: 100%;
-      text-align: center;
-      line-height: 1.1538rem;
-    }
-  }
-
-  span.active {
-    color: rgb(2, 99, 226);
-    border-bottom: 0.07rem solid rgb(2, 99, 226);
-    font-weight: 800;
-    transition: all 0.5s;
-  }
-}
-
-.scroll_tab::-webkit-scrollbar {
-  display: none;
-}
-
-.kai_mess {
-  width: 100%;
-  height: 1.2821rem;
-  background: #f5f9fe;
-  display: flex;
-  justify-content: space-between;
-  position: absolute;
-
-  .left_identity_img {
-    width: 0.9744rem;
-    height: 100%;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    margin-left: 0.2rem;
-
-    img {
-      width: 0.6rem;
-      height: 0.6rem;
-    }
-  }
-
-  .text {
-    width: 80%;
-    height: 100%;
-    display: flex;
-    align-items: center;
-    color: rgb(2, 99, 226);
-    font-weight: 800;
-    font-size: 0.35rem;
-    padding-left: 0.35rem;
-  }
-
-  .right_go {
-    width: 10%;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-
-    img {
-      width: 0.6rem;
-      height: 0.6rem;
-    }
-  }
-}
-
-.list::-webkit-scrollbar {
-  display: none;
-}
-
-.list {
-  width: 100%;
-  height: calc(100% - 1.2821rem - 1rem - 1.1538rem - 1.3333rem);
-  overflow-x: auto;
-  padding-bottom: 1.2821rem;
-  padding: 0 0.3rem;
-
-  .list_items {
-    width: 100%;
-
-    >div {
-      width: 100%;
-      height: 1.0256rem;
-      display: flex;
-      margin: 0.5rem 0;
-
-      >div {
-        >div {
-          display: flex;
-          align-items: center;
-        }
-
-        .tp {
-          width: 100%;
-          height: 70%;
-        }
-
-        .bt {
-          width: 100%;
-          height: 30%;
-        }
-      }
-    }
-
-    .left_title {
-      width: 45%;
-      height: 100%;
-    }
-
-    .center_price {
-      width: 35%;
-      height: 100%;
-    }
-
-    .right_bs {
-      width: 20%;
-      height: 100%;
-    }
-  }
-}
-
-.list_title {
-  width: 100%;
-  height: 1rem;
-  margin-top: 1.29rem;
-  padding: 0 0.3rem;
-  color: #a1a2a4;
-  display: flex;
-
-  >div {
-    display: flex;
-    align-items: center;
-  }
-
-  .varieties {
-    width: 45%;
-  }
-
-  .latest_price {
-    width: 35%;
-  }
-
-  .applies {
-    width: 20%;
-  }
-}
-
-.price_color {
-  color: rgb(39, 171, 99);
-  font-size: 0.4rem;
-  font-weight: 600;
-}
-
-.title_color {
-  color: rgb(2, 2, 2);
-  font-size: 0.4rem;
-  font-weight: 600;
-}
-
-.tab_items {
-  font-size: 0.2rem;
-}
-
-.tab_class {
-  padding: 0 0.3rem;
-}
-
-.searchs::placeholder {
-  color: #8e8f92;
-}
-
-.searchs {
-  width: 100%;
-}
-
-.collection {
-  display: inline-block;
-  width: 0.1rem;
-  height: 50%;
   display: flex;
   align-items: center;
   justify-content: center;
-  margin-right: 0.1rem;
+  margin: 15px 22px;
+  position: relative;
+  z-index: 99;
 
-  .shu {
-    width: 60%;
-    height: 100%;
-    background: #919191;
-  }
-}
-
-.right_money {
-  width: 44%;
-  height: 100%;
-  display: flex;
-  align-items: center;
-  justify-content: flex-end;
-
-  .content_money {
-    width: 80%;
-    height: 80%;
-  }
-
-  .top_price {
+  .search_content {
     width: 100%;
-    height: 70%;
+    height: 90%;
     display: flex;
-    align-items: center;
     justify-content: space-between;
+    align-items: center;
+  }
 
-    .left {
-      width: 0.8rem;
-      height: 0.4103rem;
-      border-radius: 0.1rem;
-      background: #4d73b1;
-      color: #fff;
-      font-size: 0.3077rem;
+  .left_search {
+    width: 100%;
+    height: 100%;
+    background: #fff;
+    border-radius: 0.5rem;
+    display: flex;
+    .search_img {
+      width: 1rem;
+      height: 100%;
       display: flex;
-      align-items: center;
       justify-content: center;
-      margin-left: 0.3rem;
-
-      span {
-        display: inline-block;
-        transform: scale(0.8);
-        font-weight: 600;
+      align-items: center;
+      img {
+        width: 0.5rem;
+        height: 0.5rem;
       }
     }
 
-    .right {
-      width: calc(100% - 1.2rem);
+    .search_input {
+      width: 100%;
+      overflow: hidden;
       height: 100%;
       display: flex;
-      align-items: center;
-      justify-content: flex-end;
-
-      span {
-        font-weight: 600;
-      }
     }
   }
 
-  .bottom_balance {
-    width: 100%;
-    height: 30%;
-    display: flex;
-    justify-content: flex-end;
-    font-size: 0.3077rem;
-    color: #acaeaf;
-    transform: scale(0.9);
-    margin-left: 0.2rem;
-    padding-right: 0.48rem;
+  .right_search {
+    width: 140px;
+    line-height: 0.9rem;
+    text-align: center;
+    height: 100%;
+    border-radius: 0.5rem;
+    background-color: #0066ed;
+    color: #ffffff;
+    font-weight: bold;
+    margin-left: 20px;
   }
-}
-
-.sanjiao {
-  width: 0.4rem;
-  height: 0.4rem;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-
-  img {
-    width: 0.4rem;
-    height: 0.4rem;
-  }
-}
-
-.dialog {
-  position: absolute;
-  width: 100%;
-  height: 100%;
-  background: rgba(0, 0, 0, 0.4);
-  top: 7%;
-  z-index: 9;
-  transition: all 0.5s;
-}
-
-.dialog.open {
-  top: 7%;
-}
-
-.shai {
-  position: absolute;
-  width: 100%;
-  height: 100%;
-  background: rgba(0, 0, 0, 0.4);
-  top: 0%;
-  z-index: 10;
-  transition: all 0.5s;
-}
-
-.shai.open {
-  top: 4%;
 }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3