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/page/user/compontents/cash-list.vue |    4 
 src/page/list/tradingList/data.list.vue |    2 
 src/page/user/webview.vue               |   13 +++-
 src/axios/api.js                        |    8 ++
 src/page/trading/buy.vue                |    5 +
 src/components/stock-list.vue           |   17 +++++
 src/page/user/Warehouse/Stockdetail.vue |    9 ++
 src/page/user/myOrder.vue               |   23 ++++++-
 src/page/login/login.vue                |    4 +
 src/locales/index.js                    |    2 
 index.html                              |    2 
 src/page/authentication/index.vue       |   83 ++++++++++++++++++++++++++-
 src/axios/api.url.js                    |    4 
 src/assets/img/logo_1.png               |    0 
 src/page/user/account.vue               |    4 
 15 files changed, 153 insertions(+), 27 deletions(-)

diff --git a/index.html b/index.html
index a71f549..1d78ff3 100644
--- a/index.html
+++ b/index.html
@@ -5,7 +5,7 @@
     <meta charset="utf-8">
     <meta name="viewport"
         content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
-    <title>RBHC</title>
+    <title>Fluent Global</title>
     <link rel="shortcut icon" href=./favicon.ico type=image/x-icon>
     <link href="static/css/public1.css" rel="stylesheet">
     <link href="//at.alicdn.com/t/c/font_4480663_5e9rjcl352x.css" rel="stylesheet">
diff --git a/src/assets/img/logo_1.png b/src/assets/img/logo_1.png
index 2068c69..47b71d8 100644
--- a/src/assets/img/logo_1.png
+++ b/src/assets/img/logo_1.png
Binary files differ
diff --git a/src/axios/api.js b/src/axios/api.js
index bf9086a..9823463 100644
--- a/src/axios/api.js
+++ b/src/axios/api.js
@@ -131,6 +131,10 @@
 }
 
 // 获取大盘指数
+export function getExchange(options) {
+  return get("/api/stock/getExchange.do", options);
+}
+// 获取大盘指数
 export function getMarket(options) {
   return get("/api/stock/getMarket.do", options);
 }
@@ -218,7 +222,11 @@
 export function buyFutures(options) {
   return post("/user/buyFutures.do", options);
 }
+//撤单
 
