From 1bd03f5c2e7b9fa9cc80c4e673e18132da411333 Mon Sep 17 00:00:00 2001
From: jhzh <1628036192@qq.com>
Date: Wed, 12 Nov 2025 16:21:06 +0800
Subject: [PATCH] 1
---
src/components/stock-list.vue | 181 ++++++++++++++++++++++-----------------------
1 files changed, 88 insertions(+), 93 deletions(-)
diff --git a/src/components/stock-list.vue b/src/components/stock-list.vue
index 930711c..4dd0849 100644
--- a/src/components/stock-list.vue
+++ b/src/components/stock-list.vue
@@ -1,83 +1,56 @@
<template>
- <div class="stock_list">
+ <div class="stock_list flex-center">
<van-row class="markets_head">
- <van-col span="12" class="flex-start head_item">{{ $t("Name") }}</van-col>
+ <van-col span="14" class="flex-start head_item">{{ $t("Name") }}</van-col>
<van-col span="4" class="flex-start head_item">{{ $t("Price") }}</van-col>
- <van-col span="8" class="flex-end head_item">{{ $t("Change") }}</van-col>
+ <van-col span="6" class="flex-end head_item">{{ $t("Change") }}</van-col>
</van-row>
- <van-row
- class="markets_item"
- v-for="item in stockList"
- :key="item.id"
- @click="toDetails(item)"
- >
- <van-col span="12" class="item_n">
- <div class="flex-start">
- <span class="i_icon">{{ item.stock_type }}</span>
- <span class="i_hint">{{ item.spell }}</span>
+ <van-list v-model="loading" :finished="finished" :finished-text="$t('沒有更多了')" :loading-text="$t('加载中')"
+ style="height: 50vh;width: 100%;" @load="onLoad">
+ <van-row class="markets_item" v-for="item in stockList" :key="item.id" @click="toDetails(item)">
+ <van-col span="14" class="item_n">
+ <div class="flex-start">
+ <span class="i_icon">{{ item.stock_type }}</span>
+ <span class="i_hint">{{ item.spell }}</span>
+ </div>
+ <div class="i_name">{{ item.name }}</div>
+ </van-col>
+ <van-col span="4" class="flex-start item_n">
+ {{ (Number(item.nowPrice)).toFixed(3) }}
+ </van-col>
+
+ <van-col span="6" class="item_n flex-end">
+ <div class="flex-end" :class="{ green: item.hcrate < 0, red: item.hcrate > 0 }">
+ {{ item.hcrateP }}
+ </div>
+ </van-col>
+
+ <div class="edit flex-end" v-show="editorShow" @click.stop="deleteStock(item)">
+ <span>{{ $t("移除") }}</span>
</div>
- <div class="i_name">{{ item.name }}</div>
- </van-col>
- <van-col span="4" class="flex-start item_n">{{ item.nowPrice }}</van-col>
+ </van-row>
+ </van-list>
- <van-col span="8" class="item_n">
- <div
- class="flex-end"
- style="margin-bottom: .15em;"
- :class="{ red: item.hcrate < 0, green: item.hcrate > 0 }"
- >
- {{ item.hcrate }}
- </div>
- <div
- class="flex-end"
- :class="{ red: item.hcrate < 0, green: item.hcrate > 0 }"
- >
- {{ item.hcrateP }}
- </div>
- </van-col>
-
- <div
- class="edit flex-end"
- v-show="editorShow"
- @click.stop="deleteStock(item)"
- >
- <span>{{ $t("移除") }}</span>
- </div>
- </van-row>
-
- <!-- 无数据时显示 -->
- <div
- class="no_data flex-center"
- v-show="!stockList || stockList.length == 0"
- >
- <img src="@/assets/img/zhaobudao2.png" alt="" />
- </div>
-
- <n-pagination
- :pageNo.sync="pageNum"
- :pageSize="pageSize"
- :total="total"
- ></n-pagination>
+ <van-skeleton :row="7" v-if="stockList.length == 0" style="margin-top: 1em;" />
</div>
</template>
<script>
-import nPagination from "@/components/nPagination.vue";
import * as api from "@/axios/api";
import { Toast } from "vant";
import { WhrWebSocket } from "@/utils/WhrWebSocket";
export default {
name: "stock_list",
- components: {
- nPagination
- },
+ components: {},
data() {
return {
pageNum: 1,
- pageSize: 10,
+ pageSize: 20,
total: 1,
stockList: [],
+ loading: false,
+ finished: false
};
},
props: {
@@ -98,25 +71,30 @@
default: false
}
},
- watch: {
- propOption: {
- handler(val) {
- this.pageNum = 1;
- this.getStockList();
- }
- },
- pageNum: {
- handler(val) {
- // this.stockList = [];
- this.getStockList();
- }
- }
- },
+ watch: {},
mounted() {
- this.getStockList();
- this.initWebSocket();
+ this.init();
+ this.getExchange()
},
methods: {
+ async getExchange(){
+ let data = await api.getExchange();
+ if (data.status === 0) {
+ // Toast.success(data.msg);
+ if(data.data==false){
+
+ }else{
+ this.initWebSocket();
+ }
+ } else {
+ Toast.fail(data.msg);
+ }
+ },
+ init() {
+ this.pageNum = 1;
+ this.stockList = [];
+ this.getStockList();
+ },
// 获取数据
async getStockList() {
let opt = {
@@ -124,15 +102,22 @@
pageSize: this.pageSize,
stockPlate: "",
keyWords: "",
- // stockType: '',
orderBy: ""
};
opt = { ...opt, ...this.propOption };
let data = await this.listApi(opt);
- this.stockList = data.data.list;
- this.total = data.data.total || 1;
+ if (data.status == 0) {
+ this.stockList = [...this.stockList, ...data.data.list];
+ // this.total = data.data.total || 1;
+ // 加载状态结束
+ this.loading = false;
+
+ if (data.data.list.length <= 0) {
+ this.finished = true;
+ }
+ }
},
// 点击进入详情
toDetails(item) {
@@ -168,7 +153,7 @@
initWebSocket() {
console.log("initWebSocket");
this.Trade = new WhrWebSocket({
- path: `wss://ws.kuspitai.com/websocket-server `,
+ path: `wss://ws.jinmanxuan.com/websocket-server `,
onmessage: this.getTradeMessage
});
@@ -183,6 +168,12 @@
userToUpdate.nowPrice = result.last;
userToUpdate.hcrateP = result.pcp;
}
+ },
+ onLoad() {
+ console.log("dddddddd");
+
+ this.pageNum++;
+ this.getStockList();
}
},
beforeDestroy() {
@@ -194,36 +185,42 @@
};
</script>
-<style lang="less" scoped>
+<style lang="less">
@green2: #f0f0f0;
@dark_green: #07c160;
@red: #ee0a24;
+#app {
+ padding-bottom: 1.4rem;
+}
+
.stock_list {
+ flex-direction: column;
+
.markets_head {
- background-color: @green2;
+ // background-color: @green2;
margin-top: 0.25em;
height: 1em;
+ width: 100%;
padding: 0 0.25em;
.head_item {
- font-size: 0.4em;
+ font-size: 0.3em;
height: 100%;
- font-weight: 600;
+ font-weight: 300;
+ color: #898a8e;
}
}
.markets_item {
- // margin-top: .25em;
- // height: 1em;
padding: 0.5em 0.25em 0.25em;
- border-bottom: #f5f5f5 solid 0.01em;
+ border-bottom: rgba(#fff, 0.2) solid 0.01em;
position: relative;
.item_n {
- font-size: 0.4em;
+ font-size: 0.3em;
min-height: 2em;
- font-weight: 500;
+ font-weight: 300;
.i_icon {
border-radius: 0 26em 26em 0;
@@ -255,11 +252,9 @@
position: absolute;
top: 0;
left: 0;
- background: linear-gradient(
- to right,
- rgba(0, 0, 0, 0),
- rgba(0, 0, 0, 0.8)
- );
+ background: linear-gradient(to right,
+ rgba(0, 0, 0, 0),
+ rgba(0, 0, 0, 0.8));
text-align: end;
color: @red;
padding-right: 0.25em;
--
Gitblit v1.9.3