2025-08-06 20:25:41 +08:00
|
|
|
|
<template>
|
|
|
|
|
|
<view class="rwa_withdrawal">
|
2025-09-08 12:52:42 +08:00
|
|
|
|
<Header leftTitle="行权" left-path-type="navigateTo" left-path="/pages/rwa_package/rwa/rwa" rightTitle="记录"
|
2025-08-06 20:25:41 +08:00
|
|
|
|
rightPath="/pages/rwa_package/rwa_withdrawal_log/rwa_withdrawal_log?back=withdrawal" rightPathType="navigateTo" />
|
|
|
|
|
|
<view class="rwa_withdrawal_content">
|
|
|
|
|
|
<view class="_content">
|
|
|
|
|
|
<view class="_content_usdt">
|
|
|
|
|
|
<view>{{ categotyObj.name || 'USDT' }}</view>
|
|
|
|
|
|
<view>{{ categotyObj.curAmount || 0 }}</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="_content_item">
|
2025-09-08 12:52:42 +08:00
|
|
|
|
<view class="_content_item_title">行权金额</view>
|
|
|
|
|
|
<up-input placeholder="请输入行权金额" border="surround" v-model="form.amount" :customStyle="inputCss"></up-input>
|
|
|
|
|
|
<view class="_content_item_msg">当前可行权余额 {{ categotyObj.curAmount || 0 }} {{ categotyObj.name || 'USDT' }}
|
2025-08-06 20:25:41 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="_content_item" @click="accountShowCheck(true)">
|
2025-09-08 12:52:42 +08:00
|
|
|
|
<view class="_content_item_title">行权账户</view>
|
2025-08-06 20:25:41 +08:00
|
|
|
|
<view class="_content_item_account">
|
|
|
|
|
|
<view v-if="accountName">{{ accountName }}</view>
|
2025-09-08 12:52:42 +08:00
|
|
|
|
<view v-else style="color: #30313363;">请选择行权账户</view>
|
2025-08-06 20:25:41 +08:00
|
|
|
|
<up-image src="/static/common/right.png" width="20" height="20" bgColor="#f1f6ff00" />
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="_content_item">
|
|
|
|
|
|
<view class="_content_item_title">交易密码<text class="_content_item_setting_pwd"
|
2025-09-09 18:22:27 +08:00
|
|
|
|
@click="jumpSettingPwd">《股权交割同意书》</text></view>
|
2025-08-06 20:25:41 +08:00
|
|
|
|
<up-input placeholder="请输入交易密码" border="surround" v-model="form.password" :customStyle="inputCss"></up-input>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="_content_item">
|
|
|
|
|
|
<view class="_content_item_title">备注</view>
|
|
|
|
|
|
<up-input placeholder="请输入备注(可选)" border="surround" v-model="form.remark" :customStyle="inputCss"></up-input>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="add_but_css" @click="addWithdrawal">
|
|
|
|
|
|
提交
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
2025-09-09 18:22:27 +08:00
|
|
|
|
<DownPopup :show="tipsShow"
|
2025-09-09 20:27:48 +08:00
|
|
|
|
title="股权交割协议"
|
|
|
|
|
|
:contentText="text"
|
|
|
|
|
|
articleTitle="股权交割协议"
|
|
|
|
|
|
ok="我已知晓"
|
|
|
|
|
|
@cancel="tipsShow = false"
|
|
|
|
|
|
@ok="tipsShow = false"
|
2025-09-09 18:22:27 +08:00
|
|
|
|
></DownPopup>
|
2025-08-06 20:25:41 +08:00
|
|
|
|
<up-picker :show="accountShow" :columns="accountOption" keyName="account" itemHeight="34" @confirm="accountConfirm"
|
|
|
|
|
|
:loading="accountLoading" @close="accountShowCheck(false)" @cancel="accountShowCheck(false)"></up-picker>
|
|
|
|
|
|
<up-toast ref="uToastRef"></up-toast>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
import Header from '@/components/header.vue';
|
|
|
|
|
|
import { getSupportBank } from '@/api/common.js';
|
|
|
|
|
|
import { getAcctBalance, exchTransfer, getExchUsers } from '@/api/finance.js';
|
2025-09-09 18:22:27 +08:00
|
|
|
|
import DownPopup from '@/components/common/down-popup.vue'
|
2025-08-06 20:25:41 +08:00
|
|
|
|
export default {
|
2025-09-09 18:22:27 +08:00
|
|
|
|
components: { Header,DownPopup },
|
2025-08-06 20:25:41 +08:00
|
|
|
|
data() {
|
|
|
|
|
|
return {
|
|
|
|
|
|
categotyObj: {},// 可提现金额
|
|
|
|
|
|
inputCss: {
|
|
|
|
|
|
"height": '80rpx',
|
|
|
|
|
|
"background": "#F5F5F5",
|
|
|
|
|
|
"border-radius": "20rpx",
|
|
|
|
|
|
"border": "0rpx",
|
|
|
|
|
|
"padding-left": "16px",
|
|
|
|
|
|
},
|
|
|
|
|
|
form: {
|
|
|
|
|
|
category: "vcoin",
|
|
|
|
|
|
amount: '',
|
|
|
|
|
|
password: '',
|
2025-09-09 20:27:48 +08:00
|
|
|
|
acctIdtipsShow: '',
|
2025-08-06 20:25:41 +08:00
|
|
|
|
remark: '',
|
|
|
|
|
|
},
|
|
|
|
|
|
accountName: null,
|
|
|
|
|
|
accountShow: false,
|
|
|
|
|
|
accountOption: [],
|
|
|
|
|
|
accountLoading: false,
|
2025-09-09 20:27:48 +08:00
|
|
|
|
tipsShow:false,
|
|
|
|
|
|
text:`甲方(委托人):信任桥用户
|
|
|
|
|
|
乙方(受托人): 信任桥(深圳)网络科技有限公司
|
|
|
|
|
|
统一社会信用代码:91440300MAD3XHDP7C
|
|
|
|
|
|
鉴于条款
|
|
|
|
|
|
1. 甲乙双方已签署《消费型合伙人合作协议》《分红权代持协议》及《承诺书》(以下统称“原协议”),甲方通过购买TB信任桥商城产品取得分红权代持资格。
|
|
|
|
|
|
2. 为规范甲方对“TBC”(TrustBridge Coin,信任桥数字权益凭证)的行权行为,明确双方权利义务,现就甲方将TBC转移至交易所变现事宜达成补充约定。
|
|
|
|
|
|
第一条 定义与行权规则
|
|
|
|
|
|
1. TBC行权变现:指甲方向乙方申请将其持有的TBC通过非关联交易所进行行权的行为。
|
|
|
|
|
|
2. 自动失效条款:
|
|
|
|
|
|
若甲方将TBC转移至非关联交易所进行行权变现,视为甲方单方终止原协议项下所有权利义务。
|
|
|
|
|
|
甲方行权变现后,立即丧失以下权益:
|
|
|
|
|
|
(1)TB信任桥商城产品分红权;
|
|
|
|
|
|
(2)所有未兑现的分红收益;
|
|
|
|
|
|
第二条 协议终止与责任划分
|
|
|
|
|
|
1. 协议终止:
|
|
|
|
|
|
甲方触发行权变现条件后,原协议、《分红权代持协议》及《承诺书》自动终止,双方权利义务关系终结。
|
|
|
|
|
|
乙方有权立即冻结甲方账户,停止后续分红发放。
|
|
|
|
|
|
2. 责任承担:
|
|
|
|
|
|
甲方承诺行权变现行为合法合规,若因行权行为导致乙方或关联方遭受行政处罚、声誉损失或第三方索赔,甲方应承担全部赔偿责任。
|
|
|
|
|
|
乙方对甲方行权后的资金流向不承担监管责任。
|
|
|
|
|
|
第三条 特别提示与风险告知
|
|
|
|
|
|
1. 风险警示:
|
|
|
|
|
|
TBC行权变现可能涉及市场波动、汇率风险及合规风险,甲方应自行承担全部后果。
|
|
|
|
|
|
乙方不对TBC的流通性、价值稳定性作出任何承诺。
|
|
|
|
|
|
2. 合规要求:
|
|
|
|
|
|
甲方承诺行权变现资金用途合法,不得用于非法活动或洗钱行为。
|
|
|
|
|
|
若监管部门要求追溯资金来源或用途,甲方应全力配合并提供证明材料。
|
|
|
|
|
|
第四条 生效条件
|
|
|
|
|
|
1. 本补充协议自甲方点击确认后生效,与原协议具有同等法律效力。
|
|
|
|
|
|
2. 本协议未尽事宜,以原协议约定为准;与原协议冲突的,以本协议为准。`
|
2025-08-06 20:25:41 +08:00
|
|
|
|
};
|
|
|
|
|
|
},
|
|
|
|
|
|
onShow() {
|
|
|
|
|
|
this.getAcctBalance();
|
|
|
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
|
|
|
// 查询余额
|
|
|
|
|
|
async getAcctBalance() {
|
|
|
|
|
|
const resp = await getAcctBalance();
|
|
|
|
|
|
let data = {};
|
|
|
|
|
|
if (resp && resp.bizcode === 100) {
|
|
|
|
|
|
if (resp.data) {
|
|
|
|
|
|
resp.data.map(item => {
|
|
|
|
|
|
// 交易币
|
|
|
|
|
|
if (item.categoty === "vcoin") {
|
|
|
|
|
|
data = item;
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
this.categotyObj = data;
|
|
|
|
|
|
},
|
|
|
|
|
|
async addWithdrawal() {
|
|
|
|
|
|
const params = this.form;
|
|
|
|
|
|
if (!params.amount) {
|
|
|
|
|
|
this.$refs.uToastRef.show({
|
|
|
|
|
|
type: 'error',
|
2025-09-08 12:52:42 +08:00
|
|
|
|
message: "请输入行权金额",
|
2025-08-06 20:25:41 +08:00
|
|
|
|
});
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!params.acctId) {
|
|
|
|
|
|
this.$refs.uToastRef.show({
|
|
|
|
|
|
type: 'error',
|
2025-09-08 12:52:42 +08:00
|
|
|
|
message: "请选择行权账户",
|
2025-08-06 20:25:41 +08:00
|
|
|
|
});
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!params.password) {
|
|
|
|
|
|
this.$refs.uToastRef.show({
|
|
|
|
|
|
type: 'error',
|
|
|
|
|
|
message: "请输入交易密码",
|
|
|
|
|
|
});
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
console.log("params", params);
|
|
|
|
|
|
const resp = await exchTransfer(params);
|
|
|
|
|
|
if (resp && resp.bizcode === 100) {
|
|
|
|
|
|
this.$refs.uToastRef.show({
|
|
|
|
|
|
type: 'success',
|
|
|
|
|
|
message: "提交成功",
|
|
|
|
|
|
});
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
|
url: '/pages/rwa_package/rwa/rwa',
|
|
|
|
|
|
})
|
|
|
|
|
|
}, 2000)
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
// 选择账户的弹框
|
|
|
|
|
|
async accountShowCheck(status) {
|
|
|
|
|
|
if (status) {
|
|
|
|
|
|
this.accountLoading = true;
|
|
|
|
|
|
const params = {
|
|
|
|
|
|
page: 1,
|
|
|
|
|
|
pageSize: 99,
|
|
|
|
|
|
}
|
|
|
|
|
|
const resp = await getExchUsers(params);
|
|
|
|
|
|
if (resp && resp.bizcode === 100) {
|
|
|
|
|
|
this.accountOption = [resp.data.entitys] || [];
|
|
|
|
|
|
}
|
|
|
|
|
|
this.accountLoading = false;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
this.accountOption = [[]];
|
|
|
|
|
|
}
|
|
|
|
|
|
this.accountShow = status;
|
|
|
|
|
|
},
|
|
|
|
|
|
// 提交
|
|
|
|
|
|
accountConfirm(e) {
|
|
|
|
|
|
const {
|
|
|
|
|
|
columnIndex,
|
|
|
|
|
|
value,
|
|
|
|
|
|
values,
|
|
|
|
|
|
index,
|
|
|
|
|
|
} = e;
|
|
|
|
|
|
if (!value || value.length === 0) {
|
|
|
|
|
|
this.$refs.uToastRef.show({
|
|
|
|
|
|
type: 'error',
|
|
|
|
|
|
message: "请先选择账户",
|
|
|
|
|
|
});
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
const data = value[0];
|
|
|
|
|
|
this.form.acctId = data.id;
|
|
|
|
|
|
this.accountName = data.account;
|
|
|
|
|
|
this.accountShowCheck(false);
|
|
|
|
|
|
},
|
|
|
|
|
|
// 设置交易密码
|
|
|
|
|
|
jumpSettingPwd() {
|
2025-09-09 18:22:27 +08:00
|
|
|
|
this.tipsShow = true;
|
|
|
|
|
|
// uni.navigateTo({
|
|
|
|
|
|
// url: '/pages/mine_package/mine_transaction_password/mine_transaction_password',
|
|
|
|
|
|
// })
|
2025-08-06 20:25:41 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
|
|
.rwa_withdrawal {
|
|
|
|
|
|
background: #F5F5F5;
|
|
|
|
|
|
|
|
|
|
|
|
.rwa_withdrawal_content {
|
|
|
|
|
|
padding: 20rpx;
|
|
|
|
|
|
height: calc(100vh - 198rpx);
|
|
|
|
|
|
|
|
|
|
|
|
._content {
|
|
|
|
|
|
padding: 30rpx;
|
|
|
|
|
|
background: #FFFFFF;
|
|
|
|
|
|
border-radius: 24rpx;
|
|
|
|
|
|
margin-bottom: 60rpx;
|
|
|
|
|
|
|
|
|
|
|
|
._content_usdt {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
font-size: 30rpx;
|
|
|
|
|
|
color: #333333;
|
|
|
|
|
|
border-bottom: 2rpx solid #EEEEEE;
|
|
|
|
|
|
padding: 0 0 20rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
._content_item {
|
|
|
|
|
|
margin-top: 30rpx;
|
|
|
|
|
|
|
|
|
|
|
|
._content_item_title {
|
|
|
|
|
|
margin-bottom: 20rpx;
|
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
font-size: 30rpx;
|
|
|
|
|
|
color: #333333;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
._content_item_setting_pwd {
|
|
|
|
|
|
color: $app-zt-color;
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
text-decoration: underline;
|
|
|
|
|
|
font-size: 26rpx;
|
|
|
|
|
|
margin-left: 10rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
._content_item_msg {
|
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
|
color: #808080;
|
|
|
|
|
|
margin-top: 16rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
._content_item_account {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
background: #F8F8F8;
|
|
|
|
|
|
border-radius: 20rpx;
|
|
|
|
|
|
padding: 30rpx 20rpx;
|
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
|
color: #333333;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|