From 25b2ba1cf86bc3439e7ad2acf2cd4a9ea7e4b0ed Mon Sep 17 00:00:00 2001
From: dcc <dcc@163.com>
Date: Fri, 28 Jun 2024 09:28:04 +0800
Subject: [PATCH] 123

---
 src/page/trade/index.vue | 1896 ++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 1,242 insertions(+), 654 deletions(-)

diff --git a/src/page/trade/index.vue b/src/page/trade/index.vue
index 22287f3..5e817b1 100644
--- a/src/page/trade/index.vue
+++ b/src/page/trade/index.vue
@@ -1,716 +1,1304 @@
 <template>
-  <div class="pb-108 no_touch trade">
-    <trade-head
-      :backFunc="() => $router.push('/')"
-      :symbol="symbol"
-      :price="price"
-      :range="range"
-      :isTrade="true"
-      @update-coin="onUpdate"
-      @data="quote = $event"
-    />
+	<div class="pb-108 no_touch trade">
+		<div class="typebox" style="display: flex;">
+			<div :class="typeindex==index?'typebox_box':'typebox_boxa'" @click="typeclick(index)"
+				v-for="(item,index) in typelist" :key="index">{{item}}</div>
+		</div>
+		<div v-if="typeindex==0">
+			<trade-head :backFunc="() => $router.push('/')" :symbol="symbol" :newname="newname" :price="price" :range="range"
+				:isTrade="true" @update-coin="onUpdate" @data="quote = $event" />
 
-    <div class="trade-buy-sell flex justify-between px-30 py-30">
-      <keep-alive>
-        <trade-deep-data
-          :selectValue="selectValue"
-          @getList="getList"
-          :showType="showType"
-          :symbol="symbol"
-          v-if="symbol"
-          :price="price"
-          class="w-290 mr-30"
-        />
-      </keep-alive>
-      <trade-order-area
-        :symbol="symbol"
-        :init-open="initOpen"
-        :init-close="initClose"
-        :price="price"
-        @ordered="onOrdered"
-      />
-    </div>
+			<div class="trade-buy-sell flex justify-between px-30 py-30">
+				<keep-alive>
+					<trade-deep-data :selectValue="selectValue" @getList="getList"  :showType="showType" :symbol="symbol"
+						v-if="symbol" :price="price" class="w-290 mr-30" />
+				</keep-alive>
+				<trade-order-area :symbol="symbol" :init-open="initOpena" :newname="newname" :init-close="initClose" :price="price"
+					@ordered="onOrdereda" />
+			</div>
 