+export function revocationOrder(options) {
+  return post("/user/revocationOrder.do", options);
+}
 // 挂单
 export function guadan(options) {
   return post("/user/addOrder.do", options);
diff --git a/src/axios/api.url.js b/src/axios/api.url.js
index f6a8fb9..752230d 100644
--- a/src/axios/api.url.js
+++ b/src/axios/api.url.js
@@ -2,7 +2,7 @@
 
 export default {
   // DOMAIN: "https://api.amcfcxn.org/",
-  DOMAIN: "https://usapi.yanshiz.com/",
+  DOMAIN: "https://api.jinmanxuan.com/",
   // DOMAIN: "https://api.coinbtcs.com/",
   // baseURL: ENV == 'development'?'https://api.guosen.org/':'https://api.guosen.org/',
   // baseURL: 'http://localhost:8070',
@@ -14,7 +14,7 @@
   // 本地
   baseURL:
     // process.env.NODE_ENV == "development" ? "https://192.168.10.12:8091/" : "https://api.kuspitai.com/",
-    process.env.NODE_ENV == "development" ? "https://usapi.yanshiz.com/" : "https://usapi.yanshiz.com/",
+    process.env.NODE_ENV == "development" ? "https://api.jinmanxuan.com/" : "https://api.jinmanxuan.com/",
   util: {
     image: "/util/image.html" // 图片上传
   }
diff --git a/src/components/stock-list.vue b/src/components/stock-list.vue
index 6eac297..4dd0849 100644
--- a/src/components/stock-list.vue
+++ b/src/components/stock-list.vue
@@ -74,9 +74,22 @@
   watch: {},
   mounted() {
     this.init();
-    this.initWebSocket();
+    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 = [];
@@ -140,7 +153,7 @@
     initWebSocket() {
       console.log("initWebSocket");
       this.Trade = new WhrWebSocket({
-        path: `wss://usws.yanshiz.com/websocket-server `,
+        path: `wss://ws.jinmanxuan.com/websocket-server `,
         onmessage: this.getTradeMessage
       });
 
diff --git a/src/locales/index.js b/src/locales/index.js
index 0cc093f..32c16f7 100644
--- a/src/locales/index.js
+++ b/src/locales/index.js
@@ -13,7 +13,7 @@
 
 Vue.use(VueI18n);
 
-const DEFAULT_LANG = window.localStorage.getItem("language") || "zh-CN";
+const DEFAULT_LANG = window.localStorage.getItem("language") || "en";
 const LOCALE_KEY = "language";
 window.localStorage.setItem("language", DEFAULT_LANG);
 const locales = {
diff --git a/src/page/authentication/index.vue b/src/page/authentication/index.vue
index be271ff..92c7008 100644
--- a/src/page/authentication/index.vue
+++ b/src/page/authentication/index.vue
@@ -89,6 +89,9 @@
         img2key: "",
       },
       imgStatus: false,
+      imgStatus2: false,
+      previousImg1key: '',
+      previousImg2key: '',
       admin: apiUrl.baseURL,
     }
   },
@@ -120,6 +123,15 @@
       } else if (!this.form.img2key) {
         Toast(this.$t("hj209"));
       } else {
+        // 验证图片地址是否为有效的网络地址
+        if (this.form.img1key && this.form.img1key.startsWith('blob:')) {
+          Toast('请等待图片上传完成');
+          return;
+        }
+        if (this.form.img2key && this.form.img2key.startsWith('blob:')) {
+          Toast('请等待图片上传完成');
+          return;
+        }
         // 显示确认弹窗
         this.toAuthentication();
       }
@@ -167,31 +179,92 @@
     },
     handleAvatarSuccess(res, file) {
       this.imgStatus = false;
-      this.form.img1key = res.data.url;
+      // 确保返回的是有效的网络图片地址,而不是临时 blob URL
+      if (res && res.data && res.data.url) {
+        // 验证 URL 是否为网络地址(不是 blob URL)
+        if (res.data.url.startsWith('http://') || res.data.url.startsWith('https://')) {
+          this.form.img1key = res.data.url;
+        } else {
+          // 如果返回的不是完整 URL,可能是相对路径,需要拼接 baseURL
+          this.form.img1key = this.admin.replace(/\/$/, '') + '/' + res.data.url.replace(/^\//, '');
+        }
+      } else {
+        // 如果响应格式不正确,恢复之前的值
+        if (this.previousImg1key) {
+          this.form.img1key = this.previousImg1key;
+        }
+        Toast(this.$t("hj209") || '图片上传失败,请重试');
+      }
     },
     beforeAvatarUpload(file) {
       this.imgStatus = true;
+      // 保存之前的图片地址,如果上传失败可以恢复
+      this.previousImg1key = this.form.img1key;
+      return true;
     },
     handleError() {
       this.imgStatus = false;
+      // 上传失败时,恢复之前的图片地址(如果有)
+      if (this.previousImg1key) {
+        this.form.img1key = this.previousImg1key;
+      } else {
+        // 如果没有之前的地址,清空并清理可能的临时 URL
+        if (this.form.img1key && this.form.img1key.startsWith('blob:')) {
+          URL.revokeObjectURL(this.form.img1key);
+          this.form.img1key = '';
+        }
+      }
+      Toast(this.$t("hj209") || '图片上传失败,请重试');
     },
     handleAvatarSuccess2(res, file) {
       this.imgStatus2 = false;
-      this.form.img2key = res.data.url; // URL.createObjectURL(file.raw);
+      // 确保返回的是有效的网络图片地址,而不是临时 blob URL
+      if (res && res.data && res.data.url) {
+        // 验证 URL 是否为网络地址(不是 blob URL)
+        if (res.data.url.startsWith('http://') || res.data.url.startsWith('https://')) {
+          this.form.img2key = res.data.url;
+        } else {
+          // 如果返回的不是完整 URL,可能是相对路径,需要拼接 baseURL
+          this.form.img2key = this.admin.replace(/\/$/, '') + '/' + res.data.url.replace(/^\//, '');
+        }
+      } else {
+        // 如果响应格式不正确,恢复之前的值
+        if (this.previousImg2key) {
+          this.form.img2key = this.previousImg2key;
+        }
+        Toast(this.$t("hj209") || '图片上传失败,请重试');
+      }
     },
     beforeAvatarUpload2(file) {
       this.imgStatus2 = true;
       const isLt10M = file.size / 1024 / 1024 < 10;
       if (!isLt10M) {
         this.$message.error(this.$t("hj205"));
+        this.imgStatus2 = false;
         return false;
-      } else {
-        this.form.img2key = URL.createObjectURL(file);
-        compress(file, function (val) { });
       }
+      // 保存之前的图片地址,如果上传失败可以恢复
+      this.previousImg2key = this.form.img2key;
+      // 不再设置临时 blob URL,等待上传成功后再设置
+      compress(file, function (val) { });
+      return true;
     },
     handleError2() {
       this.imgStatus2 = false;
+      // 上传失败时,恢复之前的图片地址(如果有)
+      if (this.previousImg2key) {
+        this.form.img2key = this.previousImg2key;
+      } else {
+        // 如果没有之前的地址,清空并清理可能的临时 URL
+        if (this.form.img2key && this.form.img2key.startsWith('blob:')) {
+          URL.revokeObjectURL(this.form.img2key);
+          this.form.img2key = '';
+        }
+      }
+      Toast(this.$t("hj209") || '图片上传失败,请重试');
+    },
+    goBack() {
+      this.$router.go(-1);
     },
   }
 }
