From c03ae5893c55c8b30daed67e96d0a8d0a513451b Mon Sep 17 00:00:00 2001
From: PC-20250623MANY\Administrator <344137771@qq.com>
Date: Mon, 29 Sep 2025 13:40:32 +0800
Subject: [PATCH] 1

---
 src/page/user/Warehouse/Stockdetail.vue |   26 +++++++-
 src/locales/en.json                     |    3 
 src/page/trading/TradeNew.vue           |    4 
 src/page/list/tradingList/data.list.vue |    2 
 src/axios/api.js                        |    4 +
 src/page/trading/buy.vue                |   94 ++++++++++++------------------
 src/locales/hi.json                     |    3 
 src/components/stock-list.vue           |    2 
 src/locales/cht.json                    |    3 
 9 files changed, 74 insertions(+), 67 deletions(-)

diff --git a/src/axios/api.js b/src/axios/api.js
index 7e1f527..3bc13f6 100644
--- a/src/axios/api.js
+++ b/src/axios/api.js
@@ -670,3 +670,7 @@
 export function rtDk(options) {
   return post(`/api/dk/rtDk.do?id=` + options);
 }
+// 获取最低手数和股数
+export function queryStockBuySetting(options) {
+  return get("/api/user/queryStockBuySetting.do", options);
+}
diff --git a/src/components/stock-list.vue b/src/components/stock-list.vue
index c418f9b..2a42cf9 100644
--- a/src/components/stock-list.vue
+++ b/src/components/stock-list.vue
@@ -103,7 +103,7 @@
       handler(val) {
         // 根据当前股票类型连接对应的ws
         if (val.stockType == "US")
-          this.initWebSocket("wss://ws.isusstock.com/websocket-server");
+          this.initWebSocket("wss://usws.yanshiz.com/websocket-server");
         else this.initWebSocket("wss://ws.acapl.net/websocket-server");
 
         this.pageNum = 1;
diff --git a/src/locales/cht.json b/src/locales/cht.json
index f72956e..3f6d169 100644
--- a/src/locales/cht.json
+++ b/src/locales/cht.json
@@ -699,5 +699,6 @@
   "冻结资金": "凍結資金",
   "待补资金": "待補資金",
   "身份證件": "身份證件",
-  "一键平仓": "一鍵平倉"
+  "一键平仓": "一鍵平倉",
+  "交易数量": "交易數量"
 }
diff --git a/src/locales/en.json b/src/locales/en.json
index 19b4b94..6ccc368 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -699,5 +699,6 @@
   "冻结资金": "Freeze funds",
   "待补资金": "Pending replenishment funds",
   "身份證件": "Identity document",
-  "一键平仓": "One-click liquidation"
+  "一键平仓": "One-click liquidation",
+  "交易数量": "Transaction quantity"
 }
diff --git a/src/locales/hi.json b/src/locales/hi.json
index 7dbe042..fb106dc 100644
--- a/src/locales/hi.json
+++ b/src/locales/hi.json
@@ -699,5 +699,6 @@
   "冻结资金": "फ्रीज फंड्स",
   "待补资金": "अनुपूरक निधि लंबित",
   "身份證件": "पहचान प्रलेख",
-  "一键平仓": "एक कृपया बंद करें"
+  "一键平仓": "एक कृपया बंद करें",
+  "交易数量": "लेनदेन मात्रा"
 }
