From d157d0892f1ab5517dbe3a08328ccb9c4e446615 Mon Sep 17 00:00:00 2001
From: jhzh <1628036192@qq.com>
Date: Sun, 20 Apr 2025 15:39:03 +0800
Subject: [PATCH] 1

---
 pages/base/contract.vue |  511 ++++++++++++++++++++++++++++----------------------------
 1 files changed, 254 insertions(+), 257 deletions(-)

diff --git a/pages/base/contract.vue b/pages/base/contract.vue
index d41efb3..5f92dbd 100644
--- a/pages/base/contract.vue
+++ b/pages/base/contract.vue
@@ -1,7 +1,7 @@
 <template>
-  <v-page style="background-color: #F1F3F7;">
-    <!-- <v-header :left-arrow="false" :title="$t('exchange.a2')"></v-header> -->
-    <!-- <van-tabs
+	<v-page style="background-color: #F1F3F7;">
+		<!-- <v-header :left-arrow="false" :title="$t('exchange.a2')"></v-header> -->
+		<!-- <van-tabs
       :ellipsis="false"
       :border="false"
       class="border-b"
@@ -20,262 +20,259 @@
         :name="4"
       ></van-tab>
     </van-tabs> -->
-    <!-- 开仓 -->
+		<!-- 开仓 -->
 
-    <view class="layout-main">
-      <open-position
-        :query="query"
-        :collect="collect"
-        @option="option"
-        :isShow="isShow"
-        ref="openposition"
-        :increase="increase"
-        @symbol="symbolListShow = true"
-        @getSymbolDetail="symbolDetail = $event"
-        :symbolDetail="symbolDetail"
-        :tabs="tabs"
-         v-if="tab == 0"
-      />
-    </view>
+		<view class="layout-main">
+			<open-position :query="query" :collect="collect" @option="option" :isShow="isShow" ref="openposition"
+				:increase="increase" @symbol="symbolListShow = true" @getSymbolDetail="symbolDetail = $event"
+				:symbolDetail="symbolDetail" :tabs="tabs" v-if="tab == 0" />
+		</view>
 
-    <!-- 持仓 -->
-    <main class="layout-main" v-if="tab == 1">
-      <position
-        :isShow="isShow"
-        :symbolDetail="symbolDetail"
-        :symbolLeft="symbolLeft"
-      />
-    </main>
-    <!-- 委托 -->
-    <main class="layout-main" v-if="tab == 2">
-      <contract-entrustment style="min-height: 100%" />
-    </main>
-    <!-- 历史 -->
-    <main class="layout-main" v-if="tab == 3">
-      <contract-history v-if="tab == 3" />
-    </main>
-    <!-- 流水 -->
-    <main class="layout-main" v-if="tab == 4">
-      <contract-bill :symbolLeft="symbolLeft" />
-    </main>
-    <van-popup
-      :show="symbolListShow"
-      @close="symbolListShow = false"
-      close-on-popstate
-      position="left"
-      custom-style="height:100%;width:70%"
-    >
-      <symbol-list
-        :collect="collect"
-        :title="$t('contract.a4')"
-        :marketList="marketList"
-        :heyue="1"
-        :symbols="symbols"
-        @check-symbol="checkSymbol"
-      />
-    </van-popup>
-    <van-dialog
-      use-slot
-      :show="contractStatusShow"
-      :title="contractAgreement.title"
-      @confirm="openContract"
-      show-cancel-button
-      @cancel="contractStatusShow = false"
-    >
-      <view class="p-md overflow-scroll">
-        <rich-text class="p-md" :nodes="contractAgreement.body"></rich-text>
-      </view>
-    </van-dialog>
-  </v-page>
+		<!-- 持仓 -->
+		<main class="layout-main" v-if="tab == 1">
+			<position :isShow="isShow" :symbolDetail="symbolDetail" :symbolLeft="symbolLeft" />
+		</main>
+		<!-- 委托 -->
+		<main class="layout-main" v-if="tab == 2">
+			<contract-entrustment style="min-height: 100%" />
+		</main>
+		<!-- 历史 -->
+		<main class="layout-main" v-if="tab == 3">
+			<contract-history v-if="tab == 3" />
+		</main>
+		<!-- 流水 -->
+		<main class="layout-main" v-if="tab == 4">
+			<contract-bill :symbolLeft="symbolLeft" />
+		</main>
+		<van-popup :show="symbolListShow" @close="symbolListShow = false" close-on-popstate position="left"
+			custom-style="height:100%;width:70%">
+			<symbol-list :collect="collect" :title="$t('contract.a4')" :marketList="marketList" :heyue="1"
+				:symbols="symbols" @check-symbol="checkSymbol" />
+		</van-popup>
+		<van-dialog use-slot :show="contractStatusShow" :title="contractAgreement.title" @confirm="openContract"
+			show-cancel-button @cancel="contractStatusShow = false">
+			<view class="p-md overflow-scroll">
+				<rich-text class="p-md" :nodes="contractAgreement.body"></rich-text>
+			</view>
+		</van-dialog>
+	</v-page>
 </template>
 <script>
