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