\ No newline at end of file
diff --git a/src/page/list/tradingList/data.list.vue b/src/page/list/tradingList/data.list.vue
index 3c0a911..a77ebd4 100644
--- a/src/page/list/tradingList/data.list.vue
+++ b/src/page/list/tradingList/data.list.vue
@@ -334,7 +334,7 @@
     initWebSocket() {
       console.log("initWebSocket");
       this.Trade = new WhrWebSocket({
-        path: `wss://ws.acapl.net/websocket-server`,
+        path: `wss://usws.yanshiz.com/websocket-server`,
         onmessage: this.getTradeMessage,
       });
 
diff --git a/src/page/trading/TradeNew.vue b/src/page/trading/TradeNew.vue
index 3c6b5ce..46b5c15 100644
--- a/src/page/trading/TradeNew.vue
+++ b/src/page/trading/TradeNew.vue
@@ -1,11 +1,11 @@
 <template>
   <div class="trade_new">
     <tab-head>
-      <van-popover v-model="showPopover" trigger="click" :actions="actions" @select="onSelect" slot="left">
+      <!-- <van-popover v-model="showPopover" trigger="click" :actions="actions" @select="onSelect" slot="left">
         <template #reference>
           <van-button type="primary">{{ $t("一键平仓") }}</van-button>
         </template>
-      </van-popover>
+      </van-popover> -->
     </tab-head>
 
     <div class="order_tabs">
diff --git a/src/page/trading/buy.vue b/src/page/trading/buy.vue
index 3440e2b..ae50bb4 100644
--- a/src/page/trading/buy.vue
+++ b/src/page/trading/buy.vue
@@ -30,19 +30,11 @@
             </div>
             <div class="rights">
               <div class="ese">
-                <div
-                  class="mc"
-                  @click="handleTradingClick(0)"
-                  :class="tabsCurrentIndex === 0 ? 'actives' : ''"
-                >
+                <div class="mc" @click="handleTradingClick(0)" :class="tabsCurrentIndex === 0 ? 'actives' : ''">
                   <span>Short</span>
                 </div>
 
-                <div
-                  class="mr"
-                  @click="handleTradingClick(1)"
-                  :class="tabsCurrentIndex === 1 ? 'active' : ''"
-                >
+                <div class="mr" @click="handleTradingClick(1)" :class="tabsCurrentIndex === 1 ? 'active' : ''">
                   <span>Long</span>
                 </div>
               </div>
@@ -53,13 +45,8 @@
 
       <div class="price_tabs">
         <div class="tabs">
-          <div
-            class="tab_item"
-            v-for="(item, index) in priceTabs"
-            :key="index"
-            @click="handleTabsClick(item, index)"
-            :class="priceTabsCurrentIndex === index ? 'active' : ''"
-          >
+          <div class="tab_item" v-for="(item, index) in priceTabs" :key="index" @click="handleTabsClick(item, index)"
+            :class="priceTabsCurrentIndex === index ? 'active' : ''">
             <span>{{ item }}</span>
           </div>
         </div>
@@ -76,29 +63,21 @@
                 <img src="@/assets/img/ic_number_jian.png" alt />
               </div>
               <div class="addorj"></div>
-              <div
-                class="addorj"
-                @click="
-                  typeof nums == 'string'
-                    ? (nums = Number(Number(nums) + 1).toFixed(2))
-                    : (nums = (Number(nums) + 1).toFixed(2))
-                "
-              >
+              <div class="addorj" @click="
+                typeof nums == 'string'
+                  ? (nums = Number(Number(nums) + 1).toFixed(2))
+                  : (nums = (Number(nums) + 1).toFixed(2))
+                ">
                 <img src="@/assets/img/ic_number_add.png" />
               </div>
             </div>
           </div>
           <div class="num">
-            <span>{{ $t("hj100") }}</span>
+            <span>{{ $t("交易数量") }}({{ $t('hj117') }})</span>
           </div>
           <div class="tr_es flexJy">
             <div class="top_input">
-              <input
-                type="number"
-                onkeyup="value=value.replace(/[^\d]/g,'')"
-                v-model="num"
-                @input="numInput"
-              />
+              <input type="number" onkeyup="value=value.replace(/[^\d]/g,'')" v-model="num" @input="numInput" />
             </div>
             <div class="right_sw flexJy" style="width: auto">
               <div class="addorj" @click="jyslJian">
@@ -126,8 +105,8 @@
               <span>
                 {{ bayType | currencySymbol }}
                 {{
-                  (nowPrice * selectCycle.replace("X", "") * num)
-                    | _toLocaleString
+                  (nowPrice * selectCycle.replace("X", "") * num * stockNum)
+                  | _toLocaleString
                 }}
               </span>
               <span style="white-space: nowarp">
@@ -211,14 +190,8 @@
         </div>
       </div>
     </div>
-    <van-action-sheet
-      v-model="showGg"
-      :actions="siteLeverList"
-      :cancel-text="$t('hj106')"
-      :description="$t('hj107')"
-      close-on-click-action
-      @select="onSelect"
-    />
+    <van-action-sheet v-model="showGg" :actions="siteLeverList" :cancel-text="$t('hj106')" :description="$t('hj107')"
+      close-on-click-action @select="onSelect" />
   </div>
 </template>
 
@@ -318,7 +291,8 @@
         }
       ],
       moneyData: {},
