From 0cf2a49d80c8d4ffba2df32f530f498a2c94458e Mon Sep 17 00:00:00 2001
From: 李凌 <344137771@qq.com>
Date: Fri, 12 Sep 2025 18:31:05 +0800
Subject: [PATCH] 1
---
src/components/Transform/mining-account/index.vue | 554 +++++++++++++++++++++++++++++-------------------------
1 files changed, 297 insertions(+), 257 deletions(-)
diff --git a/src/components/Transform/mining-account/index.vue b/src/components/Transform/mining-account/index.vue
index 09642e9..ab2af43 100644
--- a/src/components/Transform/mining-account/index.vue
+++ b/src/components/Transform/mining-account/index.vue
@@ -1,283 +1,323 @@
<template>
- <div id="cryptos">
- <div id="mining-account">
- <div style="position: relative" class="px-30 pb-104">
- <div class="account_card">
- <mining-exchange-input :title="$t('从')" :value1="form.volume" :actions="actions"
- @select="onSelect('symbol', $event)" @input="onInput" :type="1" @max="onMax" :coin="form.symbol"
- :coin1="form.symbol_to" :tips="[]" :iconImg1="form.iconImg1" :iconImg2="form.iconImg2"
- :available="`${amountAvailable} ${form.symbol.toUpperCase()}`" :showMax="true" />
- <!-- <div v-if="show" class="font-28 text-grey">
+ <div id="cryptos">
+ <div id="mining-account">
+ <div style="position: relative" class="px-30 pb-104">
+ <div class="account_card">
+ <mining-exchange-input :title="$t('从')" :value1="form.volume" :actions="actions"
+ @select="onSelect('symbol', $event)" @input="onInput" :type="1" @max="onMax" :coin="form.symbol"
+ :coin1="form.symbol_to" :tips="[]" :iconImg1="form.iconImg1" :iconImg2="form.iconImg2"
+ :available="`${amountAvailable} ${form.symbol.toUpperCase()}`" :showMax="true" />
+ <!-- <div v-if="show" class="font-28 text-grey">
{{ $t('可用数量') }}:
<span class="textColor">{{ amountAvailable }} {{ form.symbol.toUpperCase() }}</span>
</div> -->
- </div>
+ </div>
- <div class="flex justify-center convert-box">
- <img src="../../../assets/image/assets-center/convert-two.png" alt="" @click="onSwitch" />
- </div>
+ <div class="flex justify-center convert-box">
+ <img src="../../../assets/image/assets-center/convert-two.png" alt="" @click="onSwitch" />
+ </div>
- <div class="account_card">
- <mining-exchange-input :title="$t('至')" :value="form.volume ? (form.volume * form.rate).toFixed(5) : ''"
- :actions="actions" @select="onSelect('symbol_to', $event)" :disabled="true" :type="2" :coin="form.symbol"
- :coin1="form.symbol_to" :tips="[]" :showMax="false" :iconImg1="form.iconImg1" :iconImg2="form.iconImg2" />
- </div>
+ <div class="account_card">
+ <mining-exchange-input :title="$t('至')"
+ :value="form.volume ? (form.volume * form.rate).toFixed(5) : ''" :actions="actions"
+ @select="onSelect('symbol_to', $event)" :disabled="true" :type="2" :coin="form.symbol"
+ :coin1="form.symbol_to" :tips="[]" :showMax="false" :iconImg1="form.iconImg1"
+ :iconImg2="form.iconImg2" />
+ </div>
- <div class="exchange-btn w-full flex justify-center mt-116">
- <p class="h-100 btnMain mx-auto flex justify-center items-center text-white w-768" @click="onConfirm">
- {{ $t('询价') }}
- </p>
- </div>
- </div>
- </div>
- </div>
+ <div class="exchange-btn w-full flex justify-center mt-116">
+ <p class="h-100 btnMain mx-auto flex justify-center items-center text-white w-768"
+ @click="onConfirm">
+ {{ $t('询价') }}
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
</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
- },
- props: {
- show: {
- type: Boolean,
- default: false,
- },
- },
- 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())
+ 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,
+ },
+ },
+ 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())
- if (dataInfo) {
- res = dataInfo.usable
- } else {
- res = 0
- }
- return res
- },
- },
- data() {
- return {
- showPopup: false,
- activeRecord: 'exchange',
- valueTwo: 0,
- rate: 0,
- form: { // 闪兑
- symbol: 'ETH',
- symbol_to: 'USDT',
- volume: '',
- rate: 0,
- iconImg2: '',
- iconImg1: '',
- symbol_ex: '',
- symbol_to_ex: '',
+ if (dataInfo) {
+ res = dataInfo.usable
+ } else {
+ res = 0
+ }
+ return res
+ },
+ },
+ data() {
+ return {
+ showPopup: false,
+ activeRecord: 'exchange',
+ valueTwo: 0,
+ rate: 0,
+ form: { // 闪兑
+ symbol: 'USDC',
+ symbol_to: 'USDT',
+ volume: '',
+ rate: 0,
+ 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,
- }
- },
- created() {
- let obj = {
- symbolType: 'cryptos'
- }
- _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
- this.form.symbol_to = this.actions[2].symbol_data
- this.form.symbol = this.actions[0].symbol_data
+ },
+ 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.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
- this.form.iconImg1 = this.actions[0].symbol_data
- this.form.iconImg2 = this.actions[2].symbol_data
+ })
+ },
+ 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() {
- this.form.symbol_ex = this.actions[0].symbol
- this.form.symbol_to_ex = this.actions[2].symbol
-
- })
- },
- 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 () {
-
- 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
-
- this.form.volume = ''
- 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
- }
- },
- beforeUnmount() {
- // console.log('beforeDestroy')
- this.clearInterval()
- }
-};
+ 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'] = 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
+ }
+ },
+ beforeUnmount() {
+ // console.log('beforeDestroy')
+ this.clearInterval()
+ }
+ };
</script>
<style scoped lang="scss">
-@import "@/assets/init.scss";
+ @import "@/assets/init.scss";
-#cryptos {
- .account_card {
- background: $inp-b !important;
- border-radius: 2.5rem;
- padding: 1.2rem 2.5rem;
+ #cryptos {
+ .account_card {
+ background: $inp-b !important;
+ border-radius: 2.5rem;
+ padding: 1.2rem 2.5rem;
- div {
- background: $inp-b !important;
- }
- }
+ div {
+ background: $inp-b !important;
+ }
+ }
- .exchange-btn {
- bottom: 48px;
- left: 0;
+ .exchange-btn {
+ bottom: 48px;
+ left: 0;
- font-size: 36px;
+ font-size: 36px;
- p {
- border-radius: 4rem;
- }
- }
+ p {
+ border-radius: 4rem;
+ }
+ }
- .active {
- color: $black;
+ .active {
+ color: $black;
- &:after {
- content: '';
- display: block;
- position: absolute;
- bottom: 0;
- width: 140px;
- height: 8px;
- background: $active_line;
- margin: 0 auto;
- }
- }
+ &: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%;
- }
- }
+ .convert-box {
+ background: $mainbgWhiteColor;
+ margin: -2rem auto;
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 6rem;
+ height: 6rem;
+ position: relative;
- .btnMain {
- background: linear-gradient(90deg, #2C64D4 0%, #38AEEA 100%);
- border-radius: 5px;
- font-weight: bold;
- }
-}
-</style>
+ img {
+ width: 50%;
+ height: 50%;
+ }
+ }
+
+ .btnMain {
+ background: linear-gradient(90deg, #2C64D4 0%, #38AEEA 100%);
+ border-radius: 5px;
+ font-weight: bold;
+ }
+ }
+</style>
\ No newline at end of file
--
Gitblit v1.9.3