fea(bindBank): 绑定银行卡逻辑迁移,测试环境代理地址https

This commit is contained in:
woody 2025-09-04 13:43:56 +08:00
parent 23253f3712
commit 421ce7691e
5 changed files with 487 additions and 368 deletions

View File

@ -1,202 +1,230 @@
const http = uni.$u.http
// 钱包余额
export const getWalletBalance = (params) => http.get('/member/api/wallet/balance', {
params
})
export const getWalletBalance = params =>
http.get('/member/api/wallet/balance', {
params,
})
//提现账户
export const getPkBdAccountList = (params) => http.get('/system/api/account/pkBdAccountList', {
params
})
//提现账户
export const getPkBdAccountList = params =>
http.get('/system/api/account/pkBdAccountList', {
params,
})
//提现选择银行卡
export const getDefaultBank = (params) => http.get('/member/api/bank/default-bank', {
params
})
//校验是否绑定银行卡
export const checkIsbindBank = (params) => http.get('/member/api/bank/is-bind', {
params
})
export const getDefaultBank = params =>
http.get('/member/api/bank/default-bank', {
params,
})
//提现页面展示
export const getWidthdrawShow = (params) => http.get('/member/api/withdraw/show/add', {
params
})
export const getWidthdrawShow = params =>
http.get('/member/api/withdraw/show/add', {
params,
})
//确认提现
export const addWithdraw = (params) => http.post('/member/api/withdraw/add', params)
export const addWithdraw = params =>
http.post('/member/api/withdraw/add', params)
//提现明细列表
export const getWithdrawList = (params) => http.get('/member/api/withdraw/list-detail', {
params
})
export const getWithdrawList = params =>
http.get('/member/api/withdraw/list-detail', {
params,
})
//提现撤销
export const cancelWithdraw = (params) => http.get('/member/api/withdraw/cancel', {
params
})
export const cancelWithdraw = params =>
http.get('/member/api/withdraw/cancel', {
params,
})
//获取转账转出账户
export const getTransferAccount = (params) => http.get('/member/api/transfer/transfer-account', {
params
})
export const getTransferAccount = params =>
http.get('/member/api/transfer/transfer-account', {
params,
})
//根据用户编号查询用户姓名
export const getTransferChineseName = (params) => http.get('/member/api/transfer/chinese-name', {
params
})
export const getTransferChineseName = params =>
http.get('/member/api/transfer/chinese-name', {
params,
})
//查询选择账户可转账余额
export const getTransferMember = (params) => http.get('/member/api/transfer/member-balance', {
params
})
export const getTransferMember = params =>
http.get('/member/api/transfer/member-balance', {
params,
})
//确认转账
export const addTransfer = (params) => http.post('/member/api/transfer/add', params)
export const addTransfer = params =>
http.post('/member/api/transfer/add', params)
//钱包银行卡列表
export const getBankList = (params) => http.get('/member/api/bank/list', {
params
})
export const getBankList = params =>
http.get('/member/api/bank/list', {
params,
})
//解除绑定
export const removeBankBind = (params) => http.get('/member/api/bank/unbind-bank', {
params
})
export const removeBankBind = params =>
http.get('/member/api/bank/unbind-bank', {
params,
})
//获取银行验证码
export const getVerification = (params) => http.get('/member/api/sms/verification', {
params
})
export const getVerification = params =>
http.get('/member/api/sms/verification', {
params,
})
//绑定银行卡校验
export const verifyBankCard = (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 verifyBankCard = params =>
http.post('/member/api/bank/verify-bank-card', params)
//银行卡选择下拉选
export const getBankCardChoiceList = (params) => http.get('/system/api/bank/list', {
params
})
export const getBankCardChoiceList = params =>
http.get('/system/api/bank/list', {
params,
})
//钱包绑卡
export const bindWalletBankAdd = (params) => http.post('/member/api/bank/add', params)
export const bindWalletBankAdd = params =>
http.post('/member/api/bank/add', params)
// 交易明细
export const getTransactionDetails = (params) => http.post('/member/api/wallet/transaction-details?pageNum=' + params
.pageNum + "&pageSize=" + params.pageSize, params)
export const getTransactionDetails = params =>
http.post(
'/member/api/wallet/transaction-details?pageNum=' +
params.pageNum +
'&pageSize=' +
params.pageSize,
params
)
//交易类型下拉选
export const getTradeTypeList = (params) => http.get('/member/api/wallet/trade-type', {
params
})
export const getTradeTypeList = params =>
http.get('/member/api/wallet/trade-type', {
params,
})
//币种-账户类型下拉选
export const getEnumsAccountList = (params) => http.get('/system/api/account/pkBdAccountList', {
params
})
export const getEnumsAccountList = params =>
http.get('/system/api/account/pkBdAccountList', {
params,
})
//意见反馈类型
export const getFeedbackType = (params) => http.get('/system/pub/enums/feedback-type', {
params
})
export const getFeedbackType = params =>
http.get('/system/pub/enums/feedback-type', {
params,
})
//提交意见反馈列表
export const saveFeedBack = (params) => http.post('/system/api/feedback/save', params)
export const saveFeedBack = params =>
http.post('/system/api/feedback/save', params)
// 公告、站内信、意见反馈数
export const getNoticeCount = (params) => http.get('/system/api/notice/index-count', {
params
})
export const getNoticeCount = params =>
http.get('/system/api/notice/index-count', {
params,
})
// 公告站内信列表 公告1站内信2
export const getNoticeList = (params) => http.get('/system/api/notice/index-list', {
params
})
export const getNoticeList = params =>
http.get('/system/api/notice/index-list', {
params,
})
//意见列表
export const getFeedbackList = (params) => http.get('/system/api/feedback/index-list', {
params
})
export const getFeedbackList = params =>
http.get('/system/api/feedback/index-list', {
params,
})
//获取公告、站内信详情
export const getNoticeDetail = (params) => http.get('/system/api/notice/index-detail', {
params
})
export const getNoticeDetail = params =>
http.get('/system/api/notice/index-detail', {
params,
})
//二级密码校验
export const checkPwd = (params) => http.get('/member/api/recharge/check-pwd', {
params
})
export const checkPwd = params =>
http.get('/member/api/recharge/check-pwd', {
params,
})
//是否进行实名认证
export const getIfAuth = (params) => http.get('/member/api/authentication/is-auth', {
params
})
export const getIfAuth = params =>
http.get('/member/api/authentication/is-auth', {
params,
})
//证件类型
export const getCardType = (params) => http.get('/system/pub/enums/id-type', {
params
})
export const getCardType = params =>
http.get('/system/pub/enums/id-type', {
params,
})
//实名认证
export const addAuthentication = (params) => http.post('/member/api/authentication/add', params)
export const addAuthentication = params =>
http.post('/member/api/authentication/add', params)
//上传图片
export const getUploadUrl = (params) => http.post('/system/upload', params)
export const getUploadUrl = params => http.post('/system/upload', params)
//成长之路-等级
export const getGrowUpGrade = (params) => http.get('/member/api/member-footmark/grow-up-footmark-grade', {
params
})
export const getGrowUpGrade = params =>
http.get('/member/api/member-footmark/grow-up-footmark-grade', {
params,
})
//成长之路-奖衔
export const getGrowUpAwards = (params) => http.get('/member/api/member-footmark/grow-up-footmark-awards', {
params
})
export const getGrowUpAwards = params =>
http.get('/member/api/member-footmark/grow-up-footmark-awards', {
params,
})
//是否上传营业执照
export const getIsExist = (params) => http.get('/member/api/business/license/is-exist', {
params
})
export const getIsExist = params =>
http.get('/member/api/business/license/is-exist', {
params,
})
//上传营业执照
export const addLicense = (params) => http.post('/member/api/business/license/add', params)
export const addLicense = params =>
http.post('/member/api/business/license/add', params)
//营业执照详情
export const getLicenseDetail = (params) => http.get('/member/api/business/license/detail', {
params
})
export const getLicenseDetail = params =>
http.get('/member/api/business/license/detail', {
params,
})
//修改营业执照
export const updateLicense = (params) => http.post('/member/api/business/license/update', params)
export const updateLicense = params =>
http.post('/member/api/business/license/update', params)
//ocr
export const ocrIdCard = (params) => http.post('/member/api/authentication/invoke-idCard', params)
export const ocrIdCard = params =>
http.post('/member/api/authentication/invoke-idCard', params)
//ocrBack
export const ocrIdCardBack = (params) => http.post('/member/api/authentication/invoke-idCard-back', params)
export const ocrIdCardBack = params =>
http.post('/member/api/authentication/invoke-idCard-back', params)
//实名认证详情
export const authenticationDetails = (params) => http.get('/member/api/authentication/detail', {
params
})
export const authenticationDetails = params =>
http.get('/member/api/authentication/detail', {
params,
})
//实名认证详情续约用
export const agreementName = (params) => http.get('/member/api/authentication/agreement-real-name', {
params
})
export const agreementName = params =>
http.get('/member/api/authentication/agreement-real-name', {
params,
})
//设置默认银行卡
export const updateDefault = (params) => http.get('/member/api/bank/update-default', {
params
})
export const updateDefault = params =>
http.get('/member/api/bank/update-default', {
params,
})

View File

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

View File

@ -7,7 +7,7 @@
:rules="rules"
ref="uForm"
>
<!-- <u-form-item
<u-form-item
label-width="200rpx"
:label="'银行卡号'"
prop="cardNumber"
@ -24,7 +24,7 @@
<view v-else style="color: red" @click="goBindbank">
{{ '请先绑定银行卡' }}
</view>
</u-form-item> -->
</u-form-item>
<u-form-item
label-width="200rpx"
:label="`${'提现金额'}(${isLocaled()})`"
@ -134,7 +134,16 @@
<u-button class="subbtn" @click="submit">{{ '提现' }}</u-button>
</view>
<u-toast ref="uToast"></u-toast>
<u-modal
:show="unBindDefaultModal"
showCancelButton
@cancel="unBindDefaultModal = false"
cancelText="取消"
confirmText="确定"
@confirm="unBindDefaultConfirm"
>
请先绑定默认银行卡
</u-modal>
<!-- 提现引导弹窗 -->
<!-- <WithdrawalGuide
:show="showWithdrawalGuide"
@ -193,8 +202,9 @@ export default {
bankData: {},
widthDrwaData: {},
ifeye: false,
canbind: false,
canbind: true,
showWithdrawalGuide: false,
unBindDefaultModal: false,
}
},
watch: {
@ -205,7 +215,7 @@ export default {
url: '/pages/mine/balance/withdrawlDetail',
})
},
onLoad() {
onShow() {
this.getList()
},
methods: {
@ -233,18 +243,20 @@ export default {
}
})
bal.getDefaultBank().then(res => {
this.bankData = res.data
this.dataForm.pkBank = res.data.pkId
})
//
bal.checkIsbindBank().then(res => {
if (res.flag == 'Y') {
this.canbind = false
} else if (res.flag == 'N') {
this.canbind = true
if (res.data && Object.keys(res.data).length > 0) {
this.bankData = res.data
this.dataForm.pkBank = res.data.pkId
} else {
this.unBindDefaultModal = true
}
})
},
unBindDefaultConfirm() {
this.unBindDefaultModal = false
uni.navigateTo({
url: '/pages/mine/bindBank/index',
})
},
submit() {
this.$refs.uForm
.validate()
@ -257,7 +269,12 @@ export default {
})
setTimeout(() => {
uni.navigateBack()
}, 300)
}, 500)
//
// setTimeout(() => {
// this.showWithdrawalGuide = true
// }, 300)
}
})
})

