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/locales/zh.json | 3
src/page/list/tradingList/tabs.vue | 2
src/page/home/home.vue | 7
src/page/list/trading-list.vue | 1
src/page/list/tradingList/data.list.vue | 170 +++++++++++++++++++--------------
src/utils/WhrWebSocket.js | 55 +++++++++++
src/App.vue | 62 +++++++++---
7 files changed, 205 insertions(+), 95 deletions(-)
diff --git a/src/App.vue b/src/App.vue
index d67e27a..59ed5fe 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,20 +1,12 @@
<template>
- <div
- id="app"
- :class="`${$state.theme === 'red' ? 'red-theme' : 'black-theme'}`"
- >
+ <div id="app" :class="`${$state.theme === 'red' ? 'red-theme' : 'black-theme'}`">
<div :class="`header-box`" v-if="hasHeader && title !== $t('hj248')">
<mt-header :title="title">
<mt-button icon="back" slot="left" @click="$router.go(-1)"></mt-button>
<div v-if="!is_Show">
<template v-if="iconRight == 'search'">
- <img
- slot="right"
- class="search-right"
- src="./assets/ico/fangdajing.png"
- alt
- />
+ <img slot="right" class="search-right" src="./assets/ico/fangdajing.png" alt />
</template>
<template v-else>
<mt-button icon="more" slot="right"></mt-button>
@@ -24,7 +16,9 @@
</div>
<div class="body-box">
<transition :name="transitionName">
- <router-view></router-view>
+ <!-- <keep-alive include="TradingList"> -->
+ <router-view></router-view>
+ <!-- </keep-alive> -->
</transition>
</div>
<foot v-if="$route.meta.show !== true" @close="footColse"></foot>
@@ -124,35 +118,43 @@
/deep/ .van-list__finished-text {
line-height: 1.925926rem !important;
}
+
/deep/ .van-list__error-text {
line-height: 1.925926rem !important;
}
+
#app {
width: 100vw;
height: 100vh;
overflow: hidden;
font-family: "rubik";
+
.header-box {
width: 100%;
height: 1.4rem;
+
/deep/.mint-header {
height: 100%;
background-color: #16171d;
+
// background-color: rgba(20, 45, 55, 0.3);
.is-left {
.mintui {
font-size: 20px;
}
}
+
.mint-header-title {
font-size: 0.36rem;
color: rgba(255, 255, 255, 1);
}
}
+
button {
outline: none;
}
}
+
.body-box {
width: 100%;
height: 100%;
@@ -160,59 +162,76 @@
box-sizing: border-box;
overflow-y: auto;
}
+
&.red-theme {
background: rgb(241, 242, 246);
color: #000;
+
/deep/.mint-header {
background: none;
+
.mint-header-title {
font-size: 0.42rem;
color: #212121;
}
+
.mintui {
color: #212121;
}
}
+
/deep/.van-swipe-item {
color: #000;
}
+
/deep/.navs_content {
background: #fff !important;
}
+
/deep/.fo_content {
background: #fff;
}
+
/deep/.news-tab {
background: #fff;
}
+
/deep/.mint-tab-item-label {
color: #000;
font-size: 0.26rem;
}
+
/deep/.top_title {
color: #000;
}
+
/deep/.titContent {
color: #000;
}
+
/deep/.mint-navbar {
background: #fff;
}
+
/deep/.mint-tab-item {
background: #fff;
border: none;
}
+
/deep/.footCss {
background: #fff;
}
+
/deep/.newDetail-tits {
color: #aaa;
}
+
/deep/.van-skeleton__row,
.van-skeleton__title {
background-color: #fff !important;
}
}
+
&.black-theme {
// background: #16171d;
// background: rgb(14, 14, 15);
@@ -221,48 +240,58 @@
/deep/.navs_content {
background: #272733;
}
+
/deep/.fo_content {
background: #272733;
}
+
/deep/.news-tab {
background: #272733;
}
+
/deep/.mint-navbar {
background: #272733;
}
+
/deep/.mint-tab-item-label {
color: #fff;
font-size: 0.26rem;
}
+
/deep/.titContent {
color: #000;
}
- /deep/.mint-tab-container {
- }
+
+ /deep/.mint-tab-container {}
/deep/.mint-tab-item {
background: #272733;
}
+
/deep/.van-swipe-item {
color: #000;
}
+
/deep/.footCss {
background: rgb(33, 33, 43);
}
+
/deep/.newDetail-tits {
color: #999;
}
}
}
+
.search-right {
width: 0.3rem;
height: 0.3rem;
}
+
.mint-search-list {
position: relative !important;
}
-.topLeft {
-}
+
+.topLeft {}
/deep/.el-alert {
width: 75% !important;
@@ -275,12 +304,15 @@
margin: auto !important;
font-size: 0.36rem !important;
}
+
/deep/.el-alert__title {
font-size: 0.36rem !important;
}
+
/deep/.el-icon-close::before {
display: none;
}
+
/deep/.icon-icon_A::before {
font-size: 0.6rem !important;
}
diff --git a/src/locales/zh.json b/src/locales/zh.json
index 7fb794b..534e77e 100644
--- a/src/locales/zh.json
+++ b/src/locales/zh.json
@@ -566,5 +566,6 @@
"配售结束时间": "配售结束时间",
"请选择提现金额": "请选择提现金额",
"关于我们": "关于我们",
- "贷款": "贷款"
+ "贷款": "贷款",
+ "hj621": "大宗交易"
}
diff --git a/src/page/home/home.vue b/src/page/home/home.vue
index 7150f56..e69fe98 100644
--- a/src/page/home/home.vue
+++ b/src/page/home/home.vue
@@ -34,20 +34,19 @@
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQvSURBVHgB7Zq/TxRBFMe/gyZCI4cmICSa5R8wWGiiIeEoTEwkETWxsOFsSKyAQAxWd9qY2ICVCQ00lgZN7MHEWNgcsdLqzl+cMcE7rM5Cxvf2bvHY25mdvds9DtxP8nLL7OzsfufN25l5CxATExMTExPzP2GRrZEtV48PLQmyDJl02QIOofBpsiLqxTqWI5vAISCJyvCVhsbCh3AAschWoReW05w/MPHtxKlq+HJ5uloP1WOdxzNoY8bRmNes6rkDE99J6OOUz40YtMOxq+uwLPZ5mPOwXIT6AXn4TiE4KbRhfGegn2bS+BenjWBBH9/cIdNoAUnoe38N4fa+hX2Ob92NRxAdKeg7OjIaj9PJrYzudK4oE4WiTBW25fJmSWYLJVkkk1UrctnDRwvy9BmrKcECwXA33kNW8r2qIjaNpZN19yORluzAlJC2F33j/svnPC6cHXQXG+s4iuYwF+uCPXqMX37CFmsMeRhebQ32CP9nIToQJQqx7NVOgawQDU1bdXBb3KZJ3egEK8T+KMoh8mr4b3Nq8yu37UOzMex9vUJsUAqPT3iW9yf23pZeas5hnp5wtL9H5KEgfA+HJLZBbE9zTKsqhCt4f8U6WF0d6mcIT3B7iLWREtOql1g0MeyCFxOozLOhoInhXaTA4kC3mHGXRy64SPFUFvaKLDSMBNMa4bfEoHt+jnYeJsqVxEDLoS5JdB7BNY/yQPh7eHIr1MX83OUuzJLVYuJhG4GV/m5xp7Yocg83g5fYINCStW4h0raCmxXL7His5tpScBhiGeGx+2p2t1SPawvI+1ld9f57P/f8HZZYFa3wsNG2jQlbrPS4d7OCLb8Kghf0BpiK/bVt3H8sLu9R1hS8zdNmD2nFswEfTMUuPV3E+fpsR6B7h+Fh/tzJCbYJzxo7eK1rwETs2zfrdlonfX8mkIdpeK27i4IK5kk871Fuka3AI0neCbyAJo51Yjl/dWMsiZtjo/axG073PH+1pry+/AcvERI8jHVp0wxqhH/flgs1GUhf+/ipKGfn06q25fHuhJybz+jb4Q1LyFgwTJLzVs1U7ANKxbIgVbuTd6ftDvFtyzDH1ajwrI/wIT8v09CUF4dHlEIvDSftOiadtkn3QgtIQTPMe3v7Vt+9z9U9HJfduj2hFMqJ9+Vnq8bhQJbTpXiiIA21t+3YrI1T1fB14tRo+NaI9RvKQbeHplioCE95nXSS6V5vXubK1XHQZxXPpLuG/BGJ6709QjvvRyXYgbdn/L8elkllilOQ1+3fgOT90rMOUa+lubd5aaSav21o+JJHF+05NahYzl2VJc6ZiGWi9nAtFipfGt1L0czGh29W36mBFMwpkdAVsYMnpkIdWinYwUIlvvl31/P8Zu3k/FcHRjhTISvnnbdtiTch9tqYlou8gjL9eBYTExMTExPTPvwFuTt0PD0I6k4AAAAASUVORK5CYII="
alt="" />
</div>
- <div class="name">{{ $t("hj261") }}</div>
+ <div class="name">{{ $t("hj621") }}</div>
</div>
</li>
- <li @click="$router.push('/subDK')">
+ <!-- <li @click="$router.push('/subDK')">
<div class="link">
<div class="icon">
<img
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAUzSURBVHgB7ZrPbxtFFMe/47VV51DHIQk4pSTTChA0ipoeQIgLTlUhRBEEJCSEIDGRQClCariA6KEN3DiRSAjKqeGKQGn/grq3QpHiAwJxyqakjQUBGyKklMb7eLOuYXe9ib3eHwZpPxd7x+Od/e578+a92QViYmJiYmJiuoWATwZy8hwEzYGQRRgQSiSoBIMu/frzTxfhE1+C+3P3FQQSFxARBOg1iIlqWdfRIQn4QEBIRAhbRyaJVvpzchod4lMw6YgagSyPuzQ4KMfRAUn4wBCoCrI1Xdksr+URIBwj8gJGgSBsVjU0Ws5m5bFqVa/CA74snCKtZD1m7SNu/QaG5NxgbmR1IDdyOZuTEh7YLOvFX8rXCxDibWu76d77jAI84kvwdhpV50U4+5gCiT6i+m/5JBkL6IDNDX2Bo/WirVGI5+ARX4KrOruTsIt2WjDt+A8JcRQdUtuXmHc05dmtPS2HvgTfQbcepGr29djNC7xeZAPzBgNrtvFSzV61F74FE8h2AYZWs0XPIC7SwaptfG2nuxYWJJouwMyULDhvSpT4FsyZlm49Jrhaz9aH70DXBPtahxWCalWy3DfhEpQSRCWyZrECvc4+qxXKpoBJLYEniDDOZ5R887L17qgafNOEQOnkk3l5fU1Hp3gWrKJwUhiTIKO0WV4vatCKO7BlH/n+3PAFYZm3fLHSnrSLfOPbRoVkDZhLCkybAqme4FvPqNq5bZy/jN99Tw6RCa6LpRWY81TjLOjgRJkTA04oivxzvtGPc+yC9X/OCkVFamXRngTOsTXnNNgFemH+gw+nT774culQn2gr4/I0h1Oo5a1lILuyme4lIV4Tznnagr+2fl9VYuGTYXm4kBZYUZ7STv8gojTYyrrGZVu7ol+ZnkEm0xtk/SzZbS6vV6hlMPQdtBqU6zXqIZXs86zNu/U5Mjomn3n2helXWXAISE1gmS09MdQn9N06BSa4gUr2+aPobFdzVrkewsW0NI91bLc5HYhLt4MKUICvDKtd5J2xXIlEsAooQQSodlFj7RbEIhHM6/A8Ikat7W7toQuu8NxNcFKBiFFjqrjR1I6Q2eZ0EV2Al0gzVXW2hy7YsGRgUaPycmdb6IJ5bex4h8MvvMHYlIhEEbQkuoThMnboghslXjcQLmNHlnj8VwhdsCre0SXIZewoLKyjSyRcxg68ePiH2Q2pPr67ubOW6UnsWrb19ghk0r6f2rpCvCXkbAtH8Ou/LfPzXHPRP7HwR8vuX81m8Pjh4C+lZuCKsy14l56tcIlGnrKrL769hTC4DTQ9QA9e8Pk+nbcui+12V+781GgKgSOw5FYTh+PSn9010ZjDismxdPbM0xnX4r+XBWd6QpjDBt53aw4vaJ0f0htflV99UqFF3lc+DZ/8+MP3tuOHHj7S1Ifr4cUDu2zzRLfjUa+Jdfjg0vKX2Nr6NwgeuPcg9u/POLvpt/aovyMT3KfmE2ECHYq+eWMdn35sf7T8yKOPObvpaoy99qj9vePh8RmR2k3UCM/Do+hr31zFzNRLuMGirZx6y7apYZ57rx1LhadokZUym9ymirWNzIunIjzwwP0PytGxo/lW/ZT7Xvv6qs2NG7zJYi2CTcu2EqvwHB4Hc8NLzhdMokZt5L/73lnzuwpQas62+6jFs2Bl5dQ2rVCX6tx3zpzF1NRMdYfwOT+TWmjHqlY6WgDroo2FyCwtUD1+/MTaG6dOl0ZHx4q8T3axXYs2n8oH6l2NZBrjAjWJsNC00u0/oXt9HysmJiYmJuZ/wN/6Zaai9yOqrAAAAABJRU5ErkJggg=="
alt="" />
</div>
- <!-- $t("马股") -->
<div class="name">{{ $t("贷款") }}</div>
</div>
- </li>
+ </li> -->
<li @click="$router.push('/yeb')">
<div class="link">
<div class="icon">
diff --git a/src/page/list/trading-list.vue b/src/page/list/trading-list.vue
index e5383e4..9b62ffe 100644
--- a/src/page/list/trading-list.vue
+++ b/src/page/list/trading-list.vue
@@ -29,6 +29,7 @@
<script>
import tabsList from "./tradingList/tabs";
export default {
+ name: "TradingList",
components: { tabsList },
data() {
return {
diff --git a/src/page/list/tradingList/data.list.vue b/src/page/list/tradingList/data.list.vue
index da4ef60..cb6df2d 100644
--- a/src/page/list/tradingList/data.list.vue
+++ b/src/page/list/tradingList/data.list.vue
@@ -24,81 +24,62 @@
</van-col>
</van-row>
</div>
-
- <van-list
- style="margin-bottom: 50px"
- v-model="loadings"
- :finished="finished"
- :finished-text="$t('hj43')"
- :loading-text="$t('hj430')"
- @load="onLoads"
- :immediate-check="false"
- >
- <div
- class="item"
- @click="handleGoToKlineDetail1(item, index)"
- v-for="(item, index) in listArr"
- :key="item.indexCode"
- >
- <van-row type="flex" align="center" gutter="20">
- <van-col span="8">
- <div>
- <div class="tp">
- <div class="collection" @click="optionszx(item)">
- <div
- class="shu"
- :class="item.isOption == '1' ? 'shublue' : ''"
- ></div>
- </div>
- <div
- class="title_color"
- style="
+ <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+ <van-list style="margin-bottom: 50px" v-model="loadings" :finished="finished" :finished-text="$t('hj43')"
+ :loading-text="$t('hj430')" @load="onLoads" :immediate-check="false">
+ <div class="item" @click="handleGoToKlineDetail1(item, index)" v-for="(item, index) in listArr"
+ :key="item.indexCode">
+ <van-row type="flex" align="center" gutter="20">
+ <van-col span="8">
+ <div>
+ <div class="tp">
+ <div class="collection" @click="optionszx(item)">
+ <div class="shu" :class="item.isOption == '1' ? 'shublue' : ''"></div>
+ </div>
+ <div class="title_color" style="
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
- "
- >
- {{ item.name }}
+ ">
+ {{ item.name }}
+ </div>
+ </div>
+ <div class="bt">
+ <span>{{ item.spell }}</span>
</div>
</div>
- <div class="bt">
- <span>{{ item.spell }}</span>
- </div>
- </div>
- </van-col>
+ </van-col>
- <van-col span="3">
- <div style="text-align: right">
- {{ item.gid }}
- </div>
- </van-col>
+ <van-col span="3">
+ <div style="text-align: right">
+ {{ item.gid }}
+ </div>
+ </van-col>
- <van-col span="7">
- <div style="text-align: right">
- <div class="tp">
- <span class="price_color">
- {{ item.nowPrice | _toLocaleString(false) }}
- </span>
+ <van-col span="7">
+ <div style="text-align: right">
+ <div class="tp">
+ <span class="price_color">
+ {{ item.nowPrice | _toLocaleString(false) }}
+ </span>
+ </div>
+ <div class="bt">
+ <span>{{ item.addTime }}</span>
+ </div>
</div>
- <div class="bt">
- <span>{{ item.addTime }}</span>
+ </van-col>
+ <van-col span="6">
+ <div style="text-align: right">
+ <div class="tp right_bs" :class="`${item.color > 0 ? 'green' : 'red'}`">
+ <span class="price_color">{{ item.hcrateP }}</span>
+ </div>
</div>
- </div>
- </van-col>
- <van-col span="6">
- <div style="text-align: right">
- <div
- class="tp right_bs"
- :class="`${item.color > 0 ? 'green' : 'red'}`"
- >
- <span class="price_color">{{ item.hcrateP }}</span>
- </div>
- </div>
- </van-col>
- </van-row>
- </div>
- </van-list>
+ </van-col>
+ </van-row>
+ </div>
+ </van-list>
+ </van-pull-refresh>
<dazy ref="dazy" />
</div>
@@ -108,6 +89,7 @@
import * as api from "@/axios/api";
import handleDt from "@/utils/deTh";
import dazy from "./dazy.vue";
+import { WhrWebSocket } from "@/utils/WhrWebSocket";
export default {
components: { dazy },
@@ -163,7 +145,8 @@
listArr: [],
pageNumVal: 1,
getInterval: null,
- num: 1
+ num: 1,
+ refreshing: false
};
},
@@ -171,9 +154,10 @@
this.listArr = [];
this.pageNumVal = 1;
this.getStock(this.active, this.zxactive, 1);
- this.getInterval = setInterval(() => {
- this.getStock(this.active, this.zxactive, 1);
- }, 5000);
+ this.initWebSocket()
+ // this.getInterval = setInterval(() => {
+ // this.getStock(this.active, this.zxactive, 1);
+ // }, 5000);
},
methods: {
filterSH(val) {
@@ -232,7 +216,7 @@
let pageNumVal = c || this.pageNumVal;
let opt = {
pageNum: pageNumVal,
- pageSize: 20*this.num,
+ pageSize: 20 * this.num,
stockPlate: "",
keyWords: this.sousuo,
stockType: stockType,
@@ -258,7 +242,7 @@
this.listArr = data.data.list;
this.loadings = false;
// this.finished = true;
- if(this.listArr.length % 20 ){
+ if (this.listArr.length % 20) {
this.finished = true;
}
}
@@ -267,7 +251,7 @@
this.listArr = data.data.list;
this.loadings = false;
// this.finished = true;
- if(this.listArr.length % 20 ){
+ if (this.listArr.length % 20) {
this.finished = true;
}
}
@@ -277,14 +261,48 @@
this.finished = true;
}
}, 500),
+
+ onRefresh() {
+ // 清空列表数据
+ this.finished = false;
+
+ // 重新加载数据
+ // 将 loading 设置为 true,表示处于加载状态
+ this.loading = true;
+ if (this.refreshing) {
+ // this.listArr = [];
+ this.refreshing = false;
+ }
+ this.getStock();
+ },
+
+ initWebSocket() {
+ this.Trade = new WhrWebSocket({
+ path: `ws://ws.is4vc.com:8001/websocket-server`,
+ onmessage: this.getTradeMessage,
+ });
+
+ this.Trade.init();
+ },
+ getTradeMessage({ data }) {
+ let result = JSON.parse(data)
+ let pid = result.pid
+ let userToUpdate = this.listArr.find(item => item.code == pid)
+ if (userToUpdate) {
+ // 更新对象数据
+ userToUpdate.nowPrice = result.last;
+ userToUpdate.hcrateP = result.pcp;
+ }
+ },
+
onLoads() {
console.log('onLoads');
// this.pageNumVal++;
this.loadings = true;
- this.num+=1
+ this.num += 1
this.getStock();
},
- optionszx() {},
+ optionszx() { },
},
destroyed() {
clearInterval(this.getInterval);
@@ -312,6 +330,7 @@
// display: flex;
// justify-content: space-between;
border-bottom: 1px solid #f0f2f3;
+
.right_bs {
text-align: center;
border-radius: 0.05333rem;
@@ -331,10 +350,12 @@
.green {
background-color: rgb(3, 173, 143);
}
+
.red {
background-color: rgb(208, 75, 100);
}
}
+
.center_price {
font-style: normal;
font-weight: 500;
@@ -346,6 +367,7 @@
flex: 1;
margin-right: 20px;
}
+
.title_color {
font-style: normal;
font-weight: 500;
diff --git a/src/page/list/tradingList/tabs.vue b/src/page/list/tradingList/tabs.vue
index 400c97f..b4a6c7b 100644
--- a/src/page/list/tradingList/tabs.vue
+++ b/src/page/list/tradingList/tabs.vue
@@ -51,7 +51,7 @@
tabsList: [
{ title: this.$t("hj61"), key: "" },
{ title: this.$t("印股"), key: "IN", name: "IN" },
- { title: this.$t("hj261"), key: "DZ", name: "DZ" },
+ { title: this.$t("hj621"), key: "DZ", name: "DZ" },
],
zxtabsList: [{ title: this.$t("印股"), key: "IN", name: "IN" }],
active: "",
diff --git a/src/utils/WhrWebSocket.js b/src/utils/WhrWebSocket.js
new file mode 100644
index 0000000..8bd61bb
--- /dev/null
+++ b/src/utils/WhrWebSocket.js
@@ -0,0 +1,55 @@
+export function strFirstBit(val) {
+ let arr = val.map((val, index, arr) => {
+ return val.currency;
+ });
+ return arr;
+}
+export function filterArrayEmpty(val) {
+ let isEmpty = val.every((val) => {
+ return val != "";
+ });
+ return isEmpty;
+}
+export class WhrWebSocket {
+ constructor(params) {
+ //只有params这个参数必须卸载constructor方法里,其他的实例属性可以写在外面
+ // 比如 socket = null
+ this.socket = null;
+ this.params = params;
+ this.j = 0; //websocket重连次数
+ this.i = 0; //发送信息次数
+ }
+
+ init(params) {
+ if (this.params.path) {
+ this.path = this.params.path;
+ } else {
+ throw new Error("参数socket服务器地址path必须存在");
+ }
+ this.socket = new WebSocket(this.path);
+ // this.socket.send('key:eVKtHt7aG4m6ozwWL9qG')
+ console.log('已连接到服务器');
+ this.socket.onopen = () => {
+ // console.log("连接开启");
+ };
+ // this.socket.onclose = () => {
+
+ // console.log("连接关闭")
+ // this.reconnect()
+ // }
+ // this.socket.onerror = () => {
+ // console.log("连接错误")
+ // }
+ this.socket.onmessage = this.params.onmessage;
+ }
+
+ // getMessage(msg) {
+ // console.log("收到的消息", msg)
+ // return msg
+ // }
+
+ close() {
+ clearTimeout(this.time);
+ this.socket.close(1000, "手动关闭");
+ }
+}
--
Gitblit v1.9.3