<template> <view class="page"> <view class="fixed"> <u-navbar title="订单详情" :border-bottom="false" :background="background" title-color='#000' title-size='36' height='45' back-icon-color='#000'></u-navbar> </view> <view class="backimg"> </view> <!-- <image class="backimg" src="https://lxnapi.ccttiot.com/bike/img/static/usCZzuQpGCBUpvzCfqyE" mode=""></image> --> <view class="car_info" > <view class="info_tit"> {{typeReturn(orderInfo.status) }} </view> <view class="box1"> <view class="left"> <view class="name"> {{orderInfo.model}} </view> <view class="car_type_li"> <view class="type" v-for="(items,indexs) in modelInfo.accessorys" :key="indexs"> {{items.name}} </view> </view> </view> <image src="https://lxnapi.ccttiot.com/bike/img/static/uAIbCubNk8w9JI4DlDuX" mode=""></image> </view> <view class="txt4" v-if="orderInfo.pickupTime"> {{returnTime(orderInfo.pickupTime)}} 至 {{returnTime(orderInfo.expiryTime)}}({{orderInfo.num}} {{timetype(orderInfo.rentalUnit)}}) </view> <view class="info_li2"> <view class="txt4" > 取车方式 </view> <view class="txt5" v-if="orderInfo.deliveryMethod==1"> 到店取车 </view> <view class="txt5" v-if="orderInfo.deliveryMethod==2"> 免费上门送车 </view> <view class="txt5" v-if="orderInfo.deliveryMethod==3"> 收费上门送车 </view> </view> <view class="info_li2" v-if="orderInfo.deliveryMethod!=1"> <view class="txt4"> 取车地点 </view> <view class="txt5"> {{orderInfo.pickupLoc}} </view> </view> <view class="info_li2"> <view class="txt4"> 取车门店 </view> <view class="txt5"> {{orderInfo.storeName}}-{{orderInfo.storeAddress}} <br> <!-- <span style="font-size: 24rpx;color: #808080;margin-right: 30rpx;">09:00-21:00</span> <span style="font-size: 24rpx;color: #808080;">12345678912</span> --> </view> </view> <view class="info_li2"> <view class="txt4"> 还车方式 </view> <view class="txt5" v-if='orderInfo.returnMethod==1'> 自行前往门店 </view> <view class="txt5" v-if='orderInfo.returnMethod==2'> 上门取车 </view> </view> <view class="info_li2" v-if='orderInfo.returnMethod==2'> <view class="txt4"> 还车地点 </view> <view class="txt5" > 金陵路265号 </view> </view> <view class="info_li2" v-if='orderInfo.returnMethod==1'> <view class="txt4"> 还车门店 </view> <view class="txt5"> {{orderInfo.returnStoreName}} -{{orderInfo.returnAddress}} <br> <!-- <span style="font-size: 24rpx;color: #808080;margin-right: 30rpx;">09:00-21:00</span> <span style="font-size: 24rpx;color: #808080;">12345678912</span> --> </view> </view> <view class="info_li2"> <view class="txt4"> 车辆编号 </view> <view class="txt5"> {{orderInfo.sn}} </view> </view> </view> <view class="price_box"> <view class="tit"> 支付费用 </view> <view class="price_li"> <view class="txt6"> 车辆押金 </view> <view class="txt7"> ¥{{orderInfo.deposit}} </view> </view> <view class="price_li"> <view class="txt6"> 车辆租金 </view> <view class="txt7"> ¥{{orderInfo.leaseFee}} </view> </view> <view class="price_li"> <view class="txt6"> 车辆配送费 </view> <view class="txt7"> ¥{{orderInfo.dispatchFee}} </view> </view> <view class="price_li"> <view class="txt6"> 车辆调度费 </view> <view class="txt7"> ¥ {{orderInfo.deliveryFee}} </view> </view> <view class="price_li"> <view class="txt6"> 实付 </view> <view class="txt7"> ¥{{orderInfo.payFee}} </view> </view> <view class="price_li"> <view class="txt6"> 骑行享权服务 </view> <view class="txt7"> 微信支付 </view> </view> <view class="price_li"> <view class="txt6"> 支付时间 </view> <view class="txt7"> {{orderInfo.payTime}} </view> </view> <view class="btn_box"> <view class="btn1" @click="showcs=true"> 车损扣款 </view> <view class="btn1" @click="showtk=true"> 服务费退款 </view> <view class="btn2" @click="backyj()"> 押金退还 </view> </view> <view class="handle_box"> <view class="handle_tit"> 操作记录 </view> <view class="handel_li" v-for="(item,index) in orderInfo.orderOpers" :key="index"> <view class="yuan"> </view> <view class="info"> <view class="info_top"> {{item.details}} </view> <view class="info_bot"> 2024-09-11 13:56:03 </view> </view> </view> </view> </view> <view class="price_box" > <view class="tit"> 收益明细 </view> <view class="price_li" v-for="(item,index) in orderInfo.rlDividendDetails" :key="index"> <view class="txt6"> {{item.partnerName}}( {{userRrturn(item.partnerType)}} ){{item.dividendProportion}}% </view> <view class="txt7"> ¥{{item.dividendAmount}} </view> </view> </view> <view class="user_info"> <view class="info_li2"> <view class="txt4"> 租车用户 </view> <view class="txt5"> {{orderInfo.realName}} </view> </view> <view class="info_li2"> <view class="txt4"> 联系方式 </view> <view class="txt5"> {{orderInfo.phone}} </view> <view class="btn" @click="callPhone(orderInfo.phone)"> 联系用户 </view> </view> </view> <view class="user_info"> <view class="info_li2"> <view class="txt4"> 订单编号 </view> </view> <view class="info_li2"> <view class="txt6"> {{orderInfo.orderNo}} </view> <view class="txt7" @click="copy(orderInfo.orderNo)"> 复制 </view> </view> </view> <view class="order_code" > <view class="tits"> 配送信息 </view> <view class="code_li" v-if='orderInfo.deliveryOrder'> <view class="code"> 配送状态: {{typeReturns(orderInfo.deliveryOrder.status).text}} </view> </view> <view class="code_li"> <view class="code"> 配送人员: {{orderInfo.deliveryOrder.deliveryman?orderInfo.deliveryOrder.deliveryman:'--'}} </view> </view> <view class="code_li"> <view class="code"> 联系电话: {{orderInfo.deliveryOrder.deliverymanPhone?orderInfo.deliveryOrder.deliverymanPhone:'--'}} </view> </view> </view> <u-mask :show="showcs" @click="showcs = false" :z-index='100' /> <view class="tip_box" v-if="showcs"> <view class="top" v-if="showcs"> <view class="tip"> 车损扣款退款 </view> <view class="ipt_box"> <view class="text"> 车损扣款 </view> <view class="ipt"> <input type="text" v-model="csmoney" placeholder="输入退款金额" class="input" placeholder-style="color:#C7CDD3" > 元 </view> </view> <view class="ipt_box" style="width:100%;margin-top: 6rpx;"> <view class="width:10% ;"> </view> <view style="color: #ccc;margin-left: auto; font-size: 24rpx;"> 最大可退款金额:{{orderInfo.deposit}}元 </view> </view> </view> <view class="bots"> <view class="bot_left" @click="closeCs()"> 取消 </view> <view class="bot_right" @click="backcs()"> 确定 </view> </view> </view> <u-mask :show="showtk" @click="showtk = false" :z-index='100' /> <view class="tip_box" v-if="showtk"> <view class="top" v-if="showtk"> <view class="tip"> 服务费退款 </view> <view class="ipt_box"> <view class="text"> 送车上门 </view> <view class="ipt"> <input type="text" v-model="deliveryFee" placeholder="输入退款金额" class="input" placeholder-style="color:#C7CDD3" > 元 </view> </view> <view class="ipt_box" style="width:100%;margin-top: 6rpx;"> <view class="width:10% ;"> </view> <view style="color: #ccc;margin-left: auto; font-size: 24rpx;"> 最大可退款金额:{{orderInfo.deliveryFee}}元 </view> </view> <view class="ipt_box"> <view class="text"> 商家取车 </view> <view class="ipt"> <input type="text" v-model="dispatchFee" placeholder="输入退款金额" class="input" placeholder-style="color:#C7CDD3" > 元 </view> </view> <view class="ipt_box" style="width:100%;margin-top: 6rpx;"> <view class="width:10% ;"> </view> <view style="color: #ccc;margin-left: auto; font-size: 24rpx;"> 最大可退款金额:{{orderInfo.dispatchFee}}元 </view> </view> <view class="ipt_box"> <view class="text"> 租金 </view> <view class="ipt"> <input type="text" v-model="leaseFee" placeholder="输入退款金额" class="input" placeholder-style="color:#C7CDD3"> 元 </view> </view> <view class="ipt_box" style="width:100%;margin-top: 6rpx;"> <view class="width:10% ;"> </view> <view style="color: #ccc;margin-left: auto; font-size: 24rpx;"> 最大可退款金额:{{orderInfo.leaseFee}}元 </view> </view> </view> <view class="bots"> <view class="bot_left" @click="closetk()"> 取消 </view> <view class="bot_right" @click="backMoney()"> 确定 </view> </view> </view> <view class="bot_btn" v-if="orderInfo.deliveryOrder.status!=3&&orderInfo.deliveryOrder"> <view class="btn" @click="getOrder()" v-if="orderInfo.deliveryOrder.status==0"> 立即接单 </view> <view class="btn" @click.stop="goDeli(orderInfo)" v-if="orderInfo.deliveryOrder.status==1&&orderInfo.deliveryOrder.deliverymanPhone==AccountInfo.phonenumber"> 立即配送 </view> <view class="btn" v-if="orderInfo.deliveryOrder.status==2&&orderInfo.deliveryOrder.deliverymanPhone==AccountInfo.phonenumber" @click.stop="overDeli(orderInfo)"> 配送完成 </view> </view> <view class="bot_btn" v-if="orderInfo.status==7"> <view class="btn" @click="backcar()"> 确认还车 </view> </view> </view> </template> <script> export default { data() { return { typeidx: 1, height: 0, showtips: false, orderNo:"", orderInfo:{}, modelInfo:{}, showtk:false, deliveryFee:0, dispatchFee:0, leaseFee:0, showcs:false, csmoney:0., AccountInfo:{} } }, onShow() { }, onLoad(e) { if(e.orderNo){ this.orderNo=e.orderNo this.getOrderInfo() this.getAccountInfo() } }, methods: { backcar(){ this.$u.post(`appVerify/merchantReturn?orderNo=` + this.orderInfo.orderNo).then((res) => { if (res.code === 200) { this.getOrderInfo() uni.showToast({ title: '操作成功', icon: 'none', duration: 2000 }); } else { uni.showToast({ title: res.msg, icon: 'none', duration: 2000 }); } }); }, typeReturns(num) { console.log(num,'aaaaaaaaaaaa'); let result = { text: '', color: '#4297F3' // 默认颜色 }; if (num == 0) { result.text = '待接单'; result.color = '#F14C4C'; // 待支付颜色 } else if (num == 1) { result.text = '待配送'; result.color = '#F38C42'; // 超时取消颜色 } else if (num == 2) { result.text = '配送中'; result.color = '#4297F3'; // 超时取消颜色 } else if (num == 3) { result.text = '已完成'; result.color = '#000000'; // 超时取消颜色 } else if (num == 8) { result.text = '已取消'; result.color = '#ccc'; // 超时取消颜色 } return result; }, getAccountInfo(){ this.$u.get(`appAdmin/myAccountInfo`).then((res) => { if (res.code === 200) { this.AccountInfo=res.data } else { uni.showToast({ title: res.msg, icon: 'none', duration: 2000 }); } }); }, goDeli(item) { this.$u.post(`appAdmin/inDelivery?orderNo=` + this.orderInfo.orderNo).then((res) => { if (res.code == 200) { this.getOrderInfo() uni.showToast({ title: '开始配送', icon: 'none', duration: 2000 }); } else { uni.showToast({ title: res.msg, icon: 'none', duration: 2000 }); } }); }, overDeli(item) { this.$u.post(`appAdmin/endDelivery?orderNo=` + this.orderInfo.orderNo).then((res) => { if (res.code == 200) { this.getOrderInfo() uni.showToast({ title: '配送完成', icon: 'none', duration: 2000 }); } else { uni.showToast({ title: res.msg, icon: 'none', duration: 2000 }); } }); }, getOrder(item) { this.$u.post(`appAdmin/orderTaking?orderNo=` + this.orderInfo.orderNo).then((res) => { if (res.code == 200) { this.getOrderInfo() uni.showToast({ title: '接单成功', icon: 'none', duration: 2000 }); } else { uni.showToast({ title: res.msg, icon: 'none', duration: 2000 }); } }); }, backyj(){ this.$u.post(`appVerify/depositRefund?orderNo=`+this.orderInfo.orderNo).then((res) => { if (res.code == 200) { this.getOrderInfo() } else { uni.showToast({ title: res.msg, icon: 'none', duration: 2000 }); } }); }, closeCs(){ this.showcs=false this.csmoney=0 }, backcs(){ this.$u.post(`appVerify/deductMoney?money=`+this.csmoney+'&orderNo='+this.orderInfo.orderNo).then((res) => { if (res.code == 200) { this.showcs=false this.csmoney=0 this.getOrderInfo() } else { this.showcs=false this.csmoney=0 uni.showToast({ title: res.msg, icon: 'none', duration: 2000 }); } }); }, backMoney(){ let data ={ orderNo:this.orderInfo.orderNo, dispatchFee:this.dispatchFee, deliveryFee:this.deliveryFee, leaseFee:this.leaseFee, reason:'退款' } this.$u.put(`appAdmin/order/refund`, data).then((res) => { if (res.code == 200) { this.showtk=false this.deliveryFee=0 this.dispatchFee=0 this.leaseFee=0 this.getOrderInfo() } else { this.showtk=false this.deliveryFee=0 this.dispatchFee=0 this.leaseFee=0 uni.showToast({ title: res.msg, icon: 'none', duration: 2000 }); } }); }, closetk(){ this.showtk=false this.deliveryFee=0 this.dispatchFee=0 this.leaseFee=0 }, callPhone(phone){ uni.makePhoneCall({ phoneNumber:phone }) // setTimeout(()=>{ // this.showkf=false // },500) }, copy(orderNo) { uni.setClipboardData({ data: orderNo, success: () => { uni.showToast({ title: '复制成功', icon: 'success', duration: 2000 }); }, fail: () => { uni.showToast({ title: '复制失败', icon: 'none', duration: 2000 }); } }); }, returnTime(time) { // 将时间字符串转换为 Date 对象 let date = new Date(time.replace(/-/g, "/")); // 获取月份(注意:月份从 0 开始,需要加 1) let month = (date.getMonth() + 1).toString().padStart(2, "0"); // 获取日期 let day = date.getDate().toString().padStart(2, "0"); // 获取小时 let hours = date.getHours().toString().padStart(2, "0"); // 获取分钟 let minutes = date.getMinutes().toString().padStart(2, "0"); // 返回指定格式 return `${month}/${day} ${hours}:${minutes}`; }, userRrturn(num){ if(num=='00'){ return '系统用户' }else if(num=='01'){ return '普通用户' }else if(num=='02'){ return '代理商' }else if(num=='03'){ return '商户' }else if(num=='04'){ return '调度员' } }, timetype(time) { if (time == 'hours') { return '小时' } else if (time == 'day') { return '天' } else if (time == 'week') { return '周' } else if (time == 'month') { return '月' } else if (time == 'quarter') { return '季度' } else if (time == 'year') { return '年' } }, staReturn(num){ if (num == 0) { return '待支付' } else if (num == 1) { return '下单' } else if (num == 2) { return '改价' } else if (num == 3) { return '支付' } else if (num == 4) { return '还车结束订单' } else if (num == 5) { return '押金审核' } else if (num == 6) { return '退款' } else if (num == 7) { return '用户取消' }else if (num == 7) { return '系统自动取消' } }, typeReturn(num) { if (num == 0) { return '待支付' } else if (num == 1) { return '待取车' } else if (num == 2) { return '待送车' } else if (num == 3) { return '送车中' } else if (num == 4) { return '车辆使用中' } else if (num == 5) { return '超时取消' } else if (num == 6) { return '已取消' }else if (num == 7) { return '待审核' } else if (num == 8) { return '订单已结束' } }, getmodelInfo() { let data = { modelId: this.orderInfo.modelId } this.$u.get(`app/getModelById?`, data).then((res) => { if (res.code == 200) { this.modelInfo = res.data } else { uni.showToast({ title: res.msg, icon: 'none', duration: 2000 }); } }); }, getOrderInfo() { let data = { orderNo: this.orderNo }; this.$u.get(`appAdmin/orderInfo?`, data).then((res) => { if (res.code === 200) { this.orderInfo = res.data; // this.getstoreInfo() this.getmodelInfo() // this.getAgent() // 调用倒计时方法 // if (this.orderInfo.status == 0) { // this.startCountdown(this.orderInfo.autoCancelTime); // } } else { uni.showToast({ title: res.msg, icon: 'none', duration: 2000 }); } }); }, } } </script> <style lang="scss"> page { background-color: #F7F7F7; } .page { width: 750rpx; padding-bottom: 220rpx; .order_code { width: 696rpx; margin: 0 auto; margin-top: 16rpx; padding: 20rpx 28rpx; background: #FFFFFF; border-radius: 20rpx 20rpx 20rpx 20rpx; .tits { font-weight: 400; font-size: 28rpx; color: #3D3D3D; } .code_li { display: flex; flex-wrap: nowrap; justify-content: space-between; .code { font-weight: 400; font-size: 28rpx; color: #3D3D3D; } .btn { font-weight: 400; font-size: 28rpx; color: #4297F3; } } } .tip_box { position: fixed; left: 72rpx; top: 428rpx; width: 610rpx; // height: 282rpx; background: #FFFFFF; border-radius: 30rpx 30rpx 30rpx 30rpx; z-index: 110; padding-bottom: 100rpx; .top { padding: 52rpx 38rpx 42rpx 36rpx; .ipt_box { margin-top: 22rpx; display: flex; flex-wrap: nowrap; align-items: center; .text { width: 350rpx; font-weight: 400; font-size: 32rpx; color: #3D3D3D; } .ipt { padding: 10rpx 18rpx; display: flex; align-items: center; justify-content: space-between; margin-left: 26rpx; width: 420rpx; height: 64rpx; border-radius: 0rpx 0rpx 0rpx 0rpx; border: 2rpx solid #979797; .input { width: 80%; } } } .tip { width: 100%; text-align: center; font-weight: 700; font-size: 32rpx; color: #3D3D3D; } .txt { margin-top: 32rpx; width: 100%; text-align: center; font-weight: 500; font-size: 32rpx; color: #3D3D3D; } } .bots { position: absolute; width: 610rpx; // border-top: 2rpx solid #D8D8D8; display: flex; flex-wrap: nowrap; // height: 100%; bottom: -20rpx; .bot_left { border-radius: 0rpx 0rpx 0rpx 30rpx; width: 50%; height: 86rpx; display: flex; align-items: center; justify-content: center; font-weight: 500; font-size: 32rpx; color: #3D3D3D; background: #EEEEEE; } .bot_right { border-radius: 0rpx 0rpx 30rpx 0rpx; width: 50%; height: 86rpx; background: #4C97E7; display: flex; align-items: center; justify-content: center; color: #FFFFFF; // border-left: 2rpx solid #D8D8D8; font-weight: 500; font-size: 32rpx; // color: #4C97E7; } } } .bot_btn{ display: flex; align-items: center; justify-content: center; position: fixed; bottom: 0; width: 750rpx; height: 160rpx; background: #FFFFFF; box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0,0,0,0.3); border-radius: 0rpx 0rpx 0rpx 0rpx; .btn{ display: flex; align-items: center; justify-content: center; border-radius: 20rpx; width: 682rpx; height: 84rpx; background: #4297F3; font-weight: 600; font-size: 36rpx; color: #FFFFFF; } } .user_info{ margin: 0 auto; margin-top: 16rpx; width: 698rpx; padding:20rpx 28rpx; background: #FFFFFF; border-radius: 20rpx 20rpx 20rpx 20rpx; .info_li2 { margin-top: 14rpx; // width: 750rpx; display: flex; flex-wrap: nowrap; align-items: flex-start; // border-bottom: 1rpx solid #D8D8D8; .txt4{ width: 112rpx; white-space: nowrap; margin-right: 48rpx; font-weight: 600; font-size: 28rpx; color: #6F6F6F; } .txt5{ flex-wrap: wrap; font-weight: 600; font-size: 28rpx; color: #3D3D3D; } .btn{ padding: 6rpx 12rpx; margin-left: auto; font-weight: 400; font-size: 24rpx; color: #4297F3; border-radius: 6rpx 6rpx 6rpx 6rpx; border: 1rpx solid #4297F3; } .txt6{ font-weight: 400; font-size: 28rpx; color: #6F6F6F; } .txt7{ margin-left: auto; font-weight: 400; font-size: 28rpx; color: #4297F3; } } } .price_box{ margin: 0 auto; margin-top: 16rpx; width: 698rpx; padding:20rpx 28rpx; background: #FFFFFF; border-radius: 20rpx 20rpx 20rpx 20rpx; .handle_box{ margin-top: 26rpx; padding: 22rpx 20rpx; width: 650rpx; background: #F4FBFF; border-radius: 18rpx 18rpx 18rpx 18rpx; .handle_tit{ font-weight:600; font-size: 28rpx; color: #3D3D3D; } .handel_li{ margin-top: 16rpx; width: 100%; display: flex; flex-wrap: nowrap; align-items: center; .yuan{ margin-left: 46rpx; width: 22rpx; height: 22rpx; background: #4297F3; border-radius: 50%; } .info{ margin-left: 30rpx; display: flex; flex-wrap: wrap; .info_top{ width: 100%; font-weight: 400; font-size: 28rpx; color: #3D3D3D; } .info_bot{ margin-top: 8rpx; font-weight: 400; font-size: 24rpx; color: #6F6F6F; } } } } .btn_box{ margin-top: 60rpx; display: flex; .btn1{ margin-right: 22rpx; padding: 8rpx 22rpx; background: #4297F3; border-radius: 8rpx 8rpx 8rpx 8rpx; font-weight: 500; font-size: 32rpx; color: #FFFFFF; } .btn2{ padding: 8rpx 22rpx; border-radius: 8rpx 8rpx 8rpx 8rpx; border: 2rpx solid #4297F3; font-weight: 500; font-size: 32rpx; color: #4297F3; } } .tit{ font-weight: 600; font-size: 32rpx; color: #3D3D3D; } .price_li{ margin-top: 18rpx; display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; .txt6{ font-weight: 400; font-size: 28rpx; color: #3D3D3D; } .txt7{ font-weight: 600; font-size: 32rpx; color: #3D3D3D; } } } .car_info { margin: 0 auto; margin-top: -200rpx; width: 698rpx; // height: 196rpx; background: #FFFFFF; border-radius: 20rpx 20rpx 20rpx 20rpx; display: flex; flex-wrap: wrap; padding: 0 24rpx; padding-bottom: 28rpx; .info_li2 { margin-top: 14rpx; width: 750rpx; display: flex; flex-wrap: nowrap; align-items: flex-start; // border-bottom: 1rpx solid #D8D8D8; .txt4{ width: 112rpx; white-space: nowrap; margin-right: 48rpx; font-weight: 600; font-size: 28rpx; color: #6F6F6F; } .txt5{ flex-wrap: wrap; font-weight: 600; font-size: 28rpx; color: #3D3D3D; } } .txt4{ font-weight: 600; font-size: 28rpx; color: #3D3D3D; } .info_li{ width: 100%; display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; .txt2{ font-weight: 600; font-size: 28rpx; color: #6F6F6F; } .txt3{ font-weight: 600; font-size: 24rpx; color: #3D3D3D; } } .info_tit{ margin-top: 22rpx; font-weight: 600; font-size: 36rpx; color: #FF8C1E; } .box1{ width: 100%; display: flex; flex-wrap: nowrap; justify-content: space-between; align-items: center; .left { .name { font-weight: 600; font-size: 32rpx; color: #3D3D3D; } .car_type_li { margin-top: 16rpx; display: flex; .type { margin-right: 8rpx; padding: 4rpx 10rpx; background: #DCEDFF; border-radius: 6rpx 6rpx 6rpx 6rpx; font-weight: 400; font-size: 24rpx; color: #4297F3; } } } image { width: 156rpx; height: 150rpx; } } } .tab-container { display: flex; border-bottom: 2px solid #ddd; /* 底部边框 */ } .tab-item { position: relative; padding: 10px 20px; cursor: pointer; color: #666; font-size: 16px; } .tab-item.active { color: #333; font-weight: bold; } .tab-item.active::after { content: ''; position: absolute; bottom: -2px; left: 0; width: 100%; height: 4px; background-color: #2e9afe; /* 下划线颜色 */ border-radius: 50px; /* 圆角效果,模拟弧线 */ } .fixed { z-index: 999; position: fixed; top: 0; } .backimg { // position: fixed; z-index: -10; width: 750rpx; height: 428rpx; background: linear-gradient(180deg, #CCE5FF 0%, rgba(204, 229, 255, 0) 100%); border-radius: 0rpx 0rpx 0rpx 0rpx; } } </style>