-    <div class="list-data">
-      <div>
-        <div class="flex justify-between pb-20 items-center pt-10">
-          <div class="flex pl-30">
-            <template>
-              <div
-                class="px-10 py-10 flex items-center text-grey"
-                @click="tabClick('1')"
-                :class="tabType == '1' ? 'active-line' : ''"
-              >
-                {{ $t("当前委托")
+			<div class="list-data">
+				<div>
+					<div class="flex justify-between pb-20 items-center pt-10">
+						<div class="flex pl-30 mar-23">
+							<template>
+								<div class="px-10 py-10 flex items-center text-grey" @click="tabClick('1')"
+									:class="tabType == '1' ? 'active-line' : ''">
+									{{ $t("当前委托")
                 }}<span v-if="tabType == '1'">({{ entrustList.length }})</span>
-              </div>
-              <div
-                class="px-10 ml-50 py-10 flex items-center text-grey"
-                @click="tabClick('3')"
-                :class="tabType == '3' ? 'active-line' : ''"
-              >
-                {{ $t("历史委托") }}
-              </div>
-              <div
-                class="px-10 py-10 flex items-center ml-50 text-grey"
-                @click="tabClick('2')"
-                :class="tabType == '2' ? 'active-line' : ''"
-              >
-                {{ $t("资产") }}
-              </div>
-            </template>
-          </div>
-          <img
-            src="@/assets/3x/names8.png"
-            alt="record-img"
-            class="w-32 h-35 pr-30"
-            @click="goHistory"
-          />
-        </div>
-      </div>
-      <div class="pl-32 pr-32 pb-100" v-if="tabType == '1'">
-        <entrust-item
-          v-for="item in entrustList"
-          :key="item.order_no"
-          :entrust="item"
-          state="submitted"
-          @cancelOrder="cancelOrder"
-        />
-      </div>
-      <div class="pl-32 pr-32 pb-100" v-else-if="tabType == '3'">
-        <history-item
-          v-for="item in entrustList"
-          :key="item.order_no"
-          :coinPrice="coinPrice"
-          :entrust="item"
-          :state="item.state"
-          @cancelOrder="cancelOrder"
-        />
-      </div>
-      <div class="pl-32 pr-32" v-else>
-        <div class="mb-20 border-b">
-          <p class="font-28 text-grey mt-24 mb-42">{{ $t("当前币对资产") }}</p>
-          <ul>
-            <li
-              v-for="item in pairsList"
-              :key="item.symbol"
-              class="flex justify-between py-10"
-            >
-              <div class="flex items-center">
-                <img
-                  :src="
+								</div>
+								<div class="px-10 ml-50 py-10 flex items-center text-grey" @click="tabClick('3')"
+									:class="tabType == '3' ? 'active-line' : ''">
+									{{ $t("历史委托") }}
+								</div>
+								<div class="px-10 py-10 flex items-center ml-50 text-grey" @click="tabClick('2')"
+									:class="tabType == '2' ? 'active-line' : ''">
+									{{ $t("资产") }}
+								</div>
+							</template>
+						</div>
+						<span @click="goHistory">
+							<img src="@/assets/3x/names8.png" alt="record-img" class="w-32 h-35 pr-30" />
+						</span>
+					</div>
+				</div>
+				<div class="pl-32 pr-32 pb-100" v-if="tabType == '1'">
+					<entrust-item v-for="item in entrustList" :key="item.order_no" :entrust="item" state="submitted"
+						@cancelOrder="cancelOrder" />
+				</div>
+				<div class="pl-32 pr-32 pb-100" v-else-if="tabType == '3'">
+					<history-item v-for="item in entrustList" :key="item.order_no" :coinPrice="coinPrice"
+						:entrust="item" :state="item.state" @cancelOrder="cancelOrder" />
+				</div>
+				<div class="pl-32 pr-32" v-else>
+					<div class="mb-20 border-b">
+						<p class="font-28 text-grey mt-24 mb-42">{{ $t("当前币对资产") }}</p>
+						<ul>
+							<li v-for="item in pairsList" :key="item.symbol" class="flex justify-between py-10">
+								<div class="flex items-center">
+									<img :src="
                     item.symbol
                       ? `${HOST_URL}/wap/symbol/${item.symbol}.png`
                       : require('@/assets/loading-default.png')
-                  "
-                  class="w-52 h-52 rounded-full mr-16"
-                />
-                <p class="flex flex-col">
-                  <strong class="font-28 textColor mb-6">{{
+                  " class="w-52 h-52 rounded-full mr-16" />
+									<p class="flex flex-col">
+										<strong class="font-28 textColor mb-6">{{
                     item.symbol.toUpperCase()
                   }}</strong>
-                  <span class="font-20 text-grey">{{ item.full_name }}</span>
-                </p>
-              </div>
-              <div class="flex flex-col items-end text-grey">
-                <strong class="font-28 textColor mb-6">{{
+										<span class="font-20 text-grey">{{ item.full_name }}</span>
+									</p>
+								</div>
+								<div class="flex flex-col items-end text-grey">
+									<strong class="font-28 textColor mb-6">{{
                   item.volume
                 }}</strong>
-                <span class="font-20 text-grey">
-                  {{ currency.currency_symbol }}
-                  {{
+									<span class="font-20 text-grey">
+										{{ currency.currency_symbol }}
+										{{
                     item.usdt ? (item.usdt * currency.rate).toFixed(2) : "0.0"
                   }}
-                </span>
-              </div>
-            </li>
-          </ul>
-        </div>
-        <div class="mb-60 border-b">
-          <p class="font-28 text-grey mt-24 mb-42">{{ $t("其他非0资产") }}</p>
-          <ul>
-            <li
-              v-for="item in no_zeroList"
-              :key="item.symbol"
-              class="flex justify-between py-10"
-            >
-              <div class="flex items-center">
-                <img
-                  :src="
+									</span>
+								</div>
+							</li>
+						</ul>
+					</div>
+					<div class="mb-60 border-b">
+						<p class="font-28 text-grey mt-24 mb-42">{{ $t("其他非0资产") }}</p>
+						<ul>
+							<li v-for="item in no_zeroList" :key="item.symbol" class="flex justify-between py-10">
+								<div class="flex items-center">
+									<img :src="
                     item.symbol
                       ? `${HOST_URL}/wap/symbol/${item.symbol}.png`
                       : require('@/assets/loading-default.png')
-                  "
-                  class="w-52 h-52 rounded-full mr-16"
-                />
-                <p class="flex flex-col">
-                  <strong class="font-28 textColor mb-6">{{
+                  " class="w-52 h-52 rounded-full mr-16" />
+									<p class="flex flex-col">
+										<strong class="font-28 textColor mb-6">{{
                     item.symbol.toUpperCase()
                   }}</strong>
-                  <span class="font-20 text-grey">{{ item.full_name }}</span>
-                </p>
-              </div>
-              <div class="flex flex-col items-end">
-                <strong class="font-28 textColor mb-6">{{
+										<span class="font-20 text-grey">{{ item.full_name }}</span>
+									</p>
+								</div>
+								<div class="flex flex-col items-end">
+									<strong class="font-28 textColor mb-6">{{
                   item.volume
                 }}</strong>
-                <span class="font-20 text-grey">
-                  {{ currency.currency_symbol }}
-                  {{
+									<span class="font-20 text-grey">
+										{{ currency.currency_symbol }}
+										{{
                     item.usdt ? (item.usdt * currency.rate).toFixed(2) : "0.0"
                   }}
-                </span>
-              </div>
-            </li>
-          </ul>
-        </div>
-      </div>
-      <div
-        v-if="tabType == '1' && !entrustList.length"
-        class="flex flex-col justify-center items-center pt-155 pb-100"
-      >
-        <img
-          src="@/assets/image/assets-center/no-data.png"
-          alt="no-date"
-          class="w-180 h-180"
-        />
-        <p class="textColor">{{ $t("暂无数据") }}</p>
-      </div>
-    </div>
-    <div class="fixed w-full shadow z-10 tabBackground1">
-      <div class="flex justify-between px-30 py-10">
-        <span class="font-24 textColor2">
-          {{ symbol | _symbolName(1) }}&nbsp;{{ $t("k线图表") }}
-        </span>
-        <van-icon
-          class="textColor"
-          @click.stop="showCharts = !showCharts"
-          :name="showCharts ? 'arrow-down' : 'arrow-up'"
-        ></van-icon>
-      </div>
-      <k-line-charts
-        :update-key="updateKey"
-        :update-data="quote"
-        :symbol="symbol"
-        v-if="symbol && showCharts"
-        :showBottom="false"
-      />
-    </div>
-    <van-action-sheet
-      v-model="isSelectShow"
-      @select="onSelect"
-      :actions="actions"
-      :cancel-text="$t('取消')"
-      close-on-click-action
-      @cancel="onCancel"
-    />
-  </div>
+									</span>
+								</div>
+							</li>
+						</ul>
+					</div>
+				</div>
+				<div v-if="tabType == '1' && !entrustList.length"
+					class="flex flex-col justify-center items-center pt-155 pb-100">
+					<img src="@/assets/image/assets-center/no-data.png" alt="no-date" class="w-180 h-180" />
+					<p class="textColor">{{ $t("暂无数据") }}</p>
+				</div>
+			</div>
+			<div class="fixed w-full shadow z-10 tabBackground1">
+				<div class="flex justify-between px-30 py-10">
+					<span class="font-24 textColor2">
+						{{ newname }}&nbsp;{{ $t("k线图表") }}
+					</span>
+					<van-icon class="textColor" @click.stop="showCharts = !showCharts"
+						:name="showCharts ? 'arrow-down' : 'arrow-up'"></van-icon>
+				</div>
+				<k-line-charts :update-key="updateKey" :update-data="quote" :symbol="symbol" v-if="symbol && showCharts"
+					:showBottom="false" />
+			</div>
+			<van-action-sheet v-model="isSelectShow" @select="onSelect" :actions="actions" :cancel-text="$t('取消')"
+				close-on-click-action @cancel="onCancel" />
+		</div>
+		<div v-if="typeindex==1">
+			<aaa></aaa>
+		</div>
+	</div>
 </template>
 
 <script>
-import TradeHead from "@/components/trade-head/index.vue";
-import TradeOrderArea from "@/components/trade-order-area/index.vue";
-import TradeDeepData from "@/components/trade-deep-data/index.vue";
-import EntrustItem from "@/components/entrust-item";
-import KLineCharts from "@/components/kline-charts";
-import historyItem from "@/components/history-item";
+	import ContractHeader from "@/components/contract-header/index.vue";
+	import PerpetualOpen from "@/components/perpetual-open/index.vue";
+	import PerpetualOrder from "@/components/perpetual-order/index.vue";
+	
+	import {
+	  _getBalance,
+	  _getDeepData,
+	  _initOpen,
+	  _initClose,
+	  _orderListCur,
+	  _orderListHold,
+	  _futrueOrderInit,
+	  _futrueOrderList,
+	} from "@/API/trade.api";
+	var showLength = 7;
+	
+	
+	import TradeHead from "@/components/trade-head/index.vue";
+	import TradeOrderArea from "@/components/trade-order-area/index.vue";
+	import TradeDeepData from "@/components/trade-deep-data/index.vue";
+	import EntrustItem from "@/components/entrust-item";
+	import KLineCharts from "@/components/kline-charts";
+	import historyItem from "@/components/history-item";
+	import aaa from "../../page/perpetualContract/index.vue"
+	import Axios from "@/API/trading";
+	import {
+		_getHomeList
+	} from "@/API/home.api";
+	import {
+		Popup,
+		Swipe,
+		SwipeItem,
+		Circle,
+		Icon,
+		ActionSheet
+	} from "vant";
+	import {
+		mapActions,
+		mapGetters
+	} from "vuex";
+	import {
+		SET_COIN_LIST
+	} from "@/store/const.store";
+	import {
+		WS_URL,
+		HOST_URL
+	} from "@/config";
+	import TradeApi from "@/API/trading.js";
+	import {
+		getStorage
+	} from "@/utils/utis";
 
-import Axios from "@/API/trading";
-import { _getHomeList } from "@/API/home.api";
-import { Popup, Swipe, SwipeItem, Circle, Icon, ActionSheet } from "vant";
-import { mapActions, mapGetters } from "vuex";
-import { SET_COIN_LIST } from "@/store/const.store";
-import { WS_URL, HOST_URL } from "@/config";
-import TradeApi from "@/API/trading.js";
-import { getStorage } from "@/utils/utis";
-
-export default {
-  name: "TradePage",
-  components: {
-    TradeHead,
-    TradeOrderArea,
-    TradeDeepData,
-    [Popup.name]: Popup,
-    [Swipe.name]: Swipe,
-    [SwipeItem.name]: SwipeItem,
-    [Circle.name]: Circle,
-    [Icon.name]: Icon,
-    [ActionSheet.name]: ActionSheet,
-    EntrustItem,
-    KLineCharts,
-    historyItem,
-  },
-  computed: {
-    ...mapGetters("user", ["userInfo"]),
-    ...mapGetters({
-      coinList: "home/coinList",
-      currency: "home/currency",
-    }),
-  },
-  data() {
-    const initArr = [];
-    for (let i = 0; i < 8; i++) {
-      initArr.push({
-        volume: "--",
-        price: "--",
-      });
-    }
-    return {
-      HOST_URL,
-      quote: {},
-      showCharts: false,
-      updateKey: 1,
-      initTimer: null,
-      keyIndex: 0,
-      timeout: null,
-      timer: null, // 底部持仓等的公用定时器
-      timer2: null, // 交割合约底部持仓等的公用定时器
-      symbol: "",
-      price: "",
-      range: "",
-      initOpen: {},
-      initClose: {},
-      asks: initArr, // 卖单
-      bids: initArr, // 买单
-      orderCur: [], // 当前委托
-      orderHold: [], // 持有仓位
-      futrueHold: [], // 交割持仓
-      futrueHistroy: [], // 交割历史
-      socket: null, // 行情
-      sockets: {
-        quotes: null, // 行情
-        deep: null, /// 深度
-      },
-      curTab: "", // 当前委托还是持有仓位
-      selectIndex: 1, // 当前tab
-      initFutrue: {}, /// 交割合约
-      show: false, // popup
-      entrustList: [], //当前委托订单
-      tabType: 1,
-      no_zeroList: [], //其他非0资产数组
-      pairsList: {}, //当前资产
-      // curRequest: [], //
-      isShow: false,
-      title: 1,
-      isSelectShow: false,
-      actions: [
-        { name: this.$t("默认"), value: 0, className: "actions-active" },
-        { name: this.$t("展示买单"), value: 1, className: "" },
-        { name: this.$t("展示卖单"), value: 2, className: "" },
-      ],
-      showType: 0,
-      sortList: [],
-      selectValue: 0,
-      coinPrice: 0,
-    };
-  },
-  async created() {
-    if (!this.coinList.length) {
-      await this.SET_COIN_LIST();
-    }
-  },
-  mounted() {
-    this.GET_UERS_KYC();
-  },
-  methods: {
-    ...mapActions("home", [SET_COIN_LIST]),
-    ...mapActions("user", ["GET_UERS_KYC"]),
-
-    onUpdate(symbol) {
-      // 更新
-      this.symbol = symbol;
-      this.closeSocket();
-      this.init(symbol);
-    },
-    getCoinPrce(val) {
-      _getHomeList(val).then((res) => {
-        this.coinPrice = res[0].close;
-      });
-    },
-    tabClick(type) {
-      this.tabType = type;
-      if (type == 2 && !this.userInfo.token) {
-        this.$router.push("/login");
-        return;
-      }
-      this.entrustList = [];
-      this.getOrderList();
-    },
-    onOrdered(evt) {
-      // 下单过后的回调
-      this.clearTimer();
-      // this.clearTimeout()
-      this.initParam(this.symbol, evt); // 重新初始化
-      //console.log('下单后更新数据')
-    },
-    onTab(evt) {
-      // 点击tab后的回调
-      console.log("evt", evt);
-      this.clearTimer();
-      // this.clearTimeout()
-      this.curTab = evt;
-      this[evt](this.symbol);
-    },
-    handleQoutes(data) {
-      if (data && data.length) {
-        const cur = data[0];
-        this.price = cur.close;
-        this.range = cur.change_ratio + "";
-        this.quote = cur;
-        this.updateKey++;
-      }
-    },
-    startQuoteSocket() {
-      // 行情socket
-      console.log("symbol", this.symbol);
-      if (!this.symbol) {
-        return;
-      }
-      this.socket = new WebSocket(`${WS_URL}/1/${this.symbol}`);
-      this.socket.onmessage = (evt) => {
-        const { data } = evt;
-        const { code, data: _data } = JSON.parse(data);
-        console.log(_data);
-        if (code / 1 === 0) {
-          this.handleQoutes(_data);
-        }
-      };
-    },
-    initParam(symbol, type) {
-      // 初始化参数
-      if (type === "open" || !type) {
-        //console.log('开仓数据')
-        Axios.tradeBuyToken({}).then((res) => {
-          this.initOpen = res.data;
-          console.log(this.initOpen.volume, res.data.volume, type);
-        });
-      }
-      if (type === "close" || !type) {
-        Axios.tradeSellToken({
-          symbol,
-        }).then((res) => {
-          this.initClose = res.data;
-        });
-      }
-      this.getWallet();
-      if (this.userInfo.token) {
-        this.getOrderList();
-      }
-    },
-    init(symbol) {
-      // 初始化页面
-      this.symbol = symbol.toLowerCase();
-      if (!this.socket) {
-        this.startQuoteSocket();
-      }
-      this.initParam(symbol); // 'open'
-      this.clearTimer();
-      this.getCoinPrce(symbol);
-    },
-    closeSocket() {
-      this.socket && this.socket.close();
-      this.socket = null;
-    },
-    clearTimer() {
-      clearInterval(this.timer);
-      this.timer = null;
-    },
-    tradeBuy() {
-      Axios.tradeBuy({
-        volume: 1,
-        session_token: "",
-        symbol: "",
-        price: 1,
-        order_price_type: "", //limit限价  opponent市价
-      })
-        .then((res) => {
-          console.log(res);
-        })
-        .catch((error) => {
-          if (error.code === "ECONNABORTED") {
-            this.$toast(this.$t("网络超时!"));
-          } else if (error.msg !== undefined) {
-            this.$toast(this.$t(error.msg));
-          }
-        });
-    },
-    getOrderList() {
-      TradeApi.tradeRecord({
-        page_no: 1,
-        symbol: this.$route.params.symbol,
-        type: this.tabType == 1 ? "orders" : "hisorders",
-      })
-        .then((res) => {
-          console.log(res.data);
-          this.entrustList = res.data;
-        })
-        .catch(() => {});
-    },
-    cancelOrder(order) {
-      TradeApi.tradeCancel({
-        order_no: order,
-      })
-        .then((res) => {
-          this.initParam(this.symbol);
-          this.$toast(this.$t("成功"));
-        })
-        .catch(() => {});
-    },
-    getWallet() {
-      TradeApi.getPairs({
-        pairs: `${this.symbol}/usdt`,
-      }).then((res) => {
-        this.pairsList = res.data.pairs;
-        this.no_zeroList = res.data.no_zero;
-      });
-    },
-    goHistory() {
-      this.$router.push(`/tradeRecord/${this.symbol}`);
-    },
-    //价格类型下拉框切换
-    selectBtn() {
-      this.isShow = !this.isShow;
-    },
-    //选择价格类型
-    selectItem(item) {
-      this.title = item.name;
-      this.isShow = false;
-      this.selectValue = item.value;
-    },
-    onSelect(item) {
-      this.showType = item.value;
-      this.actions.map((item) => {
-        item.className = "";
-      });
-      item.className = "actions-active";
-    },
-    onCancel() {
-      this.isSelectShow = false;
-    },
-    getList(val) {
-      if (val.numberLength <= 2) {
-        this.title = val.arry[0].name;
-      } else {
-        this.title = val.arry[val.arry.length - 1].name;
-      }
-      this.sortList = val.arry;
-    },
-  },
-  beforeRouteEnter(to, from, next) {
-    let {
-      params: { symbol },
-    } = to;
-    let catchTradeSymbol = getStorage("tradeSymbol");
-    if (catchTradeSymbol) {
-      symbol = catchTradeSymbol;
-    }
-    if (symbol) {
-      next((vm) => {
-        vm.symbol = symbol;
-        vm.init(symbol);
-      });
-    } else {
-      next();
-    }
-  },
-  activated() {
-    // if (!this.socket) {
-    //     this.startQuoteSocket()
-    // }
-  },
-  deactivated() {
-    this.closeSocket();
-    this.clearTimer();
-  },
-  beforeDestroy() {
-    this.closeSocket();
-    // this.clearTimeout(true)
-    this.clearTimer();
-  },
-};
+	export default {
+		name: "TradePage",
+		components: {
+			ContractHeader,
+			PerpetualOpen,
+			PerpetualOrder,
+			[Popup.name]: Popup,
+			[Swipe.name]: Swipe,
+			[SwipeItem.name]: SwipeItem,
+			KLineCharts,
+			TradeHead,
+			TradeOrderArea,
+			TradeDeepData,
+			[Popup.name]: Popup,
+			[Swipe.name]: Swipe,
+			[SwipeItem.name]: SwipeItem,
+			[Circle.name]: Circle,
+			[Icon.name]: Icon,
+			[ActionSheet.name]: ActionSheet,
+			EntrustItem,
+			KLineCharts,
+			historyItem,
+			aaa
+		},
+		computed: {
+			...mapGetters("user", ["userInfo"]),
+			...mapGetters({
+				coinList: "home/coinList",
+				currency: "home/currency",
+			}),
+		},
+		watch: {
+		  selectIndex(val) {
+		    showLength = 7;
+		  },
+		},
+		data() {
+			const initArr = [];
+			for (let i = 0; i < showLength; i++) {
+			  initArr.push({
+			    amount: "--",
+			    price: "--",
+			  });
+			}
+			// const initArr = [];
+			// for (let i = 0; i < 8; i++) {
+			// 	initArr.push({
+			// 		volume: "--",
+			// 		price: "--",
+			// 	});
+			// }
+			return {
+				quote: {},
+				initTimer: null,
+				keyIndex: 0,
+				timeout: null,
+				timer: null, // 底部持仓等的公用定时器
+				timer1: null, // tab切换动画
+				timer2: null, // 交割合约底部持仓等的公用定时器
+				balance: 0,
+				symbol: "",
+				price: "",
+				range: "",
+				stop_price_profit: "",
+				stop_price_loss: "",
+				initClose: {},
+				asks: initArr, // 卖单
+				bids: initArr, // 买单
+				orderCur: [], // 当前委托
+				orderHold: [], // 持有仓位
+				futrueHold: [], // 交割持仓
+				futrueHistroy: [], // 交割历史
+				sockets: {
+				  quotes: null, // 行情
+				  deep: null, /// 深度
+				},
+				curTab: "", // 当前委托还是持有仓位
+				selectIndex: 1, // 当前tab
+				initFutrue: {}, /// 交割合约
+				show: false, // popup
+				animated1: false,
+				animated2: false,
+				newname:'',
+				currentType: "",
+				showCharts: false,
+				// curRequest: [], //
+				
+				HOST_URL,
+				quote: {},
+				typelist: [this.$t("交易"), this.$t("合约")],
+				typeindex: 0,
+				showCharts: false,
+				updateKey: 1,
+				initTimer: null,
+				keyIndex: 0,
+				timeout: null,
+				timer: null, // 底部持仓等的公用定时器
+				timer2: null, // 交割合约底部持仓等的公用定时器
+				symbol: "",
+				price: "",
+				range: "",
+				initOpena: {},
+				initOpen: {},
+				initClose: {},
+				asks: initArr, // 卖单
+				bids: initArr, // 买单
+				orderCur: [], // 当前委托
+				orderHold: [], // 持有仓位
+				name:'',
+				futrueHold: [], // 交割持仓
+				futrueHistroy: [], // 交割历史
+				socket: null, // 行情
+				sockets: {
+					quotes: null, // 行情
+					deep: null, /// 深度
+				},
+				curTab: "", // 当前委托还是持有仓位
+				selectIndex: 1, // 当前tab
+				initFutrue: {}, /// 交割合约
+				show: false, // popup
+				entrustList: [], //当前委托订单
+				tabType: 1,
+				no_zeroList: [], //其他非0资产数组
+				pairsList: {}, //当前资产
+				// curRequest: [], //
+				isShow: false,
+				title: 1,
+				isSelectShow: false,
+				actions: [{
+						name: this.$t("默认"),
+						value: 0,
+						className: "actions-active"
+					},
+					{
+						name: this.$t("展示买单"),
+						value: 1,
+						className: ""
+					},
+					{
+						name: this.$t("展示卖单"),
+						value: 2,
+						className: ""
+					},
+				],
+				showType: 0,
+				sortList: [],
+				selectValue: 0,
+				coinPrice: 0,
+			};
+		},
+		async created() {
+			if (!this.coinList.length) {
+				await this.SET_COIN_LIST();
+			}
+			_getBalance().then((data) => {
+			  // 获取用户余额
+			  this.$store.commit("user/SET_USERINFO", { balance: data.money });
+			  // const { money } = data
+			  // this.balance = money
+			});
+		},
+		mounted() {
+			this.GET_UERS_KYC();
+			let symbol = this.$route.params.symbol;
+			let type = this.$route.params.aa;
+			let catchSymbol = getStorage("symbol");
+			if (!symbol && catchSymbol) {
+			  symbol = catchSymbol;
+			}
+			if (this.selectIndex / 1 === 2) {
+			  this.curTab = "fetchFutrueHoldList";
+			} else {
+			  this.curTab = "fetchOrderListHold";
+			}
+			this.symbol = symbol;
+			if(this.typeindex==0){
+				this.inita(symbol);
+			}else{
+				this.init(symbol);
+			}
+		},
+		methods: {
+			...mapActions("home", [SET_COIN_LIST]),
+			...mapActions("user", ["GET_UERS_KYC"]),
+			typeclick(e) {
+				this.typeindex = e
+				if(e==0){
+					this.initParama(this.symbol)
+				}else{
+					this.symbol = 'wld'
+					this.initParam(this.symbol)
+				}
+				this.$forceUpdate()
+			},
+			onUpdate(symbol,name) {
+				// 更新
+				this.symbol = symbol;
+				this.newname = name
+				this.closeSocket();
+				if(this.typeindex==0){
+					this.closeSocketa();
+				}else{
+					this.closeSocket();
+				}
+				if(this.typeindex==0){
+					this.inita(symbol);
+				}else{
+					this.init(symbol);
+				}
+			},
+			onRecall() {
+			  // 撤单or 平仓 evt
+			  this.clearTimer();
+			  _orderListHold(this.symbol).then((data) => {
+			    this.orderHold = data;
+			  });
+			  this[this.curTab](this.symbol);
+			  _initOpen(this.symbol).then((data) => {
+			    this.initOpen = data;
+			  });
+			},
+			onTopTab(evt) {
+			  // 当前tab 永续/交割
+			  this.keyIndex += 1;
+			  this.selectIndex = evt;
+			  this.clearTimer();
+			  if (this.selectIndex / 1 === 1) {
+			    //this.curTab = 'fetchOrderListCur'
+			    this.curTab = "fetchOrderListHold";
+			    // this.animated1 = true
+			    // this.timer = setTimeout(() => {
+			    //     this.animated1 = false
+			    //     clearTimeout(this.timer)
+			    // }, 200)
+			    this.animated2 = true;
+			    this.timer1 = setTimeout(() => {
+			      this.animated2 = false;
+			      clearTimeout(this.timer1);
+			    }, 200);
+			  } else {
+			    // this.animated2 = true
+			    // this.timer = setTimeout(() => {
+			    //     this.animated2 = false
+			    //     clearTimeout(this.timer)
+			    // }, 200)
+			    this.animated1 = true;
+			    this.timer1 = setTimeout(() => {
+			      this.animated1 = false;
+			      clearTimeout(this.timer1);
+			    }, 200);
+			  }
+			  console.log(this.curTab);
+			  this[this.curTab](this.symbol);
+			},
+			getCoinPrce(val) {
+				_getHomeList(val).then((res) => {
+					this.coinPrice = res[0].close;
+				});
+			},
+			tabClick(type) {
+				this.tabType = type;
+				if (type == 2 && !this.userInfo.token) {
+					this.$router.push("/login");
+					return;
+				}
+				this.entrustList = [];
+				this.getOrderList();
+			},
+			changeCurrentType(type) {
+			  this.currentType = type;
+			},
+			fetchOrderListHold(symbol) {
+			  // 当前持仓
+			  if (!symbol) {
+			    return;
+			  }
+			  if (this.userInfo.token) {
+			    _orderListHold(symbol).then((data) => {
+			      // this.orderHold = data
+			      this.orderHold = data.sort(this.sortData);
+			    });
+			    this.timer = setInterval(() => {
+			      _orderListHold(symbol).then((data) => {
+			        // if (typeof this.timer === 'string') {
+			        //   this.timer = null
+			        //   return
+			        // }
+			        // this.orderHold = data
+			        this.orderHold = data.sort(this.sortData);
+			      });
+			    }, 1000);
+			  } else {
+			    this.orderHold = [];
+			  }
+			},
+			fetchFutrueHoldList(symbol) {
+			  if (!symbol) {
+			    return;
+			  }
+			  // 交割持仓
+			  if (this.userInfo.token) {
+			    let length = 0;
+			    _futrueOrderList(symbol).then((data) => {
+			      // this.futrueHold = data
+			      this.futrueHold = data.sort(this.sortData);
+			      length = data.length;
+			    });
+			    this.timer = setInterval(() => {
+			      _futrueOrderList(symbol).then((data) => {
+			        // if (typeof this.timer === 'string') {
+			        //   this.timer = null
+			        //   return
+			        // }
+			
+			        this.futrueHold = data.sort(this.sortData);
+			        if (length != data.length) {
+			          length = data.length;
+			          _futrueOrderInit(symbol).then((dataList) => {
+			            this.initFutrue = dataList;
+			          });
+			        }
+			      });
+			    }, 1000);
+			  } else {
+			    this.futrueHold = [];
+			  }
+			},
+			fetchFutrueHistory(symbol) {
+			  // 交割历史持仓
+			  _futrueOrderList(symbol, "hisorders").then((data) => {
+			    this.futrueHistroy = data;
+			    // this.clearTimeout()
+			  });
+			},
+			onOrdereda(evt) {
+				// 下单过后的回调
+				this.clearTimer();
+				// this.clearTimeout()
+				if(this.typeindex==0){
+					this.initParama(this.symbol, evt); // 重新初始化
+				}else{
+					this.initParam(this.symbol, evt); // 重新初始化
+				}
+				//console.log('下单后更新数据')
+			},
+			onOrdered(evt) {
+			  // 下单过后的回调
+			  this.clearTimer();
+			  // this.clearTimeout()
+			  if(this.typeindex==0){
+			  	this.initParama(this.symbol, evt); // 重新初始化
+			  }else{
+			  	this.initParam(this.symbol, evt); // 重新初始化
+			  }
+			  // TODO: 这里要做判断
+			  if (this.selectIndex / 1 === 1) {
+			    this[this.curTab](this.symbol); // 重新调取记录
+			    console.log("this.curTab", this.curTab);
+			  } else {
+			    // 交割合约
+			    this[this.curTab](this.symbol);
+			    // this.show = true
+			    console.log("curTab", evt, this.curTab);
+			  }
+			  //console.log('下单后更新数据')
+			},
+			changeValueBack(val) {
+			  if (val == 0) {
+			    showLength = 7;
+			  } else {
+			    showLength = 13;
+			  }
+			},
+			onTab(evt) {
+				// 点击tab后的回调
+				console.log("evt", evt);
+				this.clearTimer();
+				// this.clearTimeout()
+				this.curTab = evt;
+				this[evt](this.symbol);
+			},
+			fetchQoutes(symbol) {
+			  // 获取当前行情
+			  // symbol.order = "desc"
+			  _getHomeList(symbol).then((data) => {
+			    // 获取行情
+			    this.handleQoutes(data);
+			    this.startQuoteSocket(); // socket
+				if(this.typeindex==0){
+					this.startQuoteSocketa(); // socket
+				}else{
+					this.startQuoteSocket(); // socket
+				}
+			  });
+			},
+			handleQoutes(data) {
+				if (data && data.length) {
+					const cur = data[0];
+					this.price = cur.close;
+					this.newname = cur.name;
+					this.range = cur.change_ratio + "";
+					this.quote = cur;
+					this.updateKey++;
+				}
+			},
+			fetchDeepData(symbol) {
+			  console.log("sd");
+			  _getDeepData(symbol).then((data) => {
+			    // 获取深度
+			    console.log(data);
+			    this.handleDeep(data);
+			    this.startDeepSocket(); // socket
+			  });
+			},
+			handleDeep(data) {
+			  if (this.symbol !== data.symbol) {
+			    return;
+			  }
+			  this.deepData = data;
+			  const { asks, bids } = data;
+			  this.asks = asks.sort((a, b) => a.price - b.price).slice(0, showLength);
+			  this.bids = bids.sort((a, b) => a.price - b.price).slice(-showLength);
+			},
+			fetchOrderListCur(symbol) {
+			  // 当前委托
+			  //console.log('当前委托')
+			  if (this.userInfo.token) {
+			    _orderListCur(symbol).then((data) => {
+			      this.orderCur = data;
+			    });
+			    this.clearTimer();
+			    this.timer = setInterval(() => {
+			      _orderListCur(symbol).then((data) => {
+			        // if (typeof this.timer === 'string') {
+			        //   this.timer = null
+			        //   return
+			        // }
+			        this.orderCur = data;
+			      });
+			    }, 1000);
+			  } else {
+			    this.orderCur = [];
+			  }
+			},
+			startDeepSocket() {
+			  // 开启socket链接
+			  if(this.typeindex==0){
+			  	this.closeSocketa();
+			  }else{
+			  	this.closeSocket();
+			  }
+			
+			  this.socket = new WebSocket(`${WS_URL}/3/${this.symbol}`);
+			
+			  this.socket.onopen = () => {
+			    console.log("WebSocket connection established");
+			  };
+			
+			  this.socket.onmessage = (evt) => {
+			    const { data } = evt;
+			    const { code, data: _data } = JSON.parse(data);
+			    if (code / 1 === 0) {
+			      this.handleDeep(_data);
+			    }
+			  };
+			
+			  this.socket.onerror = (error) => {
+			    console.error("WebSocket error:", error);
+			    setTimeout(this.startDeepSocket, 5000); // 5秒后尝试重新连接
+			  };
+			
+			  this.socket.onclose = (event) => {
+			    console.log("WebSocket connection closed:", event);
+			    // 重新连接,可以根据需求添加重连的逻辑,这里只是简单的示例
+			  };
+			},
+			startQuoteSocketa() {
+				// 行情socket
+				console.log("symbol", this.symbol);
+				if (!this.symbol) {
+					return;
+				}
+				this.socket = new WebSocket(`${WS_URL}/1/${this.symbol}`);
+				this.socket.onmessage = (evt) => {
+					const {
+						data
+					} = evt;
+					const {
+						code,
+						data: _data
+					} = JSON.parse(data);
+					// console.log(_data);
+					if (code / 1 === 0) {
+						this.handleQoutes(_data);
+					}
+				};
+			},
+			initParama(symbol, type) {
+				// 初始化参数
+				if (type === "open" || !type) {
+					//console.log('开仓数据')
+					Axios.tradeBuyToken({}).then((res) => {
+						this.initOpena = res.data;
+						console.log(this.initOpen.volume, res.data.volume, type);
+					});
+				}
+				if (type === "close" || !type) {
+					Axios.tradeSellToken({
+						symbol,
+					}).then((res) => {
+						this.initClose = res.data;
+					});
+				}
+				this.getWallet();
+				if (this.userInfo.token) {
+					this.getOrderList();
+				}
+			},
+			initParam(symbol, type) {
+			  // 初始化参数
+			  if (type === "open" || type === "long" || type === "short" || !type) {
+			    let initFunTimer = null;
+			    let initFun = () => {
+			      _initOpen(symbol)
+			        .then((data) => {
+			          this.initOpen = data;
+			          clearTimeout(initFunTimer);
+			          initFunTimer = null;
+			        })
+			        .catch((err) => {
+			          initFunTimer = setTimeout(() => {
+			            initFun();
+			          }, 3000);
+			        });
+			    };
+			    initFun();
+			  }
+			  if (type === "close" || !type) {
+			    let initFunTimer = null;
+			    let initFun = () => {
+			      _initClose(symbol)
+			        .then((data) => {
+			          this.initClose = data;
+			          console.log(this.initClose);
+			          clearTimeout(initFunTimer);
+			          initFunTimer = null;
+			        })
+			        .catch((err) => {
+			          initFunTimer = setTimeout(() => {
+			            initFun();
+			          }, 3000);
+			        });
+			    };
+			    initFunTimer = setTimeout(() => {
+			      initFun();
+			    }, 600);
+			  }
+			  if (type === "futrue" || !type) {
+			    _futrueOrderInit(symbol).then((data) => {
+			      this.initFutrue = data;
+			    });
+			  }
+			},
+			init(symbol) {
+			  // 初始化页面
+			  this.symbol = symbol.toLowerCase();
+			  this.fetchQoutes(symbol);
+			  this.fetchDeepData(symbol);
+			  this.initParam(symbol); // 'open'
+			  this.clearTimer();
+			  //if (this.curTab === 'fetchOrderListCur') {
+			  if (this.curTab === "fetchOrderListHold") {
+			    //this.fetchOrderListCur(symbol)
+			    this.fetchOrderListHold(symbol);
+			  } else {
+			    this.fetchFutrueHoldList(symbol);
+			  }
+			},
+			inita(symbol) {
+				// 初始化页面
+				this.symbol = symbol.toLowerCase();
+				if (!this.socket) {
+					if(this.typeindex==0){
+						this.startQuoteSocketa(); // socket
+					}else{
+						this.startQuoteSocket(); // socket
+					}
+				}
+				// this.initParam(symbol); // 'open'
+				if(this.typeindex==0){
+					this.initParama(symbol); // 'open'
+				}else{
+					this.initParam(symbol); // 'open'
+				}
+				this.clearTimer();
+				this.getCoinPrce(symbol);
+			},
+			closeSocketa() {
+				this.socket && this.socket.close();
+				this.socket = null;
+			},
+			closeSocket() {
+			  this.sockets.quotes && this.sockets.quotes.close();
+			  this.sockets.deep && this.sockets.deep.close();
+			  this.sockets.quotes = null;
+			  this.sockets.deep = null;
+			},
+			clearTimer() {
+				clearInterval(this.timer);
+				this.timer = null;
+			},
+			tradeBuy() {
+				Axios.tradeBuy({
+						volume: 1,
+						session_token: "",
+						symbol: "",
+						price: 1,
+						order_price_type: "", //limit限价  opponent市价
+					})
+					.then((res) => {
+						console.log(res);
+					})
+					.catch((error) => {
+						if (error.code === "ECONNABORTED") {
+							this.$toast(this.$t("网络超时!"));
+						} else if (error.msg !== undefined) {
+							this.$toast(this.$t(error.msg));
+						}
+					});
+			},
+			getOrderList() {
+				TradeApi.tradeRecord({
+						page_no: 1,
+						symbol: this.$route.params.symbol,
+						type: this.tabType == 1 ? "orders" : "hisorders",
+					})
+					.then((res) => {
+						console.log(res.data);
+						this.entrustList = res.data;
+					})
+					.catch(() => {});
+			},
+			cancelOrder(order) {
+				TradeApi.tradeCancel({
+						order_no: order,
+					})
+					.then((res) => {
+						if(this.typeindex==0){
+							this.initParama(this.symbol);
+						}else{
+							this.initParam(this.symbol);
+						}
+						this.$toast(this.$t("成功"));
+					})
+					.catch(() => {});
+			},
+			getWallet() {
+				TradeApi.getPairs({
+					pairs: `${this.symbol}/usdt`,
+				}).then((res) => {
+					this.pairsList = res.data.pairs;
+					this.no_zeroList = res.data.no_zero;
+				});
+			},
+			goHistory() {
+				this.$router.push(`/tradeRecord/${this.symbol}`);
+			},
+			//价格类型下拉框切换
+			selectBtn() {
+				this.isShow = !this.isShow;
+			},
+			//选择价格类型
+			selectItem(item) {
+				this.title = item.name;
+				this.isShow = false;
+				this.selectValue = item.value;
+			},
+			onSelect(item) {
+				this.showType = item.value;
+				this.actions.map((item) => {
+					item.className = "";
+				});
+				item.className = "actions-active";
+			},
+			onCancel() {
+				this.isSelectShow = false;
+			},
+			getList(val) {
+				if (val.numberLength <= 2) {
+					this.title = val.arry[0].name;
+				} else {
+					this.title = val.arry[val.arry.length - 1].name;
+				}
+				this.sortList = val.arry;
+			},
+		},
+		startQuoteSocket() {
+		  // 行情socket
+		  this.sockets.quotes = new WebSocket(`${WS_URL}/1/${this.symbol}`);
+		  // socket.onopen =  () => {
+		  //     console.log('open')
+		  //     socket.send('hello')
+		  // }
+		  this.sockets.quotes.onmessage = (evt) => {
+		    const { data } = evt;
+		    const { code, data: _data } = JSON.parse(data);
+		    if (code / 1 === 0) {
+		      this.handleQoutes(_data);
+		    }
+		  };
+		},
+		
+		beforeRouteEnter(to, from, next) {
+			var that = this
+			let {
+				params: {
+					symbol
+				},
+			} = to;
+			let catchTradeSymbol = getStorage("tradeSymbol");
+			if (catchTradeSymbol) {
+				symbol = catchTradeSymbol;
+			}
+			if (symbol) {
+				// debugger
+				// if(that.typeindex==0){
+				// 	next((vm) => {
+				// 		vm.symbol = symbol;
+				// 		vm.inita(symbol);
+				// 	});
+				// }else{
+					next((vm) => {
+						vm.symbol = symbol;
+						vm.init(symbol);
+					});
+				// }
+				
+			} else {
+				next();
+			}
+		},
+		activated() {
+		  let symbol = this.$route.params.symbol;
+		  let catchSymbol = getStorage("symbol");
+		  if (!symbol && catchSymbol) {
+		    symbol = catchSymbol;
+		  }
+		  if (this.selectIndex / 1 === 2) {
+		    this.curTab = "fetchFutrueHoldList";
+		  } else {
+		    this.curTab = "fetchOrderListHold";
+		  }
+		  this.symbol = symbol;
+		  if(this.typeindex==0){
+		  	this.inita(symbol);
+		  }else{
+		  	this.init(symbol);
+		  }
+		},
+		activated() {
+			this.currentType = this.$route.query.currentType
+			  ? this.$route.query.currentType
+			  : "long";
+		},
+		deactivated() {
+			if(this.typeindex==0){
+				this.closeSocketa();
+			}else{
+				this.closeSocket();
+			}
+			this.clearTimer();
+		},
+		
+		
+		beforeDestroy() {
+			if(this.typeindex==0){
+				this.closeSocketa();
+			}else{
+				this.closeSocket();
+			}
+			// this.clearTimeout(true)
+			this.clearTimer();
+		},
+	};
 </script>
 
 <style lang="scss" scoped>
-//.list-enter-active, .list-leave-active {
-//  transition: all .5s;
-//  transform: translateY(30px)
-//}
-//.list-enter, .list-leave-to
-//  /* .list-leave-active for below version 2.1.8 */ {
-//  transform: translateY(0)
-//}
+	//.list-enter-active, .list-leave-active {
+	//  transition: all .5s;
+	//  transform: translateY(30px)
+	//}
+	//.list-enter, .list-leave-to
+	//  /* .list-leave-active for below version 2.1.8 */ {
+	//  transform: translateY(0)
+	//}
+	.typebox_box {
+		width: 50%;
+		background-color: #9691fa;
+		color: #fff;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+	}
 
-.no_touch {
-  -webkit-user-select: none;
-  user-select: none;
-  -ms-user-select: none;
-  -moz-user-select: none;
+	.typebox_boxa {
+		width: 50%;
+		background-color: #fff;
+		color: #9691fa;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+	}
 
-  @include themify() {
-    background: themed("main_background");
-  }
+	.no_touch {
+		-webkit-user-select: none;
+		user-select: none;
+		-ms-user-select: none;
+		-moz-user-select: none;
 
-  min-height: 100vh;
-}
+		@include themify() {
+			background: themed("main_background");
+		}
 
-.list-enter-active,
-.list-leave-active {
-  will-change: transform;
-  transition: all 250ms;
-}
+		min-height: 100vh;
+	}
 
-.list-enter {
-  opacity: 0;
-  transform: translate3d(-100%, 0, 0);
-}
+	.typebox {
+		width: 100%;
+		height: 100px;
 
-.list-leave {
-  opacity: 0;
-  transform: translate3d(100%, 0, 0);
-}
+	}
 
-.rounded-view {
-  border-top-left-radius: 20px;
-  border-top-right-radius: 20px;
-  padding: 0 30px;
-  box-sizing: border-box;
-}
+	.list-enter-active,
+	.list-leave-active {
+		will-change: transform;
+		transition: all 250ms;
+	}
 
-.my-swipe {
-  width: 100%;
-}
+	.list-enter {
+		opacity: 0;
+		transform: translate3d(-100%, 0, 0);
+	}
 
-.active-line {
-  position: relative;
-  // padding: 15px 0;
-  color: #9691fa;
-  font-weight: 600;
+	.list-leave {
+		opacity: 0;
+		transform: translate3d(100%, 0, 0);
+	}
 
-  @include themify() {
-    // background-color: themed("color_main");
-  }
-}
+	.rounded-view {
+		border-top-left-radius: 20px;
+		border-top-right-radius: 20px;
+		padding: 0 30px;
+		box-sizing: border-box;
+	}
 
-// .active-line::after {
-//     content: '';
-//     position: absolute;
-//     left: 50%;
-//     transform: translateX(-50%);
-//     bottom: 0;
-//     right: 0;
-//     width: 280px;
-//     height: 8px;
-//        @include themify() {
-//            background-color: themed("color_main");
-//        }
-// }
+	.my-swipe {
+		width: 100%;
+	}
 
-.shadow {
-  bottom: 108px;
-  box-sizing: border-box;
-}
+	.active-line {
+		position: relative;
+		// padding: 15px 0;
+		color: #9691fa;
+		font-weight: 600;
 
-// .textColor {
-//     color: #DAD5DC;
-// }
+		@include themify() {
+			// background-color: themed("color_main");
+		}
+	}
 
-.borderColor,
-.border-solid-grey {
-  @include themify() {
-    border: 1px solid themed("border_color");
-  }
-}
+	// .active-line::after {
+	//     content: '';
+	//     position: absolute;
+	//     left: 50%;
+	//     transform: translateX(-50%);
+	//     bottom: 0;
+	//     right: 0;
+	//     width: 280px;
+	//     height: 8px;
+	//        @include themify() {
+	//            background-color: themed("color_main");
+	//        }
+	// }
 
-.tabBackground1 {
-  @include themify() {
-    border: 1px solid themed("border_color1");
-  }
-}
+	.shadow {
+		bottom: 108px;
+		box-sizing: border-box;
+	}
 
-// 下拉
-.option-box {
-  position: absolute;
-  left: 0;
-  right: 0;
-  top: 90px;
-  width: 100%;
+	// .textColor {
+	//     color: #DAD5DC;
+	// }
 
-  @include themify() {
-    background: themed("grey_bg");
-  }
+	.borderColor,
+	.border-solid-grey {
+		@include themify() {
+			border: 1px solid themed("border_color");
+		}
+	}
 
-  text-align: center;
-  border-radius: 4px;
+	.tabBackground1 {
+		@include themify() {
+			border: 1px solid themed("border_color1");
+		}
+	}
 
-  @include themify() {
-    color: themed("text_color3");
-  }
+	// 下拉
+	.option-box {
+		position: absolute;
+		left: 0;
+		right: 0;
+		top: 90px;
+		width: 100%;
 
-  z-index: 10;
-}
+		@include themify() {
+			background: themed("grey_bg");
+		}
 
-.option-box > div {
-  padding: 30px 0;
-}
+		text-align: center;
+		border-radius: 4px;
 
-.option-box > div:hover {
-  // background-color: #F5F5F5;
-}
+		@include themify() {
+			color: themed("text_color3");
+		}
 
-.k-select-box {
-  position: relative;
-  top: -130px;
-  //   justify-content: flex-end;
-  padding: 0 30px;
-  align-items: center;
+		z-index: 10;
+	}
 
-  .select-box {
-    width: 220px;
+	.option-box>div {
+		padding: 30px 0;
+	}
 
-    @include themify() {
-      background: themed("input_background");
-    }
+	.option-box>div:hover {
+		// background-color: #F5F5F5;
+	}
 
-    margin-right: 20px;
-  }
-}
+	.k-select-box {
+		position: relative;
+		top: -130px;
+		//   justify-content: flex-end;
+		padding: 0 30px;
+		align-items: center;
 
-.van-popup {
-  @include themify() {
-    background: themed("color_main");
-  }
-}
+		.select-box {
+			width: 220px;
 
-.actions-active {
-  @include themify() {
-    background: themed("color_main") !important;
-  }
-}
+			@include themify() {
+				background: themed("input_background");
+			}
 
-.trade {
-  ::v-deep .van-action-sheet__item,
-  ::v-deep .van-action-sheet__cancel {
-    @include themify() {
-      background: themed("input_background1");
-    }
+			margin-right: 20px;
+		}
+	}
 
-    @include themify() {
-      color: themed("text_color");
-    }
-  }
+	.van-popup {
+		@include themify() {
+			background: themed("color_main");
+		}
+	}
 
-  ::v-deep .van-action-sheet__gap {
-    @include themify() {
-      background: themed("cont_background");
-    }
-  }
-}
+	.actions-active {
+		@include themify() {
+			background: themed("color_main") !important;
+		}
+	}
 
-.list-data {
-  margin: 30px;
-  min-height: 550px;
-  box-shadow: 0px 0px 10px 5px rgba(0, 0, 0, 0.05);
-  //
-}
-</style>
+	.trade {
 
+		::v-deep .van-action-sheet__item,
+		::v-deep .van-action-sheet__cancel {
+			@include themify() {
+				background: themed("input_background1");
+			}
+
+			@include themify() {
+				color: themed("text_color");
+			}
+		}
+
+		::v-deep .van-action-sheet__gap {
+			@include themify() {
+				background: themed("cont_background");
+			}
+		}
+	}
+
+	.list-data {
+		margin: 30px;
+		min-height: 550px;
+		box-shadow: 0px 0px 10px 5px rgba(0, 0, 0, 0.05);
+		//
+	}
+	
+	//.list-enter-active, .list-leave-active {
+	//  transition: all .5s;
+	//  transform: translateY(30px)
+	//}
+	//.list-enter, .list-leave-to
+	//  /* .list-leave-active for below version 2.1.8 */ {
+	//  transform: translateY(0)
+	//}
+	.no_touch {
+	  -webkit-user-select: none;
+	  user-select: none;
+	  -ms-user-select: none;
+	  -moz-user-select: none;
+	  padding-bottom: 150px !important;
+	}
+	
+	.list-enter-active,
+	.list-leave-active {
+	  will-change: transform;
+	  transition: all 250ms;
+	}
+	
+	.list-enter {
+	  opacity: 0;
+	  transform: translate3d(-100%, 0, 0);
+	}
+	
+	.list-leave {
+	  opacity: 0;
+	  transform: translate3d(100%, 0, 0);
+	}
+	
+	.rounded-view {
+	  border-top-left-radius: 20px;
+	  border-top-right-radius: 20px;
+	  box-sizing: border-box;
+	}
+	
+	.my-swipe {
+	  width: 100%;
+	}
+	
+	.my-swipe .van-swipe-item {
+	}
+	
+	.line {
+	  height: 13px;
+	
+	  @include themify() {
+	    background: themed("tab_background");
+	  }
+	}
+	
+	@keyframes animate1 {
+	  0% {
+	    opacity: 1;
+	    transform: translate3d(100%, 0, 0);
+	  }
+	
+	  //   40% {
+	  //      opacity: 1;
+	  //     transform: translate3d(50%, 0, 0);
+	  //   }
+	  100% {
+	    opacity: 1;
+	    transform: translate3d(0%, 0, 0);
+	  }
+	}
+	
+	@keyframes animate2 {
+	  0% {
+	    opacity: 1;
+	    transform: translate3d(-100%, 0, 0);
+	  }
+	
+	  //   40% {
+	  //      opacity: 1;
+	  //     transform: translate3d(50%, 0, 0);
+	  //   }
+	  100% {
+	    opacity: 1;
+	    transform: translate3d(0%, 0, 0);
+	  }
+	}
+	
+	.slide1 {
+	  animation: animate1 200ms linear;
+	}
+	
+	.slide2 {
+	  animation: animate2 200ms linear;
+	}
+	
+	.line {
+	  @include themify() {
+	    background: themed("divi_line");
+	  }
+	}
+	
+	::v-deep .contract-header {
+	  @include themify() {
+	    background: themed("main_background");
+	  }
+	}
+	
+	.tabBackground1 {
+	  @include themify() {
+	    border: 1px solid themed("border_color1");
+	  }
+	}
+	
+	.shadow {
+	  bottom: 108px;
+	  box-sizing: border-box;
+	}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3