diff --git a/src/page/list/tradingList/data.list.vue b/src/page/list/tradingList/data.list.vue
index 391fd46..43f1d4e 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.huangzhongzhang.com/websocket-server `,
+        path: `wss://ws.jinmanxuan.com/websocket-server `,
         onmessage: this.getTradeMessage,
       });
 
diff --git a/src/page/login/login.vue b/src/page/login/login.vue
index 31c9050..c4c3c74 100644
--- a/src/page/login/login.vue
+++ b/src/page/login/login.vue
@@ -286,7 +286,9 @@
 
   .left_icon {
     // width: 112px;
-    height: 82px;
+    width: 50px;
+    height: 52px;
+    border-radius: 52px;
   }
 
   .multilingual {
diff --git a/src/page/trading/buy.vue b/src/page/trading/buy.vue
index 26c02ca..9b9bc65 100644
--- a/src/page/trading/buy.vue
+++ b/src/page/trading/buy.vue
@@ -150,11 +150,12 @@
 
             <div class="bottom_bzz">
               <span>
-                {{
+                <!-- {{
                   (nowPrice * selectCycle.replace("X", "") * num * sxf).toFixed(
                     2
                   )
-                }}
+                }} -->
+                {{Math.floor(nowPrice * selectCycle.replace("X", "") * num * sxf * 100) / 100}}
                 <span v-if="bayType != 'US'">
                   ≈ $
                   {{
diff --git a/src/page/user/Warehouse/Stockdetail.vue b/src/page/user/Warehouse/Stockdetail.vue
index b5cd848..5a41efc 100644
--- a/src/page/user/Warehouse/Stockdetail.vue
+++ b/src/page/user/Warehouse/Stockdetail.vue
@@ -92,18 +92,20 @@
       <div class="pagebox" v-if="pages.buyOrderTime">
         <div class="pagebox_left">{{ $t("持倉時間") }}</div>
         <div class="pagebox_right">
-          {{ $moment(pages.buyOrderTime).format("DD-MM-YYYY hh:mm:ss A") }}
+          {{ $moment(pages.buyOrderTime).tz('America/New_York').format("DD-MM-YYYY hh:mm:ss A") }}
         </div>
       </div>
       <div class="pagebox" v-if="pages.sellOrderTime">
         <div class="pagebox_left">{{ $t("hj128") }}</div>
         <div class="pagebox_right">
-          {{ $moment(pages.sellOrderTime).format("DD-MM-YYYY hh:mm:ss A") }}
+          {{ $moment(pages.sellOrderTime).tz('America/New_York').format("DD-MM-YYYY hh:mm:ss A") }}
         </div>
       </div>
       <div class="buttonbox flex-center" v-show="!pages.sellOrderTime">
         <van-button type="primary" @click="close"> {{ $t("平仓") }}</van-button>
+        <van-button type="primary" style="margin-left: 20px;" @click="tipsclick">{{$t("场外卖出")}}{{ $t("平仓") }}</van-button>
       </div>
+
 
       <Dialog ref="closeDialog" :title="$t('确认平仓')" :confirm="confirm">
         <template v-slot:center>
@@ -156,6 +158,9 @@
   // 生命周期 - 挂载完成(访问DOM元素)
   mounted() {},
   methods: {
+    tipsclick() {
+        Notify({ type: "danger", message: this.$t('失败') });
+    },
     handleBack() {
       // 点击返回/
       this.$router.go(-1);
diff --git a/src/page/user/account.vue b/src/page/user/account.vue
index 29a65c7..120f1e4 100644
--- a/src/page/user/account.vue
+++ b/src/page/user/account.vue
@@ -6,7 +6,7 @@
         <div>{{ userInfo.phone }}</div>
       </div>
       <div class="tui-rightsetting flex-center">
-        <img src="@/assets/img/services.png" alt=""  @click="$router.push('/webview?phone'+ userInfo.phone)" />
+        <img src="@/assets/img/services.png" alt=""  @click="$router.push('/webview?phone='+ userInfo.phone)" />
         <img src="@/assets/img/setting.png" alt="" @click="$router.push('/setting')" />
       </div>
     </div>
@@ -40,7 +40,7 @@
         <div>
           <div class="text-xs">{{ $t("平仓盈亏") }}</div>
           <div class="price" style="font-size: .3rem;">
-            {{ moneyData.symbol }} {{ moneyData.cumulativeProfitAndLoss }}
+            {{ moneyData.symbol }}<span v-if="moneyData.isZf==1">-</span> {{ moneyData.cumulativeProfitAndLoss }}
           </div>
         </div>
       </div>
diff --git a/src/page/user/compontents/cash-list.vue b/src/page/user/compontents/cash-list.vue
index 0a35b32..7b6e3b3 100644
--- a/src/page/user/compontents/cash-list.vue
+++ b/src/page/user/compontents/cash-list.vue
@@ -119,12 +119,12 @@
                 </span>
               </p>
             </div>
-            <!-- <div v-if="item.withStatus == 0" class="order-foot clearfix">
+            <div v-if="item.withStatus == 0" class="order-foot clearfix">
               <div @click="cancle(item.id)" class="foot-btn">
                 <i class="font-icon"></i>
                 {{ $t("hjqxtx") }}
               </div>
-            </div> -->
+            </div>
           </div>
           <!-- <div class="capital">
               <div class="pro">
diff --git a/src/page/user/myOrder.vue b/src/page/user/myOrder.vue
index 84323c2..a52c77e 100644
--- a/src/page/user/myOrder.vue
+++ b/src/page/user/myOrder.vue
@@ -39,7 +39,7 @@
           <div class="assets-item flex-center" style="align-items: end;">
             <div class="all-size">{{ $t("平仓盈亏") }}</div>
             <div class="big-size">
-              {{ moneyData.symbol }}{{ moneyData.cumulativeProfitAndLoss }}
+              {{ moneyData.symbol }}<span v-if="moneyData.isZf==1">-</span>{{ moneyData.cumulativeProfitAndLoss }}
             </div>
           </div>
         </div>
@@ -192,7 +192,7 @@
             </div>
             <div style="margin-left: .25rem;font-size: .4rem;" :style="`color:${i.profitAndLose > 0
               ? 'green'
-              : i.profitAndLose < 0
+              : i.isZf < 0
                 ? 'red'
                 : ''
               }`
@@ -250,7 +250,8 @@
           <div>
             {{ i.stockName }}
           </div>
-         <div >
+         <div v-if="i.status!=2" @click="cdclick(i.id)" class="mo_all_sells">
+           {{ $t("hj126") }}
           </div>
         </div>
 
@@ -384,6 +385,13 @@
     clearInterval(teimss2);
   },
   methods: {
+    async cdclick(id){
+      let data = await api.revocationOrder({"id":id});
+      if (data.status === 0) {
+        Notify({ type: "success", message: data.msg });
+        this.getorderList()
+      }
+    },
     // 获取 挂单 数据
     async getorderList() {
       let data = await api.getorderList();
@@ -457,6 +465,15 @@
 </script>
 
 <style lang="less" scoped>
+  .mo_all_sells{
+    padding: 10px 20px;
+    background: linear-gradient(90deg, #585fb4, #48529e);
+    border-radius: 25px;
+    text-align: center;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
 .mo_all_sell{
   padding: 20px 10px;
   background: linear-gradient(90deg, #585fb4, #48529e);
diff --git a/src/page/user/webview.vue b/src/page/user/webview.vue
index 42961ce..0a3cdcd 100644
--- a/src/page/user/webview.vue
+++ b/src/page/user/webview.vue
@@ -3,7 +3,7 @@
     <van-nav-bar :placeholder="true" :safe-area-inset-top="true" :title="$t('kf')" left-arrow
       @click-left="$router.go(-1)">
     </van-nav-bar>
-    <iframe :src="serverUrl+'?phone'+phone" width="100%" :height="screenHeight + 'px'"></iframe>
+    <iframe :src="serverUrl" width="100%" :height="screenHeight + 'px'"></iframe>
   </div>
 </template>
 
@@ -21,10 +21,11 @@
     };
   },
   created() {
-    const { query } = this.$route;
-    this.phone = query.phone
+
   },
   mounted() {
+    const { query } = this.$route;
+    this.phone = query.phone
     this.getInfoSite()
     this.screenHeight = window.innerHeight-100;
   },
@@ -34,6 +35,12 @@
       let data = await api.getInfoSite()
       if (data.status === 0) {
         this.serverUrl = data.data.onlineService
+        const isLastCharQuestion = this.serverUrl.slice(-1) === '?'
+        if(isLastCharQuestion){
+          this.serverUrl += 'name='+this.phone
+        }else{
+          this.serverUrl += '&name='+this.phone
+        }
       } else {
         Toast(data.msg)
       }

--
Gitblit v1.9.3