feat: 前端全量更新 - 含所有本次需求

- 移除秒合约页面及UI
- 合约页Tab改为Position Held/Transaction Record
- 存款/提款/转账页增加BTC/ETH
- 资产页重构(用户信息+盈亏+多语言)
- 注册页改版(匹配新设计稿)
- 日文全面翻译+首页菜单多语言
- 代理专属注册链接支持(?code=)
- 10个locale文件同步更新
This commit is contained in:
li
2026-03-30 20:14:20 +08:00
commit 5f40e4e1b5
605 changed files with 154871 additions and 0 deletions
+200
View File
@@ -0,0 +1,200 @@
<template>
<view :style="'background-color: '+theme.bg+';color: '+theme.text" style="height: 100vh;">
<!-- 头部 -->
<myNav :title="i18n.newWord.mytitle4"></myNav>
<!-- 身体 -->
<view class="width-750">
<view class="feilvbox">
<text class="font-30 color-white medium-font">{{i18n.newWord.allfree}}</text>
<text class="font-46 color-white medium-font">{{my_fl}}</text>
</view>
<view class="padding-w-30">
<!-- apt手续费 -->
<view class="listBox">
<text class="font-30">{{i18n.mine.safety.apt}}{{apt_free}}%</text>
<view class="flex align-center">
<u-switch @change="changeApy_pay" v-model="checked" :loading="loading"></u-switch>
</view>
</view>
<!-- 分割 -->
<view class="height-2" :style="'background-color: '+theme.fu_bg"></view>
<view class="padding-c-24">
<view class="font-30 medium-font">{{i18n.newWord.freetil1}}</view>
<view class="padding-t-8 line-height-32" v-html="">
<text class="font-24 medium-font">{{i18n.newWord.freetxt}}</text>
</view>
<view class="margin-t-20">
<view class="flex">
<view class="huibox flex-1">
<text class="medium-font">{{i18n.newWord.freetime}}</text>
</view>
<view v-for="(item,index) in year_feilv" :key="index" class="huibox flex-1">
<text class="medium-font">{{item.title}}</text>
</view>
</view>
<view class="flex">
<view class="huibox flex-1">
<text class="medium-font">{{i18n.newWord.discount}}</text>
</view>
<view v-for="(item,index) in year_feilv" :key="index" class="baibox flex-1" :style="'background-color: '+theme.fu_bg+';color: '+theme.fu_text">
<text class="nummedium-font">{{item.price}}</text>
</view>
</view>
</view>
</view>
</view>
<view class="margin-t-12 padding-c-24 padding-w-30">
<view class="font-30 medium-font">{{i18n.newWord.freetil2}}</view>
<view class="margin-t-20 flex">
<view class="flex-1 flex direction-column">
<view class="huibox">
<text class="medium-font">{{i18n.newWord.freeprice}}</text>
</view>
<view v-for="(item,index) in zy_feilv" :key="index" class="baibox" :style="'background-color: '+theme.fu_bg+';color: '+theme.fu_text">
<text class="nummedium-font">{{item.num}}</text>
</view>
</view>
<view class="flex-1 flex direction-column">
<view class="huibox">
<text class="medium-font">{{i18n.newWord.deductible}}</text>
</view>
<view v-for="(item,index) in zy_feilv" :key="index" class="baibox" :style="'background-color: '+theme.fu_bg+';color: '+theme.fu_text">
<text class="nummedium-font">{{item.price}}</text>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
apy_pay: 0, //是否开启apt 0否 1是
apt_free: 0,
checked: false,
loading: false,
// 中间变量,避免在watch中多次回调,造成无限循环
controlStatus: false,
my_fl: '',
year_feilv: [],
zy_feilv: [],
theme: '',
}
},
computed: {
i18n() {
return this.$t('message');
}
},
onShow() {
if (uni.getStorageSync("theme") == "dark") {
this.theme = this.$store.state.darkTheme
} else {
this.theme = this.$store.state.lightTheme
}
this.getInfo()
this.getfeilv_con()
},
methods: {
changeApy_pay(e) {
// 等于false,意味着用户手动关闭了switch
if (this.controlStatus == true) return
this.controlStatus = true
// 重新打开switch,并让它处于加载中的状态
this.loading = true;
// 模拟向后端发起请求
this.getRestultFromServer();
},
getRestultFromServer() {
this.post('/my/set_apt').then(res => {
console.log('开启关闭apt手续费交易', res)
this.loading = false;
if (res.code == 1) {
// 后端允许用户关闭switch,改变checked状态,结束loading状态
} else {
// 后端出问题 不允许用户关闭switch,设置checked为true,结束loading状态
this.checked = !this.checked;
}
setTimeout(() => {
this.controlStatus = false
}, 1000)
})
},
getInfo() {
this.post('/my/security').then(res => {
// console.log('安全中心', res)
if (res.code == 1) {
this.apt_free = res.data.apt_free
if (res.data.apy_pay == 1) {
this.checked = true
} else {
this.checked = false
}
}
})
},
getfeilv_con() {
this.post('/my/feilv_con').then(res => {
console.log('费率详情', res)
if (res.code == 1) {
this.my_fl = res.data.my_fl
this.year_feilv = res.data.year_feilv
this.zy_feilv = res.data.zy_feilv
}
})
}
}
}
</script>
<style lang="scss">
.feilvbox {
width: 750rpx;
height: 110rpx;
background: linear-gradient(276deg, #34AEFF 0%, #4B8DFF 100%);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 30rpx;
}
.listBox {
width: 100%;
height: 96rpx;
// background-color: #FFFFFF;
display: flex;
align-items: center;
justify-content: space-between;
}
.huibox {
// width: 115rpx;
height: 72rpx;
// background: rgba(241, 244, 248, 0.5);
border: 1rpx solid #ECECEC;
display: flex;
align-items: center;
justify-content: center;
font-size: 24rpx;
// color: #333333;
}
.baibox {
// width: 115rpx;
height: 72rpx;
// background: rgb(255, 255, 255);
border: 1rpx solid #ECECEC;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
// color: #333333;
}
</style>