17 files modified
1 files added
| | |
| | | <div> |
| | | <div class="contact-futrue"> |
| | | <div class="font-24 text-grey mb-24">{{ $t('交割时间') }}</div> |
| | | <ul class="flex flex-wrap w-full"> |
| | | <ul class="flex flex-wrap w-full" v-if="initFutrue.para?.length" > |
| | | <!-- v-if="initFutrue.para" --> |
| | | <!-- initFutrue: {{ initFutrue.para }} --> |
| | | <li v-for="(item, index) in initFutrue.para" v-if="initFutrue.para" :key="item.uuid" |
| | | <li v-for="(item, index) in initFutrue.para" :key="index" |
| | | class="h-92 flex items-center mb-22" @click="onSelect(item, index)"> |
| | | <p class="w-95 h-full flex justify-center items-center font-22 flex-1" |
| | | :class="active === item.para_id ? 'bg-light-blue text-white' : 'delivery_left_tab_background textColor'" |
| | |
| | | created() { |
| | | console.log('this.initFutrue', this.initFutrue) |
| | | // this._initParam(); |
| | | if (this.initFutrue.para.length > 0) { |
| | | if (this.initFutrue?.para.length > 0) { |
| | | this.active = this.initFutrue.para[0].para_id || '' |
| | | this.$emit('paraId', { id: this.active, index: 0 }) |
| | | } |
| | | }, |
| | | watch: { |
| | | '$route.query.symbol'(newVal, oldVal) { |
| | | if (newVal !== oldVal) { |
| | | this._initParam(); |
| | | } |
| | | } |
| | | // '$route.query.symbol'(newVal, oldVal) { |
| | | // if (newVal !== oldVal) { |
| | | // this._initParam(); |
| | | // } |
| | | // } |
| | | }, |
| | | methods: { |
| | | onSelect(item, index) { // 选中 |
| | |
| | | <div class="font-35">{{ symbolName.toUpperCase() || '--' }}</div> |
| | | <div class="ml-15 font-28">{{ title }}</div> |
| | | </div> |
| | | <div class="pl-10 w-160 font-28" :class="{ 'text-green': range > 0, 'text-red': range <= 0 }">{{ range > 0 ? |
| | | '+' : '' }}{{ range || '--' }}%</div> |
| | | <!-- <img src="@/assets/image/kline.png" class="w-44 h-44 right" alt="" @click="klineJump()"> --> |
| | | <div class="pl-10 w-160 font-28" :class="{ 'text-green': range > 0, 'text-red': range <= 0 }">{{ range || '--' }}%</div> |
| | | <!-- 右上角小图标 --> |
| | | <img src="@/assets/image/kline.png" class="w-44 h-44 right" alt="" @click="klineJump()"> |
| | | </div> |
| | | <!-- <div class="flex items-center"> |
| | | <img src="../../assets/image/public/k-line.png" alt="line-img" class="w-38 h-35" |
| | |
| | | methods: { |
| | | onRoute(item) { |
| | | if (this.$route.params.symbol !== item.symbol) { |
| | | // this.$router.push(`/cryptos/perpetualContract/${item.symbol}?selectIndex=${this.selectIndex}`) |
| | | this.$router.push(`/cryptos/perpetualContract/${item.symbol}?selectIndex=${this.selectIndex}`) |
| | | // debugger |
| | | this.$emit('update-coin', item.symbol) |
| | | setStorage('symbol', item.symbol) |
| | |
| | | { id: '15min', time: '15min', text: '15' + this.$t('分'), ts: 15 * 60 * 1000 }, |
| | | { id: '30min', time: '30min', text: '30' + this.$t('分'), ts: 30 * 60 * 1000 }, |
| | | { id: '60min', time: '60min', text: '1' + this.$t('小时'), ts: 60 * 60 * 1000 }, |
| | | { id: '4hour', time: '4hour', text: '4' + this.$t('小时'), ts: 4 * 60 * 60 * 1000 }, |
| | | // { id: '4hour', time: '4hour', text: '4' + this.$t('小时'), ts: 4 * 60 * 60 * 1000 }, |
| | | { id: '1day', time: '1day', text: '1' + this.$t('天'), ts: 24 * 60 * 60 * 1000 }, |
| | | { id: '1week', time: '1week', text: '1' + this.$t('周'), ts: 7 * 24 * 60 * 60 * 1000 }, |
| | | { id: '1mon', time: '1mon', text: '1' + this.$t('月'), ts: 30 * 24 * 60 * 60 * 1000 } |
| | |
| | | alt="logo" class="w-72 h-72 rounded-full mr-16" /> |
| | | <p class="flex flex-col"> |
| | | <span class="flex items-end font-32 flex items-center"> |
| | | <span class="textColor font-600 font-30">{{ item.symbol_data && item.symbol_data.toUpperCase() || '--' |
| | | <span class="textColor font-600 font-30">{{ item.name || '--' |
| | | }}</span> |
| | | <span class="font-24 text-grey" style="position: relative; top: 1px"> |
| | | <!-- <span class="font-24 text-grey" style="position: relative; top: 1px"> |
| | | /USDT |
| | | </span> |
| | | </span> --> |
| | | <!-- <span class="font-24 text-grey" style="position: relative; top: 1px"> |
| | | {{ item.name && item.name.replace(item.symbol.toUpperCase(), '') || '--' }}</span> --> |
| | | </span> |
| | |
| | | currency.rate).toFixed(2) || '--' }}</p> |
| | | </li> |
| | | <li class="right flex items-center justify-end"> |
| | | <p class="w-153 font-31 h-71 bg-green text-white border-0 text-center btn" v-if="item.change_ratio_str > 0 || item.change_ratio > 0"> |
| | | +{{ item.change_ratio || (item.change_ratio_str === 0 ? 0 : '--') }}%</p> |
| | | <p class="w-153 font-31 h-71 bg-green text-white border-0 text-center btn" v-if="item.change_ratio_str > 0"> |
| | | {{ (item.change_ratio_str === 0 ? 0 : item.change_ratio_str) }}%</p> |
| | | <p class="w-153 font-31 h-71 bg-red text-white border-0 text-center btn" v-else> |
| | | {{ item.change_ratio || (item.change_ratio_str === 0 ? 0 : '--') }}%</p> |
| | | {{ (item.change_ratio_str === 0 ? 0 : item.change_ratio_str) }}%</p> |
| | | </li> |
| | | </ul> |
| | | </van-cell> |
| | |
| | | </div> |
| | | <template v-else> |
| | | <p class="w-153 font-31 h-71 bg-green text-white border-0 text-center btn" v-if="item.change_ratio_str > 0 || item.change_ratio > 0"> |
| | | +{{ item.change_ratio || item.change_ratio_str }}%</p> |
| | | +{{ item.change_ratio_str }}%</p> |
| | | <p class="w-153 font-31 h-71 bg-red text-white border-0 text-center btn" v-else> |
| | | {{ item.change_ratio || (item.change_ratio_str === 0 ? 0 : '--') }}%</p> |
| | | {{ (item.change_ratio_str === 0 ? 0 : '--') }}%</p> |
| | | </template> |
| | | </li> |
| | | </ul> |
| | |
| | | |
| | | .exchange-pop { |
| | | .tab-list { |
| | | background: #0D1323; |
| | | background: #eee; |
| | | |
| | | border-radius: 140px; |
| | | height: 180px; |
| | |
| | | } |
| | | |
| | | .active { |
| | | background: #262D47; |
| | | |
| | | background: #3640f0; |
| | | color: #fff; |
| | | border-radius: 140px; |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | .search-input { |
| | | color: $text_color; |
| | | background: #0D1323; |
| | | // color: #fff; |
| | | background: #f5f5f5; |
| | | border-radius: 80px; |
| | | height: 100px !important; |
| | | display: flex; |
| | |
| | | </div> |
| | | |
| | | <div class="w-440 flex items-center greyBg h-76 lh-76 rounded-lg" style="background-color:#f5f5f5;" v-if="initFutrue" > |
| | | <div v-if="selectIndex == 1 && initFutrue.para && initFutrue.para.length > 0" |
| | | <!-- <div v-if="selectIndex == 1 && initFutrue.para && initFutrue.para.length > 0" |
| | | class="w-80 flex items-center justify-center" style="height:100%;" @click="onReduce"> |
| | | <img src="../../../assets/image/public/reduce.png" alt="add" class="w-30 h-6" /> |
| | | </div> |
| | | <input v-if="selectIndex == 1" :placeholder="$t('张数')" class="border-none greyBg text-center textColor" |
| | | style="width: 156px;" v-model="form.amount" type="number" @input="onInput" /> |
| | | </div> --> |
| | | <!-- <input v-if="selectIndex == 1" :placeholder="$t('张数')" class="border-none greyBg text-center textColor" |
| | | style="width: 156px;" v-model="form.amount" type="number" @input="onInput" /> --> |
| | | <input v-if="selectIndex == 2 && JSON.stringify(initFutrue.para) != '[]'" |
| | | :placeholder="($t('最少') + initFutrue && initFutrue.para ? $t('最小金额') + initFutrue.para[paraIndex].buy_min : '')" |
| | | class="border-none greyBg text-center textColor" style="width: 156px;background-color:#f5f5f5;" v-model="form.amount" type="number" |
| | |
| | | </div> |
| | | </div> |
| | | <template v-if="selectIndex == 1"> |
| | | <div class="mt-40 mb-30 w-full flex justify-between items-center"> |
| | | <!-- <div class="mt-40 mb-30 w-full flex justify-between items-center"> |
| | | <span class="font-22 font-400 text-grey">{{ $t("可开张数") }}</span> |
| | | <span class="font-22 font-400 textColor"> |
| | | {{ initData.volume }} |
| | | {{ initData.volume || 0}} |
| | | {{ $t("张") }} |
| | | </span> |
| | | </div> |
| | | </div> --> |
| | | <!-- <vue-slider v-bind="options" v-model="form.amount"></vue-slider> --> |
| | | <!-- <vue-slider class="mainBox" v-bind="options" :marks="marks" v-model="form.volume" :hide-label="true" width="90%" |
| | | :railStyle="{ background: '#404040', height: '4px' }" |
| | |
| | | <div>{{ $t("可用USDT") }}</div> |
| | | <div class="textColor">{{ initFutrue.amount }} {{ queryType === 'cryptos' ? 'USDT' : 'USD' }}</div> |
| | | </div> |
| | | <!-- {{JSON.stringify(initFutrue.para) != '[]'}} {{JSON.stringify(initFutrue.para)}} --> |
| | | <div class="flex font-24 text-grey justify-between mt-20" |
| | | v-if="selectIndex == 2 && JSON.stringify(initFutrue.para) != '[]'"> |
| | | <div>{{ $t("手续费") }}</div> |
| | |
| | | {{ |
| | | ( |
| | | form.amount * |
| | | (initFutrue && initFutrue.para |
| | | (initFutrue?.para.length>0 |
| | | ? initData.para[paraIndex].unit_fee |
| | | : "") |
| | | ).toFixed(2) |
| | |
| | | '$route'(val) { |
| | | this.getHomeList(val.params.symbol); |
| | | }, |
| | | initData(val) { |
| | | if (val.lever.length > 0) { |
| | | val.lever = val.lever.sort(this.orderListAsc('lever_rate')) |
| | | } |
| | | // initData(val) { |
| | | // if (val && val.lever && val.lever.length > 0) { |
| | | // val.lever = val.lever.sort(this.orderListAsc('lever_rate')) |
| | | // } |
| | | |
| | | } |
| | | // } |
| | | }, |
| | | computed: { |
| | | ...mapGetters('user', ['userInfo']), |
| | | ...mapGetters('home', ['currency']), |
| | | initData() { |
| | | let obj = null |
| | | if (this.selectIndex / 1 === 1) { |
| | | |
| | | obj = this.initOpen |
| | | if (!obj.lever || !obj.lever.length) { // 倍数 |
| | | obj.lever = [{ id: 1, lever_rate: 1 }] |
| | | const obj = this.initOpen ? { ...this.initOpen } : { lever: [{ id: 1, lever_rate: 1 }] }; |
| | | if (!obj.lever || !Array.isArray(obj.lever) || !obj.lever.length) { |
| | | obj.lever = [{ id: 1, lever_rate: 1 }]; |
| | | } else { |
| | | obj.lever = [...obj.lever].sort(this.orderListAsc('lever_rate')); |
| | | } |
| | | return obj |
| | | return obj; |
| | | } |
| | | return this.initFutrue |
| | | // 交割合约 |
| | | if (this.initFutrue && Array.isArray(this.initFutrue.para) && this.initFutrue.para.length > 0) { |
| | | return this.initFutrue; |
| | | } |
| | | // 返回一个默认对象,避免模板报错 |
| | | return {}; |
| | | }, |
| | | coudBuyVolume() { // 可买数量 |
| | | return Math.floor((this.initOpen.volume / 1) / this.form.lever_rate) |
| | |
| | | |
| | | // const ENV_DEV = 'zhapi.coinbtcs.com' // dev |
| | | // const ENV_DEV = 'openapi.yanshiz.com' // dev |
| | | const ENV_DEV = '192.168.10.18:8086' // dev |
| | | // const ENV_DEV = '192.168.10.24:8086' // dev |
| | | const ENV_DEV = 'aa.yanshiz.com' // dev |
| | | |
| | | |
| | | // const ENV_PRO = 'qheufhj.site' // app域名 |
| | |
| | | let ws_url = '' |
| | | let host_url = '' |
| | | if (import.meta.env.MODE === 'development') { |
| | | host_url = 'http://' + ENV_DEV |
| | | base_url = 'http://' + ENV_DEV |
| | | host_url = 'https://' + ENV_DEV |
| | | base_url = 'https://' + ENV_DEV |
| | | ws_url = 'ws://' + ENV_DEV + '/api/websocket' |
| | | } else { |
| | | host_url = 'https://' + ENV_PRO |
| | |
| | | <p class="first-line red">{{ formatMoney(chartData?.close) }}</p> |
| | | <p class="second-line"> |
| | | <span class="red">{{ chartData?.netChange }}</span> |
| | | <span class="red">{{ `${chartData?.change_ratio}%` }}</span> |
| | | <span class="red">{{ `${chartData?.change_ratio_str}%` }}</span> |
| | | </p> |
| | | </div> |
| | | <div @click="handleClickShowMore()" class="line-r"> |
| | |
| | | <p class="first-line red">{{ formatMoney(chartData?.close) }}</p> |
| | | <p class="second-line"> |
| | | <span class="red">{{ chartData?.netChange }}</span> |
| | | <span class="red">{{ `${chartData?.change_ratio}%` }}</span> |
| | | <span class="red">{{ `${chartData?.change_ratio_str}%` }}</span> |
| | | </p> |
| | | </div> |
| | | <div class="flex-r"> |
| | |
| | | <p class="first-line red">{{ formatMoney(chartData?.close) }}</p> |
| | | <p class="second-line"> |
| | | <span class="red">{{ chartData?.netChange }}</span> |
| | | <span class="red">{{ `${chartData?.change_ratio}%` }}</span> |
| | | <span class="red">{{ `${chartData?.change_ratio_str}%` }}</span> |
| | | </p> |
| | | </div> |
| | | <div @click="handleClickShowMore()" class="line-r"> |
| | |
| | | <p class="first-line red">{{ formatMoney(chartData?.close) }}</p> |
| | | <p class="second-line"> |
| | | <span class="red">{{ chartData?.netChange }}</span> |
| | | <span class="red">{{ `${chartData?.change_ratio}%` }}</span> |
| | | <span class="red">{{ `${chartData?.change_ratio_str}%` }}</span> |
| | | </p> |
| | | </div> |
| | | <div class="flex-r"> |
| | |
| | | methods: { |
| | | ...mapActions('home', [SET_COIN_LIST]), |
| | | onUpdate(symbol) { // 更新 |
| | | debugger |
| | | // debugger |
| | | this.currentType = 'long' |
| | | this.closeSocket() |
| | | // this.clearTimer() |
| | |
| | | }) |
| | | }, |
| | | handleQoutes(data) { |
| | | // console.log('handleQoutes: ', data); |
| | | if (data && data.length) { |
| | | const cur = data[0] |
| | | this.price = cur.close |
| | | this.range = cur.change_ratio + '' |
| | | this.range = cur.changeRatioStr + '' |
| | | this.quote = cur |
| | | this.updateKey++ |
| | | } |
| | |
| | | // }, 3000); |
| | | // }) |
| | | } |
| | | initFun() |
| | | // initFun() |
| | | } |
| | | if (type === 'close' || !type) { |
| | | let initFunTimer = null; |
| | |
| | | clearTimeout(initFunTimer) |
| | | initFunTimer = null |
| | | }).catch(err => { |
| | | initFunTimer = setTimeout(() => { |
| | | initFun() |
| | | }, 3000); |
| | | // initFunTimer = setTimeout(() => { |
| | | // initFun() |
| | | // }, 3000); |
| | | }) |
| | | } |
| | | initFunTimer = setTimeout(() => { |
| | | initFun() |
| | | }, 600); |
| | | // initFunTimer = setTimeout(() => { |
| | | // initFun() |
| | | // }, 600); |
| | | } |
| | | if (type === 'futrue' || !type) { |
| | | _futrueOrderInit(symbol).then(data => { |
| | |
| | | this.closeSocket() |
| | | this.clearTimer() |
| | | |
| | | this.symbol = symbol |
| | | this.fetchQoutes(symbol) |
| | | this.fetchDeepData(symbol) |
| | | this.initParam(symbol) // 'open' |
| | | this.clearTimer() |
| | | const _symbol = symbol || this.symbol |
| | | console.log('init: ',this.symbol, symbol) |
| | | 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) |
| | | this.fetchOrderListHold(_symbol) |
| | | } else { |
| | | this.fetchFutrueHoldList(symbol) |
| | | this.fetchFutrueHoldList(_symbol) |
| | | } |
| | | |
| | | }, |
| | |
| | | <div class="mt-20 mb-22 select-box" style="position:relative;"> |
| | | <div class=" flex justify-between items-center w-full h-70" @click="selectBtn"> |
| | | <!-- <img src="@/assets/image/public/warn.png" alt="warn-icon" class="w-25 h-25 pl-20"/> --> |
| | | <div class="pl-16 font-28 textColor" style="width:80%;">{{ title }}</div> |
| | | <div class="pl-16 font-28 textColor" style="width:80%;color: #333;">{{ title }}</div> |
| | | <img src="../../../assets/image/public/grey-select.png" alt="select-icon" class="w-22 h-11 mr-20" /> |
| | | </div> |
| | | <div class="option-box" v-show="isShow"> |
| | |
| | | .active-line { |
| | | position: relative; |
| | | // padding-bottom: 18px; |
| | | color: $text_color; |
| | | background-color: $color_main |
| | | color: #fff; |
| | | background-color: $btn_main; |
| | | } |
| | | |
| | | .active-line::after { |
| | |
| | | <trade-head :backFunc="() => $router.push('/')" :symbol="symbol" :islevel="true" @update-coin="onUpdate" |
| | | @data="quote = $event" :title="$t('永续')" @changeLine="onChangeLine" :isNight="isNight" :isChange="isChange" |
| | | :kineType="kineType" :tabIndex="tab" @changeNight="OnchangeNight" /> |
| | | <div class="flex justify-between px-32 pt-40" v-if="!kineType"> |
| | | <!-- <div class="flex justify-between px-32 pt-40" v-if="!kineType"> |
| | | <div class="w-368 h-80 mr-32 font-28 flex justify-center items-center rounded box-border tabBtn" |
| | | :class="tab === '1' ? 'activeBtn' : ''" @click="onTab('1')">{{ $t('永续合约') }}</div> |
| | | <div class="w-368 h-80 font-28 flex justify-center items-center rounded box-border tabBtn" |
| | | :class="tab === '2' ? 'activeBtn' : ''" @click="onTab('2')">{{ queryType == 'cryptos' ? $t('交割合约') : $t('期货交易') |
| | | }}</div> |
| | | </div> |
| | | </div> --> |
| | | <!-- 数据区 --> |
| | | <div :class="{ slide2: animated1, slide1: animated2 }"> |
| | | <div class="data-index"> |
| | |
| | | <p>{{ quote.high || '--' }}</p> |
| | | </div> |
| | | <div class="flex w-1/2 flex-col justify-between w-220 buy-title"> |
| | | <p class="text-grey">{{ $t('24h成交量') }}({{ symbolData && symbolData.toUpperCase() || '--' }})</p> |
| | | <p class="text-grey">{{ $t('24h成交量') }}</p> |
| | | <p>{{ quote.amount && quote.amount.toFixed(3) || '--' }}</p> |
| | | </div> |
| | | </div> |
| | |
| | | order_no: '', |
| | | timer: null, |
| | | isChangeLine: false, |
| | | isNight: true, |
| | | isNight: false, |
| | | isChange: true, //是否有切换黑夜白天模式 |
| | | kineType: '', |
| | | deepBuy: [], |
| | |
| | | background: $btn_main; |
| | | } |
| | | } |
| | | :deep(.van-action-sheet__name) { |
| | | color: #fff; |
| | | } |
| | | </style> |
| | |
| | | async fetchQList(v) { // 获取行情 |
| | | let coninArr = '' |
| | | if (v) { this.getVal = v } |
| | | if(this.getVal == 2) { |
| | | // if(this.getVal == 2) { |
| | | let arr = getStorage('qoutes').coins |
| | | arr.map((item) => { |
| | | coninArr += item.symbol + ',' |
| | | }) |
| | | }else{ |
| | | coninArr = this.coinArr.join(',') |
| | | } |
| | | // }else{ |
| | | // coninArr = this.coinArr.join(',') |
| | | // } |
| | | console.log('fetchQList', v, coninArr) |
| | | // if() |
| | | const list = await _getHomeList(coninArr).catch(() => { |
| | |
| | | </fx-header> |
| | | <div class="forgetCont"> |
| | | <div class="title textColor">{{ $t('resetLoginPassword') }}</div> |
| | | <div class="flex re-tab text-grey"> |
| | | <!-- <div class="flex re-tab text-grey"> |
| | | <div :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)">{{ $t('email') }}</div> |
| | | <div :class="activeIndex == 1 ? 'active' : ''" @click="changeIndex(1)">{{ $t('phoneNum') }}</div> |
| | | <div :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)">{{ $t('googleVerify') }}</div> |
| | | </div> |
| | | </div> --> |
| | | <ExInput :label="$t('account')" :placeholderText="$t('entryAccount')" v-model="account" :dialCode="dialCode" |
| | | @selectArea="onSelectArea" :area="isArea" :icon="icon" /> |
| | | <van-button class="w-full" style="margin-top:10px;" type="primary" @click="next">{{ $t('nextStep') }} |
| | |
| | | <div class="login"> |
| | | <div class="top" @click="onRoute('/my/index')"><img src="../../assets/image/icon-close.png" alt="" /></div> |
| | | <div class="title textColor">{{ $t('login') }}</div> |
| | | <div class="flex login-tab"> |
| | | <!-- <div class="flex login-tab"> |
| | | <div class="textColor1" :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)">{{ |
| | | $t('account') |
| | | }} |
| | |
| | | $t('phoneNum') |
| | | }} |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | <ExInput :label="getRegType(activeIndex, true)" :placeholderText="getRegType(activeIndex, false)" v-model="username" |
| | | :dialCode="dialCode" @selectArea="onSelectArea" :area="isArea" :icon="icon" /> |
| | | <ExInput style="padding-bottom:0!important;" :label="$t('password')" :placeholderText="$t('entryPassword')" |
| | |
| | | <div class="text-12 pt-10"> |
| | | <div class="flex justify-between items-center"> |
| | | <div style="color: rgb(150, 150, 150);">{{t('可用')}}({{ currency.name }})</div> |
| | | <div class="title text-blue-600">{{ currency.mark_price }}</div> |
| | | <div class="title text-blue-600">{{ currency.usable }}</div> |
| | | </div> |
| | | <div class="my-16 flex justify-between items-center"> |
| | | <div style="color: rgb(150, 150, 150);">{{ t('处理中') }}({{ currency.name }})</div> |
| | | <div>{{ 0 }}</div> |
| | | <div>{{ currency.freeze_amount }}</div> |
| | | </div> |
| | | <div class="flex justify-between items-center"> |
| | | <div style="color: rgb(150, 150, 150);">{{ t('转换') }}(USDT)</div> |
| | | <div></div> |
| | | <div>{{ currency.usdt }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <script setup> |
| | | import { ref, onMounted } from 'vue'; |
| | | import { _getContractBySymbolType, _contractOrder } from '@/service/etf.api'; |
| | | import { _getAllWallet } from '@/service/fund.api'; |
| | | import { useI18n } from "vue-i18n"; |
| | | import {useRouter} from 'vue-router'; |
| | | const { t } = useI18n() |
| | |
| | | |
| | | const getOrderList = async () => { |
| | | const params = { |
| | | type: 'orders', |
| | | page_no: 1, |
| | | page_size: 'all', |
| | | // type: 'orders', |
| | | // page_no: 1, |
| | | // page_size: 'all', |
| | | symbolType: 'cryptos' |
| | | }; |
| | | const response = await _contractOrder(params); |
| | | |
| | | const response = await _getAllWallet(params); |
| | | console.log(response, 'response') |
| | | // 处理订单数据 |
| | | currencies.value = response |
| | | currencies.value = response.extends |
| | | }; |
| | | |
| | | </script> |
| | |
| | | <div class="top" @click="router.go(-1)"><img src="../../assets/image/icon-close.png" alt=""></div> |
| | | <Step :step="1"></Step> |
| | | <div class="title textColor">{{ $t('register') }}</div> |
| | | <div class="flex re-tab"> |
| | | <!-- <div class="flex re-tab"> |
| | | <div class="textColor1" :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)">{{ |
| | | $t('account') |
| | | }}</div> |
| | |
| | | <div class="textColor1" :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)">{{ |
| | | $t('phoneNum') |
| | | }}</div> |
| | | </div> |
| | | </div> --> |
| | | <ExInput :label="getRegType(activeIndex, true)" :placeholderText="getRegType(activeIndex, false)" v-model="username" |
| | | :area="isArea" :dialCode="dialCode" @selectArea="onSelectArea" :icon="icon" /> |
| | | |
| | |
| | | |
| | | .green { |
| | | background: $green; |
| | | color: #fff; |
| | | } |
| | | } |
| | | |
| New file |
| | |
| | | // vite.config.js |
| | | import { defineConfig } from "file:///Users/apple/Desktop/%E6%82%85%E6%96%90%E8%B7%A8%E5%A2%83/composite_h5-main1/node_modules/vite/dist/node/index.js"; |
| | | import vue from "file:///Users/apple/Desktop/%E6%82%85%E6%96%90%E8%B7%A8%E5%A2%83/composite_h5-main1/node_modules/@vitejs/plugin-vue/dist/index.mjs"; |
| | | import path from "path"; |
| | | import Components from "file:///Users/apple/Desktop/%E6%82%85%E6%96%90%E8%B7%A8%E5%A2%83/composite_h5-main1/node_modules/unplugin-vue-components/dist/vite.mjs"; |
| | | import { VantResolver } from "file:///Users/apple/Desktop/%E6%82%85%E6%96%90%E8%B7%A8%E5%A2%83/composite_h5-main1/node_modules/unplugin-vue-components/dist/resolvers.mjs"; |
| | | import DefineOptions from "file:///Users/apple/Desktop/%E6%82%85%E6%96%90%E8%B7%A8%E5%A2%83/composite_h5-main1/node_modules/unplugin-vue-define-options/dist/vite.mjs"; |
| | | import { visualizer } from "file:///Users/apple/Desktop/%E6%82%85%E6%96%90%E8%B7%A8%E5%A2%83/composite_h5-main1/node_modules/rollup-plugin-visualizer/dist/plugin/index.js"; |
| | | import legacy from "file:///Users/apple/Desktop/%E6%82%85%E6%96%90%E8%B7%A8%E5%A2%83/composite_h5-main1/node_modules/@vitejs/plugin-legacy/dist/index.mjs"; |
| | | var __vite_injected_original_dirname = "/Users/apple/Desktop/\u6085\u6590\u8DE8\u5883/composite_h5-main1"; |
| | | var isVisualizer = process.env.VISUALIZER === "show"; |
| | | var vite_config_default = defineConfig({ |
| | | base: "", |
| | | plugins: [ |
| | | vue(), |
| | | Components({ |
| | | resolvers: [VantResolver()] |
| | | }), |
| | | DefineOptions(), |
| | | isVisualizer && visualizer({ gzipSize: true }), |
| | | legacy({ |
| | | targets: ["defaults", "not IE 11"] |
| | | }) |
| | | ], |
| | | css: { |
| | | preprocessorOptions: { |
| | | scss: { |
| | | additionalData: `@import "@/assets/css/variable.scss";` |
| | | } |
| | | } |
| | | }, |
| | | server: { |
| | | open: true, |
| | | port: 8085, |
| | | hmr: true, |
| | | host: "0.0.0.0", |
| | | proxy: { |
| | | "/api": { |
| | | target: "https://104.233.210.35:8085", |
| | | changeOrigin: true, |
| | | secure: false |
| | | } |
| | | } |
| | | }, |
| | | resolve: { |
| | | dedupe: [ |
| | | "vue" |
| | | ], |
| | | alias: { |
| | | "vue-i18n": "vue-i18n/dist/vue-i18n.cjs.js", |
| | | "~": path.resolve(__vite_injected_original_dirname, "./"), |
| | | "@": path.resolve(__vite_injected_original_dirname, "src") |
| | | } |
| | | }, |
| | | build: { |
| | | assetsDir: "static", |
| | | rollupOptions: { |
| | | input: { |
| | | index: path.resolve(__vite_injected_original_dirname, "index.html") |
| | | }, |
| | | output: { |
| | | chunkFileNames: "js/[name]-[hash].js", |
| | | entryFileNames: "js/[name]-[hash].js", |
| | | assetFileNames: "[ext]/name-[hash].[ext]" |
| | | } |
| | | } |
| | | }, |
| | | externals: ["vue"] |
| | | }); |
| | | export { |
| | | vite_config_default as default |
| | | }; |
| | | //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvYXBwbGUvRGVza3RvcC9cdTYwODVcdTY1OTBcdThERThcdTU4ODMvY29tcG9zaXRlX2g1LW1haW4xXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMvYXBwbGUvRGVza3RvcC9cdTYwODVcdTY1OTBcdThERThcdTU4ODMvY29tcG9zaXRlX2g1LW1haW4xL3ZpdGUuY29uZmlnLmpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9hcHBsZS9EZXNrdG9wLyVFNiU4MiU4NSVFNiU5NiU5MCVFOCVCNyVBOCVFNSVBMiU4My9jb21wb3NpdGVfaDUtbWFpbjEvdml0ZS5jb25maWcuanNcIjtpbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICd2aXRlJ1xuaW1wb3J0IHZ1ZSBmcm9tICdAdml0ZWpzL3BsdWdpbi12dWUnXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IENvbXBvbmVudHMgZnJvbSAndW5wbHVnaW4tdnVlLWNvbXBvbmVudHMvdml0ZSc7XG5pbXBvcnQgeyBWYW50UmVzb2x2ZXIgfSBmcm9tICd1bnBsdWdpbi12dWUtY29tcG9uZW50cy9yZXNvbHZlcnMnO1xuaW1wb3J0IERlZmluZU9wdGlvbnMgZnJvbSAndW5wbHVnaW4tdnVlLWRlZmluZS1vcHRpb25zL3ZpdGUnO1xuaW1wb3J0IHsgdmlzdWFsaXplciB9IGZyb20gJ3JvbGx1cC1wbHVnaW4tdmlzdWFsaXplcidcbmltcG9ydCBsZWdhY3kgZnJvbSAnQHZpdGVqcy9wbHVnaW4tbGVnYWN5JztcblxuY29uc3QgaXNWaXN1YWxpemVyID0gcHJvY2Vzcy5lbnYuVklTVUFMSVpFUiA9PT0gJ3Nob3cnXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1xuICBiYXNlOiAnJywgIC8vSDVcdTYyNTNcdTUzMDVcdTc1MjhcbiAgLy8gYmFzZTogJy4vJywgLy8gQVBQXHU2MjUzXHU1MzA1XHU3NTI4XG4gIHBsdWdpbnM6IFtcbiAgICB2dWUoKSxcbiAgICBDb21wb25lbnRzKHtcbiAgICAgIHJlc29sdmVyczogW1ZhbnRSZXNvbHZlcigpXSxcbiAgICB9KSxcbiAgICBEZWZpbmVPcHRpb25zKCksXG4gICAgaXNWaXN1YWxpemVyICYmIHZpc3VhbGl6ZXIoeyBnemlwU2l6ZTogdHJ1ZSB9KSxcbiAgICBsZWdhY3koe1xuICAgICAgdGFyZ2V0czogWydkZWZhdWx0cycsICdub3QgSUUgMTEnXSxcbiAgICB9KSxcbiAgXSxcbiAgY3NzOiB7XG4gICAgcHJlcHJvY2Vzc29yT3B0aW9uczoge1xuICAgICAgc2Nzczoge1xuICAgICAgICBhZGRpdGlvbmFsRGF0YTogYEBpbXBvcnQgXCJAL2Fzc2V0cy9jc3MvdmFyaWFibGUuc2Nzc1wiO2BcbiAgICAgIH0sXG4gICAgfVxuICB9LFxuICBzZXJ2ZXI6IHtcbiAgICBvcGVuOiB0cnVlLFxuICAgIHBvcnQ6IDgwODUsXG4gICAgaG1yOiB0cnVlLFxuICAgIGhvc3Q6ICcwLjAuMC4wJyxcbiAgICBwcm94eToge1xuICAgICAgXCIvYXBpXCI6IHtcbiAgICAgICAgdGFyZ2V0OiBcImh0dHBzOi8vMTA0LjIzMy4yMTAuMzU6ODA4NVwiLFxuICAgICAgICAvLyB0YXJnZXQ6IFwiaHR0cDovLzE5OC4xMy4zOS4xMDk6ODA4MVwiLFxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICAgIC8vIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UoL15cXC93YXAvLCBcIlwiKSxcbiAgICAgICAgc2VjdXJlOiBmYWxzZVxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICByZXNvbHZlOiB7XG4gICAgZGVkdXBlOiBbXG4gICAgICAndnVlJ1xuICAgIF0sXG4gICAgYWxpYXM6IHtcbiAgICAgICd2dWUtaTE4bic6ICd2dWUtaTE4bi9kaXN0L3Z1ZS1pMThuLmNqcy5qcycsXG4gICAgICBcIn5cIjogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vJyksXG4gICAgICBcIkBcIjogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3NyYycpLFxuICAgIH1cbiAgfSxcbiAgYnVpbGQ6IHtcbiAgICBhc3NldHNEaXI6IFwic3RhdGljXCIsXG4gICAgcm9sbHVwT3B0aW9uczoge1xuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgaW5kZXg6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsIFwiaW5kZXguaHRtbFwiKSxcbiAgICAgIH0sXG4gICAgICBvdXRwdXQ6IHtcbiAgICAgICAgY2h1bmtGaWxlTmFtZXM6ICdqcy9bbmFtZV0tW2hhc2hdLmpzJyxcbiAgICAgICAgZW50cnlGaWxlTmFtZXM6IFwianMvW25hbWVdLVtoYXNoXS5qc1wiLFxuICAgICAgICBhc3NldEZpbGVOYW1lczogXCJbZXh0XS9uYW1lLVtoYXNoXS5bZXh0XVwiXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIGV4dGVybmFsczpbJ3Z1ZSddXG59KVxuXG5jb25zdCBnbG9iYWxTYXNzID0gY29uZmlnID0+IHtcbiAgY29uc3Qgb25lT2ZzTWFwID0gY29uZmlnLm1vZHVsZS5ydWxlKCdzY3NzJykub25lT2ZzLnN0b3JlXG4gIG9uZU9mc01hcC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgIGl0ZW1cbiAgICAgIC51c2UoJ3Nhc3MtcmVzb3VyY2VzLWxvYWRlcicpXG4gICAgICAubG9hZGVyKCdzYXNzLXJlc291cmNlcy1sb2FkZXInKVxuICAgICAgLm9wdGlvbnMoe1xuICAgICAgICByZXNvdXJjZXM6ICdAL2Fzc2V0cy9jc3MvaW5pdC5zY3NzJ1xuICAgICAgfSlcbiAgICAgIC5lbmQoKVxuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBc1YsU0FBUyxvQkFBb0I7QUFDblgsT0FBTyxTQUFTO0FBQ2hCLE9BQU8sVUFBVTtBQUNqQixPQUFPLGdCQUFnQjtBQUN2QixTQUFTLG9CQUFvQjtBQUM3QixPQUFPLG1CQUFtQjtBQUMxQixTQUFTLGtCQUFrQjtBQUMzQixPQUFPLFlBQVk7QUFQbkIsSUFBTSxtQ0FBbUM7QUFTekMsSUFBTSxlQUFlLFFBQVEsSUFBSSxlQUFlO0FBQ2hELElBQU8sc0JBQVEsYUFBYTtBQUFBLEVBQzFCLE1BQU07QUFBQSxFQUVOLFNBQVM7QUFBQSxJQUNQLElBQUk7QUFBQSxJQUNKLFdBQVc7QUFBQSxNQUNULFdBQVcsQ0FBQyxhQUFhLENBQUM7QUFBQSxJQUM1QixDQUFDO0FBQUEsSUFDRCxjQUFjO0FBQUEsSUFDZCxnQkFBZ0IsV0FBVyxFQUFFLFVBQVUsS0FBSyxDQUFDO0FBQUEsSUFDN0MsT0FBTztBQUFBLE1BQ0wsU0FBUyxDQUFDLFlBQVksV0FBVztBQUFBLElBQ25DLENBQUM7QUFBQSxFQUNIO0FBQUEsRUFDQSxLQUFLO0FBQUEsSUFDSCxxQkFBcUI7QUFBQSxNQUNuQixNQUFNO0FBQUEsUUFDSixnQkFBZ0I7QUFBQSxNQUNsQjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxRQUFRO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixLQUFLO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFFUixjQUFjO0FBQUEsUUFFZCxRQUFRO0FBQUEsTUFDVjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxTQUFTO0FBQUEsSUFDUCxRQUFRO0FBQUEsTUFDTjtBQUFBLElBQ0Y7QUFBQSxJQUNBLE9BQU87QUFBQSxNQUNMLFlBQVk7QUFBQSxNQUNaLEtBQUssS0FBSyxRQUFRLGtDQUFXLElBQUk7QUFBQSxNQUNqQyxLQUFLLEtBQUssUUFBUSxrQ0FBVyxLQUFLO0FBQUEsSUFDcEM7QUFBQSxFQUNGO0FBQUEsRUFDQSxPQUFPO0FBQUEsSUFDTCxXQUFXO0FBQUEsSUFDWCxlQUFlO0FBQUEsTUFDYixPQUFPO0FBQUEsUUFDTCxPQUFPLEtBQUssUUFBUSxrQ0FBVyxZQUFZO0FBQUEsTUFDN0M7QUFBQSxNQUNBLFFBQVE7QUFBQSxRQUNOLGdCQUFnQjtBQUFBLFFBQ2hCLGdCQUFnQjtBQUFBLFFBQ2hCLGdCQUFnQjtBQUFBLE1BQ2xCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFdBQVUsQ0FBQyxLQUFLO0FBQ2xCLENBQUM7IiwKICAibmFtZXMiOiBbXQp9Cg== |