338 lines
7.5 KiB
Vue
338 lines
7.5 KiB
Vue
<template>
|
||
<view class="container">
|
||
<!-- <image class="gpu-image" src="/static/gpu.png" mode="aspectFit"></image> -->
|
||
<view class="info-container">
|
||
<view class="info-row">
|
||
<text class="info-label">我的地址:</text>
|
||
<text class="info-value">{{ adressOptions(myAddress) }}</text>
|
||
<!-- <button class="copy-button" @tap="copyText(myAddress)">復製</button> -->
|
||
<image @click="copyText(myAddress)" src="/static/fuzhi.png"
|
||
style="width: 40rpx;height: 40rpx;margin-left: 10px;"></image>
|
||
</view>
|
||
<view class="info-row" v-if="userInfos.level > 0">
|
||
<text class="info-label">邀請鏈接:</text>
|
||
<text class="info-value" style="line-height: 20rpx;height: 52rpx;">{{ inviteLink }}</text>
|
||
<button class="copy-button" @tap="copyText(inviteLink)">復製</button>
|
||
</view>
|
||
<view class="info-row" v-if="userInfos.level == 0">
|
||
<text class="info-label">邀請鏈接:</text>
|
||
<text class="info-value">遊客不能推薦,請先升級為KOC及以上</text>
|
||
</view>
|
||
<view class="info-row">
|
||
<text class="info-label">邀請人:</text>
|
||
<input :disabled="isDisabled" v-model="initAdress" style="color: #fff;flex: 1;" />
|
||
</view>
|
||
</view>
|
||
<!-- 邀請好友 -->
|
||
<button v-if="!isDisabled" @tap="confirmInviter" class="invite-button" style="background-color: #4F5AD7;">綁定好友</button>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import {
|
||
_userInfos,
|
||
_bindpid,
|
||
_myparent
|
||
} from "@/request/api.js"
|
||
export default {
|
||
data() {
|
||
return {
|
||
initAdress: "",
|
||
isDisabled: false,
|
||
parentUser: {},
|
||
myAddress: '',
|
||
inviteLink: '',
|
||
userInfos: {}
|
||
}
|
||
},
|
||
onShow() {
|
||
this.getUserInfos();
|
||
this.getMyparent();
|
||
},
|
||
methods: {
|
||
adressOptions(data) {
|
||
let start = data.substring(0, 12);
|
||
let end = data.substring(data.length - 4);
|
||
let middle = "…";
|
||
let finalString = start + middle + end;
|
||
return finalString
|
||
},
|
||
async getMyparent() {
|
||
let res = await _myparent();
|
||
if (res.code === 1) {
|
||
this.parentUser = res.data;
|
||
this.parentUser.wallet = JSON.parse(res.data.wallet.replace(/"/g, "\""));
|
||
this.initAdress = this.parentUser.wallet.address;
|
||
if (this.parentUser.wallet) {
|
||
this.isDisabled = true;
|
||
}
|
||
}
|
||
},
|
||
async confirmInviter() {
|
||
if (this.initAdress == '') {
|
||
return uni.showToast({
|
||
title: '請輸入邀請人的錢包地址。',
|
||
icon: "none"
|
||
})
|
||
}
|
||
if (this.initAdress.length > 1 && this.initAdress.length < 20) {
|
||
return uni.showToast({
|
||
title: '請輸入大於20位的錢包地址',
|
||
icon: "none"
|
||
})
|
||
}
|
||
let account = {
|
||
pwallet: this.initAdress,
|
||
pcode: "",
|
||
}
|
||
let res = await _bindpid(account);
|
||
if (res.code === 1) {
|
||
uni.showToast({
|
||
title: "綁定成功!",
|
||
icon: "success",
|
||
duration: 1000
|
||
})
|
||
this.getUserInfos();
|
||
this.getMyparent();
|
||
} else {
|
||
uni.showToast({
|
||
title: res.msg,
|
||
icon: "none",
|
||
duration: 1000
|
||
})
|
||
}
|
||
},
|
||
async getUserInfos() {
|
||
let res = await _userInfos();
|
||
if (res.code === 1) {
|
||
this.userInfos = res.data.userinfo;
|
||
this.myAddress = res.data.userinfo.wallet.address;
|
||
this.inviteLink = `
|
||
https://onlif.klinygm.com/h5/#/pages/login/forget?pwallet=${this.myAddress}
|
||
`
|
||
}
|
||
},
|
||
inviteFriend() {
|
||
// 實現邀請好友的邏輯
|
||
console.log('邀請好友')
|
||
},
|
||
copyText(text) {
|
||
uni.setClipboardData({
|
||
data: text,
|
||
success: () => {
|
||
uni.showToast({
|
||
title: '複製成功',
|
||
icon: 'success'
|
||
})
|
||
}
|
||
})
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style>
|
||
.container {
|
||
min-height: 100vh;
|
||
padding: 20px;
|
||
box-sizing: border-box;
|
||
background: linear-gradient(to bottom, #000033, #51599b);
|
||
}
|
||
|
||
.gpu-image {
|
||
width: 200px;
|
||
height: 200px;
|
||
margin-bottom: 30px;
|
||
}
|
||
|
||
.invite-button,
|
||
.confirm-button {
|
||
width: 80%;
|
||
height: 50px;
|
||
border-radius: 25px;
|
||
background-color: grey;
|
||
color: #fff;
|
||
font-size: 18px;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
margin-bottom: 20px;
|
||
position: fixed;
|
||
top: 80%;
|
||
left: 10%;
|
||
}
|
||
|
||
.info-container {
|
||
width: 100%;
|
||
margin-bottom: 20px;
|
||
}
|
||
|
||
.info-row {
|
||
display: flex;
|
||
align-items: center;
|
||
margin-bottom: 20px;
|
||
/* background-color: rgba(255, 255, 255, 0.1); */
|
||
background-color: #393C84;
|
||
border-radius: 10px;
|
||
padding: 10px;
|
||
height: 60rpx;
|
||
}
|
||
|
||
.info-label {
|
||
color: #e0e0e0;
|
||
margin-right: 10px;
|
||
}
|
||
|
||
.info-value {
|
||
color: white;
|
||
flex: 1;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.copy-button {
|
||
background-color: #4CAF50;
|
||
color: white;
|
||
padding: 5px 10px;
|
||
border-radius: 5px;
|
||
font-size: 14px;
|
||
}
|
||
|
||
.inviterbot {
|
||
margin-top: 120rpx;
|
||
display: flex;
|
||
|
||
.bindd {
|
||
width: 220rpx;
|
||
height: 100rpx;
|
||
background-color: #4F5AD7;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
border-radius: 30rpx;
|
||
color: #fff;
|
||
margin-left: 20rpx;
|
||
}
|
||
}
|
||
|
||
.inviter-info {
|
||
width: 100%;
|
||
/* background-color: rgba(255, 255, 255, 0.1); */
|
||
background-color: #393C84;
|
||
border-radius: 10px;
|
||
padding: 10px;
|
||
display: flex;
|
||
align-items: center;
|
||
height: 100rpx;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.modal {
|
||
position: fixed;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
top: 0;
|
||
background-color: rgba(0, 0, 0, 0.6);
|
||
display: flex;
|
||
align-items: flex-end;
|
||
z-index: 999;
|
||
}
|
||
|
||
.modal-content {
|
||
background-color: #b6b5c8;
|
||
border-radius: 20px 20px 0 0;
|
||
padding: 20px;
|
||
width: 100%;
|
||
animation: slideUp 0.3s ease-out;
|
||
box-shadow: 0 -4px 10px rgba(0, 0, 0, 0.1);
|
||
}
|
||
|
||
@keyframes slideUp {
|
||
from {
|
||
transform: translateY(100%);
|
||
}
|
||
|
||
to {
|
||
transform: translateY(0);
|
||
}
|
||
}
|
||
|
||
.modal-header {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
margin-bottom: 20px;
|
||
}
|
||
|
||
.modal-title {
|
||
font-size: 20px;
|
||
font-weight: bold;
|
||
color: #333;
|
||
}
|
||
|
||
.modal-close {
|
||
font-size: 24px;
|
||
color: #999;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.modal-body {
|
||
margin-bottom: 20px;
|
||
}
|
||
|
||
.modal-item {
|
||
display: flex;
|
||
margin-bottom: 15px;
|
||
padding-bottom: 10px;
|
||
border-bottom: 1px solid #f0f0f0;
|
||
}
|
||
|
||
.modal-label {
|
||
color: #666;
|
||
font-size: 14px;
|
||
margin-right: 20rpx;
|
||
}
|
||
|
||
.modal-value {
|
||
font-weight: bold;
|
||
color: #333;
|
||
font-size: 14px;
|
||
word-break: break-all;
|
||
}
|
||
|
||
.modal-footer {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
}
|
||
|
||
.modal-button {
|
||
width: 48%;
|
||
height: 44px;
|
||
border-radius: 22px;
|
||
font-size: 16px;
|
||
font-weight: bold;
|
||
border: none;
|
||
cursor: pointer;
|
||
transition: all 0.3s ease;
|
||
}
|
||
|
||
.modal-button.cancel {
|
||
background-color: #f0f0f0;
|
||
color: #333;
|
||
}
|
||
|
||
.modal-button.cancel:hover {
|
||
background-color: #e0e0e0;
|
||
}
|
||
|
||
.modal-button.confirm {
|
||
background-color: #4CAF50;
|
||
color: white;
|
||
}
|
||
|
||
.modal-button.confirm:hover {
|
||
background-color: #45a049;
|
||
}
|
||
</style> |