45 files modified
1 files added
| | |
| | | import { Image as VanImage } from 'vant'; |
| | | import assetsHead from "@/components/Transform/assets-head/index.vue"; |
| | | import { dataTimeEx } from '@/utils/utis' |
| | | import { customerServiceUrl } from "@/config"; |
| | | export default { |
| | | name: 'rechargeSubmit', |
| | | components: { |
| | |
| | | this.time = dataTimeEx(Date.parse(new Date()), true); |
| | | }, |
| | | tokefu() { |
| | | this.$router.push('/customerService') |
| | | if (customerServiceUrl) { |
| | | window.location.href = customerServiceUrl; |
| | | } else { |
| | | this.$router.push('/customerService') |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | </div> |
| | | <div class="text-right items-end justify-end"> |
| | | <div class="">{{ $t('数量') }}</div> |
| | | <div class="mt-5">({{ symbol_data.toUpperCase() || '--' }})</div> |
| | | <div class="mt-5">({{ symbol_name.toUpperCase() || '--' }})</div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div v-if="showType == 0 || showType == 2" class="flex justify-between pt-6 font-26" v-for="(item, index) in redData" |
| | | :key="item + index" @click="onPrice(item.price)" :style="{ |
| | | <div v-if="showType == 0 || showType == 2" class="flex justify-between pt-6 font-26" |
| | | v-for="(item, index) in redData" :key="item + index" @click="onPrice(item.price)" :style="{ |
| | | 'background': `linear-gradient(to right,${THEME == 'dark' ? '#131A2E' : '#fff'} 0%` + |
| | | (item.amount / greenData[greenData.length - 1].amount) * 100 + '%,rgba(246,70,93,.1) ' + |
| | | (item.amount / greenData[greenData.length - 1].amount) * 100 + '%,rgba(246,70,93,.1) 100%)' |
| | |
| | | |
| | | <script> |
| | | import { WS_URL } from '@/config' |
| | | import { fixDate } from "@/utils/utis"; |
| | | import { fixDate, strToArr } from "@/utils/utis"; |
| | | import { THEME } from '@/config/theme' |
| | | import { _getHomeList } from '@/service/home.api' |
| | | import { mapGetters } from 'vuex' |
| | |
| | | greenData: init, |
| | | redData: init, |
| | | socket: null, |
| | | symbol_data: '' |
| | | symbol_data: '', |
| | | symbol_name: '', |
| | | } |
| | | }, |
| | | mounted() { |
| | |
| | | getHomeList() { |
| | | _getHomeList(this.symbol).then((res) => { |
| | | this.symbol_data = res[0].symbol_data |
| | | this.symbol_name = strToArr(res[0].name, '/')[0] |
| | | let numberText = res[0].close.toString() |
| | | let numberLength = (numberText.substring(numberText.indexOf('.') + 1, numberText.length)).length |
| | | |
| | |
| | | |
| | | <script> |
| | | import { THEME } from '@/config/theme' |
| | | import { customerServiceUrl } from "@/config"; |
| | | export default { |
| | | props: { |
| | | unread_num: { |
| | |
| | | this.tabList[index]['data'] = this.tabList[index]['data'].filter(item => item.symbol.includes(this.keywords)) |
| | | }, |
| | | tokefu() { |
| | | this.$router.push('/customerService') |
| | | if (customerServiceUrl) { |
| | | window.location.href = customerServiceUrl; |
| | | } else { |
| | | this.$router.push('/customerService') |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import MiningExchangeInput from "../mining-exchange-input/index.vue"; |
| | | import { |
| | | Grid, |
| | | GridItem, |
| | | Popup, |
| | | Icon, |
| | | showToast |
| | | } from "vant"; |
| | | // import { mapState } from "vuex"; |
| | | import { |
| | | _exchangeRage, |
| | | _getAllWallet, |
| | | _initWidthdrawl, |
| | | _widthdrawl, |
| | | _records |
| | | } from "@/service/fund.api"; |
| | | import { |
| | | mapGetters |
| | | } from "vuex"; |
| | | import { |
| | | List, |
| | | PullRefresh |
| | | } from 'vant'; |
| | | import { |
| | | debounce |
| | | } from '@/utils' |
| | | export default { |
| | | name: "MiningAcccount", |
| | | components: { |
| | | [Grid.name]: Grid, |
| | | [GridItem.name]: GridItem, |
| | | [Popup.name]: Popup, |
| | | [Icon.name]: Icon, |
| | | MiningExchangeInput, |
| | | [List.name]: List, |
| | | [PullRefresh.name]: PullRefresh |
| | | import MiningExchangeInput from "../mining-exchange-input/index.vue"; |
| | | import { |
| | | Grid, |
| | | GridItem, |
| | | Popup, |
| | | Icon, |
| | | showToast |
| | | } from "vant"; |
| | | // import { mapState } from "vuex"; |
| | | import { |
| | | _exchangeRage, |
| | | _getAllWallet, |
| | | _initWidthdrawl, |
| | | _widthdrawl, |
| | | _records |
| | | } from "@/service/fund.api"; |
| | | import { |
| | | mapGetters |
| | | } from "vuex"; |
| | | import { |
| | | List, |
| | | PullRefresh |
| | | } from 'vant'; |
| | | import { |
| | | debounce |
| | | } from '@/utils' |
| | | export default { |
| | | name: "MiningAcccount", |
| | | components: { |
| | | [Grid.name]: Grid, |
| | | [GridItem.name]: GridItem, |
| | | [Popup.name]: Popup, |
| | | [Icon.name]: Icon, |
| | | MiningExchangeInput, |
| | | [List.name]: List, |
| | | [PullRefresh.name]: PullRefresh |
| | | }, |
| | | props: { |
| | | show: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | props: { |
| | | show: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | computed: { |
| | | ...mapGetters('user', ['userInfo']), |
| | | tabList() { |
| | | return [{ |
| | | id: 1, |
| | | text: this.$t('提幣') |
| | | }, |
| | | { |
| | | id: 2, |
| | | text: this.$t('交易記錄') |
| | | } |
| | | ] |
| | | }, |
| | | computed: { |
| | | ...mapGetters('user', ['userInfo']), |
| | | tabList() { |
| | | return [{ |
| | | id: 1, |
| | | text: this.$t('提幣') |
| | | }, |
| | | { |
| | | id: 2, |
| | | text: this.$t('交易記錄') |
| | | } |
| | | ] |
| | | }, |
| | | addr() { |
| | | const account = this.userInfo.account |
| | | return account && account.substr(0, 5) + '********' + account.substr(account.length - 5) |
| | | }, |
| | | amountAvailable() { |
| | | console.log(this.form.symbol) |
| | | console.log(this.wallets) |
| | | let res |
| | | let dataInfo = this.wallets.find(item => item.symbol_data.toUpperCase() === this.form.symbol.toUpperCase()) |
| | | addr() { |
| | | const account = this.userInfo.account |
| | | return account && account.substr(0, 5) + '********' + account.substr(account.length - 5) |
| | | }, |
| | | amountAvailable() { |
| | | // console.log("ddddddddddddddddddd", this.form.iconImg1, this.wallets) |
| | | let res |
| | | let dataInfo = this.wallets.find(item => item.symbol_data.toUpperCase() == this.form.iconImg1.toUpperCase()) |
| | | |
| | | if (dataInfo) { |
| | | res = dataInfo.usable |
| | | } else { |
| | | res = 0 |
| | | } |
| | | return res |
| | | }, |
| | | if (dataInfo) { |
| | | res = dataInfo.usable |
| | | } else { |
| | | res = 0 |
| | | } |
| | | |
| | | return res |
| | | }, |
| | | data() { |
| | | return { |
| | | showPopup: false, |
| | | activeRecord: 'exchange', |
| | | valueTwo: 0, |
| | | }, |
| | | data() { |
| | | return { |
| | | showPopup: false, |
| | | activeRecord: 'exchange', |
| | | valueTwo: 0, |
| | | rate: 0, |
| | | form: { // 闪兑 |
| | | symbol: 'USDC', |
| | | symbol_to: 'USDT', |
| | | name: '', |
| | | volume: '', |
| | | rate: 0, |
| | | form: { // 闪兑 |
| | | symbol: 'USDC', |
| | | symbol_to: 'USDT', |
| | | volume: '', |
| | | rate: 0, |
| | | iconImg2: '', |
| | | iconImg1: '', |
| | | symbol_ex: '', |
| | | symbol_to_ex: '', |
| | | iconImg2: '', |
| | | iconImg1: '', |
| | | symbol_ex: '', |
| | | symbol_to_ex: '', |
| | | |
| | | }, |
| | | interval: null, |
| | | actions: [], |
| | | balance: 0, // 质押余额 |
| | | page: 1, |
| | | loading: false, // 当loading为true时,转圈圈 |
| | | finished: false, // 数据是否请求结束,结束会先显示'已经全部加载完毕' |
| | | noData: false, // 如果没有数据,显示暂无数据 |
| | | wallets: [], // 钱包列表 |
| | | active: 0, |
| | | }, |
| | | interval: null, |
| | | actions: [], |
| | | balance: 0, // 质押余额 |
| | | page: 1, |
| | | loading: false, // 当loading为true时,转圈圈 |
| | | finished: false, // 数据是否请求结束,结束会先显示'已经全部加载完毕' |
| | | noData: false, // 如果没有数据,显示暂无数据 |
| | | wallets: [], // 钱包列表 |
| | | active: 0, |
| | | } |
| | | }, |
| | | created() { |
| | | let obj = { |
| | | symbolType: 'cryptos' |
| | | } |
| | | _getAllWallet(obj).then(data => { |
| | | this.actions = [] |
| | | data.extends.map(item => { |
| | | this.actions.push({ |
| | | symbol: item.symbol, |
| | | name: item.name, |
| | | symbol_data: item.symbol, |
| | | usable: item.usable, |
| | | usdt: item.usdt, |
| | | symbol_data: item.symbol_data |
| | | }) |
| | | }) |
| | | this.wallets = data.extends |
| | | console.log("this.actions", this.actions[0].symbol_data); |
| | | this.form.symbol = this.strToArr(this.actions[0].name, '/')[0] |
| | | this.form.symbol_to = this.strToArr(this.actions[1].name, '/')[0] |
| | | this.form.iconImg1 = this.actions[0].symbol_data |
| | | this.form.iconImg2 = this.actions[1].symbol_data |
| | | this.form.symbol_ex = this.actions[0].symbol |
| | | this.form.symbol_to_ex = this.actions[1].symbol |
| | | |
| | | }) |
| | | }, |
| | | methods: { |
| | | onMax() { // 最大 |
| | | if (this.amountAvailable / 1) { |
| | | this.form.volume = this.amountAvailable |
| | | this.debounceFn() |
| | | } else { |
| | | showToast(this.$t('你没有可提数量')) |
| | | } |
| | | }, |
| | | created() { |
| | | let obj = { |
| | | symbolType: 'cryptos' |
| | | onInput(e) { // 获取最新 |
| | | this.form.volume = e.target.value |
| | | this.clearInterval() |
| | | if (this.form.volume == '') { |
| | | this.form.get_volume = '' |
| | | } else { |
| | | this.debounceFn() |
| | | } |
| | | _getAllWallet(obj).then(data => { |
| | | this.actions = [] |
| | | data.extends.map(item => { |
| | | this.actions.push({ |
| | | symbol: item.symbol, |
| | | name: item.symbol, |
| | | symbol_data: item.symbol, |
| | | usable: item.usable, |
| | | usdt: item.usdt, |
| | | symbol_data: item.symbol_data |
| | | }) |
| | | }) |
| | | this.wallets = data.extends |
| | | console.log("this.actions",this.actions[0].symbol_data); |
| | | this.form.symbol = this.actions[0].symbol_data |
| | | this.form.symbol_to = this.actions[1].symbol_data |
| | | this.form.iconImg1 = this.actions[0].symbol_data |
| | | this.form.iconImg2 = this.actions[1].symbol_data |
| | | this.form.symbol_ex = this.actions[0].symbol |
| | | this.form.symbol_to_ex = this.actions[1].symbol |
| | | }, |
| | | debounceFn: debounce(function () { |
| | | |
| | | this.fetchRate(true) |
| | | }, 300), |
| | | fetchRate(callback) { // interval |
| | | let obj = { |
| | | symbol: this.form.symbol_ex, |
| | | symbol_to: this.form.symbol_to_ex, |
| | | volume: this.form.volume |
| | | } |
| | | _exchangeRage(obj).then(data => { |
| | | const { |
| | | get_rate |
| | | } = data |
| | | this.form.rate = get_rate |
| | | this.clearInterval() |
| | | if (callback && typeof callback === 'function') { |
| | | callback() |
| | | } |
| | | }) |
| | | }, |
| | | methods: { |
| | | onMax() { // 最大 |
| | | if (this.amountAvailable / 1) { |
| | | this.form.volume = this.amountAvailable |
| | | this.debounceFn() |
| | | } else { |
| | | showToast(this.$t('你没有可提数量')) |
| | | } |
| | | }, |
| | | onInput(e) { // 获取最新 |
| | | this.form.volume = e.target.value |
| | | this.clearInterval() |
| | | if (this.form.volume == '') { |
| | | this.form.get_volume = '' |
| | | } else { |
| | | this.debounceFn() |
| | | } |
| | | }, |
| | | debounceFn: debounce(function() { |
| | | onSwitch() { // 交换 |
| | | const temp = this.form.symbol |
| | | this.form.symbol = this.form.symbol_to |
| | | this.form.symbol_to = temp |
| | | const tempImg = this.form.iconImg1 |
| | | this.form.iconImg1 = this.form.iconImg2 |
| | | this.form.iconImg2 = tempImg |
| | | const tempsymbol = this.form.symbol_ex |
| | | this.form.symbol_ex = this.form.symbol_to_ex |
| | | this.form.symbol_to_ex = tempsymbol |
| | | |
| | | this.fetchRate(true) |
| | | }, 300), |
| | | fetchRate(callback) { // interval |
| | | let obj = { |
| | | symbol: this.form.symbol_ex, |
| | | symbol_to: this.form.symbol_to_ex, |
| | | volume: this.form.volume |
| | | } |
| | | _exchangeRage(obj).then(data => { |
| | | const { |
| | | get_rate |
| | | } = data |
| | | this.form.rate = get_rate |
| | | this.clearInterval() |
| | | if (callback && typeof callback === 'function') { |
| | | callback() |
| | | } |
| | | }) |
| | | }, |
| | | onSwitch() { // 交换 |
| | | const temp = this.form.symbol |
| | | this.form.symbol = this.form.symbol_to |
| | | this.form.symbol_to = temp |
| | | const tempImg = this.form.iconImg1 |
| | | this.form.iconImg1 = this.form.iconImg2 |
| | | this.form.iconImg2 = tempImg |
| | | const tempsymbol = this.form.symbol_ex |
| | | this.form.symbol_ex = this.form.symbol_to_ex |
| | | this.form.symbol_to_ex = tempsymbol |
| | | |
| | | this.form.volume = '' |
| | | console.log("this.form", this.form); |
| | | this.clearInterval() |
| | | }, |
| | | onSelect(type, evt) { // 选择 |
| | | if (evt.type == 0) { |
| | | this.form['symbol'] = this.strToArr(evt.item.name, '/')[0] |
| | | this.form['iconImg1'] = evt.item.symbol_data |
| | | this.form['symbol_ex'] = evt.item.symbol |
| | | } else { |
| | | this.form['symbol_to'] = this.strToArr(evt.item.name, '/')[0] |
| | | this.form['iconImg2'] = evt.item.symbol_data |
| | | this.form['symbol_to_ex'] = evt.item.symbol |
| | | } |
| | | if (this.form.symbol !== this.form.symbol_to) { |
| | | this.form.volume = '' |
| | | console.log("this.form",this.form); |
| | | this.clearInterval() |
| | | }, |
| | | onSelect(type, evt) { // 选择 |
| | | if (evt.type == 0) { |
| | | this.form['symbol'] = evt.item.symbol_data |
| | | this.form['iconImg1'] = evt.item.symbol_data |
| | | this.form['symbol_ex'] = evt.item.symbol |
| | | } else { |
| | | this.form['symbol_to'] = evt.item.symbol_data |
| | | this.form['iconImg2'] = evt.item.symbol_data |
| | | this.form['symbol_to_ex'] = evt.item.symbol |
| | | } |
| | | if (this.form.symbol !== this.form.symbol_to) { |
| | | this.form.volume = '' |
| | | } |
| | | this.clearInterval() |
| | | }, |
| | | onConfirm() { // 闪兑 |
| | | this.clearInterval() |
| | | if (this.form.volume == '') { |
| | | showToast(this.$t('请输入数量')); |
| | | } else { |
| | | this.fetchRate(() => { |
| | | this.$emit("exchange", this.form); |
| | | }) |
| | | } |
| | | }, |
| | | clearInterval() { // 清除定时器 |
| | | clearInterval(this.interval) |
| | | this.interval = null |
| | | } |
| | | this.clearInterval() |
| | | }, |
| | | onConfirm() { // 闪兑 |
| | | this.clearInterval() |
| | | if (this.form.volume == '') { |
| | | showToast(this.$t('请输入数量')); |
| | | } else { |
| | | this.fetchRate(() => { |
| | | this.$emit("exchange", this.form); |
| | | }) |
| | | } |
| | | }, |
| | | beforeUnmount() { |
| | | // console.log('beforeDestroy') |
| | | this.clearInterval() |
| | | } |
| | | }; |
| | | clearInterval() { // 清除定时器 |
| | | clearInterval(this.interval) |
| | | this.interval = null |
| | | }, |
| | | strToArr(str, separator = ',') { |
| | | if (typeof str !== 'string') return []; |
| | | return str.split(separator); |
| | | }, |
| | | }, |
| | | beforeUnmount() { |
| | | // console.log('beforeDestroy') |
| | | this.clearInterval() |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | @import "@/assets/init.scss"; |
| | | @import "@/assets/init.scss"; |
| | | |
| | | #cryptos { |
| | | .account_card { |
| | | #cryptos { |
| | | .account_card { |
| | | background: $inp-b !important; |
| | | border-radius: 2.5rem; |
| | | padding: 1.2rem 2.5rem; |
| | | |
| | | div { |
| | | background: $inp-b !important; |
| | | border-radius: 2.5rem; |
| | | padding: 1.2rem 2.5rem; |
| | | |
| | | div { |
| | | background: $inp-b !important; |
| | | } |
| | | } |
| | | |
| | | .exchange-btn { |
| | | bottom: 48px; |
| | | left: 0; |
| | | |
| | | font-size: 36px; |
| | | |
| | | p { |
| | | border-radius: 4rem; |
| | | } |
| | | } |
| | | |
| | | .active { |
| | | color: $black; |
| | | |
| | | &:after { |
| | | content: ''; |
| | | display: block; |
| | | position: absolute; |
| | | bottom: 0; |
| | | width: 140px; |
| | | height: 8px; |
| | | background: $active_line; |
| | | margin: 0 auto; |
| | | } |
| | | } |
| | | |
| | | .convert-box { |
| | | background: $mainbgWhiteColor; |
| | | margin: -2rem auto; |
| | | border-radius: 50%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | width: 6rem; |
| | | height: 6rem; |
| | | position: relative; |
| | | |
| | | img { |
| | | width: 50%; |
| | | height: 50%; |
| | | } |
| | | } |
| | | |
| | | .btnMain { |
| | | background: linear-gradient(90deg, #2C64D4 0%, #38AEEA 100%); |
| | | border-radius: 5px; |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | |
| | | .exchange-btn { |
| | | bottom: 48px; |
| | | left: 0; |
| | | |
| | | font-size: 36px; |
| | | |
| | | p { |
| | | border-radius: 4rem; |
| | | } |
| | | } |
| | | |
| | | .active { |
| | | color: $black; |
| | | |
| | | &:after { |
| | | content: ''; |
| | | display: block; |
| | | position: absolute; |
| | | bottom: 0; |
| | | width: 140px; |
| | | height: 8px; |
| | | background: $active_line; |
| | | margin: 0 auto; |
| | | } |
| | | } |
| | | |
| | | .convert-box { |
| | | background: $mainbgWhiteColor; |
| | | margin: -2rem auto; |
| | | border-radius: 50%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | width: 6rem; |
| | | height: 6rem; |
| | | position: relative; |
| | | |
| | | img { |
| | | width: 50%; |
| | | height: 50%; |
| | | } |
| | | } |
| | | |
| | | .btnMain { |
| | | background: linear-gradient(90deg, #2C64D4 0%, #38AEEA 100%); |
| | | border-radius: 5px; |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | class="w-30 h-30 rounded-full mr-10 currency-icon" /> |
| | | </div> |
| | | <div> |
| | | <div class="item-title textColor">{{ item.symbol_data.toUpperCase() }}</div> |
| | | <div class="item-title textColor">{{ strToArr(item.name.toUpperCase(),'/')[0] }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="text-right" v-if="activeIndex == 0"> |
| | |
| | | } else { |
| | | this.currencyList = this.allCurrencyList |
| | | } |
| | | } |
| | | }, |
| | | strToArr(str, separator = ',') { |
| | | if (typeof str !== 'string') return []; |
| | | return str.split(separator); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | |
| | | <span>{{ title }}</span> |
| | | </div> |
| | | |
| | | <template v-if="initClose.status / 1 === 0"> |
| | | <!-- <template v-if="initClose.status / 1 === 0"> |
| | | <div class="flex justify-center items-center h-66 buy-item">{{ $t('停牌中,禁止交易') }}</div> |
| | | </template> |
| | | <template v-else> |
| | | </template> --> |
| | | <!-- <template v-else> --> |
| | | <div class="flex total-list"> |
| | | <div class="total-div" :class="[!isTotal ? 'active-bg' : '']" @click="checkIsTotal(false)"> |
| | | {{ $t('数量') }} |
| | |
| | | :class="currentType === 'open' ? 'bg-green' : 'bg-red'" @click="order()"> |
| | | {{ currentType == 'open' ? $t('买入') : $t('卖出') }} |
| | | </div> |
| | | </template> |
| | | <!-- </template> --> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | <div class="content-box"> |
| | | <div class="flex flex-col items-center justify-center mt96"> |
| | | <van-image width="162" height="142" src="'../../assets/image/assets-center/success.png'" /> |
| | | <div class="font-45 font-700 success-title textColor">{{ title }} {{$t('申请已提交')}}</div> |
| | | <div class="font-45 font-700 success-title textColor">{{ title }} {{ $t('申请已提交') }}</div> |
| | | </div> |
| | | <div class="mb87"> |
| | | <div class="font-35 textColor">{{ title }} {{ $t('申请已提交') }}</div> |
| | |
| | | <!-- </div>--> |
| | | </div> |
| | | <div class="btn-wrap"> |
| | | <button class="btnMain text-white next-btn font-35" @click="goRouter('/cryptos/assetsCenter/rechargeWithdrawRecord')"> |
| | | <button class="btnMain text-white next-btn font-35" |
| | | @click="goRouter('/cryptos/assetsCenter/rechargeWithdrawRecord')"> |
| | | {{ $t('查看') }} {{ title }} {{ $t('历史') }}</button> |
| | | </div> |
| | | </div> |
| | |
| | | <script> |
| | | import { Image as VanImage } from 'vant'; |
| | | import assetsHead from "@/components/Transform/assets-head/index.vue"; |
| | | import { customerServiceUrl } from "@/config"; |
| | | import { dataTimeEx } from '@/utils/utis' |
| | | export default { |
| | | name:'rechargeSubmit', |
| | | components:{ |
| | | assetsHead, |
| | | [VanImage.name]:VanImage |
| | | name: 'rechargeSubmit', |
| | | components: { |
| | | assetsHead, |
| | | [VanImage.name]: VanImage |
| | | }, |
| | | props: { |
| | | title: { |
| | | type: String, |
| | | default: "" |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | time: '' |
| | | } |
| | | }, |
| | | created() { |
| | | this.getTime() |
| | | }, |
| | | methods: { |
| | | onClickLeft() { |
| | | this.$router.go(-1); |
| | | }, |
| | | props:{ |
| | | title:{ |
| | | type:String, |
| | | default:"" |
| | | } |
| | | goRouter(params) { |
| | | this.$router.push({ |
| | | path: params |
| | | }); |
| | | }, |
| | | data() { |
| | | return { |
| | | time:'' |
| | | } |
| | | getTime() { |
| | | this.time = dataTimeEx(Date.parse(new Date()), true); |
| | | }, |
| | | created() { |
| | | this.getTime() |
| | | }, |
| | | methods:{ |
| | | onClickLeft() { |
| | | this.$router.go(-1); |
| | | }, |
| | | goRouter(params) { |
| | | this.$router.push({ |
| | | path:params |
| | | }); |
| | | }, |
| | | getTime(){ |
| | | this.time = dataTimeEx(Date.parse(new Date()),true); |
| | | }, |
| | | tokefu() { |
| | | tokefu() { |
| | | if (customerServiceUrl) { |
| | | window.location.href = customerServiceUrl; |
| | | } else { |
| | | this.$router.push('/customerService') |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/init.scss"; |
| | | #cryptos{ |
| | | |
| | | #cryptos { |
| | | .page-box { |
| | | box-sizing: border-box; |
| | | } |
| | | .btn-wrap { |
| | | position: fixed; |
| | | left: 0; |
| | | bottom: 86px; |
| | | width: 100%; |
| | | padding: 0 30px; |
| | | box-sizing: border-box; |
| | | } |
| | | .mt96 { |
| | | margin-top:114px; |
| | | } |
| | | .success-title{ |
| | | margin-top:70px; |
| | | margin-bottom:115px; |
| | | } |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .mt14{ |
| | | margin-top:14px; |
| | | } |
| | | .btn-wrap { |
| | | position: fixed; |
| | | left: 0; |
| | | bottom: 86px; |
| | | width: 100%; |
| | | padding: 0 30px; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .mb87{ |
| | | margin-bottom:87px; |
| | | } |
| | | .mt96 { |
| | | margin-top: 114px; |
| | | } |
| | | |
| | | .service-text{ |
| | | text-decoration:underline; |
| | | } |
| | | .next-btn{ |
| | | width:100%; |
| | | height:96px; |
| | | border:none; |
| | | outline:none; |
| | | border-radius: 8px; |
| | | } |
| | | } |
| | | .success-title { |
| | | margin-top: 70px; |
| | | margin-bottom: 115px; |
| | | } |
| | | |
| | | .mt14 { |
| | | margin-top: 14px; |
| | | } |
| | | |
| | | .mb87 { |
| | | margin-bottom: 87px; |
| | | } |
| | | |
| | | .service-text { |
| | | text-decoration: underline; |
| | | } |
| | | |
| | | .next-btn { |
| | | width: 100%; |
| | | height: 96px; |
| | | border: none; |
| | | outline: none; |
| | | border-radius: 8px; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | "反洗钱协议": "Anti-Geldwäsche-Vereinbarung", |
| | | "法律声明": "Rechtlicher Hinweis", |
| | | "金融服务牌照": "Finanzdienstleistungslizenz", |
| | | "充值记录": "Aufladeprotokoll", |
| | | "当日": "Ist das", |
| | | "最低认购": "Mindestzeichnung", |
| | | "币种数量": "Menge der währung", |
| | | "进度": "Fortschritt", |
| | | } |
| | |
| | | "反洗钱协议": "Accordo antiriciclaggio", |
| | | "法律声明": "Dichiarazione legale", |
| | | "金融服务牌照": "Licenza di servizi finanziari", |
| | | "充值记录": "Registro di ricarica", |
| | | "当日": "Oggi", |
| | | "最低认购": "Sottoscrizione minima", |
| | | "币种数量": "Menge der Währung", |
| | | "进度": "Fortschritt", |
| | | } |
| | |
| | | "反洗钱协议": "マネーロンダリング防止契約", |
| | | "法律声明": "法的声明", |
| | | "金融服务牌照": "金融サービスライセンス", |
| | | "充值记录": "入金記録", |
| | | "当日": "当日", |
| | | "最低认购": "最低申込", |
| | | "币种数量": "通貨数量", |
| | | "进度": "進捗", |
| | | } |
| | |
| | | "反洗钱协议": "Acordo de Prevenção à Lavagem de Dinheiro", |
| | | "法律声明": "Declaração Legal", |
| | | "金融服务牌照": "Licença de Serviços Financeiros", |
| | | "充值记录": "Registro de recarga", |
| | | "当日": "Hoje", |
| | | "最低认购": "Subscrição mínima", |
| | | "币种数量": "Quantidade de moeda", |
| | | "进度": "Progresso", |
| | | } |
| | |
| | | "反洗钱协议": "Acuerdo de prevención de lavado de dinero", |
| | | "法律声明": "Declaración legal", |
| | | "金融服务牌照": "Licencia de servicios financieros", |
| | | "充值记录": "Registro de recarga", |
| | | "当日": "Hoy", |
| | | "最低认购": "Suscripción mínima", |
| | | "币种数量": "Cantidad de moneda", |
| | | "进度": "Progreso", |
| | | } |
| | |
| | | "反洗钱协议": "反洗錢協議", |
| | | "法律声明": "法律聲明", |
| | | "金融服务牌照": "金融服務牌照", |
| | | "充值记录": "充值記錄", |
| | | "当日": "當日", |
| | | "最低认购": "最低認購", |
| | | "币种数量": "幣種數量", |
| | | "进度": "進度", |
| | | } |
| | |
| | | "反洗钱协议": "Anti-Money Laundering Agreement", |
| | | "法律声明": "Legal Statement", |
| | | "金融服务牌照": "Financial Services License", |
| | | "充值记录": "Recharge record", |
| | | "当日": "Today", |
| | | "最低认购": "Minimum subscription", |
| | | "币种数量": "Currency quantity", |
| | | "进度": "Progress", |
| | | } |
| | |
| | | "反洗钱协议": "Accord de lutte contre le blanchiment d'argent", |
| | | "法律声明": "Mention légale", |
| | | "金融服务牌照": "Licence de services financiers", |
| | | "充值记录": "Recharge record", |
| | | "当日": "Aujourd'hui", |
| | | "最低认购": "Souscription minimale", |
| | | "币种数量": "Menge der Währung", |
| | | "进度": "Fortschritt", |
| | | } |
| | |
| | | "反洗钱协议": "자금세탁 방지 계약", |
| | | "法律声明": "법적 선언", |
| | | "金融服务牌照": "금융 서비스 라이센스", |
| | | "充值记录": "충전 기록", |
| | | "当日": "당일", |
| | | "最低认购": "최소 구독", |
| | | "币种数量": "통화 수량", |
| | | "进度": "진행 상황", |
| | | } |
| | |
| | | "反洗钱协议": "ข้อตกลงการป้องกันการฟอกเงิน", |
| | | "法律声明": "คำชี้แจงทางกฎหมาย", |
| | | "金融服务牌照": "ใบอนุญาตบริการทางการเงิน", |
| | | "充值记录": "บันทึกการเติมเงิน", |
| | | "当日": "วันนี้", |
| | | "最低认购": "การจองซื้อขั้นต่ำ", |
| | | "币种数量": "จำนวนเงินตรา", |
| | | "进度": "ความก้าวหน้า", |
| | | } |
| | |
| | | "反洗钱协议": "Thỏa thuận chống rửa tiền", |
| | | "法律声明": "Tuyên bố pháp lý", |
| | | "金融服务牌照": "Giấy phép dịch vụ tài chính", |
| | | "充值记录": "Lịch sử nạp tiền", |
| | | "当日": "Ngày nay", |
| | | "最低认购": "Đăng ký tối thiểu", |
| | | "币种数量": "Số lượng tiền tệ", |
| | | "进度": "Tiến độ", |
| | | } |
| | |
| | | "反洗钱协议": "反洗钱协议", |
| | | "法律声明": "法律声明", |
| | | "金融服务牌照": "金融服务牌照", |
| | | "充值记录": "充值记录", |
| | | "当日": "当日", |
| | | "最低认购": "最低认购", |
| | | "币种数量": "币种数量", |
| | | "进度": "进度", |
| | | } |
| | |
| | | import( /* webpackChunkName: "changeFundsPassword" */ /* webpackPrefetch: true */ |
| | | '@/views/changeFundsPassword/index.vue') |
| | | }, |
| | | { //重置邮箱/手机号 |
| | | path: '/resetPhoneEmail', |
| | | name: 'resetPhoneEmail', |
| | | component: () => |
| | | import( /* webpackChunkName: "changeFundsPassword" */ /* webpackPrefetch: true */ |
| | | '@/views/safety/resetPhoneEmail.vue') |
| | | }, |
| | | { //绑定验证 |
| | | path: '/bindVerify', |
| | | name: 'bindVerify', |
| | |
| | | method: "get", |
| | | data: params |
| | | }) |
| | | }; |
| | | }; |
| | |
| | | case 403: // 登录状态已过期,您可以继续留在该页面,或者重新登录 |
| | | userStore.userInfo = {} |
| | | store.state.user.userInfo = {} |
| | | showToast({ type: 'warning', message: i18n.global.t('请重新登录')}) |
| | | router.push({ |
| | | path: '/login' |
| | | }) |
| | |
| | | method: "POST", |
| | | params, |
| | | }) |
| | | } |
| | | } |
| | | |
| | | //重置账户密码 |
| | | export const _registerEorP = (params) => { |
| | | return request({ |
| | | url: `${API_PREFIX}/user/resetUserName`, |
| | | method: METHODS.POST, |
| | | data: params |
| | | }) |
| | | }; |
| | |
| | | |
| | | export const handleImage = (url) => { |
| | | return new URL(url, import.meta.url).href |
| | | } |
| | | } |
| | | |
| | | // 字符串转数组 |
| | | export const strToArr = (str, separator = ',') => { |
| | | if (typeof str !== 'string') return []; |
| | | return str.split(separator); |
| | | } |
| | | |
| | |
| | | import OrderData from "./OrderData.vue"; |
| | | import Evaluation from "./Evaluation.vue"; |
| | | import otcApi from "@/service/otc"; |
| | | import { customerServiceUrl } from "@/config"; |
| | | export default { |
| | | name: "TradeSuccessDetail", |
| | | props: ['title', 'back'], |
| | |
| | | return str |
| | | }, |
| | | tokefu() { |
| | | this.$router.push('/customerService') |
| | | if (customerServiceUrl) { |
| | | window.location.href = customerServiceUrl; |
| | | } else { |
| | | this.$router.push('/customerService') |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | import OrderData from "../../c2cOrder/components/order-data/OrderData.vue"; |
| | | import Evaluation from "../../c2cOrder/payment/components/Evaluation.vue"; |
| | | import otcApi from "@/service/otc"; |
| | | import { customerServiceUrl } from "@/config"; |
| | | export default { |
| | | name: "TradeSuccessDetail", |
| | | props: ['title', 'back'], |
| | |
| | | return str |
| | | }, |
| | | tokefu() { |
| | | this.$router.push('/customerService') |
| | | if (customerServiceUrl) { |
| | | window.location.href = customerServiceUrl; |
| | | } else { |
| | | this.$router.push('/customerService') |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | <div class="font-48">{{ $t('等待买家付款') }}</div> |
| | | <div class="mt-16 font-24">{{ $t('预计收到付款') }} <span style="color: #1D91FF">{{ |
| | | orderDetail.expireTime |
| | | }}{{ $t('分钟') }}</span> |
| | | }}{{ $t('分钟') }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="w-140 h-144"> |
| | |
| | | :create-order-time="fullTime(orderDetail.createTime)" :seller-name="orderDetail.c2cUserNickName" |
| | | :unit-price="orderDetail.symbolValue" /> |
| | | <!-- 已超时 --> |
| | | <cancel-success v-if="timeout" :title="$t('出售')" :count="orderDetail.coinAmount" :total-price="orderDetail.amount" |
| | | :order-number="orderDetail.orderNo" :create-order-time="fullTime(orderDetail.createTime)" |
| | | :seller-name="orderDetail.c2cUserNickName" :unit-price="orderDetail.symbolValue"> |
| | | <cancel-success v-if="timeout" :title="$t('出售')" :count="orderDetail.coinAmount" |
| | | :total-price="orderDetail.amount" :order-number="orderDetail.orderNo" |
| | | :create-order-time="fullTime(orderDetail.createTime)" :seller-name="orderDetail.c2cUserNickName" |
| | | :unit-price="orderDetail.symbolValue"> |
| | | <template #title>{{ $t('已超时') }}</template> |
| | | <template #desc>{{ $t('买家付款超时,您的订单已取消') }}</template> |
| | | </cancel-success> |
| | |
| | | import otcApi from "@/service/otc"; |
| | | |
| | | import { formatTime } from "@/utils/utis"; |
| | | import { customerServiceUrl } from "@/config"; |
| | | import { SET_ORDER_INFO } from "@/store/const.store"; |
| | | |
| | | export default { |
| | |
| | | } |
| | | }, |
| | | setup() { |
| | | onBeforeUnmount(()=>{ |
| | | onBeforeUnmount(() => { |
| | | let end = setInterval(function () { }, 10000); |
| | | for (let i = 1; i <= end; i++) { |
| | | clearInterval(i); |
| | | clearInterval(i); |
| | | } |
| | | }) |
| | | }, |
| | |
| | | return formatTime(new Date(time), 'yyyy-MM-dd hh:mm:ss') |
| | | }, |
| | | tokefu() { |
| | | this.$router.push('/customerService') |
| | | if (customerServiceUrl) { |
| | | window.location.href = customerServiceUrl; |
| | | } else { |
| | | this.$router.push('/customerService') |
| | | } |
| | | } |
| | | }, |
| | | watch: { |
| | |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/css/copy2.scss"; |
| | | |
| | | .border-ra { |
| | | border-radius: 20px; |
| | | } |
| | |
| | | <template> |
| | | <div class="w-full h-full"> |
| | | <order-nav :title="$t('申述提交')" :back="false" @back="hide"/> |
| | | <div class="mt-70"> |
| | | <div class="text-center"> |
| | | <img class="w-122 h-122" style="margin: 0 auto;" src="@/assets/image/c2c/Group100.png" alt=""> |
| | | <div class="mt-35 font-700 font-56 textColor">{{$t('提交成功')}}</div> |
| | | <div class="mt-10 font-28 text-grey"> |
| | | <p class="mb-15">{{$t('您的资料已成功上传!')}}</p> |
| | | <p>{{$t('系统将在三个工作日内审核完毕,请您耐心等候。')}}</p> |
| | | <div class="w-full h-full"> |
| | | <order-nav :title="$t('申述提交')" :back="false" @back="hide" /> |
| | | <div class="mt-70"> |
| | | <div class="text-center"> |
| | | <img class="w-122 h-122" style="margin: 0 auto;" src="@/assets/image/c2c/Group100.png" alt=""> |
| | | <div class="mt-35 font-700 font-56 textColor">{{ $t('提交成功') }}</div> |
| | | <div class="mt-10 font-28 text-grey"> |
| | | <p class="mb-15">{{ $t('您的资料已成功上传!') }}</p> |
| | | <p>{{ $t('系统将在三个工作日内审核完毕,请您耐心等候。') }}</p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="px-33 mt-92"> |
| | | <van-button color="#1D91FF" class="w-full h-100 rounded-xl" type="info" @click="tokefu">{{ $t('联系客服') }} |
| | | </van-button> |
| | | <div @click="hide" class="mt-34 font-36 text-center" style="color: #1D91FF">{{ $t('返回') }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="px-33 mt-92"> |
| | | <van-button |
| | | color="#1D91FF" |
| | | class="w-full h-100 rounded-xl" |
| | | type="info" |
| | | @click="tokefu" |
| | | >{{$t('联系客服')}} |
| | | </van-button> |
| | | <div @click="hide" class="mt-34 font-36 text-center" style="color: #1D91FF">{{$t('返回')}}</div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import {Button} from "vant"; |
| | | import { Button } from "vant"; |
| | | import OrderNav from "@/components/order-nav/OrderNav.vue"; |
| | | import { customerServiceUrl } from "@/config"; |
| | | export default { |
| | | name: "AppealWaiting", |
| | | components: { |
| | | [Button.name]:Button, |
| | | [Button.name]: Button, |
| | | OrderNav, |
| | | }, |
| | | methods:{ |
| | | methods: { |
| | | tokefu() { |
| | | this.$router.push('/customerService') |
| | | if (customerServiceUrl) { |
| | | window.location.href = customerServiceUrl; |
| | | } else { |
| | | this.$router.push('/customerService') |
| | | } |
| | | }, |
| | | hide() { |
| | | console.log(213) |
| | |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | | <style scoped></style> |
| | |
| | | import OrderNav from "@/components/order-nav/OrderNav.vue"; |
| | | import OrderData from "../components/order-data/OrderData.vue"; |
| | | import otcApi from "@/service/otc"; |
| | | |
| | | import { customerServiceUrl } from "@/config"; |
| | | |
| | | export default { |
| | | name: "orderGeneration", |
| | |
| | | this.$router.push({ path: '/chat' }) |
| | | }, |
| | | tokefu() { |
| | | this.$router.push('/customerService') |
| | | if (customerServiceUrl) { |
| | | window.location.href = customerServiceUrl; |
| | | } else { |
| | | this.$router.push('/customerService') |
| | | } |
| | | } |
| | | }, |
| | | computed: { |
| | |
| | | <template v-slot:title> |
| | | <div>STO</div> |
| | | </template> |
| | | <template v-slot:right> |
| | | <!-- <template v-slot:right> |
| | | <van-icon name="todo-list-o" @click="$router.push('/ICO/icoRecord')" /> |
| | | </template> |
| | | </template> --> |
| | | </fx-header> |
| | | |
| | | <div class="ico_list"> |
| | |
| | | {{ i.name }} |
| | | </div> |
| | | <div class="item_2 flex justify-between"> |
| | | <div class="mr-5">{{$t('申购时间')}}</div> |
| | | <div class="mr-5">{{ $t('申购时间') }}</div> |
| | | <div>{{ i.startDate }} ~ {{ i.endDate }}</div> |
| | | </div> |
| | | <div class="item_2 flex justify-between"> |
| | | <div>{{$t('listingDate')}}</div> |
| | | <div>{{ i.marketDate }}</div> |
| | | <div>{{ $t('最低认购') }}</div> |
| | | <div>{{ i.minContribution }}</div> |
| | | </div> |
| | | <div class="item_2 flex justify-between"> |
| | | <div>{{$t('每张金额')}}</div> |
| | | <div>{{ $t('币种数量') }}</div> |
| | | <div>{{ i.maxContribution }}</div> |
| | | </div> |
| | | <div class="item_2 flex justify-between"> |
| | | <div>{{ $t('IssuePrice') }}</div> |
| | | <div>{{ i.unitAmount }}</div> |
| | | </div> |
| | | |
| | | <div class="item_2 flex justify-between"> |
| | | <div>{{$t('每张手续费')}}</div> |
| | | <div>{{ i.unitFee }}</div> |
| | | <div>{{ $t('listingDate') }}</div> |
| | | <div>{{ i.marketDate }}</div> |
| | | </div> |
| | | <div class="item_3 flex justify-center"> |
| | | <div class="item_2 flex justify-between align-center"> |
| | | <div>{{ $t('进度') }}</div> |
| | | <div style="width: 70%;padding-top: 1rem;"> |
| | | <van-progress :percentage="i.progressRate || 0" track-color="#ccc" /> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="item_3 flex justify-center"> |
| | | <van-button type="default" round size="large" @click="openBuy(i)">{{$t('申购')}}</van-button> |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <!-- 购买弹窗 --> |
| | | <van-popup v-model:show="show" round> |
| | | <div class="buy_popup"> |
| | | <div class="buy_title flex justify-center">{{ itemObj.symbol }}</div> |
| | | |
| | | <van-field v-model="sgNum" type="digit" :label="$t('申购数量')" /> |
| | | |
| | | <div class="flex justify-center mt-5"> |
| | | <van-button type="default" size="large" round @click="buy">{{ $t('confirm') }}</van-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <!-- 购买弹窗 --> |
| | | <van-popup v-model:show="show" round > |
| | | <div class="buy_popup"> |
| | | <div class="buy_title flex justify-center">{{ itemObj.symbol }}</div> |
| | | |
| | | <van-field v-model="sgNum" type="digit" :label="$t('申购数量')" /> |
| | | |
| | | <div class="flex justify-center mt-5"> |
| | | <van-button type="default" size="large" round @click="buy">{{$t('confirm')}}</van-button> |
| | | </div> |
| | | </div> |
| | | </van-popup> |
| | | </van-popup> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | _icoList().then(res => { |
| | | icoList.value = res.records |
| | | }).catch(err => { |
| | | showToast(err.msg) |
| | | // showToast(err.msg) |
| | | }) |
| | | |
| | | // 打开申购弹窗 |
| | |
| | | // 申购 |
| | | const buy = () => { |
| | | let opt = { |
| | | icoProjectId:itemObj.value.id, |
| | | icoProjectId: itemObj.value.id, |
| | | subscribeNums: sgNum.value, |
| | | subscriptionType:1, |
| | | subscriptionType: 1, |
| | | } |
| | | _icoSubscribe(opt).then(res => { |
| | | showToast(t('submitSuccess')) |
| | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .ico{ |
| | | .ico { |
| | | padding: 0rem 1.2rem 5rem 1.2rem; |
| | | font-size: 1.5rem; |
| | | .buy_popup{ |
| | | |
| | | .buy_popup { |
| | | width: 40rem; |
| | | padding: 1rem; |
| | | |
| | | .buy_title{ |
| | | .buy_title { |
| | | font-size: 2.5rem; |
| | | font-weight: 700; |
| | | border-bottom: #aaa solid 1px; |
| | | padding: 1rem; |
| | | } |
| | | } |
| | | |
| | | .ico_list{ |
| | | |
| | | .ico_list { |
| | | padding: 1rem 0rem; |
| | | .ico_item{ |
| | | |
| | | .ico_item { |
| | | background-color: #eee; |
| | | padding:.5rem 1rem; |
| | | padding: .5rem 1rem; |
| | | border: #aaa solid 1px; |
| | | border-radius: 1rem; |
| | | .item_1{ |
| | | |
| | | .item_1 { |
| | | padding: 1rem .5rem; |
| | | border-bottom: #ccc solid 1px; |
| | | font-size: 2rem; |
| | | font-weight: 700; |
| | | } |
| | | .item_2{ |
| | | |
| | | .item_2 { |
| | | padding: 1rem .5rem; |
| | | border-bottom: #ccc solid 1px; |
| | | font-size: 1.6rem; |
| | | font-weight: 500; |
| | | &>div:last-child{ |
| | | |
| | | &>div:last-child { |
| | | color: #999; |
| | | } |
| | | } |
| | | .item_3{ |
| | | |
| | | .item_3 { |
| | | padding: .5rem; |
| | | } |
| | | } |
| | |
| | | return this.$t('反洗钱协议') |
| | | case '26': |
| | | return this.$t('金融服务牌照') |
| | | case '27': |
| | | return this.$t('帮助中心') |
| | | default: |
| | | return this.$t('关于我们') |
| | | } |
| | |
| | | } |
| | | _getAboutUs({ |
| | | content_code: this.serviceTerm, |
| | | // language: this.serviceTerm ? language : this.$i18n.locale, |
| | | language: 'en', // 强制英文,后台暂时只设置了英文 |
| | | not_language: 1, |
| | | language: this.serviceTerm ? language : this.$i18n.locale, |
| | | // language: 'en', // 强制英文,后台暂时只设置了英文 |
| | | // not_language: 1, |
| | | }).then((res) => { |
| | | this.content = res.content |
| | | this.title = res.title |
| | |
| | | <!-- <img v-if="item.amount > 0" src="@/assets/image/assets-center/in.png" class="w-44 h-44 mr-20" /> |
| | | <img v-else src="@/assets/image/assets-center/out.png" class="w-44 h-44 mr-20" /> --> |
| | | <div> |
| | | <div class="font-32 textColor">{{ category[item.category] }}</div> |
| | | <!-- <div class="font-32 textColor">{{ category[item.category] }}</div> --> |
| | | <div class="font-32 textColor">{{ orderTypes[item.content_type] }}</div> |
| | | <div class="text-grey font-26 mt-6">{{ item.createTime }}(UTC+2)</div> |
| | | <div class="text-grey font-26 mt-6">{{ orderTypes[item.content_type] }}</div> |
| | | <!-- <div class="text-grey font-26 mt-6">{{ orderTypes[item.content_type] }}</div> --> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <div class="font-32 text-right" :class="item.amount > 0 ? 'text-green' : 'text-red'">{{ |
| | | item.amount }} {{ item.wallet_type.toUpperCase() }}</div> |
| | | item.amount }} {{ (item.wallet_type || '').toUpperCase() }}</div> |
| | | <!-- <div class="text-grey font-28 mt-14">{{ item.createTimeStr }}</div> --> |
| | | <div class="text-grey font-28 mt-6 text-right">{{ item.amountAfter }}</div> |
| | | </div> |
| | |
| | | title: this.$t('选择账户类型'), |
| | | selectData: [ |
| | | { title: this.$t('全部'), type: '' }, |
| | | { title: this.$t('法币交易'), type: 'coin' }, |
| | | { title: this.$t('合约交易'), type: 'contract' }, |
| | | { title: this.$t('充值记录'), type: 'coin' }, |
| | | // { title: this.$t('合约交易'), type: 'contract' }, |
| | | { title: this.$t('币币交易'), type: 'exchange' }, |
| | | ], |
| | | type: "",//选中类型 |
| | |
| | | this.symbolType = this.$route.query.type |
| | | } |
| | | _fundRecord(this.type, this.page, this.symbolType).then(data => { |
| | | console.log("data", data); |
| | | |
| | | this.list = [...this.list, ...data] |
| | | // console.log(logs) |
| | | this.loading = false |
| | |
| | | class="w-70 h-70 rounded-full" /> |
| | | </div> |
| | | <div class="text-grey font-28 mt-20">{{ $t('从') }}</div> |
| | | <div class="font-30 mt-30">{{ detail.volume }} {{ detail.symbol }}</div> |
| | | <div class="font-30 mt-30">{{ detail.volume }} {{ detail.name }}</div> |
| | | </div> |
| | | <img src="../../../assets/image/exchange/icon_6.png" class="w-30 h-20" style="margin-top:-65px" /> |
| | | |
| | |
| | | </li> --> |
| | | <li class="flex justify-between font-28 mt-25"> |
| | | <span class="text-grey">{{ $t('汇率') }}</span> |
| | | <span class="textColor">1 {{ detail.symbol && |
| | | detail.symbol.toUpperCase() }}≈{{ (detail.rate * 1).toFixed(5) }} {{ detail.symbol_to && |
| | | <span class="textColor">1 {{ detail.name && |
| | | detail.name.toUpperCase() }}≈{{ (detail.rate * 1).toFixed(5) }} {{ detail.symbol_to && |
| | | detail.symbol_to.toUpperCase() }}</span> |
| | | </li> |
| | | </ul> |
| | |
| | | item.blockchain_name }}</div> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <!-- <div> |
| | | <div class="font-28 textColor">{{ $t('付款凭证(上传支付详情截图)') }}</div> |
| | | <div class="img-box"> |
| | | <van-uploader accept="image/*" v-model="fileList" multiple :max-count="1" |
| | | :before-read="beforeRead" :after-read="afterRead" /> |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | <div class="hint-box"> |
| | | <div class="pl-30 pr-30"> |
| | |
| | | amount: this.amount, |
| | | from: this.enterAddress, |
| | | blockchain_name: this.blockchain_name, |
| | | img: this.fileList[0].resURL, |
| | | // img: this.fileList[0].resURL, |
| | | coin: this.coin, |
| | | channel_address: this.address, |
| | | tx: "", |
| | |
| | | <template> |
| | | <!-- 充值或提现申请提交页面 --> |
| | | <div id="cryptos"> |
| | | <assets-head title="" :goHome="true" /> |
| | | <div class="pl-47 pr-47 page-box relative"> |
| | | <div class="content-box"> |
| | | <div class="flex flex-col items-center justify-center mt96"> |
| | | <img width="162" height="142" src="@/assets/image/assets-center/success.png" /> |
| | | <div class="font-45 font-700 success-title textColor">{{ title }} {{$t('申请已提交')}}</div> |
| | | </div> |
| | | <div class="mb87"> |
| | | <div class="font-35 textColor">{{ title }} {{ $t('申请已提交') }}</div> |
| | | <div class="text-grey font-30 mt14">{{ time }}</div> |
| | | </div> |
| | | <div class="mb87"> |
| | | <div class="font-35 textColor">{{ title }} {{ $t('申请已提交') }}</div> |
| | | <div class="flex mt14"> |
| | | <div class="text-grey font-30">{{ $t('如果') }} {{ title }} {{ $t('未到账') }}?</div> |
| | | <div class="service-text font-30 text-blue" @click="tokefu">{{ $t('联系客服') }}</div> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="mb87">--> |
| | | <!-- <div class="font-35">{{ title }} {{ $t('已成功') }}</div>--> |
| | | <!-- <div class="text-grey font-30 mt14">{{ $t('您会收到邮箱提醒') }}</div>--> |
| | | <!-- </div>--> |
| | | <!-- 充值或提现申请提交页面 --> |
| | | <div id="cryptos"> |
| | | <assets-head title="" :goHome="true" /> |
| | | <div class="pl-47 pr-47 page-box relative"> |
| | | <div class="content-box"> |
| | | <div class="flex flex-col items-center justify-center mt96"> |
| | | <img width="162" height="142" src="@/assets/image/assets-center/success.png" /> |
| | | <div class="font-45 font-700 success-title textColor">{{ title }} {{ $t('申请已提交') }}</div> |
| | | </div> |
| | | <div class="btn-wrap"> |
| | | <button class="btnMain text-white next-btn font-35" @click="goRouter('/cryptos/assetsCenter/rechargeWithdrawRecord')"> |
| | | {{ $t('查看') }} {{ title }} {{ $t('历史') }}</button> |
| | | <div class="mb87"> |
| | | <div class="font-35 textColor">{{ title }} {{ $t('申请已提交') }}</div> |
| | | <div class="text-grey font-30 mt14">{{ time }}</div> |
| | | </div> |
| | | <div class="mb87"> |
| | | <div class="font-35 textColor">{{ title }} {{ $t('申请已提交') }}</div> |
| | | <div class="flex mt14"> |
| | | <div class="text-grey font-30">{{ $t('如果') }} {{ title }} {{ $t('未到账') }}?</div> |
| | | <div class="service-text font-30 text-blue" @click="tokefu">{{ $t('联系客服') }}</div> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="mb87">--> |
| | | <!-- <div class="font-35">{{ title }} {{ $t('已成功') }}</div>--> |
| | | <!-- <div class="text-grey font-30 mt14">{{ $t('您会收到邮箱提醒') }}</div>--> |
| | | <!-- </div>--> |
| | | </div> |
| | | <div class="btn-wrap"> |
| | | <button class="btnMain text-white next-btn font-35" |
| | | @click="goRouter('/cryptos/assetsCenter/rechargeWithdrawRecord')"> |
| | | {{ $t('查看') }} {{ title }} {{ $t('历史') }}</button> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { Image as VanImage } from 'vant'; |
| | | import assetsHead from "@/components/Transform/assets-head/index.vue"; |
| | | import { dataTimeEx } from '@/utils/utis' |
| | | export default { |
| | | name:'rechargeSubmit', |
| | | components:{ |
| | | assetsHead, |
| | | [VanImage.name]:VanImage |
| | | }, |
| | | props:{ |
| | | title:{ |
| | | type:String, |
| | | default:"" |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | time:'' |
| | | } |
| | | }, |
| | | created() { |
| | | this.getTime() |
| | | }, |
| | | methods:{ |
| | | onClickLeft() { |
| | | this.$router.go(-1); |
| | | }, |
| | | goRouter(params) { |
| | | this.$router.push({ |
| | | path:params, |
| | | query: { |
| | | back: 1 |
| | | } |
| | | }); |
| | | }, |
| | | getTime(){ |
| | | this.time = dataTimeEx(Date.parse(new Date()),true); |
| | | }, |
| | | tokefu() { |
| | | this.$router.push('/customerService') |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { Image as VanImage } from 'vant'; |
| | | import assetsHead from "@/components/Transform/assets-head/index.vue"; |
| | | import { dataTimeEx } from '@/utils/utis' |
| | | import { customerServiceUrl } from "@/config"; |
| | | export default { |
| | | name: 'rechargeSubmit', |
| | | components: { |
| | | assetsHead, |
| | | [VanImage.name]: VanImage |
| | | }, |
| | | props: { |
| | | title: { |
| | | type: String, |
| | | default: "" |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | time: '' |
| | | } |
| | | }, |
| | | created() { |
| | | this.getTime() |
| | | }, |
| | | methods: { |
| | | onClickLeft() { |
| | | this.$router.go(-1); |
| | | }, |
| | | goRouter(params) { |
| | | this.$router.push({ |
| | | path: params, |
| | | query: { |
| | | back: 1 |
| | | } |
| | | }); |
| | | }, |
| | | getTime() { |
| | | this.time = dataTimeEx(Date.parse(new Date()), true); |
| | | }, |
| | | tokefu() { |
| | | if (customerServiceUrl) { |
| | | window.location.href = customerServiceUrl; |
| | | } else { |
| | | this.$router.push('/customerService') |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/init.scss"; |
| | | #cryptos{ |
| | | .page-box { |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/init.scss"; |
| | | |
| | | #cryptos { |
| | | .page-box { |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .btn-wrap { |
| | | position: fixed; |
| | | left: 0; |
| | |
| | | padding: 0 30px; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .mt96 { |
| | | margin-top:114px; |
| | | margin-top: 114px; |
| | | } |
| | | .success-title{ |
| | | margin-top:70px; |
| | | margin-bottom:115px; |
| | | |
| | | .success-title { |
| | | margin-top: 70px; |
| | | margin-bottom: 115px; |
| | | } |
| | | |
| | | .mt14{ |
| | | margin-top:14px; |
| | | |
| | | .mt14 { |
| | | margin-top: 14px; |
| | | } |
| | | |
| | | .mb87{ |
| | | margin-bottom:87px; |
| | | |
| | | .mb87 { |
| | | margin-bottom: 87px; |
| | | } |
| | | |
| | | .service-text{ |
| | | text-decoration:underline; |
| | | |
| | | .service-text { |
| | | text-decoration: underline; |
| | | } |
| | | .next-btn{ |
| | | width:100%; |
| | | height:96px; |
| | | border:none; |
| | | outline:none; |
| | | |
| | | .next-btn { |
| | | width: 100%; |
| | | height: 96px; |
| | | border: none; |
| | | outline: none; |
| | | border-radius: 8px; |
| | | } |
| | | } |
| | | |
| | | |
| | | </style> |
| | | |
| | | } |
| | | </style> |
| | |
| | | <p>{{ $t('买入') }}</p> |
| | | <p class="flex justify-between font-22"> |
| | | <span style="margin-right: -10px;">{{ $t('价格') }}{{ queryType == 'cryptos' ? '(USDT)' : '(USD)' |
| | | }}</span> |
| | | }}</span> |
| | | <span class="buy-title">{{ $t('数量') }}({{ symbolData.toUpperCase() }})</span> |
| | | </p> |
| | | </li> |
| | |
| | | <span class="flex-1">{{ $t('方向') }}</span> |
| | | <span class="flex-1">{{ $t('价格') }}{{ queryType == 'cryptos' ? '(USDT)' : '(USD)' }}</span> |
| | | <span class="flex-1 flex justify-center buy-title">{{ $t('数量') }}({{ symbolData.toUpperCase() |
| | | }})</span> |
| | | }})</span> |
| | | </li> |
| | | <li v-for="(item, index) in deals" :key="item.ts + item.price + item.amount || index" |
| | | class="flex justify-between mt-30"> |
| | |
| | | import { mapGetters } from 'vuex'; |
| | | import { fixDate } from "@/utils"; |
| | | import { WS_URL } from '@/config'; |
| | | import { strToArr } from "@/utils/utis"; |
| | | import PopupDelivery from "@/components/Transform/popup-delivery/index.vue"; |
| | | import PopupConfirmOrder from '@/components/Transform/popup-confirm-order/index.vue' |
| | | import deepChart from '@/components/Transform/deepChart/index.vue' |
| | |
| | | _getHomeList(this.symbol).then(data => { |
| | | // console.log(data[0]) |
| | | this.quote = data[0] |
| | | this.symbolData = data[0].symbol_data |
| | | this.symbolData = strToArr(data[0].name, '/')[0] |
| | | this.$nextTick(() => { |
| | | if (!this.sockets.quote && this.symbol) { |
| | | this.startQuoteScoket() |
| | |
| | | <template> |
| | | <!-- 提现申请提交页面 --> |
| | | <div id="cryptos"> |
| | | <template> |
| | | <!-- 提现申请提交页面 --> |
| | | <div id="cryptos"> |
| | | <assets-head title="" :goHome="true" /> |
| | | <div class="pl-47 pr-47 page-box relative font-28"> |
| | | <div class="content-box font-28"> |
| | | <div class="flex flex-col items-center justify-center mt96"> |
| | | <img src="@/assets/image/order/success.png"/> |
| | | <div class="font-45 font-700 success-title textColor">{{ title }} {{$t('申请已提交')}}</div> |
| | | <img src="@/assets/image/order/success.png" /> |
| | | <div class="font-45 font-700 success-title textColor">{{ title }} {{ $t('申请已提交') }}</div> |
| | | </div> |
| | | <div class="mb87 font-28"> |
| | | <div class="font-35 textColor">{{ title }} {{ $t('申请已提交') }}</div> |
| | |
| | | <!-- </div>--> |
| | | </div> |
| | | <div class="btn-wrap"> |
| | | <button class="btnMain text-white next-btn font-35" @click="goRouter('/cryptos/assetsCenter/rechargeWithdrawRecord?back=1')"> |
| | | <button class="btnMain text-white next-btn font-35" |
| | | @click="goRouter('/cryptos/assetsCenter/rechargeWithdrawRecord?back=1')"> |
| | | {{ $t('查看') }} {{ title }} {{ $t('历史') }}</button> |
| | | </div> |
| | | </div> |
| | |
| | | import { Image as VanImage } from 'vant'; |
| | | import assetsHead from "@/components/Transform/assets-head/index.vue"; |
| | | import { dataTimeEx } from '@/utils/utis' |
| | | import { customerServiceUrl } from "@/config"; |
| | | export default { |
| | | name:'rechargeSubmit', |
| | | components:{ |
| | | assetsHead, |
| | | [VanImage.name]:VanImage |
| | | name: 'rechargeSubmit', |
| | | components: { |
| | | assetsHead, |
| | | [VanImage.name]: VanImage |
| | | }, |
| | | props: { |
| | | title: { |
| | | type: String, |
| | | default: "" |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | time: '' |
| | | } |
| | | }, |
| | | created() { |
| | | this.getTime() |
| | | }, |
| | | methods: { |
| | | onClickLeft() { |
| | | this.$router.go(-1); |
| | | }, |
| | | props:{ |
| | | title:{ |
| | | type:String, |
| | | default:"" |
| | | goRouter(params) { |
| | | this.$router.push({ |
| | | path: params, |
| | | query: { |
| | | back: 1 |
| | | } |
| | | }); |
| | | }, |
| | | data() { |
| | | return { |
| | | time:'' |
| | | } |
| | | getTime() { |
| | | this.time = dataTimeEx(Date.parse(new Date()), true); |
| | | }, |
| | | created() { |
| | | this.getTime() |
| | | }, |
| | | methods:{ |
| | | onClickLeft() { |
| | | this.$router.go(-1); |
| | | }, |
| | | goRouter(params) { |
| | | this.$router.push({ |
| | | path:params, |
| | | query: { |
| | | back: 1 |
| | | } |
| | | }); |
| | | }, |
| | | getTime(){ |
| | | this.time = dataTimeEx(Date.parse(new Date()),true); |
| | | }, |
| | | tokefu() { |
| | | tokefu() { |
| | | if (customerServiceUrl) { |
| | | window.location.href = customerServiceUrl; |
| | | } else { |
| | | this.$router.push('/customerService') |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/init.scss"; |
| | | #cryptos{ |
| | | |
| | | #cryptos { |
| | | .page-box { |
| | | box-sizing: border-box; |
| | | } |
| | | .btn-wrap { |
| | | position: fixed; |
| | | left: 0; |
| | | bottom: 86px; |
| | | width: 100%; |
| | | padding: 0 30px; |
| | | box-sizing: border-box; |
| | | } |
| | | .mt96 { |
| | | margin-top:114px; |
| | | } |
| | | .success-title{ |
| | | margin-top:70px; |
| | | margin-bottom:115px; |
| | | } |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .mt14{ |
| | | margin-top:14px; |
| | | } |
| | | .btn-wrap { |
| | | position: fixed; |
| | | left: 0; |
| | | bottom: 86px; |
| | | width: 100%; |
| | | padding: 0 30px; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .mb87{ |
| | | margin-bottom:87px; |
| | | } |
| | | .mt96 { |
| | | margin-top: 114px; |
| | | } |
| | | |
| | | .service-text{ |
| | | text-decoration:underline; |
| | | } |
| | | .next-btn{ |
| | | width:100%; |
| | | height:96px; |
| | | border:none; |
| | | outline:none; |
| | | border-radius: 8px; |
| | | } |
| | | } |
| | | .success-title { |
| | | margin-top: 70px; |
| | | margin-bottom: 115px; |
| | | } |
| | | |
| | | .mt14 { |
| | | margin-top: 14px; |
| | | } |
| | | |
| | | .mb87 { |
| | | margin-bottom: 87px; |
| | | } |
| | | |
| | | .service-text { |
| | | text-decoration: underline; |
| | | } |
| | | |
| | | .next-btn { |
| | | width: 100%; |
| | | height: 96px; |
| | | border: none; |
| | | outline: none; |
| | | border-radius: 8px; |
| | | } |
| | | } |
| | | </style> |
| | | |
| | |
| | | { key: 7, name: t('提现'), icon: new URL('@/assets/imgs/home/home_6.png', import.meta.url), path: '/cryptos/Withdraw/withdrawPage' }, |
| | | // { key: 8, name: t('卡券中心'), icon: new URL('@/assets/imgs/home/home_7.png', import.meta.url) }, |
| | | // { key: 9, name: t('闪兑'), icon: new URL('@/assets/imgs/home/home_8.png', import.meta.url), path: '/cryptos/exchangePage' }, |
| | | { key: 9, name: t('划转'), icon: new URL('@/assets/imgs/home/home_8.png', import.meta.url), path: '/my/transfer' }, |
| | | // { key: 9, name: t('划转'), icon: new URL('@/assets/imgs/home/home_8.png', import.meta.url), path: '/my/transfer' }, |
| | | // { key: 10, name: t('更多'), icon: new URL('@/assets/imgs/home/home_9.png', import.meta.url) }, |
| | | |
| | | { key: 11, name: "STO", icon: new URL('@/assets/imgs/home/home_1.png', import.meta.url), path: '/ICO/ico' }, |
| | |
| | | </span> |
| | | </div> |
| | | |
| | | <div class="flex re-tab"> |
| | | <div class="textColor1" :class="activeIndex == 1 ? 'active' : ''" @click="changeIndex(1)"> |
| | | {{ $t('email') }} |
| | | </div> |
| | | <div class="textColor1" :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)"> |
| | | {{ $t('phoneNum') }} |
| | | </div> |
| | | </div> |
| | | |
| | | <ExInput style="padding-bottom:16px !important;" :placeholderText="getRegType(activeIndex, false)" |
| | | v-model="username" :dialCode="dialCode" @selectArea="onSelectArea" :area="isArea" :icon="icon" |
| | | @pressEnter="verifyLogin" /> |
| | |
| | | |
| | | let username = ref('') |
| | | let password = ref('') |
| | | let activeIndex = ref(0) |
| | | let activeIndex = ref(1) |
| | | let isArea = ref(false) |
| | | let dialCode = ref(0) |
| | | let icon = ref('') |
| | |
| | | _loginUser({ |
| | | userName: (activeIndex.value == 0 || activeIndex.value == 1) ? username.value : `${dialCode.value}${username.value}`, |
| | | passWord: password.value, |
| | | type: type.value |
| | | // type: type.value |
| | | type: '3' // 写死, 算所有的登录都是账户登录 |
| | | }).then((res) => { |
| | | userStore[GET_USERINFO](res) |
| | | store.commit('user/SET_USERINFO', res) |
| | |
| | | background: $mainbgWhiteColor; |
| | | min-height: 100vh; |
| | | |
| | | .re-tab { |
| | | margin-bottom: 22px; |
| | | |
| | | div { |
| | | padding: 0 18px; |
| | | height: 34px; |
| | | line-height: 34px; |
| | | text-align: center; |
| | | border-radius: 4px; |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .active { |
| | | // background: $US_tabActice_background; |
| | | background: $bg_yellow; |
| | | // color: $color_main; |
| | | color: $text_color4; |
| | | } |
| | | } |
| | | |
| | | :deep(.textColor) { |
| | | color: $log-c; |
| | | } |
| | |
| | | </van-dropdown-item> |
| | | </van-dropdown-menu> |
| | | </div> |
| | | <div class="assets_revenue mt-5"> |
| | | <span>{{ $t('ProfitDay') }}</span> |
| | | {{ currency.currency_symbol }}{{ forexAssets?.money_contract_profit_today ? |
| | | (forexAssets?.money_contract_profit_today * (currency.rate ?? 0)).toFixed(2) : |
| | | '--' }} |
| | | </div> |
| | | <!-- <div class="assets_revenue mt-5"> |
| | | <span>{{ $t('当日') }}</span> |
| | | {{ currency.currency_symbol }} |
| | | <span |
| | | :style="forexAssets?.money_contract_profit_today > 0 ? 'color:green' : forexAssets?.money_contract_profit_today < 0 ? 'color:red' : ''"> |
| | | {{ forexAssets?.money_contract_profit_today ? |
| | | (forexAssets?.money_contract_profit_today * (currency.rate ?? 0)).toFixed(2) : |
| | | '--' }} |
| | | </span> |
| | | </div> --> |
| | | |
| | | <div class="tabbers flex justify-between mt-20 pl-1 pr-1"> |
| | | <div class="item" v-for="item in tabList" :key="item.key" @click="toPage(item.path)"> |
| | |
| | | <span class="mr-5">{{ assetObj.capital }}</span> |
| | | <van-icon name="arrow" /> |
| | | </div> |
| | | <div class="assets_item flex justify-start items-center mt-14 font-bold"> |
| | | <!-- <div class="assets_item flex justify-start items-center mt-14 font-bold"> |
| | | <div class="icon" style="background-color: #f7b600;"></div> |
| | | <span class="ml-5 flex-1">{{ $t('交易账户') }}</span> |
| | | <span class="mr-5">{{ assetObj.contract }}</span> |
| | | <van-icon name="arrow" /> |
| | | </div> |
| | | </div> --> |
| | | </van-collapse-item> |
| | | </van-collapse> |
| | | |
| | |
| | | // { icon: 'todo-list-o', title: t('账变记录'), path: '/cryptos/accountChange' }, |
| | | { icon: new URL('../../assets/image/assets-center/valuation.png', import.meta.url), title: t('计价方式'), path: '/cryptos/exchangeRate' }, |
| | | // { icon: new URL('../../assets/image/assets-center/AddPaymentMethod.png', import.meta.url), title: t('AddPaymentMethod'), path: '/payMentMethod/list' }, |
| | | { icon: new URL('../../assets/image/assets-center/help.png', import.meta.url), title: t('帮助中心'), path: '/helpCenter' }, |
| | | // { icon: new URL('../../assets/image/assets-center/help.png', import.meta.url), title: t('帮助中心'), path: '/helpCenter' }, // 原帮助中心页面 |
| | | { icon: new URL('../../assets/image/assets-center/help.png', import.meta.url), title: t('帮助中心'), path: '/aboutUs?serviceTerm=27' }, // 现跳转关于我们通过后台编辑获取的页面 |
| | | ] |
| | | } |
| | | ] |
| | |
| | | <div class="order-top"> |
| | | <div class="title">{{ $t('orderGenerated') }}</div> |
| | | <div class="text mt-2">{{ $t('pleaseAt') }} <span>{{ msgTitle }}</span> {{ $t('paymentSeller') |
| | | }}{{ payInfo.direction == 'recharge' ? $t('买家') : $t('卖家') }}</div> |
| | | }}{{ payInfo.direction == 'recharge' ? $t('买家') : $t('卖家') }}</div> |
| | | <div class="customer mt-5" @click="onRoute"> |
| | | <div class="flex"> |
| | | <div class="flex flex-1 service"> |
| | |
| | | <div class="flex step mt-5"> |
| | | <img class="success mr-1" src="@/assets/image/order/success.png" alt="" /> |
| | | <!-- {{ $t('Payconfidence') }} --> |
| | | {{ payInfo.direction == 'recharge' ? $t('买家') : $t('卖家') }} {{ payInfo.currency }} {{ $t('已存入交易所账户,请放心付款') }} |
| | | {{ payInfo.direction == 'recharge' ? $t('买家') : $t('卖家') }} {{ payInfo.currency }} {{ $t('已存入交易所账户,请放心付款') |
| | | }} |
| | | </div> |
| | | <div class="flex mt-5"> |
| | | <div class="flex step flex-1"> |
| | |
| | | showToast |
| | | } from 'vant'; |
| | | import useClipboard from "vue-clipboard3"; |
| | | import { customerServiceUrl } from '@/config' |
| | | import { useI18n } from "vue-i18n"; |
| | | const { toClipboard } = useClipboard(); |
| | | const { t } = useI18n() |
| | |
| | | const showPopup = ref(false) |
| | | const orderNo = ref(null) |
| | | const onRoute = () => { |
| | | // router.push('/order/success') |
| | | router.push('/customerService?order_no=' + orderNo.value) |
| | | if (customerServiceUrl) { |
| | | window.location.href = customerServiceUrl; |
| | | } else { |
| | | router.push('/customerService?order_no=' + orderNo.value) |
| | | } |
| | | } |
| | | const onClickLeft = () => { |
| | | // router.push('/exchange/channel-in') |
| | |
| | | </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" /> |
| | |
| | | <img v-show="agree" src="../../assets/image/login/prot2.png" alt="" /> |
| | | <img v-show="!agree" src="../../assets/image/login/prot1.png" alt="" /> |
| | | </i> |
| | | {{ $t('readAgree') }}<span class="colorMain" @click="router.push('/TermsOfService')">{{ |
| | | <!-- {{ $t('readAgree') }}<span class="colorMain" @click="router.push('/TermsOfService')">{{ |
| | | $t('serviceConf') |
| | | }}</span> --> |
| | | {{ $t('readAgree') }}<span class="colorMain" @click="router.push('/aboutUs?serviceTerm=23')">{{ |
| | | $t('serviceConf') |
| | | }}</span> |
| | | </div> |
| | |
| | | name: t('resetFundsPassword'), |
| | | type: 0 |
| | | }, |
| | | { |
| | | name: t('resetPhone'), |
| | | type: 1 |
| | | }, |
| | | { |
| | | name: t('resetEmail'), |
| | | type: 2 |
| | | }, |
| | | { |
| | | name: t('resetGoogleVerify'), |
| | | type: 3 |
| | | }, |
| | | // { |
| | | // name: t('resetPhone'), |
| | | // type: 1 |
| | | // }, |
| | | // { |
| | | // name: t('resetEmail'), |
| | | // type: 2 |
| | | // }, |
| | | // { |
| | | // name: t('resetGoogleVerify'), |
| | | // type: 3 |
| | | // }, |
| | | ]) |
| | | const frontFile = ref([]) |
| | | const reverseFile = ref([]) |
| | |
| | | <template> |
| | | <div class="safety"> |
| | | <fx-header > |
| | | <fx-header> |
| | | </fx-header> |
| | | <div class="content"> |
| | | <div class="title textColor">{{ $t('safe') }}</div> |
| | |
| | | { |
| | | name: t('manualReset'), |
| | | url: "/resetVerify?type=0" |
| | | } |
| | | }, |
| | | { |
| | | name: `${t('resetPhone')}/${t('resetEmail')}`, |
| | | url: "/resetPhoneEmail" |
| | | }, |
| | | ]) |
| | | |
| | | onMounted(() => { |
| | |
| | | // background-color: $mainBgColor; |
| | | } |
| | | |
| | | :deep(.van-grid-item__content){ |
| | | :deep(.van-grid-item__content) { |
| | | // background: $main2_background !important; |
| | | color: $text_color; |
| | | } |
| New file |
| | |
| | | <template> |
| | | <div class="register"> |
| | | <div class="top flex justify-between items-center"> |
| | | <img src="../../assets/image/icon-close.png" alt="" @click="router.go(-1)"> |
| | | <div @click="onRoute('/customerService')">{{ $t('onLineService') }}</div> |
| | | </div> |
| | | <div class="title textColor">{{ $t('重置') }}</div> |
| | | <div class="flex re-tab"> |
| | | <!-- <div class="textColor1" :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)">{{ |
| | | $t('account') |
| | | }}</div> --> |
| | | <div class="textColor1" :class="activeIndex == 1 ? 'active' : ''" @click="changeIndex(1)"> |
| | | {{ $t('email') }} |
| | | </div> |
| | | <div class="textColor1" :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)"> |
| | | {{ $t('phoneNum') }} |
| | | </div> |
| | | </div> |
| | | <ExInput :label="getRegType(activeIndex, true)" :placeholderText="getRegType(activeIndex, false)" |
| | | v-model="username" :area="isArea" :dialCode="dialCode" @selectArea="onSelectArea" :icon="icon" /> |
| | | |
| | | <ExInput :label="$t('repassword')" :placeholderText="$t('请输入')" v-model="password" |
| | | typeText="password" /> |
| | | <!-- <ExInput :label="$t('repassword')" :placeholderText="$t('surePassword')" v-model="repassword" |
| | | typeText="password" /> --> |
| | | <ExInput :label="$t('fundsPassword')" :placeholderText="$t('请输入')" v-model="safeword" typeText="password" |
| | | v-if="activeIndex === 1 || activeIndex === 2" /> |
| | | <div class="inputCom" v-if="activeIndex === 1 || activeIndex === 2"> |
| | | <p class="label textColor">{{ $t('验证码') }}</p> |
| | | <div class="iptbox inputBackground"> |
| | | <input class="inputBackground textColor" type="text" :placeholder="$t('entryVerifyCode')" |
| | | v-model="verifyCode"> |
| | | <span v-if="type !== 3" @click="senCode">{{ $t('sendVerifyCode') }} |
| | | <template v-if="time">({{ time }})s</template> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- <ExInput :label="$t('金融机构代码')" :placeholderText="$t('请输入')" v-model="invitCode" :clearBtn="false" /> --> |
| | | |
| | | <div class="protocol textColor"> |
| | | <i @click="agreeProt"> |
| | | <img v-show="agree" src="../../assets/image/login/prot2.png" alt="" /> |
| | | <img v-show="!agree" src="../../assets/image/login/prot1.png" alt="" /> |
| | | </i> |
| | | <!-- {{ $t('readAgree') }}<span class="colorMain" @click="router.push('/TermsOfService')">{{ |
| | | $t('serviceConf') |
| | | }}</span> --> |
| | | {{ $t('readAgree') }}<span class="colorMain" @click="router.push('/aboutUs?serviceTerm=23')">{{ |
| | | $t('serviceConf') |
| | | }}</span> |
| | | </div> |
| | | <van-button class="w-full" style="margin-top:10px;" type="primary" @click="register">{{ $t('confirm') }} |
| | | </van-button> |
| | | <!-- <div class="noTips textColor">{{ $t('hasAccount') }}<span class="colorMain" @click="router.push('/login')"> |
| | | {{ $t('goLogin') }}</span> |
| | | </div> --> |
| | | <nationality-list ref='controlChildRef' :title="$t('selectArea')" @getName="getName"></nationality-list> |
| | | |
| | | <Vcode :imgs="[img1, img2]" :show="show" @success="onSuccess" :canvasHeight="200" @fail="onFail" |
| | | @close="show = false;" sliderText='' :successText="$t('vertifyPass')" :failText="$t('vertifuFail')" /> |
| | | |
| | | <div>{{ msg }}</div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import ExInput from "@/components/ex-input/index.vue"; |
| | | import { _registerUser, _sendVerifyCode } from "@/service/login.api"; |
| | | import { _bindEmailRegister, _registerEorP } from "@/service/user.api.js"; |
| | | import { useUserStore } from '@/store/user'; |
| | | import { GET_USERINFO } from '@/store/types.store' |
| | | import nationalityList from '../authentication/components/nationalityList.vue' |
| | | import Vcode from "vue3-puzzle-vcode"; |
| | | import img1 from "@/assets/image/slider/1.png"; |
| | | import img2 from "@/assets/image/slider/2.png"; |
| | | import { getStorage } from '@/utils/index' |
| | | import { useI18n } from 'vue-i18n' |
| | | import { customerServiceUrl } from "@/config"; |
| | | import { useRouter } from 'vue-router'; |
| | | import { ref, onMounted, reactive, onUnmounted } from 'vue'; |
| | | import { showToast } from "vant"; |
| | | import store from '@/store/store' |
| | | const customer_service_url = ref(customerServiceUrl) // 客服链接,有值的话就会跳转到客服外链 |
| | | const { t } = useI18n() |
| | | const router = useRouter() |
| | | const onRoute = (path) => { |
| | | if (path == 'back') { |
| | | router.go(-1) |
| | | } else { |
| | | if (path == '/customerService') { |
| | | if (customer_service_url.value) { |
| | | window.location.href = customer_service_url.value; |
| | | } else { |
| | | router.push(path) |
| | | } |
| | | } else { |
| | | router.push(path) |
| | | } |
| | | } |
| | | } |
| | | const userStore = useUserStore(); |
| | | |
| | | let show = ref(false) |
| | | const msg = ref('') |
| | | const type = ref(1) |
| | | const time = ref(0) |
| | | let agree = ref(false) |
| | | const username = ref('') |
| | | const password = ref('') |
| | | const repassword = ref('') |
| | | const verifyCode = ref('') |
| | | const safeword = ref('') |
| | | const fundPassword = ref('') |
| | | const refundPassword = ref('') |
| | | const activeIndex = ref(1) |
| | | const typeText = ref('password') |
| | | let isArea = ref(false) |
| | | let dialCode = ref(0) |
| | | let icon = ref('') |
| | | const state = reactive({ |
| | | timer: null |
| | | }) |
| | | |
| | | let invitCode = ref('') |
| | | onMounted(() => { |
| | | console.log(store) |
| | | let usercode = getStorage('usercode') |
| | | if (usercode) { |
| | | invitCode = usercode; |
| | | } |
| | | clearInterval(state.timer) |
| | | state.timer = null |
| | | }) |
| | | |
| | | onUnmounted(() => { |
| | | clearInterval(state.timer) |
| | | state.timer = null |
| | | }) |
| | | |
| | | const getRegType = (activeIndex, bFlag) => { |
| | | switch (activeIndex) { |
| | | case 0: |
| | | return bFlag ? t('account') : t('entryAccount'); |
| | | case 1: |
| | | return bFlag ? t('email') : t('entryEmail'); |
| | | case 2: |
| | | return bFlag ? t('phoneNum') : t('entryPhone'); |
| | | } |
| | | } |
| | | |
| | | const senCode = () => { |
| | | if (time.value > 0) { |
| | | return false |
| | | } |
| | | _sendVerifyCode({ |
| | | target: activeIndex.value === 1 ? username.value : dialCode.value + username.value, |
| | | }).then((res) => { |
| | | time.value = 30; |
| | | state.timer = setInterval(() => { |
| | | if (time.value > 0) { |
| | | time.value = time.value - 1 |
| | | } else { |
| | | time.value = 0; |
| | | clearInterval(state.timer) |
| | | state.timer = null |
| | | } |
| | | }, 1000); |
| | | }).catch((error) => { |
| | | showToast(t(error.msg)); |
| | | }); |
| | | } |
| | | |
| | | const onSuccess = () => { |
| | | console.log('onSuccess') |
| | | registerApi(); |
| | | show.value = false; |
| | | } |
| | | const onFail = () => { |
| | | msg.value = '' |
| | | } |
| | | const onRefresh = () => { |
| | | msg.value = '' |
| | | } |
| | | |
| | | const controlChildRef = ref(null) |
| | | const onSelectArea = () => { |
| | | controlChildRef.value.open(); |
| | | } |
| | | |
| | | const getName = (params) => { |
| | | icon.value = params.code; |
| | | dialCode.value = params.dialCode; |
| | | } |
| | | const agreeProt = () => { |
| | | agree.value = !agree.value |
| | | } |
| | | const register = () => { |
| | | console.log(activeIndex.value, 'activeIndex.value') |
| | | if (activeIndex.value == 0) { |
| | | if (username.value == '') { |
| | | showToast(t('entryAccount')); |
| | | return |
| | | } |
| | | if (username.value.length < 6 || username.value.length > 30) { |
| | | showToast(t('accountLength')); |
| | | return |
| | | } |
| | | } else if (activeIndex.value == 1) { |
| | | let match = username.value.search(/@/); |
| | | if (username.value == '' || match.value == -1) { |
| | | showToast(t('entryCorrectEmail')); |
| | | return |
| | | } |
| | | if (safeword.value == '') { |
| | | showToast(t('safewordTips')); |
| | | return |
| | | } |
| | | if (verifyCode.value.length < 6) { |
| | | showToast(t('entryVerifyTips')); |
| | | return |
| | | } |
| | | } else if (activeIndex.value == 2) { |
| | | if (!(/(^[1-9]\d*$)/.test(username.value))) { |
| | | showToast(t('entryPhone')); |
| | | return |
| | | } |
| | | if (username.value == '') { |
| | | showToast(t('entryPhone')); |
| | | return |
| | | } |
| | | } |
| | | if (password.value == '') { |
| | | showToast(t('entryPassword')); |
| | | return |
| | | } |
| | | if (password.value.length < 6) { |
| | | showToast(t('passwordTips')); |
| | | return |
| | | } |
| | | // if (repassword.value !== password.value) { |
| | | // showToast(t('noSamePassword')); |
| | | // return |
| | | // } |
| | | if (!agree.value) { |
| | | showToast(t('agreeServiceCond')); |
| | | return |
| | | } |
| | | show.value = true |
| | | } |
| | | const changeIndex = (index) => { |
| | | activeIndex.value = index; |
| | | if (index == 0 || index == 1) { |
| | | isArea.value = false |
| | | } else { |
| | | isArea.value = true |
| | | } |
| | | } |
| | | const registerApi = () => { |
| | | switch (activeIndex.value) { |
| | | case 0: |
| | | { |
| | | type.value = 3; |
| | | break; |
| | | } |
| | | case 1: |
| | | { |
| | | type.value = 2; |
| | | break; |
| | | } |
| | | case 2: |
| | | { |
| | | type.value = 1; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | _registerEorP({ |
| | | username: activeIndex.value === 1 ? username.value : dialCode.value + username.value, |
| | | password: password.value, |
| | | type: activeIndex.value === 1 ? '2' : '1', // 2邮箱,1手机 |
| | | verifcode: verifyCode.value, |
| | | safeword: safeword.value |
| | | }).then((res) => { |
| | | userStore[GET_USERINFO](res) |
| | | store.state.user.userInfo = res |
| | | // 其他操作?? |
| | | // router.push('/identity') |
| | | router.push('/login') |
| | | }) |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .activeBKClick { |
| | | &:active { |
| | | background: $tab_background; |
| | | opacity: 0.5; |
| | | } |
| | | } |
| | | |
| | | .activeClick { |
| | | &:active { |
| | | background: $mainbgWhiteColor; |
| | | opacity: 0.5; |
| | | } |
| | | } |
| | | |
| | | .register { |
| | | width: 100%; |
| | | box-sizing: border-box; |
| | | padding: 16px; |
| | | font-size: 13px; |
| | | background-color: $mainbgWhiteColor; |
| | | } |
| | | |
| | | .top { |
| | | padding-left: 9px; |
| | | padding-top: 9px; |
| | | |
| | | img { |
| | | width: 18px; |
| | | height: 18px; |
| | | } |
| | | } |
| | | |
| | | .title { |
| | | font-weight: 700; |
| | | font-size: 26px; |
| | | margin-top: 27px; |
| | | margin-bottom: 33px; |
| | | } |
| | | |
| | | .re-tab { |
| | | margin-bottom: 22px; |
| | | |
| | | div { |
| | | padding: 0 18px; |
| | | height: 34px; |
| | | line-height: 34px; |
| | | text-align: center; |
| | | border-radius: 4px; |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .active { |
| | | // background: $US_tabActice_background; |
| | | background: $bg_yellow; |
| | | // color: $color_main; |
| | | color: $text_color4; |
| | | } |
| | | } |
| | | |
| | | .forget { |
| | | color: $color_main; |
| | | font-size: 12px; |
| | | line-height: 14px; |
| | | } |
| | | |
| | | .noTips { |
| | | margin-top: 24px; |
| | | } |
| | | |
| | | .protocol { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 15px; |
| | | |
| | | i { |
| | | width: 15px; |
| | | height: 15px; |
| | | margin-right: 9px; |
| | | |
| | | img { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .iptbox { |
| | | height: 44px; |
| | | margin-top: 8px; |
| | | margin-bottom: 18px; |
| | | padding: 0 20px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | border-radius: 6px; |
| | | |
| | | input { |
| | | flex: 1; |
| | | height: 100%; |
| | | border: none; |
| | | } |
| | | |
| | | span { |
| | | color: $color_main; |
| | | } |
| | | } |
| | | </style> |