| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877 |
- <template>
- <view class="page-container">
- <!-- 支付信息录入卡片 -->
- <view class="info-card">
- <view class="info-card-title">支付信息</view>
- <!-- 开户人和银行名称同一行 -->
- <u-row class="info-row" justify="space-between">
- <u-col span="5.8">
- <view class="info-label">开户人</view>
- <u-input v-model="paymentInfo.customName" placeholder="请输入开户人姓名" class="info-input" />
- </u-col>
- <u-col span="5.8">
- <view class="info-label">银行名称</view>
- <u-input v-model="paymentInfo.bankName" placeholder="请输入银行名称" class="info-input"
- @input="handleBankNameInput" />
- </u-col>
- </u-row>
- <!-- 银行账号单独一行 -->
- <u-row class="info-row">
- <u-col span="12">
- <view class="info-label">银行账号</view>
- <u-input v-model="paymentInfo.bankAccount" placeholder="请输入银行账号" class="info-input" />
- </u-col>
- </u-row>
- <!-- 身份证号单独一行 -->
- <u-row class="info-row">
- <u-col span="12">
- <view class="info-label">身份证号</view>
- <u-input v-model="paymentInfo.idNumber" placeholder="请输入身份证号" class="info-input" />
- </u-col>
- </u-row>
- </view>
- <view class="card_wrap">
- <view class="detail-image-section">
- <view class="detail-image-header">
- <div class="detail-image-title">高清实物图(拖拽排序)</div>
- </view>
- <view class="detail-image-content">
- <view class="detail-image-list">
- <!-- 占位符元素 -->
- <!-- <view v-show="placeholderIndex !== -1" class="detail-image-placeholder"
- :style="{ transform: placeholderStyle }">
- <u-icon name="arrow-right" size="40rpx" color="#108cff"></u-icon>
- </view> -->
- <!-- 图片列表 -->
- <view class="detail-image-item" v-for="(item, index) in detailImages.slice(0, 6)"
- :key="'detail-' + index" :class="{
- 'dragging': draggingIndex === index,
- 'can-drop': canDropIndex === index
- }" @touchstart.stop="onTouchStart($event, index)" @touchmove.stop="onTouchMove($event)"
- @touchend.stop="onTouchEnd" @touchcancel.stop="onTouchEnd">
- <pic-comp @needPreviewPic='previewImageDetail' :src="item.fileUrl"></pic-comp>
- <view class="image-type-tag">{{ getImageType(index) }}</view>
- <view class="detail-delete-btn" @click.stop="handleYinCang(item, index)">×</view>
- </view>
- <!-- 上传按钮 -->
- <view class="detail-upload-btn" @click="uploadImage('detailImages', currentReceipt.id)">
- <u-icon name="plus" size="40rpx" color="#999"></u-icon>
- </view>
- </view>
- </view>
- </view>
- </view>
- <!-- 支付总额卡片 -->
- <view class="card_wrap payment-card">
- <view class="payment-section">
- <view class="payment-total-container">
- <text class="payment-label">支付总额</text>
- <u-input v-model="paymentAmount" placeholder="0.00" class="payment-amount" type="number" decimal="2"
- prefix="¥" />
- </view>
- <view class="payment-buttons-row">
- <view class="payment-button" @click="handleUnpaidClick">
- <u-icon name="star" size="40rpx" color="#ff9500"></u-icon>
- <text class="button-text">未收</text>
- </view>
- <view class="payment-button" @click="handleFollowUpClick">
- <u-icon name="chat" size="40rpx" color="#108cff"></u-icon>
- <text class="button-text">待跟进</text>
- </view>
- </view>
- <view class="pay-now-button" @click="handlePayNowClick">
- <text class="button-text">立即支付</text>
- </view>
- </view>
- </view>
- <u-button class='next-btn' @click="handleNextClick" type="primary" size="middle"
- style="border-radius: 20rpx;">下一步</u-button>
- <u-modal showCancelButton showConfirmButton @confirm="confirmUnpaid" @cancel="unpaidModelShow = false"
- :show="unpaidModelShow" :title="'未收评级'">
- <view class="modal-content">
- <u-rate v-model="unpaidRating" :count="5" :size="50" active-color="#ff9500"></u-rate>
- <!-- <u-button type="primary" size="large" @click="confirmUnpaid" style="margin-top: 40rpx;">确认未收</u-button> -->
- </view>
- </u-modal>
- <u-modal showCancelButton showConfirmButton @confirm="confirmFollowUp" @cancel="followUpModelShow = false"
- :show="followUpModelShow" :title="'填写跟进细节'">
- <view class="modal-content">
- <u--textarea v-model="followUpNotes" placeholder="请输入情况" confirm-type="done"
- style="width: 100%; margin-bottom: 30rpx;"></u--textarea>
- <!-- <u-button type="primary" size="large" @click="confirmFollowUp">确认</u-button> -->
- </view>
- </u-modal>
- <u-modal :show="payNowModelShow" :title="'确认支付信息'" :showConfirmButton="false">
- <view class="modal-content">
- <!-- 支付金额显示 -->
- <view class="payment-amount-display">¥{{ paymentAmount }}</view>
- <!-- 支付信息区域 -->
- <view class="payment-info-section">
- <view class="info-item">
- <text class="info-label">收款姓名:</text>
- <text class="info-value">{{ paymentInfo.customName || '未填写' }}</text>
- </view>
- <view class="info-item">
- <text class="info-label">开户银行:</text>
- <text class="info-value">{{ paymentInfo.bankName || '未填写' }}</text>
- </view>
- <view class="info-item">
- <text class="info-label">银行卡号:</text>
- <text class="info-value">{{ paymentInfo.bankAccount || '未填写' }}</text>
- </view>
- </view>
- <!-- 确认转账按钮 -->
- <u-button type="primary" size="large" @click="confirmTransfer"
- style="margin-top: 40rpx;">确认转账</u-button>
- <u-button type="primary" :plain="true" @click="payNowModelShow = false" size="large"
- style="margin-top: 40rpx;">取消</u-button>
- </view>
- </u-modal>
- </view>
- </template>
- <script>
- import picComp from './picComp.vue'
- import imgUploadAndDownLoad from '../mixin/imgUploadAndDownLoad'
- export default {
- mixins: [imgUploadAndDownLoad],
- props: {
- orderDetail: {
- type: Object,
- default: () => { },
- },
- orderId: {
- type: String,
- default: '',
- },
- currentReceipt: {
- type: Object,
- default: () => { },
- },
- },
- watch: {
- orderDetail: {
- handler(newVal) {
- if (newVal) {
- this.paymentInfo.customName = newVal.customName || ''
- this.paymentInfo.bankName = newVal.bankName || ''
- this.paymentInfo.bankAccount = newVal.bankCardNumber || ''
- this.paymentInfo.idNumber = newVal.idCard || ''
- // this.paymentAmount = newVal.tableFee || '0.00'
- }
- },
- deep: true,
- },
- currentReceipt: {
- handler(newVal) {
- if (newVal) {
- console.log('这里是page3的', newVal.tableFee)
- this.paymentAmount = newVal.tableFee || '0.00'
- setTimeout(() => {
- this.getList('2', '3', newVal.id, this.orderDetail.itemBrand);
- }, 100);
- }
- },
- deep: true,
- }
- },
- components: {
- picComp
- },
- data() {
- return {
- unpaidModelShow: false,
- followUpModelShow: false,
- payNowModelShow: false,
- unpaidRating: 0, // 未收评级
- followUpNotes: '', // 跟进细节
- paymentAmount: '0.00', // 支付总额
- // 支付信息
- paymentInfo: {
- accountHolder: '', // 开户人
- bankName: '', // 银行名称
- bankAccount: '', // 银行账号
- idNumber: '' // 身份证号
- },
- // 拖拽相关状态
- draggingIndex: -1, // 当前正在拖拽的元素索引
- placeholderIndex: -1, // 占位符的位置
- canDropIndex: -1, // 可以放置的位置
- originalIndex: -1, // 拖拽开始时的原始位置
- startX: 0, // 触摸起始X坐标
- startY: 0, // 触摸起始Y坐标
- dragOffsetX: 0, // 拖拽元素的X偏移
- dragOffsetY: 0, // 拖拽元素的Y偏移
- placeholderStyle: '', // 占位符的样式
- detailImages: [],// 高清细节图数组
- // 绑定订单相关
- bindList: [] // 待绑定的图片列表
- };
- },
- methods: {
- // 银行名称输入处理 - 只允许中文和英文
- handleBankNameInput(value) {
- console.log('银行名称输入处理', value)
- //如果value包括数字则返回空字符串
- },
- // 获取图片类型
- getImageType(index) {
- const types = ['正面', '反面', '侧面', '扣子', '编号'];
- return types[index] || `细节${index - 4}`;
- },
- // 触摸开始
- onTouchStart(event, index) {
- if (this.draggingIndex !== -1) return;
- this.draggingIndex = index;
- this.originalIndex = index;
- this.placeholderIndex = index;
- this.canDropIndex = -1;
- // 记录触摸起始坐标
- this.startX = event.touches[0].clientX;
- this.startY = event.touches[0].clientY;
- // 获取元素位置信息用于计算偏移
- const query = uni.createSelectorQuery().in(this);
- query.selectAll('.detail-image-item').boundingClientRect(rects => {
- if (rects[index]) {
- this.dragOffsetX = this.startX - rects[index].left;
- this.dragOffsetY = this.startY - rects[index].top;
- this.placeholderStyle = `translate(${rects[index].left}px, ${rects[index].top}px)`;
- }
- }).exec();
- },
- // 触摸移动
- onTouchMove(event) {
- if (this.draggingIndex === -1) return;
- const moveX = event.touches[0].clientX;
- const moveY = event.touches[0].clientY;
- // 更新拖拽元素的位置
- this.$nextTick(() => {
- const draggingElement = uni.createSelectorQuery().in(this)
- .selectAll('.detail-image-item')[this.draggingIndex];
- if (draggingElement) {
- // 这里通过CSS类实现拖拽视觉效果,实际位置由数组顺序控制
- }
- });
- // 计算当前触摸位置对应的目标索引
- this.findTargetIndex(moveX, moveY);
- },
- // 触摸结束
- onTouchEnd() {
- if (this.draggingIndex === -1) return;
- // 执行元素交换
- if (this.canDropIndex !== -1 && this.canDropIndex !== this.draggingIndex) {
- // 交换元素位置
- const temp = this.detailImages[this.draggingIndex];
- this.detailImages[this.draggingIndex] = this.detailImages[this.canDropIndex];
- this.detailImages[this.canDropIndex] = temp;
- // Update position properties after swap
- this.detailImages.forEach((item, index) => {
- item.position = index + 1;
- });
- }
- // 重置拖拽状态
- this.resetDragState();
- },
- // 查找触摸位置对应的目标索引
- findTargetIndex(x, y) {
- const query = uni.createSelectorQuery().in(this);
- query.selectAll('.detail-image-item').boundingClientRect(rects => {
- let targetIndex = -1;
- // 查找触摸点所在的元素
- for (let i = 0; i < rects.length; i++) {
- if (i === this.draggingIndex) continue;
- const rect = rects[i];
- if (x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom) {
- targetIndex = i;
- break;
- }
- }
- // 更新可放置位置
- this.canDropIndex = targetIndex;
- // 如果找到了可放置位置,更新占位符位置
- if (targetIndex !== -1) {
- this.placeholderIndex = targetIndex;
- this.placeholderStyle = `translate(${rects[targetIndex].left}px, ${rects[targetIndex].top}px)`;
- }
- }).exec();
- },
- // 重置拖拽状态
- resetDragState() {
- this.draggingIndex = -1;
- this.placeholderIndex = -1;
- this.canDropIndex = -1;
- this.originalIndex = -1;
- this.startX = 0;
- this.startY = 0;
- this.dragOffsetX = 0;
- this.dragOffsetY = 0;
- this.placeholderStyle = '';
- },
- // 未收按钮点击事件
- handleUnpaidClick() {
- console.log('点击了未收按钮');
- this.unpaidModelShow = true;
- },
- // 待跟进按钮点击事件
- handleFollowUpClick() {
- console.log('点击了待跟进按钮');
- this.followUpModelShow = true;
- },
- // 立即支付按钮点击事件
- async handlePayNowClick() {
- //保存
- await uni.$u.api.updateReceiptForm({
- id: this.currentReceipt.id,
- tableFee: this.paymentAmount,
- fileIds: this.detailImages.map(item => item.id).join(',')
- });
- //保存上面的支付信息
- await uni.$u.api.updateClueOrderForm({
- id: this.orderDetail.id,
- customName: this.paymentInfo.customName || '',
- bankName: this.paymentInfo.bankName || '',
- bankCardNumber: this.paymentInfo.bankAccount || '',
- idCard: this.paymentInfo.idNumber || '',
- });
- // 判断是否填写了支付信息
- if (!this.paymentInfo.customName || !this.paymentInfo.bankName || !this.paymentInfo.bankAccount || !this.paymentInfo.idNumber) {
- uni.$u.toast('请填写完整的支付信息');
- return;
- }
- if (this.paymentAmount <= 0) {
- uni.$u.toast('请填写正确的支付总额');
- return;
- }
- console.log('点击了立即支付按钮');
- this.payNowModelShow = true;
- //让父组件保存数据
- // this.$emit('handleNeedSave', {
- // fileIds: this.detailImages.map(item => item.id).join(','),
- // nowPage: 'formThree',
- // form: {
- // ...this.paymentInfo,
- // paymentAmount: this.paymentAmount
- // }
- // });
- },
- // 确认转账按钮点击事件
- confirmTransfer() {
- console.log('确认转账');
- this.payNowModelShow = false;
- // 可以在这里添加转账确认的逻辑
- this.$emit('handleConfirmPay');
- },
- // 下一步按钮点击事件
- async handleNextClick() {
- await uni.$u.api.updateReceiptForm({
- id: this.currentReceipt.id,
- tableFee: this.paymentAmount,
- fileIds: this.detailImages.map(item => item.id).join(',')
- });
- await uni.$u.api.updateClueOrderForm({
- id: this.orderDetail.id,
- customName: this.paymentInfo.customName || '',
- bankName: this.paymentInfo.bankName || '',
- bankCardNumber: this.paymentInfo.bankAccount || '',
- idCard: this.paymentInfo.idNumber || '',
- });
- console.log('page3点击了下一步按钮', this.detailImages);
- this.$emit('handleNextClick', {
- nowPage: 'formThree',
- form: {
- ...this.paymentInfo
- }
- });
- },
- // 确认未收按钮点击事件
- async confirmUnpaid() {
- console.log('确认未收,评分:', this.unpaidRating);
- this.unpaidModelShow = false;
- // 可以在这里添加提交评分的逻辑
- // 未收的时候,提交一个跟进记录 未收评分_数字
- const res = await uni.$u.api.addOrderFollow({
- orderId: this.orderId,
- content: `未收评分_${this.unpaidRating}`,
- })
- await uni.$u.api.oderForm({
- status: "4",
- id: this.orderId,
- });
- if (res.code == 200) {
- uni.$u.toast('提交未收评级成功');
- }
- },
- // 确认跟进细节按钮点击事件
- async confirmFollowUp() {
- console.log('确认跟进细节:', this.followUpNotes);
- this.followUpModelShow = false;
- // 可以在这里添加提交跟进细节的逻辑
- // 未收的时候,提交一个跟进记录 待跟进_内容
- const res = await uni.$u.api.addOrderFollow({
- orderId: this.orderId,
- content: `待跟进_${this.followUpNotes}`,
- })
- if (res.code == 200) {
- uni.$u.toast('提交待跟进记录成功');
- }
- },
- handleYinCang(item, index) {
- console.log('删除图片:', item, '索引:', index);
- // 从detailImages数组中移除当前项,后续图片会自动前移
- const itemIndex = this.detailImages.findIndex(img => img.fileUrl === item.fileUrl);
- if (itemIndex !== -1) {
- this.detailImages.splice(itemIndex, 1);
- uni.$u.toast('图片已隐藏');
- }
- },
- previewImageDetail(src) {
- const urlList = this.detailImages.map(item => item.fileUrl);
- uni.previewImage({
- urls: urlList,
- current: src
- })
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- // 导入公共样式
- @import './common.scss';
- // 主样式
- .page-container {
- box-sizing: border-box;
- padding: 0;
- background-color: map-get($colors, bg);
- font-family: map-get($font, family);
- -webkit-font-smoothing: map-get($font, smoothing);
- font-smoothing: map-get($font, smoothing);
- }
- .card_wrap {
- @include card;
- margin-bottom: 20rpx;
- &:hover {
- @include shadow(2);
- }
- }
- .detail-image-section {
- padding: map-get($sizes, padding-sm) map-get($sizes, padding);
- }
- .detail-image-content {
- margin-top: 20rpx;
- .detail-image-list {
- display: flex;
- flex-wrap: wrap;
- gap: 20rpx;
- position: relative;
- }
- .detail-image-item {
- position: relative;
- width: 200rpx;
- height: 200rpx;
- box-sizing: border-box;
- touch-action: none; // 禁止浏览器默认触摸行为
- transition: all 0.2s ease; // 所有属性过渡效果
- z-index: 1;
- cursor: move;
- &.dragging {
- opacity: 0.5;
- transform: scale(1.05);
- z-index: 100;
- }
- &.can-drop {
- border: 2rpx dashed #108cff;
- background-color: rgba(16, 140, 255, 0.1);
- }
- &:active {
- opacity: 0.7;
- }
- }
- // 占位符样式
- .detail-image-placeholder {
- position: absolute;
- width: 200rpx;
- height: 200rpx;
- border: 2rpx dashed red;
- background-color: rgba(16, 140, 255, 0.1);
- border-radius: 8rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- z-index: 50;
- pointer-events: none;
- }
- .image-type-tag {
- position: absolute;
- top: 10rpx;
- left: 10rpx;
- background-color: rgba(0, 0, 0, 0.6);
- color: white;
- padding: 5rpx 10rpx;
- border-radius: 12rpx;
- font-size: 22rpx;
- z-index: 1;
- }
- .detail-delete-btn {
- position: absolute;
- top: -10rpx;
- right: -10rpx;
- width: 40rpx;
- height: 40rpx;
- background-color: #ff4d4f;
- color: #fff;
- border-radius: 50%;
- display: flex;
- align-items: center;
- justify-content: center;
- @include font-styles($size: small, $weight: bold);
- z-index: 10;
- }
- .detail-upload-btn {
- width: 200rpx;
- height: 200rpx;
- border: 8rpx dashed #ddd;
- border-radius: 30rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- background-color: #f9f9f9;
- box-sizing: border-box;
- cursor: pointer;
- &:hover {
- border-color: #108cff;
- background-color: rgba(16, 140, 255, 0.05);
- }
- }
- .no-images {
- @include font-styles($size: content, $weight: regular, $color: tertiary);
- text-align: center;
- padding: 80rpx 0;
- background-color: #f9f9f9;
- border-radius: 12rpx;
- margin-top: 20rpx;
- }
- }
- .detail-image-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: map-get($sizes, margin-sm);
- padding-bottom: map-get($sizes, margin-sm);
- border-bottom: 1rpx solid map-get($colors, border);
- }
- .detail-image-title {
- @include font-styles($size: content, $weight: bold, $color: primary);
- }
- /* 支付信息卡片样式 */
- .info-card {
- @include card;
- margin-top: 20rpx;
- margin-bottom: 20rpx;
- padding: map-get($sizes, padding-sm) map-get($sizes, padding);
- box-sizing: border-box;
- &:hover {
- @include shadow(2);
- }
- .u-col {
- padding: 0;
- box-sizing: border-box;
- }
- .u-col:first-child {
- padding-right: 15rpx;
- }
- .u-col:last-child {
- padding-left: 15rpx;
- }
- }
- .info-card-title {
- @include font-styles($size: title, $weight: bold, $color: primary);
- margin-bottom: 25rpx;
- padding-bottom: 15rpx;
- border-bottom: 1rpx solid map-get($colors, border);
- }
- .info-row {
- margin-bottom: 20rpx;
- box-sizing: border-box;
- padding: 0;
- }
- .info-label {
- @include font-styles($size: tiny, $weight: regular, $color: tertiary);
- margin-bottom: 8rpx;
- display: block;
- }
- .info-input {
- border-radius: 8rpx;
- border: 1rpx solid #e5e7eb;
- padding: 12rpx 16rpx;
- width: 100%;
- box-sizing: border-box;
- @include font-styles($size: small, $weight: regular, $color: secondary);
- }
- /* 支付总额卡片样式 */
- .payment-card {
- @include card;
- margin-top: 20rpx;
- margin-bottom: 20rpx;
- }
- .payment-section {
- padding: map-get($sizes, padding-sm) map-get($sizes, padding);
- }
- .payment-total-container {
- background-color: #f5f7fa;
- border: 2rpx solid #e5e7eb;
- border-radius: 12rpx;
- padding: 0rpx 30rpx;
- box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 24rpx;
- }
- .payment-label {
- font-size: 36rpx;
- color: map-get($colors, text-primary);
- font-weight: 700;
- min-width: 140rpx;
- }
- .payment-amount {
- font-size: 48rpx;
- font-weight: 600;
- color: #f53f3f;
- font-family: Consolas, 'Courier New', monospace, -apple-system, BlinkMacSystemFont;
- width: auto;
- min-width: 150rpx;
- border: none;
- text-align: right !important;
- }
- .payment-amount .u-input__input {
- border: none;
- padding: 0;
- background: transparent;
- font-size: 48rpx;
- font-weight: 600;
- color: #f53f3f;
- font-family: Consolas, 'Courier New', monospace, -apple-system, BlinkMacSystemFont;
- text-align: right;
- }
- /* 支付按钮行样式 */
- .payment-buttons-row {
- display: flex;
- gap: 20rpx;
- margin-bottom: 24rpx;
- }
- .payment-button {
- flex: 1;
- border-radius: 12rpx;
- padding: 5rpx 0;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- background-color: #f5f7fa;
- border: 2rpx solid #e5e7eb;
- cursor: pointer;
- transition: all 0.3s ease;
- gap: 12rpx;
- }
- .payment-button:hover {
- background-color: #e6f7ed;
- border-color: #00b42a;
- transform: translateY(-2rpx);
- box-shadow: 0 4rpx 12rpx rgba(0, 180, 42, 0.15);
- }
- /* 立即支付按钮样式 */
- .pay-now-button {
- width: 100%;
- border-radius: 12rpx;
- padding: 32rpx 0;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- background-color: #108cff;
- color: #fff;
- cursor: pointer;
- transition: all 0.3s ease;
- gap: 12rpx;
- box-shadow: 0 4rpx 12rpx rgba(16, 140, 255, 0.2);
- }
- .pay-now-button:hover {
- background-color: #007aff;
- transform: translateY(-2rpx);
- box-shadow: 0 6rpx 16rpx rgba(16, 140, 255, 0.25);
- }
- .button-text {
- font-size: 28rpx;
- font-weight: 500;
- color: inherit;
- }
- /* 模态框内容样式 */
- .modal-content {
- width: 100%;
- padding: 40rpx 20rpx;
- display: flex;
- flex-direction: column;
- align-items: center;
- }
- /* 支付金额显示样式 */
- .payment-amount-display {
- font-size: 64rpx;
- font-weight: bold;
- color: #108cff;
- text-align: center;
- margin-bottom: 40rpx;
- width: 100%;
- }
- /* 支付信息区域样式 */
- .payment-info-section {
- width: 100%;
- background-color: #f5f7fa;
- border: 2rpx solid #e5e7eb;
- border-radius: 12rpx;
- padding: 30rpx 20rpx;
- margin-bottom: 40rpx;
- }
- /* 信息项样式 */
- .info-item {
- display: flex;
- margin-bottom: 20rpx;
- align-items: center;
- justify-content: space-between;
- }
- .info-item:last-child {
- margin-bottom: 0;
- }
- .info-label {
- font-size: 28rpx;
- color: #666;
- width: 200rpx;
- }
- .info-value {
- font-size: 28rpx;
- color: #333;
- }
- .next-btn {
- position: fixed;
- bottom: 10rpx;
- left: 2.5%;
- width: 95%;
- height: 80rpx;
- line-height: 80rpx;
- text-align: center;
- @include font-styles($size: medium, $weight: bold, $color: #fff);
- border-radius: 0rpx 0rpx 20rpx 20rpx;
- }
- </style>
|