From fa821ce7a7755dd0e13897cefc57071d4596431b Mon Sep 17 00:00:00 2001
From: jhzh <1628036192@qq.com>
Date: Wed, 14 Jan 2026 17:51:42 +0800
Subject: [PATCH] 1
---
src/page/user/Warehouse.vue | 158 ++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 134 insertions(+), 24 deletions(-)
diff --git a/src/page/user/Warehouse.vue b/src/page/user/Warehouse.vue
index 1113962..654c88a 100644
--- a/src/page/user/Warehouse.vue
+++ b/src/page/user/Warehouse.vue
@@ -8,7 +8,7 @@
<div class="sert">
<span v-for="(item, index) in chicangList" :key="index" @click="chicangidx = index"
:class="chicangidx == index ? 'sdpl' : ''">{{ item.name }}</span>
- <a :style="chicangidx == 0 ? 'left: 0.8rem;' : 'left: 4.54rem;'"></a>
+ <a :style="{ left: getIndicatorLeft() }"></a>
</div>
<div class="bnm"></div>
</div>
@@ -17,7 +17,7 @@
<van-list v-model="loading" :finished="finished" :finished-text="$t('hj43')"
v-show="chicangidx === 0" @load="onLoad" :immediate-check="immediate">
<!-- <div class="cichang" v-for="(item,index) in tabsPositionNumArr" :key="item.buyOrderId"> -->
- <div class="cichang" v-for="(item, key) in tabsPositionObj" :key="item.buyOrderId">
+ <div class="cichang" v-for="(item, key) in tabsPositionObj" :key="item.buyOrderId" @click="goDetail(item)">
<div class="dingbu">
<div class="dl">
<h6>{{ item.stockName ? item.stockName : item.indexName }}</h6>
@@ -29,9 +29,9 @@
</p>
</div>
<div class="button-container">
- <div class="dr" style="margin-right: 16px" v-if="chicangidx == 0" @click="goBuyDetail(item)">买入</div>
- <div class="dr-blue" style="margin-right: 16px" v-if="chicangidx == 0" @click="getpingcangbf(item.positionSn,item.orderNum)"> 部分平仓 </div>
- <div class="dr-blue" style="margin-right: 16px" v-if="chicangidx == 0" @click="getpingcang(item.positionSn)"> {{ $t('hj121') }} </div>
+ <!-- <div class="dr" style="margin-right: 16px" v-if="chicangidx == 0" @click="goBuyDetail(item)">买入</div>
+ <div class="dr-blue" style="margin-right: 16px" v-if="chicangidx == 0" @click="getpingcangbf(item.positionSn,item.orderNum)"> 部分平仓 </div> -->
+ <div class="dr-blue" style="margin-right: 16px" v-if="chicangidx == 0" @click.stop="getpingcang(item.positionSn)"> {{ $t('hj121') }} </div>
</div>
</div>
@@ -58,7 +58,7 @@
<!-- <p v-if="chicangidx == 1"><span>{{ $t('jy19') }}</span><a class="red">5.49/{{ $t('jy96') }}</a></p>
<p v-if="chicangidx == 1"><span>{{ $t('jy15') }}</span><a class="red">49959.00</a></p> -->
<!-- <p><span>{{ $t('jy531') }}</span><a class="red">{{item.orderLever}}</a></p> -->
- <p><span>{{ $t('jy37') }}</span><a class="red">{{item.buyAmtAutual}}</a></p>
+ <!-- <p><span>{{ $t('jy37') }}</span><a class="red">{{item.buyAmtAutual}}</a></p> -->
</div>
</div>
</van-list>
@@ -99,11 +99,51 @@
<p><span>{{ $t('jy533') }}</span><a class="red">{{item.orderFee}}</a></p>
<p><span>{{ $t('jy17') }}</span><a class="red">{{item.orderTotalPrice}}</a></p>
<p><span>{{ $t('jy153') }}</span><a class="red">{{item.orderSpread}}</a></p>
- <p v-if="chicangidx == 1"><span>{{ $t('jy15') }}</span><a class="red">{{item.orderStayFee}}</a></p>
+ <!-- <p v-if="chicangidx == 1"><span>{{ $t('jy15') }}</span><a class="red">{{item.orderStayFee}}</a></p> -->
</div>
</div>
</van-list>
+ <van-list v-model="loadingss" :finished="finishedss" :finished-text="$t('hj43')" @load="onLoadss"
+ :immediate-check="immediate" v-show="(chicangidx === 2)">
+ <div class="cichang" v-for="(item,index) in wtlist" :key="item.id" @click="goDetail(item)">
+ <div class="dingbu">
+ <div class="dl">
+ <h6>{{ item.stockName ? item.stockName : item.indexName }}</h6>
+ <p>
+ <span v-show="(item.stockGid.indexOf('sz')>=0)">{{ $t('jy83') }}</span>
+ <span class="sh" v-show="(item.stockGid.indexOf('sh')>=0)">{{ $t('jy84') }}</span>
+ <span class="bj" v-show="(item.stockGid.indexOf('bj')>=0)">{{ $t('jy85') }}</span>
+ <a class="">{{item.stockGid}}</a>
+ </p>
+ </div>
+ <!-- <div class="dr" v-if="chicangidx == 2" > {{ $t('hj121') }} </div> -->
+ </div>
+ <div class="fudo" v-if="chicangidx == 2">
+ <!-- <h6> {{ $t('jy20') }} <span class="red">{{ item.now_price }}</span></h6> -->
+ <!-- <p>{{ item.buyOrderTime | gettime }}</p> -->
+ </div>
+ <div class="fudo" v-else>
+ <h6> {{ $t('jy449') }} </h6>
+ <p>{{item.sellOrderTime | gettime}}</p>
+ </div>
+ <!-- <div class="fudong redbg">
+ <div class="kuij">
+ <p><span>{{ $t('jy13') }}:</span><a class="red">{{item.profitAndLose > 0 ? ('+' + item.profitAndLose) : item.profitAndLose}}</a></p>
+ <p><span>{{ $t('jy12') }}:</span><a class="red">{{item.allProfitAndLose}}</a></p>
+ </div>
+ </div> -->
+ <div class="plkm">
+ <p><span>{{ $t('jy19') }}</span><a class="red">{{item.buyOrderPrice}}/{{ $t('jy96') }}</a></p>
+ <p v-if="chicangidx == 1"><span>{{ $t('jy25') }}</span><a class="red">{{item.sellOrderPrice}}/{{ $t('jy96') }}</a></p>
+ <p><span>{{ $t('jy18') }}</span><a class="red">{{item.orderNum}}</a></p>
+ <p><span>{{ $t('jy521') }}</span><a class="red">{{ item.buyOrderTime | gettime }}</a></p>
+ <p><span>{{ $t('jy17') }}</span><a class="red">{{item.orderTotalPrice}}</a></p>
+ <!-- <p><span>{{ $t('jy153') }}</span><a class="red">{{item.orderSpread}}</a></p> -->
+ <p v-if="chicangidx == 1"><span>{{ $t('jy15') }}</span><a class="red">{{item.orderStayFee}}</a></p>
+ </div>
+ </div>
+ </van-list>
</div>
<div style="height:2rem">
@@ -128,19 +168,28 @@
},
{
name: this.$t('jy410')
+ },
+ {
+ name: this.$t('jy520')
}
],
chicangidx: 0,
loading: false,
loadings: false,
+ loadingss: false,
+
finished: false,
finisheds: false,
+ finishedss: false,
+
page:1,
pages:1,
+ pagess:1,
immediate: false,
tabsPositionNumArr: [],
tabsPositionObj: null,
tabsPcArr: [],
+ wtlist:[],
intervalId: null, // 用于存储定时器 ID
}
},
@@ -148,14 +197,31 @@
this.getUserInfo()
this.getListDetail()
this.getListDetails()
+ this.getListDetailss()
this.startPolling();
},
beforeDestroy() {
this.stopPolling(); // 销毁组件时停止轮询
},
methods: {
+ // 计算滑动指示器的位置
+ getIndicatorLeft() {
+ const tabCount = this.chicangList.length
+
+ // 每个标签占的百分比
+ const tabWidthPercent = 100 / tabCount
+
+ // 当前选中标签的中心位置(百分比)
+ const centerPositionPercent = (this.chicangidx + 0.5) * tabWidthPercent
+
+ // 返回百分比,指示器会自动居中
+ return centerPositionPercent + '%'
+ },
goDetail(item) {
- this.$router.push(`/WarehouseDetail?positionSn=${item.positionSn}`)
+ // 根据当前的tab索引传递不同的类型值
+ // chicangidx: 0-持仓, 1-平仓, 2-委托
+ const type = this.chicangidx === 1 ? 'pingcang' : this.chicangidx === 2 ? 'weituo' : 'chicang';
+ this.$router.push(`/WarehouseDetail?positionSn=${item.positionSn}&type=${type}`)
},
onLoad() {
//持仓
@@ -229,30 +295,36 @@
path: '/Searchlist'
})
},
- onLoads() {
- //平仓
- this.pages++;
- //沪深京平仓
- this.getListDetails();
- },
+ onLoads() {
+ //平仓
+ this.pages++;
+ //沪深京平仓
+ this.getListDetails();
+ },
+ onLoadss() {
+ //委托
+ this.pagess++;
+ //沪深京委托
+ this.getListDetailss();
+ },
getpingcangbf(val,orderNum) {
// 如果 chicangidx 为 0,表示是沪深京市场(可能是股票市场的不同板块)
if (this.chicangidx == 0) {
// 先弹出一个选择平仓数量的输入框
- this.$prompt('平仓数量', '部分平仓', {
+ this.$prompt(this.$t('jy522'), this.$t('jy523'), {
confirmButtonText: this.$t('hj161'),
cancelButtonText: this.$t('hj106'),
inputPattern: /^[0-9]*[1-9][0-9]*$/, // 限制输入为正整数
- inputErrorMessage: '格式错误' // 输入不合法时的错误提示
+ inputErrorMessage: this.$t('jy524') // 输入不合法时的错误提示
}).then(async ({ value }) => {
const selectedQuantity = Number(value); // 用户选择的平仓数量
if (selectedQuantity <= 0) {
- Toast('格式错误'); // 如果输入无效数量,提示错误
+ Toast(this.$t('jy524')); // 如果输入无效数量,提示错误
return;
}
if(selectedQuantity > orderNum){
- Toast('超过最大数量'+orderNum); // 如果输入无效数量,提示错误
+ Toast(this.$t('jy525') + orderNum); // 如果输入无效数量,提示错误
return;
}
// 弹出确认框,询问用户是否确认平仓
@@ -333,7 +405,7 @@
//获取沪深我的平仓列表
this.loadings = true;
let opt = {
- state: 1,
+ state: 2,
stockCode: '', // 代码
stockSpell: '', // 简拼
pageNum: this.pages,
@@ -353,12 +425,43 @@
Toast(data.msg)
}
},
+ async getListDetailss() {
+ //获取沪深我的委托列表
+ this.loadingss = true;
+ // this.tabsPositionNumArr = [];
+ let opt = {
+ state: 0,
+ stockCode: '', // 代码
+ stockSpell: '', // 简拼
+ pageNum: this.page,
+ pageSize: 15,
+ }
+ let data = await api.getOrderList(opt)
+ this.loadingss = false;
+ if (data.status === 0) {
+ if (data.data.list.length < 20) {
+ this.finishedss = true;
+ }
+ // data.data.list.forEach(element => {
+ // this.tabsPositionNumArr.push(element)
+ // })
+ console.log(data.data.list);
+ this.wtlist = data.data.list;
+ console.log('========================');
+ // data.data.list.forEach((element, index) => {
+ // this.tabsPositionObj[index] = element;
+ // });
+ //this.total = data.data.total
+ } else {
+ Toast(data.msg)
+ }
+ },
async getListDetail() {
//获取沪深我的持仓列表
this.loading = true;
// this.tabsPositionNumArr = [];
let opt = {
- state: 0,
+ state: 1,
stockCode: '', // 代码
stockSpell: '', // 简拼
pageNum: this.page,
@@ -456,7 +559,6 @@
background: #dcf7ee !important;
}
-.chicangcontainer {}
.toubu {
width: 100%;
@@ -481,14 +583,17 @@
border-radius: 0.4rem 0.4rem 0 0;
margin-top: -0.4rem;
background: #fff;
+ padding: 0 0.4rem;
+ box-sizing: border-box;
.sert {
- width: 5.34rem;
+ width: 100%;
margin: 0 auto;
display: flex;
justify-content: space-between;
position: relative;
height: 1.07rem;
+ box-sizing: border-box;
span {
text-align: center;
@@ -496,6 +601,11 @@
font-size: .4rem;
font-weight: 550;
line-height: 1.07rem;
+ flex: 1;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ min-width: 0;
}
.sdpl {
@@ -509,7 +619,7 @@
border-radius: 0.05rem;
position: absolute;
bottom: 0;
- margin-left: -0.266rem;
+ transform: translateX(-50%);
transition: all .5s;
}
}
@@ -677,7 +787,7 @@
flex-wrap: wrap;
p {
- width: 47%;
+ width: 49%;
margin-top: 0.4rem;
display: flex;
justify-content: space-between;
--
Gitblit v1.9.3