View File

@ -7,21 +7,9 @@
:rules="rules"
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
borderBottom
required
label-width="200rpx"
:label="'银行名称'"
prop="bankName"
@ -40,6 +28,7 @@
<u-form-item
label-width="200rpx"
:label="'开户支行'"
required
prop="subBankName"
borderBottom
ref="item1"
@ -52,7 +41,22 @@
</u-form-item>
<u-form-item
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"
borderBottom
ref="item1"
@ -66,6 +70,7 @@
<u-form-item
label-width="200rpx"
:label="'证件号码'"
required
prop="idCard"
borderBottom
ref="item1"
@ -81,6 +86,7 @@
label-width="200rpx"
:label="'联系方式'"
prop="phone"
required
borderBottom
ref="item1"
>
@ -95,6 +101,7 @@
v-if="userInfo.pkCountry == 1 && cancode"
label-width="200rpx"
:label="'验证码'"
required
prop="verificationCode"
borderBottom
ref="item1"
@ -131,6 +138,13 @@
></u-picker>
</u--form>
</view>
<view class="tip-wrapper">
<view class="tip-content">
<view class="tip-text"
>银行卡号真实姓名证件号码联系方式请与银行预留信息保持一致</view
>
</view>
</view>
<view class="btnbox">
<u-button class="subbtn" @click="submit">{{ '确定' }}</u-button>
</view>
@ -221,18 +235,8 @@ export default {
onLoad() {
this.userInfo = uni.getStorageSync('User')
this.getList()
this.checkIfWhite()
},
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) {
this.tips = text
},
@ -295,9 +299,7 @@ export default {
.then(res => {
//
this.ifpass = true
this.bindBank()
return
if (this.userInfo.pkCountry == 1) {
if (this.cancode) {
ban
@ -374,5 +376,37 @@ export default {
border-radius: 38rpx;
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>

View File

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