3
0
Fork 0

Compare commits

..

No commits in common. "737d39e3d14a77174d2897301b94a0bd4b822484" and "50798c937640d28687620222833ed54370ff34f3" have entirely different histories.

7 changed files with 331 additions and 461 deletions

View File

@ -77,7 +77,11 @@
<!-- 普通列表数据 --> <!-- 普通列表数据 -->
<view v-if="normalList.length > 0" class="normal-list"> <view v-if="normalList.length > 0" class="normal-list">
<view class="list-content"> <view class="list-content">
<view v-for="item in normalList" :key="item.id" class="list-item"> <view
v-for="(item, index) in normalList"
:key="item.id"
class="list-item"
>
<!-- <view class="item-index" :class="getRankClass(index + 1)">{{ <!-- <view class="item-index" :class="getRankClass(index + 1)">{{
index + 1 index + 1
}}</view> --> }}</view> -->
@ -128,22 +132,14 @@
></u-loading-icon> ></u-loading-icon>
<text class="loading-text">加载中...</text> <text class="loading-text">加载中...</text>
</view> </view>
</view>
</view>
<!-- 空状态 - 基于total为0判断 --> <!-- 空状态 -->
<view v-if="!loading && total === 0" class="empty-state-container"> <view
<view class="empty-state"> v-if="!loading && normalList.length === 0 && !specialData"
<view class="empty-icon"> class="empty-state"
<u-icon name="file-text" color="#d0d7de" size="60"></u-icon>
</view>
<text class="empty-title">暂无业绩数据</text>
<text class="empty-desc"
>{{ whatYear }}{{ whatMounth }}月暂时没有业绩分布数据</text
> >
<view class="empty-action" @tap="refresh"> <view class="empty-icon">📊</view>
<u-icon name="reload" color="#005bac" size="16"></u-icon> <text class="empty-text">暂无业绩数据</text>
<text class="refresh-text">点击刷新</text>
</view> </view>
</view> </view>
</view> </view>
@ -172,8 +168,6 @@ export default {
yjTypeList: [], yjTypeList: [],
yearShow: false, yearShow: false,
whatYear: '', whatYear: '',
currentYear: new Date().getFullYear(), //
currentMonth: new Date().getMonth() + 1, //
selYearList: [ selYearList: [
{ {
value: 0, value: 0,
@ -184,7 +178,56 @@ export default {
label: new Date().getFullYear(), label: new Date().getFullYear(),
}, },
], ],
mounthList: [], // mounthList: [
{
value: '01',
label: 1 + '月',
},
{
value: '02',
label: 2 + '月',
},
{
value: '03',
label: 3 + '月',
},
{
value: '04',
label: 4 + '月',
},
{
value: '05',
label: 5 + '月',
},
{
value: '06',
label: 6 + '月',
},
{
value: '07',
label: 7 + '月',
},
{
value: '08',
label: 8 + '月',
},
{
value: '09',
label: 9 + '月',
},
{
value: '10',
label: 10 + '月',
},
{
value: '11',
label: 11 + '月',
},
{
value: '12',
label: 12 + '月',
},
],
// //
specialData: null, // specialData: null, //
@ -202,47 +245,19 @@ export default {
}, },
methods: { methods: {
changeYear(e) { changeYear(e) {
const selectedYear = this.selYearList[e.detail.value].label this.whatYear = this.selYearList[e.detail.value].label
this.whatYear = selectedYear
//
this.generateMonthList(selectedYear)
//
if (selectedYear === this.currentYear) {
const currentMonthNum = parseInt(this.whatMounth)
if (currentMonthNum > this.currentMonth) {
this.whatMounth = this.currentMonth.toString().padStart(2, '0')
}
}
this.refresh() this.refresh()
}, },
bindPickerChange(e) { bindPickerChange(e) {
// 使value this.whatMounth = e.detail.value
this.whatMounth = this.mounthList[e.detail.value].value
this.refresh() this.refresh()
}, },
// / // /
initDate() { initDate() {
this.whatMounth = this.currentMonth.toString().padStart(2, '0') const month = new Date().getMonth() + 1
this.whatYear = this.currentYear this.whatMounth = month.toString().padStart(2, '0')
// this.whatYear = new Date().getFullYear()
this.generateMonthList(this.currentYear)
},
//
generateMonthList(year) {
const maxMonth = year === this.currentYear ? this.currentMonth : 12
this.mounthList = []
for (let i = 1; i <= maxMonth; i++) {
this.mounthList.push({
value: i.toString().padStart(2, '0'),
label: i + '月',
})
}
}, },
// //
@ -332,7 +347,7 @@ export default {
// //
.date-selector-container { .date-selector-container {
padding: 10rpx 20rpx 10rpx; padding: 20rpx;
} }
.date-selector-full { .date-selector-full {
@ -426,7 +441,7 @@ export default {
/* 业绩分布列表样式 */ /* 业绩分布列表样式 */
.performance-list-container { .performance-list-container {
padding: 10rpx 20rpx 0; padding: 20rpx;
padding-bottom: 60rpx; padding-bottom: 60rpx;
background-color: #f5f7fa; background-color: #f5f7fa;
min-height: 100vh; min-height: 100vh;
@ -659,79 +674,20 @@ export default {
font-size: 20rpx; font-size: 20rpx;
} }
/* 空状态容器样式 */
.empty-state-container {
background: #ffffff;
border-radius: 16rpx;
margin: 0;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.05);
}
.empty-state { .empty-state {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
padding: 100rpx 40rpx 80rpx; padding: 80rpx 40rpx;
gap: 20rpx; gap: 20rpx;
} }
.empty-icon { .empty-icon {
margin-bottom: 16rpx; font-size: 80rpx;
opacity: 0.6; opacity: 0.5;
animation: float 3s ease-in-out infinite;
} }
.empty-title {
color: #333333;
font-size: 28rpx;
font-weight: 600;
margin-bottom: 8rpx;
}
.empty-desc {
color: #666666;
font-size: 24rpx;
text-align: center;
line-height: 1.5;
margin-bottom: 16rpx;
}
.empty-action {
display: flex;
align-items: center;
justify-content: center;
gap: 8rpx;
padding: 12rpx 24rpx;
background: rgba(0, 91, 172, 0.1);
border-radius: 20rpx;
border: 1rpx solid rgba(0, 91, 172, 0.2);
transition: all 0.3s ease;
}
.empty-action:active {
background: rgba(0, 91, 172, 0.15);
transform: scale(0.98);
}
.refresh-text {
color: #005bac;
font-size: 22rpx;
font-weight: 500;
}
/* 浮动动画 */
@keyframes float {
0%,
100% {
transform: translateY(0);
}
50% {
transform: translateY(-8rpx);
}
}
/* 旧的空状态样式保留(以防其他地方使用) */
.empty-text { .empty-text {
color: #999999; color: #999999;
font-size: 24rpx; font-size: 24rpx;

View File

@ -18,6 +18,12 @@ export const getDefaultBank = params =>
params, params,
}) })
//校验是否绑定银行卡
export const checkIsbindBank = params =>
http.get('/member/api/bank/is-bind', {
params,
})
//提现页面展示 //提现页面展示
export const getWidthdrawShow = params => export const getWidthdrawShow = params =>
http.get('/member/api/withdraw/show/add', { http.get('/member/api/withdraw/show/add', {
@ -84,6 +90,12 @@ export const getVerification = params =>
export const verifyBankCard = params => export const verifyBankCard = params =>
http.post('/member/api/bank/verify-bank-card', params) http.post('/member/api/bank/verify-bank-card', params)
//是否配置白名单 白名单不进行银行卡四要素校验
export const checkIfWhite = params =>
http.get('/member/api/bank/is-white-list', {
params,
})
//银行卡选择下拉选 //银行卡选择下拉选
export const getBankCardChoiceList = params => export const getBankCardChoiceList = params =>
http.get('/system/api/bank/list', { http.get('/system/api/bank/list', {

View File

@ -19,7 +19,7 @@ module.exports = vm => {
//#ifdef DEV_SERVER //#ifdef DEV_SERVER
console.log('DEV_SERVER') console.log('DEV_SERVER')
config.baseURL = 'https://t-bl.beida777.com/prod-api' config.baseURL = 'http://192.168.0.86:8080'
//#endif //#endif
//#ifdef QA_SERVER //#ifdef QA_SERVER

View File

@ -232,14 +232,13 @@ export default {
url: item.path, url: item.path,
}) })
} else if (res.code == 200 && res.flag == 'N') { } else if (res.code == 200 && res.flag == 'N') {
this.smShow = true
uni.showToast({ uni.showToast({
title: '请先进行实名认证', title: '请先进行实名认证',
}) })
setTimeout(() => { uni.navigateTo({
uni.navigateTo({ url: '/pages/selfService/realName/realName',
url: '/pages/selfService/realName/realName', })
})
}, 300)
} }
}) })
} }

View File

@ -134,16 +134,7 @@
<u-button class="subbtn" @click="submit">{{ '提现' }}</u-button> <u-button class="subbtn" @click="submit">{{ '提现' }}</u-button>
</view> </view>
<u-toast ref="uToast"></u-toast> <u-toast ref="uToast"></u-toast>
<u-modal
:show="unBindDefaultModal"
showCancelButton
@cancel="unBindDefaultModal = false"
cancelText="取消"
confirmText="确定"
@confirm="unBindDefaultConfirm"
>
请先绑定默认银行卡
</u-modal>
<!-- 提现引导弹窗 --> <!-- 提现引导弹窗 -->
<!-- <WithdrawalGuide <!-- <WithdrawalGuide
:show="showWithdrawalGuide" :show="showWithdrawalGuide"
@ -202,9 +193,8 @@ export default {
bankData: {}, bankData: {},
widthDrwaData: {}, widthDrwaData: {},
ifeye: false, ifeye: false,
canbind: true, canbind: false,
showWithdrawalGuide: false, showWithdrawalGuide: false,
unBindDefaultModal: false,
} }
}, },
watch: { watch: {
@ -215,7 +205,7 @@ export default {
url: '/pages/mine/balance/withdrawlDetail', url: '/pages/mine/balance/withdrawlDetail',
}) })
}, },
onShow() { onLoad() {
this.getList() this.getList()
}, },
methods: { methods: {
@ -243,26 +233,16 @@ export default {
} }
}) })
bal.getDefaultBank().then(res => { bal.getDefaultBank().then(res => {
if (res.data && Object.keys(res.data).length > 0) { this.bankData = res.data
this.bankData = res.data this.dataForm.pkBank = res.data.pkId
this.dataForm.pkBank = res.data.pkId
} else {
this.unBindDefaultModal = true
}
}) })
// //
// bal.checkIsbindBank().then(res => { bal.checkIsbindBank().then(res => {
// if (res.flag == 'Y') { if (res.flag == 'Y') {
// this.canbind = false this.canbind = false
// } else if (res.flag == 'N') { } else if (res.flag == 'N') {
// this.canbind = true this.canbind = true
// } }
// })
},
unBindDefaultConfirm() {
this.unBindDefaultModal = false
uni.navigateTo({
url: '/pages/mine/bindBank/index',
}) })
}, },
submit() { submit() {
@ -272,13 +252,10 @@ export default {
bal.addWithdraw(this.dataForm).then(res => { bal.addWithdraw(this.dataForm).then(res => {
if (res.code == 200) { if (res.code == 200) {
this.$refs.uToast.show({ this.$refs.uToast.show({
message: res.msg || '提现成功', message: res.msg,
type: 'success', type: 'success',
}) })
setTimeout(() => { uni.navigateBack()
uni.navigateBack()
}, 500)
// //
// setTimeout(() => { // setTimeout(() => {
// this.showWithdrawalGuide = true // this.showWithdrawalGuide = true

View File

@ -7,9 +7,21 @@
:rules="rules" :rules="rules"
ref="uForm" ref="uForm"
> >
<u-form-item
label-width="200rpx"
:label="'银行卡号'"
borderBottom
prop="cardNumber"
ref="item1"
>
<u--input
v-model="dataForm.cardNumber"
disabledColor="#F5F5F5;"
border="none"
></u--input>
</u-form-item>
<u-form-item <u-form-item
borderBottom borderBottom
required
label-width="200rpx" label-width="200rpx"
:label="'银行名称'" :label="'银行名称'"
prop="bankName" prop="bankName"
@ -28,7 +40,6 @@
<u-form-item <u-form-item
label-width="200rpx" label-width="200rpx"
:label="'开户支行'" :label="'开户支行'"
required
prop="subBankName" prop="subBankName"
borderBottom borderBottom
ref="item1" ref="item1"
@ -41,22 +52,7 @@
</u-form-item> </u-form-item>
<u-form-item <u-form-item
label-width="200rpx" label-width="200rpx"
:label="'银行卡号'" :label="'真实姓名'"
required
borderBottom
prop="cardNumber"
ref="item1"
>
<u--input
v-model="dataForm.cardNumber"
disabledColor="#F5F5F5;"
border="none"
></u--input>
</u-form-item>
<u-form-item
label-width="200rpx"
label="开户姓名"
required
prop="accountName" prop="accountName"
borderBottom borderBottom
ref="item1" ref="item1"
@ -70,7 +66,6 @@
<u-form-item <u-form-item
label-width="200rpx" label-width="200rpx"
:label="'证件号码'" :label="'证件号码'"
required
prop="idCard" prop="idCard"
borderBottom borderBottom
ref="item1" ref="item1"
@ -86,7 +81,6 @@
label-width="200rpx" label-width="200rpx"
:label="'联系方式'" :label="'联系方式'"
prop="phone" prop="phone"
required
borderBottom borderBottom
ref="item1" ref="item1"
> >
@ -101,7 +95,6 @@
v-if="userInfo.pkCountry == 1 && cancode" v-if="userInfo.pkCountry == 1 && cancode"
label-width="200rpx" label-width="200rpx"
:label="'验证码'" :label="'验证码'"
required
prop="verificationCode" prop="verificationCode"
borderBottom borderBottom
ref="item1" ref="item1"
@ -138,13 +131,6 @@
></u-picker> ></u-picker>
</u--form> </u--form>
</view> </view>
<view class="tip-wrapper">
<view class="tip-content">
<view class="tip-text"
>银行卡号真实姓名证件号码联系方式请与银行预留信息保持一致</view
>
</view>
</view>
<view class="btnbox"> <view class="btnbox">
<u-button class="subbtn" @click="submit">{{ '确定' }}</u-button> <u-button class="subbtn" @click="submit">{{ '确定' }}</u-button>
</view> </view>
@ -235,8 +221,18 @@ export default {
onLoad() { onLoad() {
this.userInfo = uni.getStorageSync('User') this.userInfo = uni.getStorageSync('User')
this.getList() this.getList()
this.checkIfWhite()
}, },
methods: { methods: {
checkIfWhite() {
ban.checkIfWhite().then(res => {
if (res.code == 200 && res.flag == 'N') {
this.cancode = true
} else if (res.code == 200 && res.flag == 'Y') {
this.cancode = false
}
})
},
codeChange(text) { codeChange(text) {
this.tips = text this.tips = text
}, },
@ -299,7 +295,9 @@ export default {
.then(res => { .then(res => {
// //
this.ifpass = true this.ifpass = true
this.bindBank()
return
if (this.userInfo.pkCountry == 1) { if (this.userInfo.pkCountry == 1) {
if (this.cancode) { if (this.cancode) {
ban ban
@ -376,37 +374,5 @@ export default {
border-radius: 38rpx; border-radius: 38rpx;
color: #fff; color: #fff;
} }
.tip-wrapper {
margin: 20rpx 20rpx 0 20rpx;
.tip-content {
display: flex;
align-items: flex-start;
background: linear-gradient(135deg, #fff3e0 0%, #fff8f0 100%);
border: 2rpx solid #ffb74d;
border-radius: 16rpx;
padding: 20rpx 24rpx;
box-shadow: 0 4rpx 12rpx rgba(255, 183, 77, 0.1);
.tip-icon {
color: #ff9800;
font-size: 28rpx;
font-weight: bold;
margin-right: 16rpx;
margin-top: 2rpx;
flex-shrink: 0;
}
.tip-text {
flex: 1;
font-size: 24rpx;
line-height: 36rpx;
color: #e65100;
font-weight: 500;
letter-spacing: 0.5rpx;
}
}
}
} }
</style> </style>

View File

@ -1,265 +1,225 @@
<template> <template>
<view class="content"> <view class="content">
<view class="tablebox" v-if="tableData.length > 0"> <view class="tablebox" v-if="tableData.length > 0">
<view <view class="card" v-for="(item, index) in tableData"
class="card" :style="{ backgroundImage: 'url(' + item.backgroundImg + ')'}" :key="index">
v-for="(item, index) in tableData" <view class="cardtopflex">
:style="{ backgroundImage: 'url(' + item.backgroundImg + ')' }" <view class="cardtopflex2">
:key="index" <view class="imgbox"><img :src="item.logo" alt="" /></view>
> <view class="titlebox">
<view class="cardtopflex"> <view class="cardtitle">{{item.bankName}}</view>
<view class="cardtopflex2"> <view class="cardtitle2">{{'储蓄卡'}}</view>
<view class="imgbox"><img :src="item.logo" alt="" /></view> </view>
<view class="titlebox"> </view>
<view class="cardtitle">{{ item.bankName }}</view> <view class="flexs_1" v-if="item.defaultCard==1">
<view class="cardtitle2">{{ '储蓄卡' }}</view> <view class="qiu"></view>
</view> <view v-if="userInfo.pkCountry == 1">{{'默认'}}</view>
</view> <view v-else style="color: #000;font-weight: bold;" class="cardfooter">{{'默认'}}</view>
<view class="flexs_1" v-if="item.defaultCard == 1"> </view>
<view class="qiu"></view> <view class="flexs_1" v-else>
<view v-if="userInfo.pkCountry == 1">{{ '默认' }}</view>
<view
v-else
style="color: #000; font-weight: bold"
class="cardfooter"
>{{ '默认' }}</view
>
</view>
<view class="flexs_1" v-else>
<view
style="color: #fff; font-weight: bold; cursor: pointer"
@click="setDefault(item.pkId)"
class="cardfooter"
>{{ '设为默认' }}</view
>
</view>
</view>
<view class="cardNumber">{{ item.cardNumber }}</view>
<view
v-if="userInfo.pkCountry == 1"
class="cardfooter"
@click="removeBind(item)"
>
[{{ '解绑' }}]</view
>
<view
v-else
style="color: #000; font-weight: bold"
class="cardfooter"
@click="removeBind(item)"
>
[{{ '解绑' }}]</view
>
</view>
</view>
<u-modal
:showCancelButton="true"
@cancel="modalShow = false"
:content="'是否确认解绑银行卡'"
:show="modalShow"
@confirm="confirmRemove"
ref="uModal"
:asyncClose="true"
></u-modal>
<view class="footerbtn" @click="goAdd"> +{{ '添加银行卡' }} </view>
<u-modal <view style="color: #fff; font-weight: bold; cursor: pointer" @click="setDefault(item.pkId)"
:showCancelButton="true" class="cardfooter">{{'设为默认'}}</view>
@cancel="modalShow2 = false" </view>
content="当前解绑为默银行卡,请设置为另一张卡为默认银行卡" </view>
:show="modalShow2" <view class="cardNumber">{{ item.cardNumber }}</view>
@confirm="confirmRemove2" <view v-if="userInfo.pkCountry == 1" class="cardfooter" @click="removeBind(item)">
ref="uModal" [{{'解绑'}}]</view>
:asyncClose="true" <view v-else style="color: #000;font-weight: bold;" class="cardfooter" @click="removeBind(item)">
></u-modal> [{{'解绑'}}]</view>
<!-- <el-button class="footerbtn" @click="bindBank(true)">{{'绑定银行卡'}}</el-button> --> </view>
</view> </view>
<u-modal :showCancelButton="true" @cancel="modalShow=false" :content="'是否确认解绑银行卡'" :show="modalShow"
@confirm="confirmRemove" ref="uModal" :asyncClose="true"></u-modal>
<view class="footerbtn" @click="goAdd">
+{{'添加银行卡'}}
</view>
<u-modal :showCancelButton="true" @cancel="modalShow2=false" content="当前解绑为默银行卡,请设置为另一张卡为默认银行卡"
:show="modalShow2" @confirm="confirmRemove2" ref="uModal" :asyncClose="true"></u-modal>
<!-- <el-button class="footerbtn" @click="bindBank(true)">{{'绑定银行卡'}}</el-button> -->
</view>
</template> </template>
<script> <script>
import * as ban from '@/config/balance.js' import * as ban from "@/config/balance.js"
export default { export default {
data() { data() {
return { return {
tableData: [], tableData: [],
modalShow: false, modalShow: false,
modalShow2: false, modalShow2: false,
pkId: '', pkId: "",
userInfo: {}, userInfo: {}
} }
}, },
onLoad() { onLoad() {
this.userInfo = uni.getStorageSync('User') this.userInfo = uni.getStorageSync('User')
}, },
onShow() { onShow() {
this.getSearch() this.getSearch()
}, },
methods: { methods: {
setDefault(pkId) { setDefault(pkId) {
ban ban.updateDefault({
.updateDefault({ pkId: pkId
pkId: pkId, }).then((res) => {
}) if (res.code == 200) {
.then(res => { uni.$u.toast(res.msg)
if (res.code == 200) { this.getSearch();
uni.$u.toast(res.msg) } else {
this.getSearch() uni.$u.toast(res.msg)
} else { }
uni.$u.toast(res.msg) });
} },
}) goAdd() {
}, uni.navigateTo({
goAdd() { url: '/pages/mine/bindBank/bindBank'
uni.navigateTo({ })
url: '/pages/mine/bindBank/bindBank', },
}) removeBind(item) {
}, this.pkId = item.pkId
removeBind(item) { if (item.defaultCard == 1) {
this.pkId = item.pkId this.modalShow2 = true
if (item.defaultCard == 1) { } else {
this.modalShow2 = true this.modalShow = true
} else { }
this.modalShow = true
} },
}, confirmRemove2() {
confirmRemove2() { this.modalShow2 =false
this.modalShow2 = false this.modalShow = true
// this.modalShow = true },
}, //
// confirmRemove() {
confirmRemove() { ban.removeBankBind({
ban pkId: this.pkId
.removeBankBind({ }).then((res) => {
pkId: this.pkId, if (res.code == 200) {
}) uni.$u.toast(res.msg)
.then(res => { this.modalShow = false
if (res.code == 200) { this.getSearch();
uni.$u.toast(res.msg) } else {
this.modalShow = false uni.$u.toast(res.msg)
this.getSearch() this.modalShow = false
} else { }
uni.$u.toast(res.msg) });
this.modalShow = false },
} //
}) bindBank(val) {
}, // this.isAdd = true;
// // this.jdTl = val;
bindBank(val) { },
// this.isAdd = true; getSearch() {
// this.jdTl = val; ban.getBankList().then((res) => {
}, this.tableData = res.data;
getSearch() { });
ban.getBankList().then(res => { },
this.tableData = res.data }
}) }
},
},
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.content { .content {
background-color: #f9f9f9; background-color: #f9f9f9;
padding: 22rpx; padding: 22rpx;
.tablebox { .tablebox {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
.card { .card {
width: 100%; width: 100%;
background-color: rgba(170, 45, 42, 0.9); background-color: rgba(170, 45, 42, 0.9);
background-size: 100% 100%; background-size: 100% 100%;
border-radius: 20rpx; border-radius: 20rpx;
margin: 20rpx 0; margin: 20rpx 0;
padding: 28rpx 32rpx 40rpx 32rpx; padding: 28rpx 32rpx 40rpx 32rpx;
margin-top: 20rpx; margin-top: 20rpx;
.cardtopflex { .cardtopflex {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
.flexs_1 { .flexs_1 {
display: flex; display: flex;
align-items: center; align-items: center;
margin-right: 20rpx; margin-right: 20rpx;
color: #ffffff; color: #ffffff;
font-size: 24rpx; font-size: 24rpx;
.qiu { .qiu {
margin-right: 10rpx; margin-right: 10rpx;
width: 20rpx; width: 20rpx;
height: 20rpx; height: 20rpx;
border-radius: 50%; border-radius: 50%;
background: rgb(47, 236, 47); background: rgb(47, 236, 47);
} }
} }
.cardtopflex2 { .cardtopflex2 {
.imgbox { .imgbox {
margin-right: 20rpx; margin-right: 20rpx;
img { img {
width: 68rpx; width: 68rpx;
height: 68rpx; height: 68rpx;
} }
} }
.titlebox { .titlebox {
color: #ffffff; color: #ffffff;
text-align: left; text-align: left;
.cardtitle { .cardtitle {
font-size: 36rpx; font-size: 36rpx;
font-weight: 600; font-weight: 600;
} }
.cardtitle2 { .cardtitle2 {
font-size: 20rpx; font-size: 20rpx;
margin-top: 8rpx; margin-top: 8rpx;
font-weight: 400; font-weight: 400;
} }
} }
} }
}
.cardNumber { }
font-size: 32rpx;
font-family:
PingFang SC-Medium,
PingFang SC;
font-weight: 600;
color: #ffffff;
margin-top: 100rpx;
margin-left: 36rpx;
}
.cardfooter { .cardNumber {
text-align: right; font-size: 32rpx;
font-size: 24rpx; font-family: PingFang SC-Medium, PingFang SC;
font-family: font-weight: 600;
PingFang SC-Regular, color: #ffffff;
PingFang SC; margin-top: 100rpx;
font-weight: 400; margin-left: 36rpx;
color: #ffffff; }
margin-top: 24rpx;
cursor: pointer;
}
}
}
.footerbtn { .cardfooter {
display: flex; text-align: right;
align-items: center; font-size: 24rpx;
padding: 40rpx; font-family: PingFang SC-Regular, PingFang SC;
background: #ffffff; font-weight: 400;
font-size: 24rpx; color: #ffffff;
font-weight: 600; margin-top: 24rpx;
border-radius: 20rpx; cursor: pointer;
margin-top: 32rpx; }
width: 100%; }
} }
}
</style> .footerbtn {
display: flex;
align-items: center;
padding: 40rpx;
background: #ffffff;
font-size: 24rpx;
font-weight: 600;
border-radius: 20rpx;
margin-top: 32rpx;
width: 100%;
}
}
</style>