From a96f8fe6fcdb95d1ab77187afb0b98cfa2ea0515 Mon Sep 17 00:00:00 2001
From: PC-20250623MANY\Administrator <344137771@qq.com>
Date: Thu, 25 Sep 2025 15:07:58 +0800
Subject: [PATCH] 1
---
src/views/account/components/Position.vue | 59 ++++-------
src/views/home/components/HomeLb.vue | 117 +++++++++--------------
src/views/home/components/HomeLtr.vue | 71 ++++---------
3 files changed, 91 insertions(+), 156 deletions(-)
diff --git a/src/views/account/components/Position.vue b/src/views/account/components/Position.vue
index cc5e7df..b125da7 100644
--- a/src/views/account/components/Position.vue
+++ b/src/views/account/components/Position.vue
@@ -1,35 +1,17 @@
<template>
- <el-drawer
- :title="$t('hj2')"
- :visible.sync="dialogVisible"
- direction="rtl"
- :before-close="onClose"
- size="980px"
- >
+ <el-drawer :title="$t('hj2')" :visible.sync="dialogVisible" direction="rtl" :before-close="onClose" size="980px">
<div class="drawer-content">
- <el-table
- height="100%"
- :data="tableData"
- style="width: 100%; flex: 1"
- empty-text="No Data"
- >
+ <el-table height="100%" :data="tableData" style="width: 100%; flex: 1" empty-text="No Data">
<el-table-column prop="stockSpell" :label="$t('hj313')">
<template slot-scope="scope">
- <el-tag
- :type="scope.row.stockGid != $mc ? 'success' : ''"
- size="small"
- style="margin-right: 8px"
- >
+ <el-tag :type="scope.row.stockGid != $mc ? 'success' : ''" size="small" style="margin-right: 8px">
{{ scope.row.stockGid }}
</el-tag>
<span>{{ scope.row.stockName }}</span>
</template>
</el-table-column>
- <el-table-column
- prop="positionType"
- :label="`${$t('hj313')} ${$t('類型')}`"
- >
+ <el-table-column prop="positionType" :label="`${$t('hj313')} ${$t('類型')}`">
<template slot-scope="scope">
<el-tag type="warning">
{{ dictionary.gplx[scope.row.positionType] }}
@@ -49,15 +31,12 @@
<el-table-column prop="profitAndLoseParent" :label="$t('Profit')">
<template slot-scope="scope">
- <span
- :class="`${
- scope.row.profitAndLose < 0
- ? 'r_c'
- : scope.row.profitAndLose > 0
+ <span :class="`${scope.row.profitAndLose < 0
+ ? 'r_c'
+ : scope.row.profitAndLose > 0
? 'lc_c'
: ''
- }`"
- >
+ }`">
{{ scope.row.profitAndLose }} ({{
scope.row.profitAndLoseParent
}})
@@ -95,14 +74,8 @@
</el-table>
<div class="pagination flex-end">
- <el-pagination
- background
- layout="prev, pager, next"
- :total="total"
- :current-page="pageNum"
- :page-size="pageSize"
- @current-change="handleCurrentChange"
- >
+ <el-pagination background layout="prev, pager, next" :total="total" :current-page="pageNum"
+ :page-size="pageSize" @current-change="handleCurrentChange">
</el-pagination>
</div>
</div>
@@ -110,6 +83,7 @@
</template>
<script>
+let times = null; // 计时器
import mixins from "@/mixins/myMixins"; // 混入
import * as api from "@/axios/api";
export default {
@@ -135,6 +109,11 @@
this.opt.stockType = this.type;
this.apiInterface = api.getchicang; // 赋值接口
this.init(); // 获取记录列表
+
+ this.stopTimer()
+ times = setInterval(() => {
+ this.getList()
+ }, 3000)
},
methods: {
// 关闭弹窗
@@ -142,6 +121,12 @@
this.$emit("update:dialogVisible", false);
this.$emit("onClose"); // 关闭弹窗时,通知父组件
},
+ stopTimer() {
+ if (times) {
+ clearInterval(times);
+ times = null;
+ }
+ },
},
};
</script>
diff --git a/src/views/home/components/HomeLb.vue b/src/views/home/components/HomeLb.vue
index 5229331..3003d4f 100644
--- a/src/views/home/components/HomeLb.vue
+++ b/src/views/home/components/HomeLb.vue
@@ -8,31 +8,18 @@
</div>
<div class="order_list" v-if="activeName == '0'">
- <el-table
- height="100%"
- :data="tableData"
- style="width: 100%"
- size="small"
- empty-text="No Data"
- @row-click="Choice"
- >
+ <el-table height="100%" :data="tableData" style="width: 100%" size="small" empty-text="No Data"
+ @row-click="Choice">
<el-table-column prop="stockSpell" :label="$t('hj313')">
<template slot-scope="scope">
- <el-tag
- :type="scope.row.stockGid != $mc ? 'success' : ''"
- size="small"
- style="margin-right: 8px"
- >
+ <el-tag :type="scope.row.stockGid != $mc ? 'success' : ''" size="small" style="margin-right: 8px">
{{ scope.row.stockGid }}
</el-tag>
<span>{{ scope.row.stockName }}</span>
</template>
</el-table-column>
- <el-table-column
- prop="positionType"
- :label="`${$t('hj313')} ${$t('類型')}`"
- >
+ <el-table-column prop="positionType" :label="`${$t('hj313')} ${$t('類型')}`">
<template slot-scope="scope">
<el-tag type="warning">
{{ dictionary.gplx[scope.row.positionType] }}
@@ -52,15 +39,12 @@
<el-table-column prop="profitAndLoseParent" :label="$t('Profit')">
<template slot-scope="scope">
- <span
- :class="`${
- scope.row.profitAndLose < 0
- ? 'r_c'
- : scope.row.profitAndLose > 0
- ? 'lc_c'
- : ''
- }`"
- >
+ <span :class="`${scope.row.profitAndLose < 0
+ ? 'r_c'
+ : scope.row.profitAndLose > 0
+ ? 'lc_c'
+ : ''
+ }`">
{{ scope.row.profitAndLose }} ({{
scope.row.profitAndLoseParent
}})
@@ -99,14 +83,8 @@
</div>
<div class="order_list" v-else-if="activeName == '1'">
- <el-table
- :data="tableData"
- style="width: 100%"
- height="100%"
- size="small"
- empty-text="No Data"
- @row-click="Choice"
- >
+ <el-table :data="tableData" style="width: 100%" height="100%" size="small" empty-text="No Data"
+ @row-click="Choice">
<el-table-column prop="stockCode" :label="$t('sc')" width="130">
</el-table-column>
@@ -115,22 +93,14 @@
<el-table-column prop="stockSpell" :label="$t('hj313')" min-width="150">
<template slot-scope="scope">
- <el-tag
- :type="scope.row.stockGid != $mc ? 'success' : ''"
- size="small"
- style="margin-right: 8px"
- >
+ <el-tag :type="scope.row.stockGid != $mc ? 'success' : ''" size="small" style="margin-right: 8px">
{{ scope.row.stockGid }}
</el-tag>
<span>{{ scope.row.stockName }}</span>
</template>
</el-table-column>
- <el-table-column
- prop="positionType"
- :label="`${$t('hj313')} ${$t('類型')}`"
- width="150"
- >
+ <el-table-column prop="positionType" :label="`${$t('hj313')} ${$t('類型')}`" width="150">
<template slot-scope="scope">
<el-tag type="warning">
{{ dictionary.gplx[scope.row.positionType] }}
@@ -139,27 +109,16 @@
1
</el-table-column>
- <el-table-column
- prop="orderNum"
- :label="$t('sl')"
- width="100"
- ></el-table-column>
+ <el-table-column prop="orderNum" :label="$t('sl')" width="100"></el-table-column>
- <el-table-column
- prop="profitAndLoseParent"
- :label="$t('Profit')"
- width="130"
- >
+ <el-table-column prop="profitAndLoseParent" :label="$t('Profit')" width="130">
<template slot-scope="scope">
- <span
- :class="`${
- scope.row.profitAndLose < 0
- ? 'r_c'
- : scope.row.profitAndLose > 0
- ? 'lc_c'
- : ''
- }`"
- >
+ <span :class="`${scope.row.profitAndLose < 0
+ ? 'r_c'
+ : scope.row.profitAndLose > 0
+ ? 'lc_c'
+ : ''
+ }`">
{{ scope.row.profitAndLose }} ({{
scope.row.profitAndLoseParent
}})
@@ -214,20 +173,15 @@
</div>
<div class="pagination_box">
- <el-pagination
- background
- layout="prev, pager, next"
- :total="total"
- :current-page="pageNum"
- :page-size="pageSize"
- @current-change="handleCurrentChange"
- >
+ <el-pagination background layout="prev, pager, next" :total="total" :current-page="pageNum" :page-size="pageSize"
+ @current-change="handleCurrentChange">
</el-pagination>
</div>
</div>
</template>
<script>
+let times = null; // 计时器
import mixins from "@/mixins/myMixins"; // 混入
import * as api from "@/axios/api";
export default {
@@ -243,17 +197,37 @@
this.opt.state = this.activeName;
this.apiInterface = api.getchicang;
this.init();
+
+ this.stopTimer()
+ times = setInterval(() => {
+ this.getList()
+ }, 3000)
+ },
+ beforeDestroy() {
+ this.stopTimer()
},
methods: {
handleClick() {
this.opt.state = this.activeName;
this.tableData = [];
this.init();
+
+ this.stopTimer()
+ if (this.activeName == 1) return // 如果是平仓则不轮询
+ times = setInterval(() => {
+ this.getList()
+ }, 3000)
},
// 股票选择
Choice(val) {
this.$emit("choice", val.stockCode, val.positionSn);
console.log("1");
+ },
+ stopTimer() {
+ if (times) {
+ clearInterval(times);
+ times = null;
+ }
},
},
};
@@ -266,6 +240,7 @@
justify-content: flex-end;
padding: 10px;
}
+
.order_list {
height: 0;
flex: 1;
diff --git a/src/views/home/components/HomeLtr.vue b/src/views/home/components/HomeLtr.vue
index 250381e..ab8fa02 100644
--- a/src/views/home/components/HomeLtr.vue
+++ b/src/views/home/components/HomeLtr.vue
@@ -2,10 +2,7 @@
<div class="home_ltr">
<div class="meta_box">
<div>
- <div
- class="code"
- :class="{ lc_c: obj.hcrate > 0, r_c: obj.hcrate < 0 }"
- >
+ <div class="code" :class="{ lc_c: obj.hcrate > 0, r_c: obj.hcrate < 0 }">
{{ obj.spell }}
</div>
<div class="name">{{ obj.name }}</div>
@@ -42,33 +39,20 @@
<div class="tabs_box">
<el-tabs @tab-click="handleClick">
- <el-tab-pane
- :label="item.Name"
- :Id="item.ID"
- v-for="item in KLinePeriodMenu"
- :key="item.ID"
- ></el-tab-pane>
+ <el-tab-pane :label="item.Name" :Id="item.ID" v-for="item in KLinePeriodMenu" :key="item.ID"></el-tab-pane>
</el-tabs>
</div>
<div ref="rightContent" class="map_box">
- <div
- class="hqchart"
- id="hqchart_minute"
- ref="kline"
- v-show="chartType == 'minute'"
- ></div>
- <div
- class="hqchart"
- id="hqchart_kline"
- ref="kline2"
- v-show="chartType == 'kline'"
- ></div>
+ <div class="hqchart" id="hqchart_minute" ref="kline" v-show="chartType == 'minute'"></div>
+ <div class="hqchart" id="hqchart_kline" ref="kline2" v-show="chartType == 'kline'"></div>
</div>
</div>
</template>
<script>
+let timerss1 = []
+let timerss2 = []
import HQChart from "hqchart";
import "hqchart/src/jscommon/umychart.resource/css/tools.css";
import "hqchart/src/jscommon/umychart.resource/font/iconfont.css";
@@ -79,7 +63,7 @@
HQChart.Chart.MARKET_SUFFIX_NAME.GetMarketStatus = function (symbol) {
return 2;
}; // 一直交易
-function DefaultData() {}
+function DefaultData() { }
DefaultData.GetMinuteOption = function () {
var option = {
@@ -1112,7 +1096,7 @@
props: {
obj: {
type: Object,
- default: () => {},
+ default: () => { },
},
},
data() {
@@ -1126,8 +1110,6 @@
chartType: "kline",
KLineChart: null, // 图形控件 K线图
Chart: null, // 图形控件 分时图
- timerss1: null,
- timerss2: null,
isShow: false,
MinuteDayMenu: DefaultData.GetMinuteDayMenu(),
KLineRightMenu: DefaultData.GetKLineRightMenu(),
@@ -1154,14 +1136,6 @@
this.init();
},
beforeDestroy() {
- this.KLineChart.ChartDestory();
- this.Chart.ChartDestory();
- if (this.timerss1) {
- clearInterval(this.timerss1);
- }
- if (this.timerss2) {
- clearInterval(this.timerss2);
- }
this.clearTime();
},
methods: {
@@ -1172,13 +1146,10 @@
},
// 清除所有定时器
clearTime() {
- // 创建一个额外的定时器以获取当前最大定时器 ID
- let lastIntervalId = setInterval(() => {}, 1000);
- // 遍历并清除所有定时器
- for (let i = 1; i <= lastIntervalId; i++) {
- clearInterval(i);
- clearTimeout(i);
- }
+ timerss1.forEach(id => clearInterval(id));
+ timerss1 = [];
+ timerss2.forEach(id => clearInterval(id));
+ timerss2 = [];
},
init() {
this.OnSize();
@@ -1274,9 +1245,11 @@
EastMoney.HQData.Log("[HQChartDemo::NetworkFilter] data", data);
EastMoney.HQData.NetworkFilter(data, callback);
- this.timerss1 = setInterval(() => {
+
+ let timeId = setInterval(() => {
EastMoney.HQData.NetworkFilter(data, callback);
}, 2000);
+ timerss1.push(timeId);
},
NetworkFilter2(
@@ -1285,14 +1258,10 @@
) {
EastMoney.HQData.Log("[HQChartDemo::NetworkFilter] data", data);
- if (this.timerss2) {
- clearInterval(this.timerss2);
- this.timerss2 = null;
- }
- this.timerss2 = setInterval(() => {
+ let timeId = setInterval(() => {
EastMoney.HQData.NetworkFilter(data, callback);
- console.log("另一个的数据", data);
}, 2000);
+ timerss2.push(timeId);
},
},
};
@@ -1337,19 +1306,23 @@
gap: 16px;
align-items: center;
padding: 10px 16px 6px;
+
.attr_item {
font-size: 14px;
display: flex;
flex-direction: column;
text-align: right;
margin-left: 10px;
+
.label {
color: #999;
}
+
.value {
color: #333;
}
}
+
.price {
display: flex;
align-items: center;
@@ -1364,10 +1337,12 @@
margin-left: 10px;
}
}
+
.name {
font-size: 12px;
color: #999;
}
+
.code {
font-size: 20px;
}
--
Gitblit v1.9.3