alipay-emulator/pages/other/bank/zsyh.vue

1179 lines
24 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="zsyh">
<view class="flexcontainer">
<view class="bg_header">
<view class="group_45764">
<view class="flexcontainer_3"
:style="{'background-color': data.navbar.bgColor ,height:$systemInfo.statusBarHeight+96+'rpx'}">
<view class="group_8" @click="back">
<image class="frame" src="/static/image/other/bank/zsyh/back.png" mode="aspectFit" />
</view>
<view class="group_7" @click="openEditDialog">
<view class="rectangle_18503"></view>
<text class="text_5">我的银行卡</text>
</view>
<view class="group_9">
<view class="rectangle_18503_1">
<image class="group_13980" src="/static/image/other/bank/zsyh/kf.png" mode="aspectFit" />
<view class="flexcontainer_4">
<view class="group_48144">
<text class="text_6">20</text>
</view>
<image class="group_13979" src="/static/image/other/bank/zsyh/more.png" mode="aspectFit" />
</view>
<view class="rectangle_23229"></view>
</view>
</view>
</view>
</view>
<view class="flexcontainer_5">
<view class="flexcontainer_6">
<view class="flexcontainer_7" @click="openEditDialog">
<text class="text_7">¥ {{data.form.balance}}</text>
<view class="group_48142">
<image class="path" src="/static/image/other/bank/zsyh/icon1.png" mode="aspectFit" />
</view>
</view>
<view class="flexcontainer_8">
<view class="group_48141" @click="data.isShow=true">
<text class="text_8">查看卡号</text>
</view>
<text class="text_9" @click="openEditDialog">**** {{data.form.cardNumber.substring(data.form.cardNumber.length-4)}}</text>
</view>
<text class="text_10">可用余额</text>
<text class="text_11" @click="openEditDialog">{{data.form.cardType}}</text>
</view>
<image class="div_9c80ece453e55d5cd3bbdcc7d0255f31" src="/static/image/other/bank/zsyh/zsyhImg.png"
mode="aspectFill" />
</view>
</view>
<view class="panel_card_info">
<view class="panel_card_info_bg">
<view class="flexcontainer_1">
<text class="text">卡片信息</text>
<text class="text_1">普卡</text>
</view>
<view class="flexcontainer_2">
<view>
<text class="text_2" @click="openEditDialog">{{data.form.bankName}}</text>
<image class="group_13981" src="/static/image/other/bank/zsyh/icon2.png" mode="aspectFit" />
</view>
<view>
<text class="text_3" @click="openEditDialog">{{data.form.alias||'设置别名'}}</text>
<image class="group_13982" src="/static/image/other/bank/zsyh/edit.png" mode="aspectFit" />
</view>
</view>
</view>
</view>
<view class="itemBox">
<view class="itemInfo">
<view class="">
<text class="title">快捷支付</text>
<image class="icon1" src="/static/image/other/bank/zsyh/youjian.png" mode="aspectFit" />
</view>
<view class="">
<image class="icon2" src="/static/image/other/bank/zsyh/zfb.png" mode="heightFix" />
<image class="icon2" src="/static/image/other/bank/zsyh/wx.png" mode="heightFix" />
<image class="icon2" src="/static/image/other/bank/zsyh/iosPay.png" mode="heightFix" />
<image class="icon3" src="/static/image/other/bank/zsyh/icon3.png" mode="heightFix" />
</view>
</view>
</view>
<view class="itemBox2">
<view class="itemInfo">
<view class="leftText">
{{data.month}}
</view>
<view class="title">
财富计划
</view>
<view class="dec">
当月暂无财富计划赶紧添加一个吧
</view>
<view class="dec2">
闲钱投资看看热议基金
<image src="/static/image/other/bank/zsyh/icon4.png" mode="widthFix"></image>
</view>
<image class="bImg" src="/static/image/other/bank/zsyh/bImg.png" mode="widthFix"></image>
</view>
</view>
<view class="echart">
<view class="title">
今日支出
</view>
<view class="dec" v-if="data.form?.chartData?.series[0]?.data.length>0">
¥{{data.form.chartData.series[0].data[data.form.chartData.series[0].data.length-1]}}
</view>
<view class="echartBox">
<qiun-data-charts type="column" :opts="data.opts" :chartData="data.form.chartData" />
</view>
<view class="bBox" v-show="data.form.chartData?.categories.length>0">
<view class="">
{{data.form.chartData.categories[0]}}
</view>
<view class="">
{{data.form.chartData.categories[data.form.chartData.categories.length-1]}}
</view>
</view>
</view>
<view class="record">
<view class="title">
转账记录
</view>
<view class="dec">
本月没有转账记录
</view>
<view class="btnBox">
<view class="btn">
去转帐
</view>
</view>
</view>
<view class="record">
<view class="title">
银行卡管理
</view>
<view @touchstart="handleTouchStart" @touchend="handleTouchEnd">
<image class="yhkgl" :src="selectedImage||'/static/image/other/bank/zsyh/yhkgl.png'" mode="widthFix"></image>
</view>
</view>
</view>
<view v-if="editDialog.show" class="editDialog">
<view class="editDialog_bg">
<view class="editDialog_header">
<text class="title">编辑银行卡</text>
<!-- <text class="close" @click="closeEditDialog">×</text> -->
</view>
<view class="editDialog_body">
<view class="formItem">
<text>余额</text>
<input v-model.number="editDialog.data.balance" type="number" />
</view>
<view class="formItem">
<text>户名</text>
<input v-model="editDialog.data.name" />
</view>
<view class="formItem">
<text>卡类型</text>
<input v-model="editDialog.data.cardType" />
</view>
<!-- ✅ 完整卡号 -->
<view class="formItem">
<text>卡号</text>
<input v-model="editDialog.data.cardNumber" />
</view>
<view class="formItem">
<text>开户行</text>
<input v-model="editDialog.data.bankName" />
</view>
<view class="formItem">
<text>别名</text>
<input v-model="editDialog.data.alias" />
</view>
<!-- ✅ 30天数据编辑 -->
<view class="chartEditor">
<text class="chartTitle">最近30天支出数据</text>
<view class="chartRowBox">
<view class="chartRow" v-for="(item, index) in editDialog.data.chartData.categories" :key="index">
<text class="day">{{ item }}</text>
<input type="number" v-model.number="editDialog.data.chartData.series[0].data[index]" />
</view>
</view>
</view>
</view>
<view class="popup-footer">
<view class="btn-cancel" @click="editDialog.show=false">取消</view>
<view class="btn-save" @click="saveEdit">保存</view>
</view>
</view>
</view>
<view class="dask" v-if="data.isShow">
<view class="info">
<image @click="data.isShow=false" src="/static/image/common/close.png" mode=""></image>
<view class="title">
卡号信息
</view>
<view class="dec">
: {{data.form.name}}
</view>
<view class="dec">
: {{addSpaceEveryFourChars(data.form.cardNumber)}}
</view>
<view class="dec">
开户行: {{data.form.bankName}}
</view>
<view class="btnbox">
<view class="btn">复制全部</view>
<view class="btn btns">仅复制卡号</view>
</view>
</view>
</view>
</view>
</template>
<script setup>
import {
ref,
reactive,
watch,
nextTick,
getCurrentInstance
} from "vue";
import {
onLoad,
onShow,
onReady,
onPullDownRefresh,
onReachBottom,
onPageScroll
} from "@dcloudio/uni-app";
const {
appContext,
proxy
} = getCurrentInstance();
const editDialog = reactive({
show: false,
data: {
balance: 123.51,
cardType: '储蓄卡(I类)',
cardNumber: '8155386535158511555',
bankName: '重庆上清寺支行',
alias: '普通卡',
name:'某某',
chartData: {} // ✅ 30天数据 [{date,value}]
}
});
let selectedImage=ref('')
const data = reactive({
isShow:false,
month : new Date().getMonth() + 1,
navbar: {
title: "微信",
bgColor: 'rgba(0,0,0,0)',
},
form: {
balance: 123.51,
cardType: '储蓄卡(I类)',
cardNumber: '8155386535158511555',
bankName: '重庆上清寺支行',
alias: '普通卡',
name:'某某',
chartData: {} // ✅ 30天数据 [{date,value}]
},
//您可以通过修改 config-ucharts.js 文件中下标为 ['column'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。
opts: {
color: ["#E17C52"],
padding: [0, 1, 0, 0],
enableScroll: false,
labelPosition: 'outside',
dataLabel: false,
legend: {
show: false
},
xAxis: {
disableGrid: true,
disabled: true,
calibration: true,
axisLine: false
},
yAxis: {
disableGrid: true,
showTitle: true,
disabled: true,
},
extra: {
column: {
type: "group",
width: 1,
disableGrid: true,
activeBgColor: "#000000",
activeBgOpacity: 0.08,
gridType: "none"
}
}
}
})
onLoad((option) => {})
onReady(() => {
initData()
})
onShow(() => {})
onPullDownRefresh(() => {
setTimeout(() => {
uni.stopPullDownRefresh();
}, 1000);
})
onReachBottom(() => {
})
onPageScroll((e) => {
if (e.scrollTop > 45) {
data.navbar.bgColor = '#fff'
} else {
data.navbar.bgColor = 'rgba(0,0,0,0)'
}
})
const CACHE_KEY = 'BANK_CARD_INFO'
function loadCache() {
const cache = uni.getStorageSync(CACHE_KEY)
if (cache) return cache
return null
}
function saveCache(data) {
uni.setStorageSync(CACHE_KEY, data)
}
function initData() {
const cache = loadCache()
console.log(getDefaultChart())
if (cache) {
data.form = cache
} else {
data.form = {
balance: 123.51,
cardType: '储蓄卡(I类)',
cardNumber: '8155386535158511555',
bankName: '重庆上清寺支行',
alias: '普通卡',
name:'某某',
chartData: getDefaultChart()
}
saveCache(data.form)
}
data.form.chartData=getDefaultChart()
}
function getDefaultChart() {
const base = getLast30Days().reverse()
return {
categories: base,
series: [{
name: "支出",
data: base.map(() => Math.floor(Math.random() * 100))
}]
};
}
function back() {
uni.navigateBack()
}
function getLast30Days() {
const result = []
const today = new Date()
for (let i = 0; i < 31; i++) {
const d = new Date(today)
d.setDate(today.getDate() - i)
const y = d.getFullYear()
const m = String(d.getMonth() + 1).padStart(2, '0')
const day = String(d.getDate()).padStart(2, '0')
result.push(`${y}-${m}-${day}`)
}
return result
}
function buildChart(days = 30) {
const base = getLast30Days();
return {
categories: base.reverse(),
series: [{
name: "支出",
data: base.map(() => Math.floor(Math.random() * 100))
}]
};
}
function saveEdit() {
data.form.balance = editDialog.data.balance;
data.form.cardType = editDialog.data.cardType;
data.form.cardNumber = editDialog.data.cardNumber;
data.form.bankName = editDialog.data.bankName;
data.form.alias = editDialog.data.alias;
data.form.name = editDialog.data.name;
// ✅ 更新图表
data.form.chartData = editDialog.data.chartData
editDialog.show = false;
saveCache(data.form)
}
function openEditDialog() {
editDialog.data = JSON.parse(JSON.stringify(data.form))
editDialog.show = true
}
// 长按事件定时器
let longPressTimer = null
const handleTouchStart = (e) => {
// 兼容iOS上滑HOME条如果有底部安全区且触摸位置在底部安全区内则不触发
const systemInfo = uni.getSystemInfoSync()
if (systemInfo.platform === 'ios' && systemInfo.safeAreaInsets?.bottom) {
const clientY = e.touches[0].clientY
const windowHeight = systemInfo.windowHeight
// 如果触摸点在底部安全区范围内通常是34px则忽略
if (clientY > windowHeight - systemInfo.safeAreaInsets.bottom) {
return
}
}
longPressTimer = setTimeout(() => {
uni.vibrateShort()
chooseImage()
}, 1200) // 长按时间大于1s
}
const handleTouchEnd = () => {
if (longPressTimer) {
clearTimeout(longPressTimer)
longPressTimer = null
}
}
// 选择图片
const chooseImage = () => {
uni.chooseImage({
count: 1,
sourceType: ['album'],
success: (res) => {
selectedImage.value = res.tempFilePaths[0]
// data.showMask = true
}
})
}
function addSpaceEveryFourChars(str) {
return str.replace(/(.{4})/g, '$1 ').trim();
}
</script>
<style lang="scss" scoped>
* {
box-sizing: border-box;
}
.zsyh {
position: relative;
width: 750rpx;
background: #f8f8f8;
display: flex;
flex-direction: column;
align-items: flex-start;
.panel_card_info {
width: 690rpx;
height: 168rpx;
margin-left: 30rpx;
margin-top: -8rpx;
.panel_card_info_bg {
position: absolute;
width: 690rpx;
height: 168rpx;
border-radius: 16rpx;
background: #ffffff;
box-shadow: 0rpx 0rpx 10rpx rgba(0, 0, 0, 0.05);
display: flex;
flex-direction: column;
align-items: flex-start;
}
}
.itemBox2 {
width: 690rpx;
margin-left: 30rpx;
margin-top: 20rpx;
// height: 926rpx;
.itemInfo {
position: relative;
padding: 34rpx 28rpx;
width: 690rpx;
border-radius: 16rpx;
background: #ffffff;
box-shadow: 0rpx 0rpx 10rpx rgba(0, 0, 0, 0.05);
.leftText {
position: absolute;
left: 32rpx;
top: 24rpx;
font-weight: 400;
font-size: 32px;
color: #F2F2F2;
z-index: 1 !important;
}
.title {
font-weight: 400;
font-size: 15px;
color: #1A1A1A;
margin-left: 46rpx;
margin-top: 40rpx;
z-index: 9 !important;
position: relative;
}
.dec {
text-align: center;
margin-top: 86rpx;
font-weight: 400;
font-size: 15px;
color: #1A1A1A;
}
.dec2 {
display: flex;
align-items: center;
justify-content: center;
text-align: center;
margin-top: 24rpx;
font-weight: 400;
font-size: 11px;
color: #5191DA;
image {
width: 10rpx;
height: 10rpx;
margin-left: 10rpx;
}
}
.bImg {
margin-top: 80rpx;
width: 100%;
}
}
}
.itemBox {
position: relative;
width: 690rpx;
margin-left: 30rpx;
margin-top: 20rpx;
height: 112rpx;
.itemInfo {
padding: 34rpx 28rpx;
width: 690rpx;
border-radius: 16rpx;
background: #ffffff;
box-shadow: 0rpx 0rpx 10rpx rgba(0, 0, 0, 0.05);
display: flex;
align-items: center;
justify-content: space-between;
view {
display: flex;
align-items: center;
.title {
font-weight: 400;
font-size: 15px;
color: #111111;
line-height: 21px;
}
.icon1 {
width: 48rpx;
height: 28rpx;
}
.icon2 {
height: 40rpx;
margin-right: 12rpx;
}
.icon3 {
height: 28rpx;
}
}
}
}
.record {
margin-left: 30rpx;
margin-top: 20rpx;
width: 690rpx;
padding: 34rpx 28rpx;
border-radius: 16rpx;
background: #ffffff;
.title {
font-weight: 400;
font-size: 15px;
color: #1A1A1A;
}
.dec {
font-weight: 400;
font-size: 13px;
color: #636363;
margin-top: 90rpx;
margin-bottom: 60rpx;
}
.btnBox {
display: flex;
justify-content: flex-end;
.btn {
width: 144rpx;
height: 58rpx;
background: #EA4A5A;
border-radius: 30rpx;
font-size: 22rpx;
color: #FFFFFF;
line-height: 58rpx;
text-align: center;
}
}
.yhkgl{
width: 100%;
margin-top: 48rpx;
}
}
.echart {
margin-left: 30rpx;
margin-top: 20rpx;
width: 690rpx;
padding: 34rpx 28rpx;
border-radius: 16rpx;
background: #ffffff;
.title {
font-weight: 400;
font-size: 11px;
color: #1A1A1A;
}
.dec {
font-weight: 700;
font-size: 16px;
color: #1A1A1A;
margin-top: 12rpx;
display: flex;
align-items: center;
}
.echartBox {
height: 200rpx;
}
.bBox {
display: flex;
justify-content: space-between;
margin-top: 16rpx;
view {
font-size: 11px;
color: #1A1A1A;
}
}
}
.flexcontainer_1 {
position: relative;
display: flex;
width: 624rpx;
height: 42rpx;
margin-top: 36rpx;
margin-left: 28rpx;
}
.text {
position: absolute;
left: 0;
top: 0;
font-size: 30rpx;
line-height: 42rpx;
color: #1a1a1a;
}
.text_1 {
position: absolute;
right: 0;
top: 4rpx;
font-size: 26rpx;
line-height: 36rpx;
color: #1a1a1a;
}
.flexcontainer_2 {
position: relative;
display: flex;
width: 630rpx;
height: 36rpx;
margin-top: 20rpx;
margin-left: 30rpx;
display: flex;
align-items: center;
justify-content: space-between;
view {
display: flex;
align-items: center;
}
}
.group_13981 {
width: 18rpx;
height: 18rpx;
margin-top: 6rpx;
}
.group_13982 {
width: 28rpx;
height: 28rpx;
margin-top: 2rpx;
margin-left: 12rpx;
}
.text_2 {
font-size: 26rpx;
line-height: 28rpx;
color: #1a1a1a;
}
.text_3 {
font-size: 26rpx;
line-height: 36rpx;
color: #999999;
}
.bg_header {
width: 750rpx;
height: 492rpx;
background: linear-gradient(241deg, #d4bcbc 13.43%, #d5c9c4 73.94%);
display: flex;
flex-direction: column;
align-items: flex-start;
padding-top: 184rpx;
}
.group_45764 {
width: 750rpx;
height: 184rpx;
position: fixed;
top: 0;
left: 0;
z-index: 9999 !important;
;
}
.flexcontainer_3 {
position: relative;
display: flex;
width: 750rpx;
height: 96rpx;
align-items: flex-end;
}
.group_8 {
width: 240rpx;
height: 96rpx;
overflow: hidden;
}
.frame {
width: 40rpx;
height: 40rpx;
margin-top: 44rpx;
margin-left: 24rpx;
}
.group_7 {
position: relative;
width: 240rpx;
height: 96rpx;
margin-left: 16rpx;
}
.rectangle_18503 {
width: 240rpx;
height: 96rpx;
}
.text_5 {
position: relative;
display: block;
text-align: center;
font-size: 34rpx;
line-height: 40rpx;
color: #1a1a1a;
margin-top: -52rpx;
}
.group_9 {
width: 240rpx;
height: 96rpx;
margin-left: 14rpx;
}
.rectangle_18503_1 {
width: 240rpx;
height: 96rpx;
display: flex;
align-items: flex-start;
}
.group_13980 {
width: 40rpx;
height: 40rpx;
margin-left: 82rpx;
margin-top: 44rpx;
}
.flexcontainer_4 {
position: relative;
width: 60rpx;
height: 52rpx;
margin-left: 44rpx;
margin-top: 32rpx;
}
.group_48144 {
width: 48rpx;
height: 30rpx;
margin-left: 12rpx;
border-radius: 100rpx;
background: #ff5d5f;
}
.text_6 {
display: block;
text-align: center;
font-size: 24rpx;
line-height: 30rpx;
color: #ffffff;
}
.group_13979 {
width: 40rpx;
height: 40rpx;
margin-top: -18rpx;
}
.rectangle_23229 {
width: 14rpx;
height: 8rpx;
// background: #d8d8d8;
margin-top: 76rpx;
}
.flexcontainer_5 {
display: flex;
width: 694rpx;
height: 220rpx;
margin-top: 44rpx;
margin-left: 26rpx;
}
.flexcontainer_6 {
position: relative;
width: 270rpx;
height: 220rpx;
}
.flexcontainer_7 {
position: relative;
display: flex;
height: 52rpx;
margin-top: 36rpx;
margin-left: 10rpx;
}
.group_48142 {
width: 20rpx;
height: 20rpx;
margin-top: 10rpx;
}
.path {
width: 100%;
height: 100%;
}
.text_7 {
font-size: 48rpx;
font-weight: 700;
line-height: 52rpx;
color: #1a1a1a;
}
.flexcontainer_8 {
position: relative;
display: flex;
width: 270rpx;
height: 42rpx;
margin-top: 90rpx;
}
.group_48141 {
width: 112rpx;
height: 34rpx;
margin-left: 158rpx;
margin-top: 4rpx;
border-radius: 24rpx;
border: 2rpx solid #3f342e;
}
.text_8 {
display: block;
text-align: center;
font-size: 22rpx;
line-height: 34rpx;
color: #1a1a1a;
}
.text_9 {
position: absolute;
left: 0;
top: 0;
font-size: 30rpx;
line-height: 42rpx;
color: #1a1a1a;
}
.text_10 {
position: absolute;
top: 0;
left: 4rpx;
font-size: 26rpx;
line-height: 36rpx;
color: #3f342e;
}
.text_11 {
position: absolute;
left: 4rpx;
bottom: 50rpx;
font-size: 26rpx;
line-height: 36rpx;
color: #3f342e;
}
.div_9c80ece453e55d5cd3bbdcc7d0255f31 {
width: 336rpx;
height: 210rpx;
border-radius: 16rpx;
margin-left: 88rpx;
margin-top: 4rpx;
}
}
.chartEditor {
margin-top: 20rpx;
.chartTitle {
font-size: 26rpx;
font-weight: bold;
margin-bottom: 10rpx;
display: block;
}
.chartRowBox {
overflow-y: scroll;
height: 30vh;
}
.chartRow {
display: flex;
justify-content: space-between;
margin-bottom: 10rpx;
.day {
font-size: 32rpx;
color: #666;
}
input {
width: 200rpx;
border: 1rpx solid #ddd;
border-radius: 8rpx;
padding: 4rpx 10rpx;
font-size: 32rpx;
}
}
}
.editDialog {
position: fixed;
top: 0;
left: 0;
width: 750rpx;
height: 100vh;
background: rgba(0, 0, 0, 0.4);
display: flex;
justify-content: center;
align-items: center;
z-index: 9999;
.editDialog_bg {
width: 690rpx;
background: #fff;
border-radius: 16rpx;
padding: 30rpx;
.editDialog_header {
display: flex;
justify-content: space-between;
align-items: center;
.title {
font-size: 34rpx;
font-weight: 700;
}
.close {
font-size: 40rpx;
}
}
.editDialog_body {
margin-top: 20rpx;
.formItem {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20rpx;
text {
font-size: 26rpx;
color: #1A1A1A;
}
input {
width: 400rpx;
height: 50rpx;
border: 1rpx solid #ccc;
border-radius: 8rpx;
padding: 0 10rpx;
font-size: 24rpx;
}
}
}
.editDialog_footer {
display: flex;
justify-content: flex-end;
margin-top: 20rpx;
.btn {
width: 144rpx;
height: 58rpx;
background: #EA4A5A;
border-radius: 30rpx;
color: #fff;
text-align: center;
line-height: 58rpx;
font-size: 22rpx;
}
}
}
}
.popup-footer {
display: flex;
justify-content: space-between;
padding: 20rpx;
border-top: 1rpx solid #eee;
}
.btn-cancel,
.btn-save {
width: 48%;
padding: 20rpx;
border-radius: 4rpx;
font-size: 28rpx;
text-align: center;
}
.btn-cancel {
background-color: #f5f5f5;
color: #333;
border: 1rpx solid #ddd;
}
.btn-save {
background-color: #187AFF;
color: #fff;
border: none;
}
.dask{
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.5);
position: fixed;
left:0;
top:0;
z-index: 99999 !important;
display: flex;
align-items: center;
justify-content: center;
.info{
width: calc(100vw - 30px);
background: #FFFFFF;
border-radius: 4px 4px 4px 4px;
display: flex;
flex-direction: column;
image{
margin-top: 15px;
margin-right: 17px;
width: 13px;
height: 13px;
align-self: flex-end;
}
.title{
font-weight: 400;
font-size: 16px;
color: #5A5A5A;
margin-left: 20px;
margin-top: 7px;
margin-bottom:6px;
}
.dec{
font-weight: 400;
font-size: 17px;
color: #5A5A5A;
margin-left: 20px;
margin-top: 7px;
}
.btnbox{
margin-top: 26px;
display: flex;
align-items: center;
justify-content: center;
border-top: 1rpx solid #F2F2F2;
.btn{
width: calc(50% - 1rpx);
height: 54px;
line-height: 54px;
font-weight: 400;
font-size: 15px;
color: #5A5A5A;
text-align: center;
}
.btns{
border-left: 1rpx solid #F2F2F2;
color:#5795E6;
}
}
}
}
</style>