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