-      gid: ""
+      gid: "",
+      stockNum: 0, // 一手的股数
     };
   },
   computed: {
@@ -343,6 +317,7 @@
     this.getMoneyData();
     this.getSettingInfo();
     this.queryStockConfig();
+    this.getStockBuySetting();
   },
   watch: {
     checkedZy(val) {
@@ -378,8 +353,8 @@
       // this.moneyData.availableBalance
       let numbs = Math.floor(
         this.moneyData.availableBalance /
-          this.nowPrice /
-          this.selectCycle.replace("X", "")
+        this.nowPrice /
+        this.selectCycle.replace("X", "")
       );
       if (e.target.value >= numbs) {
         this.num = numbs;
@@ -412,8 +387,8 @@
     jjjisua() {
       let numbs = Math.floor(
         this.moneyData.availableBalance /
-          this.nowPrice /
-          this.selectCycle.replace("X", "")
+        this.nowPrice /
+        this.selectCycle.replace("X", "")
       );
       typeof this.num == "string"
         ? (this.num = Number(Number(this.num) + 1))
@@ -720,6 +695,13 @@
           elAlertText: data.msg
         });
       }
+    },
+    // 获取每手的股数
+    async getStockBuySetting() {
+      let data = await api.queryStockBuySetting({ stockType: this.bayType });
+      if (data.status === 0) {
+        this.stockNum = data.data[0].stockNum;
+      }
     }
   },
   filters: {
@@ -740,7 +722,7 @@
   min-height: 100vh;
   background-color: #fff;
 
-  > .content {
+  >.content {
     width: 100%;
     height: calc(100% - 1.6rem);
     position: relative;
@@ -765,7 +747,7 @@
       display: flex;
       align-items: center;
 
-      > img {
+      >img {
         margin-top: 0.2rem;
         width: 0.6rem;
         height: 0.6rem;
@@ -841,13 +823,13 @@
         align-items: center;
         justify-content: flex-end;
 
-        > div {
+        >div {
           width: 65%;
           height: 80%;
           display: flex;
           justify-content: center;
 
-          > div {
+          >div {
             width: 45%;
             height: 70%;
             background: rgb(236, 236, 236);
@@ -898,7 +880,7 @@
     justify-content: center;
     border-radius: 0.15rem;
 
-    > div {
+    >div {
       width: 49%;
       height: 80%;
       border-radius: 0.15rem;
@@ -950,7 +932,7 @@
       height: 1.3rem;
       margin-top: 0.4rem;
 
-      > div {
+      >div {
         width: 100%;
         height: 50%;
         color: rgb(160, 160, 160);
@@ -984,7 +966,7 @@
       font-size: 0.3803rem;
       border-bottom: 0.05rem solid rgb(236, 236, 236);
 
-      > div {
+      >div {
         color: #000;
       }
     }
@@ -1009,7 +991,7 @@
     align-items: center;
     border-bottom: 0.05rem solid rgb(236, 236, 236);
 
-    > div {
+    >div {
       // width: 20%;
       height: 50%;
       display: flex;
@@ -1033,7 +1015,7 @@
   align-items: flex-end;
   // padding-top: 0.8rem;
 
-  > div {
+  >div {
     width: 100%;
     height: 1.2821rem;
     display: flex;
diff --git a/src/page/user/Warehouse/Stockdetail.vue b/src/page/user/Warehouse/Stockdetail.vue
index 39fd880..7cbdf6c 100644
--- a/src/page/user/Warehouse/Stockdetail.vue
+++ b/src/page/user/Warehouse/Stockdetail.vue
@@ -96,13 +96,13 @@
         </div>
       </div>
       <div class="buttonbox flex-center" v-show="!pages.sellOrderTime">
-        <van-button type="primary" @click="close"> {{ $t("平仓") }}</van-button>
+        <!-- <van-button type="primary" @click="close"> {{ $t("平仓") }}</van-button> -->
 
-        <!-- <van-popover v-model="showPopover" trigger="click" placement="top" :actions="actions" @select="onSelect">
+        <van-popover v-model="showPopover" trigger="click" placement="top" :actions="actions" @select="onSelect">
           <template #reference>
-            <van-button type="primary"> {{ $t("一键平仓") }}</van-button>
+            <van-button type="primary"> {{ $t("平仓") }}</van-button>
           </template>
-        </van-popover> -->
+        </van-popover>
       </div>
 
       <Dialog ref="closeDialog" :title="$t('确认平仓')" :confirm="confirm">
@@ -142,6 +142,8 @@
     return {
       pages: {},
       ordernum: "",
+      actions: [{ text: '确定', key: '1' }, { text: '取消', key: '2' }],
+      showPopover: false,
     };
   },
   // 生命周期 - 创建完成(访问当前this实例)
@@ -200,6 +202,22 @@
         Notify({ type: "danger", message: res.msg });
       }
     },
+    // 直接全部确认弹框
+    onSelect(action) {
+      if (action.key == 1) this.oneClose();
+    },
+    // 直接全部平仓
+    async oneClose() {
+      const res = await api.sell({
+        positionSn: this.pages.positionSn,
+        number: this.pages.orderNum
+      });
+      if (res.status === 0) {
+        Notify({ type: "success", message: res.msg });
+      } else {
+        Notify({ type: "danger", message: res.msg });
+      }
+    }
   }
 };
 </script>

--
Gitblit v1.9.3