-import openPosition from "@/pages/exchange/open-position";
-import position from "@/pages/exchange/position";
-import contractEntrustment from "@/pages/exchange/contract-entrustment";
-import contractHistory from "@/pages/exchange/contract-history";
-import symbolList from "@/pages/exchange/symbol-list";
-import contractBill from "@/pages/exchange/contract-bill";
-import Home from "@/api/home";
-import Contract from "@/api/contract";
-import { mapState } from "vuex";
-export default {
-  name: "contract",
-  props: {
-    isShow: {
-      default: '',
-      type: Boolean,
-      required: false,
-    },
-    tabs: {
-      default: '',
-      type: String,
-      required: false,
-    },
-  },
-  components: {
-    openPosition,
-    position,
-    contractEntrustment,
-    contractHistory,
-    symbolList,
-    contractBill,
-  },
-  data() {
-    return {
-      tab: 0,
-      collect: [],
-      marketList: [],
-      symbolListShow: false,
-      contractStatusShow: false,
-      contractAgreement: {},
-      symbolDetail: {},
-      query: {},
-      increase:{},
-      tabbar:'',
-      msg: 'swapMarketList',
-      symbols:''
-    }
-  },
-  computed: {
-    symbolLeft() {
-      if (!this.query.symbol) return "";
-      return this.query.symbol.split("/")[0];
-    },
-    isLogin() {
-      return Boolean(uni.getStorageSync("token"));
-    },
-    ...mapState({
-      ws: "ws1",
-    }),
-  },
-  watch:{
-      isShow(n) {
-        if (n) {
-          setTimeout(() => {
-            this.ws.send({
-              cmd: "sub",
-              msg: this.msg,
-            });
-          }, 200);
-        } else {
-          this.ws.send({
-            cmd: "unsub",
-            msg: this.msg,
-          });
-        }
-      },
-  },
-  methods: {
-    // 获取市场行情
-    getMarketList() {
-      Contract.getMarketList().then((res) => {
-        // 整理数据格式
-        this.marketList = res.data.map((item) => {
-          item.marketInfoList.forEach((el) => {
-            el.coin_name = el.symbol;
-          });
-          return item;
-        });
-        this.$nextTick(() => {
-          this.linkSocket();
-        });
-        if (!this.query.symbol) {
-          let parentItem = this.marketList[0].marketInfoList[0];
-          this.checkSymbol(parentItem);
-        }
-      });
-    },
-    //
-    checkSymbol(obj) {
-      this.symbols=obj.coin_name
-      this.symbolListShow = false;
-      if (obj.pair_name != this.query.symbol)
-        this.query = { symbol: obj.pair_name };
-    },
-    // 获取自选列表
-    getCollect() {
-      if (!this.isLogin) return;
-      Home.getCollect()
-        .then((res) => {
-          this.collect = res.data || [];
-        })
-        .catch(() => {});
-    },
+	import openPosition from "@/pages/exchange/open-position";
+	import position from "@/pages/exchange/position";
+	import contractEntrustment from "@/pages/exchange/contract-entrustment";
+	import contractHistory from "@/pages/exchange/contract-history";
+	import symbolList from "@/pages/exchange/symbol-list";
+	import contractBill from "@/pages/exchange/contract-bill";
+	import Home from "@/api/home";
+	import Contract from "@/api/contract";
+	import {
+		mapState
+	} from "vuex";
+	export default {
+		name: "contract",
+		props: {
+			isShow: {
+				default: '',
+				type: Boolean,
+				required: false,
+			},
+			tabs: {
+				default: '',
+				type: String,
+				required: false,
+			},
+		},
+		components: {
+			openPosition,
+			position,
+			contractEntrustment,
+			contractHistory,
+			symbolList,
+			contractBill,
+		},
+		data() {
+			return {
+				tab: 0,
+				collect: [],
+				marketList: [],
+				symbolListShow: false,
+				contractStatusShow: false,
+				contractAgreement: {},
+				symbolDetail: {},
+				query: {},
+				increase: {},
+				tabbar: '',
+				msg: 'swapMarketList',
+				symbols: ''
+			}
+		},
+		onShow() {
+			// if (this.$route.query) {
+			// 	const username = this.$route.query;
+			// 	console.log(decodeURIComponent(username.symbol), 1); // 输出:JohnDoe
+			// 	this.query.symbol = decodeURIComponent(username.symbol)
+			// }
 
-    // 链接socket
-    linkSocket() {
-      let msg = this.msg;
-      this.ws.send({
-        cmd: "sub",
-        msg: msg,
-      });
-      this.ws.on("message", (res) => {
-        if(!this.isShow) return;
-        let { data, sub } = res;
-        if (sub == msg) {
-          this.marketList = data.map((item) => {
-            item.marketInfoList.forEach((el) => {
-              el.coin_name = el.symbol;
-            });
-            return item;
-          });
-          if(this.query.symbol){
-              var symbol=this.query.symbol.split('/')
-               // console.log(symbol)
-              var market=this.marketList.find((item) => item.coin_name == symbol[1])
-			  
-              this.increase=market.marketInfoList.find((item) => item.coin_name == symbol[0])||{}
-			  // console.log(this.increase)
-          }
-          
-        }
-      });
-    },
-    // 添加自选
-    option() {
-      let data = {
-        pair_name: this.query.symbol,
-      };
-      Home.option(data)
-        .then((res) => {
-          this.getCollect();
-          if (res.data) {
-            this.$toast(this.$t("exchange.a6"));
-          } else {
-            this.$toast(this.$t("exchange.a7"));
-          }
-        })
-        .catch(() => {});
-    },
-    // 获取开通永续合约
-    openStatus() {
-      if (!this.isLogin) return;
-      Contract.openStatus({}).then((res) => {
-        if (!res.data.open) {
-          this.contractAgreement = res.data.contractAgreement;
-          this.contractStatusShow = true;
-          this.$refs.openposition.getSymbolDetail();
-        }
-      });
-    },
-    // 开通永续合约
-    openContract() {
-      Contract.opening().then(() => {
-        this.$toast(this.$t("contract.a5"));
-        this.contractStatusShow = false;
-      });
-    },
-  },
-  created() {
-    this.getMarketList();
-    this.getCollect();
-    // this.openStatus();
-  },
-  destroyed() {
-    this.ws.send({
-      cmd: "unsub",
-      msg: "swapMarketList",
-    });
-  },
-};
-</script>
+		},
+		mounted() {
+			// if (this.$route.query) {
+			// 	const username = this.$route.query;
+			// 	console.log(decodeURIComponent(username.symbol), 1); // 输出:JohnDoe
+			// 	this.query.symbol = decodeURIComponent(username.symbol)
+			// }
+		},
+		computed: {
+			symbolLeft() {
+
+				if (!this.query.symbol) return "";
+				return this.query.symbol.split("/")[0];
+			},
+			isLogin() {
+				return Boolean(uni.getStorageSync("token"));
+			},
+			...mapState({
+				ws: "ws1",
+			}),
+		},
+		watch: {
+			isShow(n) {
+				if (n) {
+					setTimeout(() => {
+						this.ws.send({
+							cmd: "sub",
+							msg: this.msg,
+						});
+					}, 200);
+				} else {
+					this.ws.send({
+						cmd: "unsub",
+						msg: this.msg,
+					});
+				}
+			},
+		},
+		methods: {
+			// 获取市场行情
+			getMarketList() {
+				Contract.getMarketList().then((res) => {
+					// 整理数据格式
+					this.marketList = res.data.map((item) => {
+						item.marketInfoList.forEach((el) => {
+							el.coin_name = el.symbol;
+						});
+						return item;
+					});
+					this.$nextTick(() => {
+						this.linkSocket();
+					});
+					if (!this.query.symbol) {
+						let parentItem = this.marketList[0].marketInfoList[0];
+						this.checkSymbol(parentItem);
+					}
+				});
+			},
+			//
+			checkSymbol(obj) {
+				this.symbols = obj.coin_name
+				this.symbolListShow = false;
+				if (obj.pair_name != this.query.symbol)
+					this.query = {
+						symbol: obj.pair_name
+					};
+			},
+			// 获取自选列表
+			getCollect() {
+				if (!this.isLogin) return;
+				Home.getCollect()
+					.then((res) => {
+						this.collect = res.data || [];
+					})
+					.catch(() => {});
+			},
+
+			// 链接socket
+			linkSocket() {
+				let msg = this.msg;
+				this.ws.send({
+					cmd: "sub",
+					msg: msg,
+				});
+				this.ws.on("message", (res) => {
+					if (!this.isShow) return;
+					let {
+						data,
+						sub
+					} = res;
+					if (sub == msg) {
+						this.marketList = data.map((item) => {
+							item.marketInfoList.forEach((el) => {
+								el.coin_name = el.symbol;
+							});
+							return item;
+						});
+						if (this.query.symbol) {
+							var symbol = this.query.symbol.split('/')
+							// console.log(symbol)
+							var market = this.marketList.find((item) => item.coin_name == symbol[1])
+
+							this.increase = market.marketInfoList.find((item) => item.coin_name == symbol[0]) || {}
+							// console.log(this.increase)
+						}
+
+					}
+				});
+			},
+			// 添加自选
+			option() {
+				let data = {
+					pair_name: this.query.symbol,
+				};
+				Home.option(data)
+					.then((res) => {
+						this.getCollect();
+						if (res.data) {
+							this.$toast(this.$t("exchange.a6"));
+						} else {
+							this.$toast(this.$t("exchange.a7"));
+						}
+					})
+					.catch(() => {});
+			},
+			// 获取开通永续合约
+			openStatus() {
+				if (!this.isLogin) return;
+				Contract.openStatus({}).then((res) => {
+					if (!res.data.open) {
+						this.contractAgreement = res.data.contractAgreement;
+						this.contractStatusShow = true;
+						this.$refs.openposition.getSymbolDetail();
+					}
+				});
+			},
+			// 开通永续合约
+			openContract() {
+				Contract.opening().then(() => {
+					this.$toast(this.$t("contract.a5"));
+					this.contractStatusShow = false;
+				});
+			},
+		},
+		created() {
+			if (this.$route.query.symbol) {
+				const username = this.$route.query;
+				console.log(decodeURIComponent(username.symbol), 1); // 输出:JohnDoe
+				this.query.symbol = decodeURIComponent(username.symbol)
+			}
+			this.getMarketList();
+			this.getCollect();
+			// this.openStatus();
+		},
+		destroyed() {
+			this.ws.send({
+				cmd: "unsub",
+				msg: "swapMarketList",
+			});
+		},
+	};
+</script>
\ No newline at end of file

--
Gitblit v1.9.3