feat: 新增多个页面及功能,优化用户体验

在项目中新增了多个页面,包括押金页面、设备详情页面、反馈页面和帮助页面。同时,更新了订单支付和归还成功页面的逻辑,确保用户在支付和归还设备时能够获得清晰的反馈。优化了扫码和订单状态处理逻辑,提升了整体用户体验。
This commit is contained in:
8vd8
2025-04-16 18:26:02 +08:00
parent f96ff2b030
commit 431ceb4bdb
117 changed files with 1854 additions and 616 deletions
+1
View File
@@ -0,0 +1 @@
"use strict";const t=require("../../common/vendor.js"),e={data:()=>({depositAmount:"99.00",records:[{type:"支付",time:"2024-03-20 15:30",amount:"99.00"},{type:"退还",time:"2024-03-19 12:00",amount:"99.00"}]}),methods:{handleWithdraw(){t.index.showModal({title:"确认提现",content:"押金将原路退回,预计0-7个工作日到账",success:e=>{e.confirm&&t.index.showToast({title:"提现申请已提交",icon:"success"})}})}}};const o=t._export_sfc(e,[["render",function(e,o,n,d,s,a){return{a:t.t(s.depositAmount),b:t.o(((...t)=>a.handleWithdraw&&a.handleWithdraw(...t))),c:t.f(s.records,((e,o,n)=>({a:t.t(e.type),b:t.t(e.time),c:t.t("退还"===e.type?"+":"-"),d:t.t(e.amount),e:t.n("退还"===e.type?"refund":""),f:o})))}}],["__scopeId","data-v-a3ef2e56"]]);wx.createPage(o);
@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "押金管理",
"usingComponents": {}
}
@@ -0,0 +1 @@
<view class="deposit-container data-v-a3ef2e56"><view class="deposit-card data-v-a3ef2e56"><view class="title data-v-a3ef2e56">押金余额</view><view class="amount data-v-a3ef2e56">¥{{a}}</view><button class="withdraw-btn data-v-a3ef2e56" bindtap="{{b}}">提现</button></view><view class="notice-card data-v-a3ef2e56"><view class="notice-title data-v-a3ef2e56"><view class="dot data-v-a3ef2e56"></view><text class="data-v-a3ef2e56">提现说明</text></view><view class="notice-content data-v-a3ef2e56"><view class="notice-item data-v-a3ef2e56">1. 提现金额将原路退回支付账户</view><view class="notice-item data-v-a3ef2e56">2. 提现申请提交后预计0-7个工作日到账</view><view class="notice-item data-v-a3ef2e56">3. 如超时未收到,请联系客服处理</view></view></view><view class="record-card data-v-a3ef2e56"><view class="record-title data-v-a3ef2e56">押金记录</view><view class="record-list data-v-a3ef2e56"><view wx:for="{{c}}" wx:for-item="item" wx:key="f" class="record-item data-v-a3ef2e56"><view class="record-info data-v-a3ef2e56"><text class="record-type data-v-a3ef2e56">{{item.a}}</text><text class="record-time data-v-a3ef2e56">{{item.b}}</text></view><text class="{{['record-amount', 'data-v-a3ef2e56', item.e]}}">{{item.c}}¥{{item.d}}</text></view></view></view></view>
@@ -0,0 +1 @@
.deposit-container.data-v-a3ef2e56{min-height:100vh;background:#f8f8f8;padding:30rpx}.deposit-container .deposit-card.data-v-a3ef2e56{background:linear-gradient(135deg,#1976d2,#64b5f6);border-radius:20rpx;padding:40rpx;color:#fff;text-align:center;box-shadow:0 4rpx 20rpx rgba(25,118,210,.2)}.deposit-container .deposit-card .title.data-v-a3ef2e56{font-size:28rpx;opacity:.9;margin-bottom:20rpx}.deposit-container .deposit-card .amount.data-v-a3ef2e56{font-size:72rpx;font-weight:700;margin-bottom:40rpx}.deposit-container .deposit-card .withdraw-btn.data-v-a3ef2e56{background:#fff;color:#1976d2;width:80%;height:80rpx;line-height:80rpx;border-radius:40rpx;font-size:32rpx;font-weight:500;margin:0 auto}.deposit-container .deposit-card .withdraw-btn.data-v-a3ef2e56:active{transform:scale(.98)}.deposit-container .notice-card.data-v-a3ef2e56{margin-top:30rpx;background:#fff;border-radius:20rpx;padding:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.deposit-container .notice-card .notice-title.data-v-a3ef2e56{display:flex;align-items:center;margin-bottom:20rpx}.deposit-container .notice-card .notice-title .dot.data-v-a3ef2e56{width:12rpx;height:12rpx;background:#1976d2;border-radius:50%;margin-right:10rpx}.deposit-container .notice-card .notice-title text.data-v-a3ef2e56{font-size:30rpx;font-weight:500;color:#333}.deposit-container .notice-card .notice-content .notice-item.data-v-a3ef2e56{font-size:26rpx;color:#666;line-height:1.8;padding-left:22rpx}.deposit-container .record-card.data-v-a3ef2e56{margin-top:30rpx;background:#fff;border-radius:20rpx;padding:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.deposit-container .record-card .record-title.data-v-a3ef2e56{font-size:30rpx;font-weight:500;color:#333;margin-bottom:20rpx;border-left:8rpx solid #1976D2;padding-left:20rpx}.deposit-container .record-card .record-list .record-item.data-v-a3ef2e56{display:flex;justify-content:space-between;align-items:center;padding:20rpx 0;border-bottom:1rpx solid #f5f5f5}.deposit-container .record-card .record-list .record-item.data-v-a3ef2e56:last-child{border-bottom:none}.deposit-container .record-card .record-list .record-item .record-info .record-type.data-v-a3ef2e56{font-size:28rpx;color:#333;margin-bottom:6rpx;display:block}.deposit-container .record-card .record-list .record-item .record-info .record-time.data-v-a3ef2e56{font-size:24rpx;color:#999}.deposit-container .record-card .record-list .record-item .record-amount.data-v-a3ef2e56{font-size:32rpx;color:#333;font-weight:500}.deposit-container .record-card .record-list .record-item .record-amount.refund.data-v-a3ef2e56{color:#4caf50}
+1
View File
@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),t=require("../../config/user.js"),i={data:()=>({deviceInfo:{},deviceId:"",deviceLocation:"一号教学楼大厅",batteryLevel:95,hasActiveOrder:!1,deviceStatus:{text:"可使用",class:"available"},selectedPackage:1,packages:[{time:"1小时",price:"2.00",unitPrice:"2.00"},{time:"4小时",price:"6.00",unitPrice:"1.50"},{time:"12小时",price:"15.00",unitPrice:"1.25"}],isLoggedIn:!0,phoneNumber:""}),onLoad(e){this.deviceId=e.deviceNo,console.log(e.deviceNo),this.getDeviceInfo()},methods:{async getDeviceInfo(){const e=await t.getDeviceInfo(this.deviceId);200==e.code&&(this.deviceInfo=e.data)},showLoginTip(){e.index.showModal({title:"提示",content:"请先登录后再操作",confirmText:"去登录",success:t=>{t.confirm&&e.index.navigateTo({url:"/pages/login/index"})}})},selectPackage(e){this.selectedPackage=e},async checkOrderStatus(){try{(await this.$api.checkActiveOrder()).hasOrder&&e.index.redirectTo({url:`/pages/device/return?deviceId=${this.deviceId}`})}catch(t){e.index.showToast({title:"订单状态查询失败",icon:"none"})}},handleRent(){if(!this.isLoggedIn)return void this.showLoginTip();if(!this.phoneNumber)return void e.index.showToast({title:"请输入手机号码",icon:"none"});if(!/^1[3-9]\d{9}$/.test(this.phoneNumber))return void e.index.showToast({title:"请输入正确的手机号码",icon:"none"});const t=this.packages[this.selectedPackage];e.index.showModal({title:"确认租借",content:`确认支付押金¥99.00及${t.time}套餐费用¥${t.price}`,success:e=>{e.confirm&&this.submitRentOrder()}})},async submitRentOrder(){try{e.index.showLoading({title:"处理中"});const i=this.packages[this.selectedPackage],c=await t.rentPowerBank(this.deviceId,this.phoneNumber);if(200!==c.code)throw new Error(c.msg||"设备租借失败");const n=c.data;e.index.hideLoading(),e.index.redirectTo({url:`/pages/order/payment?orderId=${n.orderId}&packageTime=${i.time}&packagePrice=${i.price}`})}catch(i){e.index.hideLoading(),e.index.showToast({title:i.message||"租借失败,请重试",icon:"none"})}}}};const c=e._export_sfc(i,[["render",function(t,i,c,n,a,r){return e.e({a:e.t(a.deviceId),b:e.t(a.deviceStatus.text),c:e.n(a.deviceStatus.class),d:e.t(a.deviceLocation),e:e.t(a.batteryLevel),f:!a.hasActiveOrder},a.hasActiveOrder?{}:{g:e.f(a.packages,((t,i,c)=>({a:e.t(t.time),b:e.t(t.price),c:e.t(t.unitPrice),d:i,e:a.selectedPackage===i?1:"",f:e.o((e=>r.selectPackage(i)),i)})))},{h:!a.hasActiveOrder},a.hasActiveOrder?{}:{i:a.phoneNumber,j:e.o((e=>a.phoneNumber=e.detail.value))},{k:!a.hasActiveOrder},(a.hasActiveOrder,{}),{l:e.t(a.hasActiveOrder?"归还设备":"立即租借"),m:e.n(a.hasActiveOrder?"return":"rent"),n:e.o(((...e)=>r.handleRent&&r.handleRent(...e)))})}],["__scopeId","data-v-b8e15e19"]]);wx.createPage(c);
@@ -0,0 +1,6 @@
{
"navigationBarTitleText": "设备详情",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"usingComponents": {}
}
@@ -0,0 +1 @@
<view class="detail-container data-v-b8e15e19"><view class="device-card data-v-b8e15e19"><view class="device-header data-v-b8e15e19"><view class="device-title data-v-b8e15e19"><text class="name data-v-b8e15e19">共享风扇</text><text class="id data-v-b8e15e19">设备号:{{a}}</text></view><view class="{{['status', 'data-v-b8e15e19', c]}}">{{b}}</view></view><view class="device-info data-v-b8e15e19"><view class="info-item data-v-b8e15e19"><text class="label data-v-b8e15e19">设备位置</text><text class="value data-v-b8e15e19">{{d}}</text></view><view class="info-item data-v-b8e15e19"><text class="label data-v-b8e15e19">电池电量</text><text class="value data-v-b8e15e19">{{e}}%</text></view></view></view><view wx:if="{{f}}" class="package-section data-v-b8e15e19"><view class="section-title data-v-b8e15e19">选择套餐</view><view class="package-list data-v-b8e15e19"><view wx:for="{{g}}" wx:for-item="pkg" wx:key="d" class="{{['package-item', 'data-v-b8e15e19', pkg.e && 'active']}}" bindtap="{{pkg.f}}"><view class="package-content data-v-b8e15e19"><text class="time data-v-b8e15e19">{{pkg.a}}</text><text class="price data-v-b8e15e19">¥{{pkg.b}}</text></view><text class="unit-price data-v-b8e15e19">约{{pkg.c}}元/小时</text></view></view></view><view wx:if="{{h}}" class="phone-section data-v-b8e15e19"><view class="section-title data-v-b8e15e19">联系方式</view><view class="phone-input-wrap data-v-b8e15e19"><input type="number" class="phone-input data-v-b8e15e19" maxlength="11" placeholder="请输入手机号码" value="{{i}}" bindinput="{{j}}"/></view></view><view class="notice-section data-v-b8e15e19"><view class="section-title data-v-b8e15e19">使用说明</view><view class="notice-list data-v-b8e15e19"><view class="notice-item data-v-b8e15e19"><view class="dot data-v-b8e15e19"></view><text class="data-v-b8e15e19">请在使用前检查设备是否完好</text></view><view class="notice-item data-v-b8e15e19"><view class="dot data-v-b8e15e19"></view><text class="data-v-b8e15e19">超出使用时间将自动按小时计费</text></view><view class="notice-item data-v-b8e15e19"><view class="dot data-v-b8e15e19"></view><text class="data-v-b8e15e19">请在指定区域内使用设备</text></view></view></view><view class="bottom-bar data-v-b8e15e19"><view wx:if="{{k}}" class="price-info data-v-b8e15e19"><text class="deposit-text data-v-b8e15e19">押金:</text><text class="deposit-amount data-v-b8e15e19">¥99</text></view><button class="{{['action-btn', 'data-v-b8e15e19', m]}}" bindtap="{{n}}">{{l}}</button></view></view>
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),t={data:()=>({types:["设备故障","收费问题","使用建议","其他"],selectedType:-1,description:"",images:[],contact:""}),methods:{selectType(e){this.selectedType=e},chooseImage(){e.index.chooseImage({count:3-this.images.length,success:e=>{this.images=[...this.images,...e.tempFilePaths]}})},deleteImage(e){this.images.splice(e,1)},submitFeedback(){-1!==this.selectedType?this.description.trim()?this.contact?e.index.showToast({title:"提交成功",icon:"success"}):e.index.showToast({title:"请留下联系方式",icon:"none"}):e.index.showToast({title:"请描述您的问题",icon:"none"}):e.index.showToast({title:"请选择问题类型",icon:"none"})}}};const s=e._export_sfc(t,[["render",function(t,s,i,c,o,a){return e.e({a:e.f(o.types,((t,s,i)=>({a:e.t(t),b:s,c:o.selectedType===s?1:"",d:e.o((e=>a.selectType(s)),s)}))),b:o.description,c:e.o((e=>o.description=e.detail.value)),d:e.t(o.description.length),e:e.f(o.images,((t,s,i)=>({a:t,b:e.o((e=>a.deleteImage(s)),s),c:s}))),f:o.images.length<3},o.images.length<3?{g:e.o(((...e)=>a.chooseImage&&a.chooseImage(...e)))}:{},{h:o.contact,i:e.o((e=>o.contact=e.detail.value)),j:e.o(((...e)=>a.submitFeedback&&a.submitFeedback(...e)))})}],["__scopeId","data-v-229c69af"]]);wx.createPage(s);
@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "投诉与建议",
"usingComponents": {}
}
@@ -0,0 +1 @@
<view class="feedback-container data-v-229c69af"><view class="type-section data-v-229c69af"><view class="section-title data-v-229c69af">问题类型</view><view class="type-grid data-v-229c69af"><view wx:for="{{a}}" wx:for-item="type" wx:key="b" class="{{['type-item', 'data-v-229c69af', type.c && 'active']}}" bindtap="{{type.d}}">{{type.a}}</view></view></view><view class="description-section data-v-229c69af"><view class="section-title data-v-229c69af">问题描述</view><block wx:if="{{r0}}"><textarea class="description-input data-v-229c69af" placeholder="请详细描述您遇到的问题,以便我们更好地为您解决" maxlength="500" value="{{b}}" bindinput="{{c}}"/></block><view class="word-count data-v-229c69af">{{d}}/500</view></view><view class="upload-section data-v-229c69af"><view class="section-title data-v-229c69af">图片上传(选填)</view><view class="upload-grid data-v-229c69af"><view wx:for="{{e}}" wx:for-item="img" wx:key="c" class="upload-item data-v-229c69af"><image class="data-v-229c69af" src="{{img.a}}" mode="aspectFill"/><view class="delete-btn data-v-229c69af" bindtap="{{img.b}}">×</view></view><view wx:if="{{f}}" class="upload-btn data-v-229c69af" bindtap="{{g}}"><text class="plus data-v-229c69af">+</text><text class="tip data-v-229c69af">上传图片</text></view></view></view><view class="contact-section data-v-229c69af"><view class="section-title data-v-229c69af">联系方式</view><input class="contact-input data-v-229c69af" placeholder="请留下您的手机号,方便我们联系您" type="number" maxlength="11" value="{{h}}" bindinput="{{i}}"/></view><view class="submit-section data-v-229c69af"><button class="submit-btn data-v-229c69af" bindtap="{{j}}">提交反馈</button></view></view>
@@ -0,0 +1 @@
.feedback-container.data-v-229c69af{min-height:100vh;background:#f8f8f8;padding:30rpx}.feedback-container .section-title.data-v-229c69af{font-size:30rpx;color:#333;font-weight:500;margin-bottom:20rpx}.feedback-container .type-section.data-v-229c69af{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:20rpx}.feedback-container .type-section .type-grid.data-v-229c69af{display:flex;flex-wrap:wrap;margin:0 -10rpx}.feedback-container .type-section .type-grid .type-item.data-v-229c69af{width:calc(50% - 20rpx);margin:10rpx;height:80rpx;display:flex;align-items:center;justify-content:center;background:#f5f5f5;border-radius:10rpx;font-size:28rpx;color:#666;transition:all .3s}.feedback-container .type-section .type-grid .type-item.active.data-v-229c69af{background:#e3f2fd;color:#1976d2}.feedback-container .description-section.data-v-229c69af{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:20rpx}.feedback-container .description-section .description-input.data-v-229c69af{width:100%;height:240rpx;background:#f8f8f8;border-radius:10rpx;padding:20rpx;font-size:28rpx;color:#333;box-sizing:border-box}.feedback-container .description-section .word-count.data-v-229c69af{text-align:right;font-size:24rpx;color:#999;margin-top:10rpx}.feedback-container .upload-section.data-v-229c69af{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:20rpx}.feedback-container .upload-section .upload-grid.data-v-229c69af{display:flex;flex-wrap:wrap}.feedback-container .upload-section .upload-grid .upload-item.data-v-229c69af{width:200rpx;height:200rpx;margin-right:20rpx;margin-bottom:20rpx;position:relative}.feedback-container .upload-section .upload-grid .upload-item image.data-v-229c69af{width:100%;height:100%;border-radius:10rpx}.feedback-container .upload-section .upload-grid .upload-item .delete-btn.data-v-229c69af{position:absolute;right:-10rpx;top:-10rpx;width:40rpx;height:40rpx;background:rgba(0,0,0,.5);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:32rpx}.feedback-container .upload-section .upload-grid .upload-btn.data-v-229c69af{width:200rpx;height:200rpx;background:#f5f5f5;border-radius:10rpx;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#999}.feedback-container .upload-section .upload-grid .upload-btn .plus.data-v-229c69af{font-size:60rpx;line-height:1;margin-bottom:10rpx}.feedback-container .upload-section .upload-grid .upload-btn .tip.data-v-229c69af{font-size:24rpx}.feedback-container .contact-section.data-v-229c69af{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:40rpx}.feedback-container .contact-section .contact-input.data-v-229c69af{width:100%;height:80rpx;background:#f8f8f8;border-radius:10rpx;padding:0 20rpx;font-size:28rpx;color:#333;box-sizing:border-box}.feedback-container .submit-section.data-v-229c69af{padding:0 40rpx}.feedback-container .submit-section .submit-btn.data-v-229c69af{width:100%;height:88rpx;background:#1976d2;color:#fff;border-radius:44rpx;font-size:32rpx;font-weight:500;display:flex;align-items:center;justify-content:center}.feedback-container .submit-section .submit-btn.data-v-229c69af:active{transform:scale(.98)}
+1
View File
@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),T=require("../../constants/help.js"),E={data:()=>({HELP_CONTENT:T.HELP_CONTENT,faqList:T.HELP_CONTENT.FAQ_LIST.map((e=>({...e,isOpen:!1})))}),methods:{toggleFaq(e){this.faqList[e].isOpen=!this.faqList[e].isOpen},makePhoneCall(){e.index.makePhoneCall({phoneNumber:T.HELP_CONTENT.CONTACT.PHONE.VALUE})}}};const t=e._export_sfc(E,[["render",function(T,E,t,N,C,a){return{a:e.f(C.faqList,((T,E,t)=>({a:e.t(T.question),b:T.isOpen?1:"",c:e.t(T.answer),d:T.isOpen,e:E,f:e.o((e=>a.toggleFaq(E)),E)}))),b:e.t(C.HELP_CONTENT.CONTACT.TITLE),c:e.t(C.HELP_CONTENT.CONTACT.PHONE.LABEL),d:e.t(C.HELP_CONTENT.CONTACT.PHONE.VALUE),e:e.o(((...e)=>a.makePhoneCall&&a.makePhoneCall(...e))),f:e.t(C.HELP_CONTENT.CONTACT.SERVICE_TIME.LABEL),g:e.t(C.HELP_CONTENT.CONTACT.SERVICE_TIME.VALUE)}}],["__scopeId","data-v-8f1810be"]]);wx.createPage(t);
+4
View File
@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "帮助中心",
"usingComponents": {}
}
+1
View File
@@ -0,0 +1 @@
<view class="help-container data-v-8f1810be"><view class="faq-list data-v-8f1810be"><view wx:for="{{a}}" wx:for-item="item" wx:key="e" class="faq-item data-v-8f1810be" bindtap="{{item.f}}"><view class="faq-header data-v-8f1810be"><text class="question data-v-8f1810be">{{item.a}}</text><view class="{{['arrow', 'data-v-8f1810be', item.b && 'open']}}"></view></view><view class="answer data-v-8f1810be" hidden="{{!item.d}}">{{item.c}}</view></view></view><view class="contact-card data-v-8f1810be"><view class="contact-title data-v-8f1810be">{{b}}</view><view class="contact-content data-v-8f1810be"><view class="contact-item data-v-8f1810be"><text class="label data-v-8f1810be">{{c}}</text><text class="value data-v-8f1810be" bindtap="{{e}}">{{d}}</text></view><view class="contact-item data-v-8f1810be"><text class="label data-v-8f1810be">{{f}}</text><text class="value data-v-8f1810be">{{g}}</text></view></view></view></view>
+1
View File
@@ -0,0 +1 @@
.help-container.data-v-8f1810be{min-height:100vh;background:#f8f8f8;padding:30rpx}.help-container .faq-list.data-v-8f1810be{background:#fff;border-radius:20rpx;padding:20rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.help-container .faq-list .faq-item.data-v-8f1810be{border-bottom:1rpx solid #f5f5f5}.help-container .faq-list .faq-item.data-v-8f1810be:last-child{border-bottom:none}.help-container .faq-list .faq-item .faq-header.data-v-8f1810be{display:flex;justify-content:space-between;align-items:center;padding:30rpx 20rpx}.help-container .faq-list .faq-item .faq-header .question.data-v-8f1810be{font-size:30rpx;color:#333;flex:1;padding-right:20rpx}.help-container .faq-list .faq-item .faq-header .arrow.data-v-8f1810be{width:16rpx;height:16rpx;border-right:4rpx solid #999;border-bottom:4rpx solid #999;transform:rotate(45deg);transition:all .3s}.help-container .faq-list .faq-item .faq-header .arrow.open.data-v-8f1810be{transform:rotate(-135deg)}.help-container .faq-list .faq-item .answer.data-v-8f1810be{font-size:28rpx;color:#666;line-height:1.6;padding:0 20rpx 30rpx;background:#f9f9f9;border-radius:10rpx;margin:0 20rpx 20rpx}.help-container .contact-card.data-v-8f1810be{background:#fff;border-radius:20rpx;padding:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.help-container .contact-card .contact-title.data-v-8f1810be{font-size:32rpx;color:#333;font-weight:500;margin-bottom:20rpx;border-left:8rpx solid #1976D2;padding-left:20rpx}.help-container .contact-card .contact-content .contact-item.data-v-8f1810be{display:flex;justify-content:space-between;align-items:center;padding:20rpx 0}.help-container .contact-card .contact-content .contact-item .label.data-v-8f1810be{font-size:28rpx;color:#666}.help-container .contact-card .contact-content .contact-item .value.data-v-8f1810be{font-size:28rpx;color:#333;font-weight:500}.help-container .contact-card .contact-content .contact-item .value.data-v-8f1810be:active{opacity:.7}
+1
View File
@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),o=require("../../util/index.js"),t=require("../../config/url.js"),n=require("../../common/assets.js"),a={methods:{async handleScan(){try{const n=await new Promise(((o,t)=>{e.index.scanCode({success:o,fail:t})}));let a=o.getQueryString(n.path,"deviceNo");if(console.log("扫码路径:",n.path),console.log("解析到的设备号:",a),!a)return void e.index.showToast({title:"无效的设备二维码",icon:"none"});e.index.getStorageSync("token")||await o.wxLogin();const d=await e.index.request({url:`${t.URL||"http://127.0.0.1:8080"}/app/order/inUse`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(console.log("使用中订单检查结果:",JSON.stringify(d)),200==d.statusCode&&200==d.data.code&&d.data.data){const o=d.data.data;return console.log("检测到使用中订单,准备跳转:",o),e.index.reLaunch({url:`/pages/return/index?orderId=${o.orderId}&deviceId=${a||o.deviceNo}`}),void console.log("已发起页面跳转")}const i=await e.index.request({url:`${t.URL||"http://127.0.0.1:8080"}/app/order/unpaid`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(console.log("待支付订单检查结果:",JSON.stringify(i)),200==i.statusCode&&200==i.data.code&&i.data.data){const o=i.data.data;console.log("检测到待支付订单,准备跳转:",o),e.index.navigateTo({url:`/pages/order/payment?orderId=${o.orderId}`})}else console.log("无待支付订单,直接跳转到设备详情页面, deviceNo:",a),e.index.navigateTo({url:`/pages/device/detail?deviceNo=${a}`})}catch(n){console.error("扫码处理失败:",n),e.index.showToast({title:"扫码失败",icon:"none"})}}}};const d=e._export_sfc(a,[["render",function(o,t,a,d,i,r){return{a:n._imports_0,b:e.o(((...e)=>r.handleScan&&r.handleScan(...e)))}}],["__scopeId","data-v-8df762f3"]]);wx.createPage(d);
+4
View File
@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "共享风扇",
"usingComponents": {}
}
+1
View File
@@ -0,0 +1 @@
<view class="container data-v-8df762f3"><view class="banner data-v-8df762f3"><view class="temp-banner data-v-8df762f3"><text class="banner-text data-v-8df762f3">共享风扇</text><text class="banner-subtitle data-v-8df762f3">让清凉随身携带</text><view class="banner-bg data-v-8df762f3"></view></view></view><view class="scan-area data-v-8df762f3"><view class="scan-btn data-v-8df762f3" bindtap="{{b}}"><view class="btn-content data-v-8df762f3"><image class="btn-icon data-v-8df762f3" src="{{a}}" mode="aspectFit"/><text class="btn-text data-v-8df762f3">扫一扫</text></view><text class="btn-desc data-v-8df762f3">扫描设备二维码使用或归还</text></view></view><view class="tips-section data-v-8df762f3"><view class="tips-header data-v-8df762f3"><view class="tips-title data-v-8df762f3">使用小贴士</view></view><view class="tips-list data-v-8df762f3"><view class="tip-item data-v-8df762f3"><view class="tip-dot data-v-8df762f3"></view><text class="data-v-8df762f3">租借时间:每次最长可租借12小时</text></view><view class="tip-item data-v-8df762f3"><view class="tip-dot data-v-8df762f3"></view><text class="data-v-8df762f3">押金说明:租借需支付99元押金,归还后自动退还</text></view><view class="tip-item data-v-8df762f3"><view class="tip-dot data-v-8df762f3"></view><text class="data-v-8df762f3">收费标准:2元/小时,不足1小时按1小时计算</text></view><view class="tip-item data-v-8df762f3"><view class="tip-dot data-v-8df762f3"></view><text class="data-v-8df762f3">爱护提示:请勿将设备带离指定区域,保持设备清洁</text></view></view></view></view>
+1
View File
@@ -0,0 +1 @@
.container.data-v-8df762f3{height:87.5vh;background:#f8f8f8;padding-bottom:40rpx}.container .banner.data-v-8df762f3{padding:30rpx}.container .banner .temp-banner.data-v-8df762f3{height:300rpx;background:linear-gradient(135deg,#1976d2,#42a5f5);border-radius:30rpx;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#fff;box-shadow:0 8rpx 32rpx rgba(25,118,210,.2)}.container .banner .temp-banner .banner-text.data-v-8df762f3{font-size:56rpx;font-weight:700;margin-bottom:20rpx;position:relative;z-index:1;text-shadow:0 2rpx 4rpx rgba(0,0,0,.1)}.container .banner .temp-banner .banner-subtitle.data-v-8df762f3{font-size:32rpx;opacity:.95;position:relative;z-index:1;text-shadow:0 2rpx 4rpx rgba(0,0,0,.1)}.container .banner .temp-banner .banner-bg.data-v-8df762f3{position:absolute;right:-60rpx;bottom:-60rpx;width:300rpx;height:300rpx;background:rgba(255,255,255,.1);border-radius:50%;transform:rotate(-15deg)}.container .banner .temp-banner.data-v-8df762f3:after{content:"";position:absolute;left:-80rpx;top:-80rpx;width:240rpx;height:240rpx;background:rgba(255,255,255,.08);border-radius:50%}.container .scan-area.data-v-8df762f3{padding:20rpx 30rpx 40rpx;display:flex;justify-content:center}.container .scan-area .scan-btn.data-v-8df762f3{width:460rpx;height:200rpx;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#00c853,#69f0ae);border-radius:30rpx;box-shadow:0 8rpx 32rpx rgba(0,200,83,.2);transition:all .3s ease;position:relative;overflow:hidden}.container .scan-area .scan-btn.data-v-8df762f3:active{transform:scale(.98);box-shadow:0 4rpx 16rpx rgba(0,200,83,.15)}.container .scan-area .scan-btn.data-v-8df762f3:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(rgba(255,255,255,.1),transparent)}.container .scan-area .scan-btn .btn-content.data-v-8df762f3{display:flex;align-items:center;justify-content:center;margin-bottom:12rpx;position:relative;z-index:1}.container .scan-area .scan-btn .btn-content .btn-icon.data-v-8df762f3{width:48rpx;height:48rpx;margin-right:16rpx}.container .scan-area .scan-btn .btn-content .btn-text.data-v-8df762f3{font-size:42rpx;font-weight:600;color:#fff;text-shadow:0 2rpx 4rpx rgba(0,0,0,.1)}.container .scan-area .scan-btn .btn-desc.data-v-8df762f3{font-size:26rpx;color:rgba(255,255,255,.95);position:relative;z-index:1}.container .tips-section.data-v-8df762f3{margin:0 30rpx;background:#fff;border-radius:24rpx;box-shadow:0 8rpx 32rpx rgba(0,0,0,.05);overflow:hidden}.container .tips-section .tips-header.data-v-8df762f3{padding:30rpx;background:linear-gradient(to right,#f5f9ff,#fff);border-bottom:2rpx solid #f0f0f0}.container .tips-section .tips-header .tips-title.data-v-8df762f3{font-size:32rpx;font-weight:600;color:#333;position:relative;padding-left:24rpx}.container .tips-section .tips-header .tips-title.data-v-8df762f3:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:8rpx;height:32rpx;background:#1976d2;border-radius:4rpx}.container .tips-section .tips-list.data-v-8df762f3{padding:20rpx 30rpx}.container .tips-section .tips-list .tip-item.data-v-8df762f3{display:flex;align-items:center;margin-bottom:24rpx;padding:0 10rpx}.container .tips-section .tips-list .tip-item.data-v-8df762f3:last-child{margin-bottom:0}.container .tips-section .tips-list .tip-item .tip-dot.data-v-8df762f3{width:12rpx;height:12rpx;background:#1976d2;border-radius:50%;margin-right:16rpx;flex-shrink:0;box-shadow:0 2rpx 6rpx rgba(25,118,210,.2)}.container .tips-section .tips-list .tip-item text.data-v-8df762f3{font-size:28rpx;color:#666;line-height:1.6}
+1
View File
@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),o=require("../../util/index.js"),t=require("../../common/assets.js"),n={data:()=>({userInfo:{},deposit:"0.00",tempAvatar:"",tempNickname:"",show:!1}),onShow(){this.getInfo()},methods:{async getInfo(){try{if(!e.index.getStorageSync("token"))return await o.wxLogin(),void this.getInfo();const t=await o.getUserInfo();if(console.log(t),200===t.code){const o={nickName:t.data.nickname,phone:t.data.phone,avatar:t.data.iconUrl,isAdmin:t.data.isAdmin};this.userInfo=o,e.index.setStorageSync("userInfo",o),this.deposit=t.data.balanceAmount||"0.00"}}catch(t){console.error("获取用户信息失败:",t),e.index.showToast({title:"获取用户信息失败",icon:"none"})}},navigateTo(o){e.index.navigateTo({url:o})}}};const a=e._export_sfc(n,[["render",function(o,n,a,s,i,r){return e.e({a:i.userInfo.avatar||"/static/user.png",b:i.userInfo},i.userInfo?{c:e.t(i.userInfo.nickName),d:e.t(i.userInfo.phone||"")}:{},{e:e.o(((...e)=>o.showPopup&&o.showPopup(...e))),f:e.t(i.deposit),g:e.o((e=>r.navigateTo("/pages/deposit/index"))),h:t._imports_0$1,i:e.o((e=>r.navigateTo("/pages/order/index"))),j:t._imports_1,k:e.o((e=>r.navigateTo("/pages/feedback/index"))),l:t._imports_2,m:e.o((e=>r.navigateTo("/pages/help/index")))})}],["__scopeId","data-v-b106ba06"]]);wx.createPage(a);
+4
View File
@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "个人中心",
"usingComponents": {}
}
+1
View File
@@ -0,0 +1 @@
<view class="my-container data-v-b106ba06"><view class="user-info data-v-b106ba06"><view class="floating-dots data-v-b106ba06"></view><view class="user-info-content data-v-b106ba06" bindtap="{{e}}"><view class="avatar-wrap data-v-b106ba06"><image class="avatar data-v-b106ba06" src="{{a}}" mode="aspectFill"/></view><view wx:if="{{b}}" class="info-content data-v-b106ba06"><view class="text-group data-v-b106ba06"><text class="nickname data-v-b106ba06">{{c}}</text><text class="phone data-v-b106ba06">{{d}}</text></view></view><view wx:else class="info-content not-login data-v-b106ba06"><text class="login-text data-v-b106ba06">点击登录</text><text class="login-desc data-v-b106ba06">登录后享受更多服务</text></view></view><view class="wave-decoration data-v-b106ba06"></view></view><view class="balance-card data-v-b106ba06"><view class="balance-content data-v-b106ba06"><text class="label data-v-b106ba06">押金余额</text><text class="amount data-v-b106ba06">¥{{f}}</text></view><view class="withdraw-btn data-v-b106ba06" bindtap="{{g}}"> 提现 <view class="arrow data-v-b106ba06"></view></view></view><view class="function-list data-v-b106ba06"><view class="function-item data-v-b106ba06" bindtap="{{i}}"><view class="item-left data-v-b106ba06"><view class="icon-wrap order data-v-b106ba06"><image src="{{h}}" mode="aspectFit" class="icon-image data-v-b106ba06"/></view><text class="title data-v-b106ba06">租借记录</text></view><view class="arrow data-v-b106ba06"></view></view><view class="function-item data-v-b106ba06" bindtap="{{k}}"><view class="item-left data-v-b106ba06"><view class="icon-wrap feedback data-v-b106ba06"><image src="{{j}}" mode="aspectFit" class="icon-image data-v-b106ba06"/></view><text class="title data-v-b106ba06">投诉与建议</text></view><view class="arrow data-v-b106ba06"></view></view><view class="function-item data-v-b106ba06" bindtap="{{m}}"><view class="item-left data-v-b106ba06"><view class="icon-wrap help data-v-b106ba06"><image src="{{l}}" mode="aspectFit" class="icon-image data-v-b106ba06"/></view><text class="title data-v-b106ba06">帮助中心</text></view><view class="arrow data-v-b106ba06"></view></view></view></view>
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
"use strict";const t=require("../../common/vendor.js"),e=require("../../config/user.js"),r=require("../../constants/orderStatus.js"),s={data:()=>({currentTab:0,OrderStatusMap:r.OrderStatusMap,OrderStatusTabs:r.OrderStatusTabs,orderList:[]}),async onLoad(t){if(t&&t.orderId)try{const r=await e.queryById(t.orderId);if(200===r.code&&r.data){const t=r.data;console.log("特定订单数据:",JSON.stringify(t)),console.log("特定订单的开始时间:",t.startTime),console.log("特定订单的创建时间:",t.createTime);const e=t.startTime||t.createTime||"";console.log("特定订单最终显示的开始时间:",e);const s={orderNo:t.orderId,status:t.orderStatus,deviceId:t.deviceNo,startTime:e,endTime:t.endTime||"",amount:t.payAmount||t.actualDeviceAmount||"0.00"};this.orderList=[s,...this.orderList];const o=this.OrderStatusTabs.findIndex((e=>e.status.includes(t.orderStatus)));-1!==o&&this.switchTab(o)}}catch(r){console.error("获取订单详情失败:",r)}await this.getOrderList()},methods:{async getOrderList(r=[]){try{const t=await e.getOrderList(r);200===t.code&&t.data&&t.data.records&&(console.log("API返回的订单列表数据:",JSON.stringify(t.data.records)),this.orderList=t.data.records.map((t=>{console.log(`订单 ${t.orderId} 的开始时间:`,t.startTime),console.log(`订单 ${t.orderId} 的创建时间:`,t.createTime);const e=t.startTime||t.createTime||"";return console.log(`订单 ${t.orderId} 最终显示的开始时间:`,e),{orderNo:t.orderId,status:t.orderStatus,deviceId:t.deviceNo,startTime:e,endTime:t.endTime||"",amount:t.payAmount||t.actualDeviceAmount||"0.00"}})))}catch(s){console.error("获取订单列表失败:",s),t.index.showToast({title:"获取订单列表失败",icon:"none"})}},async switchTab(t){this.currentTab=t;const e=this.OrderStatusTabs[t].status;await this.getOrderList(e)}}};const o=t._export_sfc(s,[["render",function(e,r,s,o,a,d){return t.e({a:t.f(a.OrderStatusTabs,((e,r,s)=>({a:t.t(e.text),b:r,c:a.currentTab===r?1:"",d:t.o((t=>d.switchTab(r)),r)}))),b:t.f(a.orderList,((e,r,s)=>{var o,d;return t.e({a:t.t(e.orderNo),b:t.t(null==(o=a.OrderStatusMap[e.status])?void 0:o.text),c:t.n(null==(d=a.OrderStatusMap[e.status])?void 0:d.class),d:1===e.status},1===e.status?{e:`/pages/return/index?deviceId=${e.deviceId}&orderId=${e.orderNo}`}:{},{f:t.t(e.deviceId),g:t.t(e.startTime),h:t.t(e.endTime||"-"),i:t.t(e.amount),j:r})})),c:0===a.orderList.length},(a.orderList.length,{}))}],["__scopeId","data-v-d5ec5c8e"]]);wx.createPage(o);
+4
View File
@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "租借记录",
"usingComponents": {}
}
+1
View File
@@ -0,0 +1 @@
<view class="order-container data-v-d5ec5c8e"><view class="tab-bar data-v-d5ec5c8e"><view wx:for="{{a}}" wx:for-item="tab" wx:key="b" class="{{['tab-item', 'data-v-d5ec5c8e', tab.c && 'active']}}" bindtap="{{tab.d}}">{{tab.a}}</view></view><view class="order-list data-v-d5ec5c8e"><view wx:for="{{b}}" wx:for-item="order" wx:key="j" class="order-item data-v-d5ec5c8e"><view class="order-header data-v-d5ec5c8e"><text class="order-no data-v-d5ec5c8e">订单号:{{order.a}}</text><text class="{{['order-status', 'data-v-d5ec5c8e', order.c]}}">{{order.b}}</text><navigator wx:if="{{order.d}}" url="{{order.e}}" class="return-btn data-v-d5ec5c8e">归还设备</navigator></view><view class="order-content data-v-d5ec5c8e"><view class="device-info data-v-d5ec5c8e"><text class="device-name data-v-d5ec5c8e">共享风扇</text><text class="device-id data-v-d5ec5c8e">设备号:{{order.f}}</text></view><view class="time-info data-v-d5ec5c8e"><view class="time-item data-v-d5ec5c8e"><text class="label data-v-d5ec5c8e">开始时间:</text><text class="value data-v-d5ec5c8e">{{order.g}}</text></view><view class="time-item data-v-d5ec5c8e"><text class="label data-v-d5ec5c8e">结束时间:</text><text class="value data-v-d5ec5c8e">{{order.h}}</text></view></view><view class="price-info data-v-d5ec5c8e"><text class="amount data-v-d5ec5c8e">¥{{order.i}}</text></view></view></view></view><view wx:if="{{c}}" class="empty-tip data-v-d5ec5c8e"><view class="empty-icon data-v-d5ec5c8e"></view><text class="data-v-d5ec5c8e">暂无订单记录</text></view></view>
+1
View File
@@ -0,0 +1 @@
.order-container.data-v-d5ec5c8e{min-height:100vh;background:#f8f8f8}.order-container .tab-bar.data-v-d5ec5c8e{display:flex;background:#fff;padding:20rpx 0;position:-webkit-sticky;position:sticky;top:0;z-index:100;box-shadow:0 2rpx 10rpx rgba(0,0,0,.05)}.order-container .tab-bar .tab-item.data-v-d5ec5c8e{flex:1;text-align:center;font-size:28rpx;color:#666;position:relative;padding:20rpx 0}.order-container .tab-bar .tab-item.active.data-v-d5ec5c8e{color:#1976d2;font-weight:500}.order-container .tab-bar .tab-item.active.data-v-d5ec5c8e:after{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:40rpx;height:4rpx;background:#1976d2;border-radius:2rpx}.order-container .order-list.data-v-d5ec5c8e{padding:20rpx}.order-container .order-list .order-item.data-v-d5ec5c8e{background:#fff;border-radius:20rpx;margin-bottom:20rpx;padding:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.order-container .order-list .order-item .order-header.data-v-d5ec5c8e{display:flex;justify-content:space-between;align-items:center;padding-bottom:20rpx;border-bottom:1rpx solid #f5f5f5}.order-container .order-list .order-item .order-header .order-no.data-v-d5ec5c8e{font-size:26rpx;color:#666}.order-container .order-list .order-item .order-header .order-status.data-v-d5ec5c8e{font-size:26rpx}.order-container .order-list .order-item .order-header .order-status.status-waiting.data-v-d5ec5c8e{color:#ff9800}.order-container .order-list .order-item .order-header .order-status.status-progress.data-v-d5ec5c8e{color:#2196f3}.order-container .order-list .order-item .order-header .order-status.status-success.data-v-d5ec5c8e{color:#4caf50}.order-container .order-list .order-item .order-header .order-status.status-using.data-v-d5ec5c8e{color:#1976d2}.order-container .order-list .order-item .order-header .order-status.status-failed.data-v-d5ec5c8e{color:#f44336}.order-container .order-list .order-item .order-header .order-status.status-cancelled.data-v-d5ec5c8e{color:#9e9e9e}.order-container .order-list .order-item .order-header .order-status.status-finished.data-v-d5ec5c8e{color:#4caf50}.order-container .order-list .order-item .order-content.data-v-d5ec5c8e{padding-top:20rpx}.order-container .order-list .order-item .order-content .device-info.data-v-d5ec5c8e{margin-bottom:20rpx}.order-container .order-list .order-item .order-content .device-info .device-name.data-v-d5ec5c8e{font-size:32rpx;color:#333;font-weight:500;margin-right:20rpx}.order-container .order-list .order-item .order-content .device-info .device-id.data-v-d5ec5c8e{font-size:26rpx;color:#999}.order-container .order-list .order-item .order-content .time-info .time-item.data-v-d5ec5c8e{font-size:26rpx;color:#666;margin-bottom:10rpx}.order-container .order-list .order-item .order-content .time-info .time-item .label.data-v-d5ec5c8e{color:#999}.order-container .order-list .order-item .order-content .price-info.data-v-d5ec5c8e{text-align:right;margin-top:20rpx}.order-container .order-list .order-item .order-content .price-info .amount.data-v-d5ec5c8e{font-size:36rpx;color:#ff9800;font-weight:500}.order-container .empty-tip.data-v-d5ec5c8e{padding:100rpx 0;text-align:center;color:#999;font-size:28rpx}.order-container .empty-tip .empty-icon.data-v-d5ec5c8e{width:200rpx;height:200rpx;margin:0 auto 20rpx;background:#f0f0f0;border-radius:50%}
+1
View File
@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),t=require("../../config/user.js"),o=require("../../config/url.js"),r={data:()=>({orderId:null,orderInfo:{},packageInfo:{time:"",price:"0.00"},orderStatus:{text:"等待支付",desc:"请在15分钟内完成支付",class:"waiting"},paymentMethods:[{name:"微信支付",icon:"wechat"},{name:"支付宝",icon:"alipay"}],selectedMethod:0}),computed:{totalAmount(){return(parseFloat(this.orderInfo.deposit||99)+parseFloat(this.orderInfo.amount||this.packageInfo.price||0)).toFixed(2)}},onLoad(t){t&&t.orderId?(this.orderId=t.orderId,t.packageTime&&t.packagePrice&&(this.packageInfo={time:t.packageTime,price:t.packagePrice}),this.loadOrderInfo()):(e.index.showToast({title:"订单信息不存在",icon:"none"}),setTimeout((()=>{e.index.redirectTo({url:"/pages/index/index"})}),1500))},methods:{async loadOrderInfo(){try{e.index.showLoading({title:"加载中"});const o=await t.queryById(this.orderId);if(200!==o.code||!o.data)throw new Error("获取订单信息失败");{const e=o.data;this.orderInfo={orderNo:e.orderNo||e.orderId,deviceNo:e.deviceNo,createTime:this.formatTime(new Date(e.createTime)),phone:e.phone,deposit:"99.00",amount:e.amount||this.packageInfo.price||"0.00"},!e.packageTime&&this.packageInfo.time&&(this.orderInfo.packageTime=this.packageInfo.time,this.orderInfo.packagePrice=this.packageInfo.price)}e.index.hideLoading()}catch(o){e.index.hideLoading(),e.index.showToast({title:o.message||"获取订单信息失败",icon:"none"})}},selectMethod(e){this.selectedMethod=e},async handlePayment(){try{e.index.showLoading({title:"处理中"});const t=await e.index.request({url:`${o.URL||"http://127.0.0.1:8080"}/app/wx-payment/create/${this.orderInfo.orderNo}`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200!==t.statusCode||200!==t.data.code)throw new Error(t.data.msg||"创建支付订单失败");{const o=t.data.data;await e.index.requestPayment({...o,success:()=>{this.pollOrderStatus()},fail:e=>{throw console.error("支付失败:",e),new Error("支付失败,请重试")}})}}catch(t){e.index.hideLoading(),e.index.showToast({title:t.message||"支付失败",icon:"none"})}},async sendRentCommand(){try{e.index.showLoading({title:"处理中"});const t=await this.sendRentRequest();if(200!==t.code)throw new Error(t.msg||"租借失败");e.index.hideLoading(),e.index.showToast({title:"租借成功",icon:"success"}),setTimeout((()=>{e.index.redirectTo({url:`/pages/order/index?orderId=${this.orderId}`})}),1500)}catch(t){e.index.hideLoading(),e.index.showToast({title:t.message||"租借失败",icon:"none"})}},sendRentRequest(){return new Promise(((t,r)=>{e.index.request({url:`${o.URL}/app/device/sendRentCommand`,method:"POST",data:{orderId:this.orderId},header:{"Content-Type":"application/x-www-form-urlencoded",Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")},success(e){200===e.statusCode?t(e.data):r(new Error("请求失败"))},fail(e){r(e)}})}))},formatTime:e=>`${e.getFullYear()}-${(e.getMonth()+1).toString().padStart(2,"0")}-${e.getDate().toString().padStart(2,"0")} ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}`,async pollOrderStatus(){let t=0;const r=async()=>{try{const a=await e.index.request({url:`${o.URL||"http://127.0.0.1:8080"}/app/wx-payment/status/${this.orderInfo.orderNo}`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200===a.statusCode&&200===a.data.code){if("in_used"===a.data.data.orderStatus)return e.index.showToast({title:"支付成功",icon:"success"}),void setTimeout((()=>{e.index.redirectTo({url:`/pages/order/index?orderId=${this.orderId}`})}),1500)}if(!(t<10))throw new Error("订单状态查询超时");t++,setTimeout(r,1e3)}catch(a){e.index.showToast({title:a.message||"查询订单状态失败",icon:"none"})}};r()}}};const a=e._export_sfc(r,[["render",function(t,o,r,a,n,d){return{a:e.n(n.orderStatus.class),b:e.t(n.orderStatus.text),c:e.t(n.orderStatus.desc),d:e.t(n.orderInfo.orderNo||"-"),e:e.t(n.orderInfo.deviceNo||"-"),f:e.t(n.orderInfo.createTime||"-"),g:e.t(n.orderInfo.phone||"-"),h:e.t(n.orderInfo.deposit||"99.00"),i:e.t(n.packageInfo.time),j:e.t(n.packageInfo.price),k:e.t(n.orderInfo.amount||n.packageInfo.price),l:e.t(d.totalAmount),m:e.f(n.paymentMethods,((t,o,r)=>({a:e.n(t.icon),b:e.t(t.name),c:o,d:n.selectedMethod===o?1:"",e:e.o((e=>d.selectMethod(o)),o)}))),n:e.t(d.totalAmount),o:e.o(((...e)=>d.handlePayment&&d.handlePayment(...e)))}}],["__scopeId","data-v-a18b4e4b"]]);wx.createPage(a);
@@ -0,0 +1,6 @@
{
"navigationBarTitleText": "订单支付",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"usingComponents": {}
}
@@ -0,0 +1 @@
<view class="payment-container data-v-a18b4e4b"><view class="status-card data-v-a18b4e4b"><view class="{{['status-icon', 'data-v-a18b4e4b', a]}}"></view><view class="status-text data-v-a18b4e4b">{{b}}</view><view class="status-desc data-v-a18b4e4b">{{c}}</view></view><view class="order-card data-v-a18b4e4b"><view class="card-title data-v-a18b4e4b">订单信息</view><view class="info-item data-v-a18b4e4b"><text class="label data-v-a18b4e4b">订单号</text><text class="value data-v-a18b4e4b">{{d}}</text></view><view class="info-item data-v-a18b4e4b"><text class="label data-v-a18b4e4b">设备号</text><text class="value data-v-a18b4e4b">{{e}}</text></view><view class="info-item data-v-a18b4e4b"><text class="label data-v-a18b4e4b">创建时间</text><text class="value data-v-a18b4e4b">{{f}}</text></view><view class="info-item data-v-a18b4e4b"><text class="label data-v-a18b4e4b">联系电话</text><text class="value data-v-a18b4e4b">{{g}}</text></view></view><view class="price-card data-v-a18b4e4b"><view class="card-title data-v-a18b4e4b">费用信息</view><view class="price-item data-v-a18b4e4b"><text class="label data-v-a18b4e4b">押金</text><text class="value data-v-a18b4e4b">¥{{h}}</text></view><view class="price-item data-v-a18b4e4b"><text class="label data-v-a18b4e4b">套餐</text><text class="value data-v-a18b4e4b">{{i}} (¥{{j}})</text></view><view class="price-item data-v-a18b4e4b"><text class="label data-v-a18b4e4b">租借费用</text><text class="value data-v-a18b4e4b">¥{{k}}</text></view><view class="price-item total data-v-a18b4e4b"><text class="label data-v-a18b4e4b">合计</text><text class="value data-v-a18b4e4b">¥{{l}}</text></view></view><view class="payment-methods data-v-a18b4e4b"><view class="card-title data-v-a18b4e4b">支付方式</view><view wx:for="{{m}}" wx:for-item="method" wx:key="c" class="{{['method-item', 'data-v-a18b4e4b', method.d && 'active']}}" bindtap="{{method.e}}"><view class="{{['method-icon', 'data-v-a18b4e4b', method.a]}}"></view><view class="method-name data-v-a18b4e4b">{{method.b}}</view><view class="method-check data-v-a18b4e4b"></view></view></view><view class="bottom-bar data-v-a18b4e4b"><view class="total-amount data-v-a18b4e4b"><text class="data-v-a18b4e4b">合计:</text><text class="amount data-v-a18b4e4b">¥{{n}}</text></view><button class="pay-btn data-v-a18b4e4b" bindtap="{{o}}">立即支付</button></view></view>
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),t=require("../../config/user.js"),r=require("../../config/url.js"),o={data:()=>({orderId:"",orderInfo:{orderNo:"",deviceNo:"",usedTime:"",currentFee:"0.00",deposit:"99.00",refundAmount:"99.00",endTime:"",withdrawStatus:"waiting",isWithdrawn:!1}}),onLoad(t){t&&t.orderId?(this.orderId=t.orderId,this.loadOrderInfo()):(e.index.showToast({title:"订单ID不能为空",icon:"none"}),setTimeout((()=>{this.goToHome()}),1500))},methods:{getWithdrawStatusText(){return{waiting:"待申请",processing:"处理中",success:"已退款",failed:"退款失败"}[this.orderInfo.withdrawStatus]||"待申请"},async loadOrderInfo(){try{e.index.showLoading({title:"加载中"});const o=await t.queryById(this.orderId);if(200!==o.code||!o.data)throw new Error(o.msg||"获取订单信息失败");{const e=o.data;let t=60,d=0,n=0,i="0.00",a="0.00";if(e.remark)try{const r=e.remark,o=r.match(/使用时长:(\d+)分钟/);o&&o[1]&&(n=parseInt(o[1]));const s=r.match(/套餐时长:(\d+)分钟/);s&&s[1]&&(t=parseInt(s[1]));const c=r.match(/超出时长:(\d+)分钟/);c&&c[1]&&(d=parseInt(c[1]));const h=r.match(/套餐费用:([\d.]+)元/);h&&h[1]&&(i=h[1]);const u=r.match(/超时费用:([\d.]+)元/);u&&u[1]&&(a=u[1]),console.log("从remark解析到的信息:",{usedMinutes:n,packageMinutes:t,extraMinutes:d,packagePrice:i,extraFee:a})}catch(r){console.error("解析remark字段失败:",r)}this.orderInfo={orderNo:e.orderNo||"",deviceNo:e.deviceNo||"",usedTime:n+"分钟",packageTime:t+"分钟",extraTime:d+"分钟",packagePrice:i,extraFee:a,currentFee:e.actualDeviceAmount||"0.00",deposit:e.depositAmount||"99.00",refundAmount:e.residueAmount||"99.00",endTime:e.endTime||"",withdrawStatus:e.withdrawStatus||"waiting",isWithdrawn:"success"===e.withdrawStatus}}}catch(o){console.error("加载订单信息错误:",o),e.index.showToast({title:o.message||"获取订单信息失败",icon:"none"})}finally{e.index.hideLoading()}},async handleWithdraw(){try{e.index.showLoading({title:"处理中"});const t=await e.index.request({url:`${r.URL||"http://127.0.0.1:8080"}/app/withdraw/add/${this.orderInfo.orderNo}`,method:"GET",header:{"Content-Type":"application/json",Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200!==t.statusCode||200!==t.data.code)throw new Error(t.data.msg||"退款申请失败");e.index.showToast({title:"退款申请成功",icon:"success"}),this.orderInfo.withdrawStatus="processing",this.orderInfo.isWithdrawn=!0,setTimeout((()=>{this.loadOrderInfo()}),1500)}catch(t){console.error("退款申请错误:",t),e.index.showToast({title:t.message||"退款申请失败",icon:"none"})}finally{e.index.hideLoading()}},goToHome(){e.index.reLaunch({url:"/pages/index/index"})}}};const d=e._export_sfc(o,[["render",function(t,r,o,d,n,i){return e.e({a:e.t(n.orderInfo.orderNo||"-"),b:e.t(n.orderInfo.deviceNo||"-"),c:e.t(n.orderInfo.usedTime||"-"),d:e.t(n.orderInfo.packageTime||"1小时"),e:e.t(n.orderInfo.extraTime||"0分钟"),f:e.t(n.orderInfo.endTime||"-"),g:e.t(n.orderInfo.packagePrice||"0.00"),h:e.t(n.orderInfo.extraFee||"0.00"),i:e.t(n.orderInfo.currentFee||"0.00"),j:e.t(n.orderInfo.deposit||"99.00"),k:e.t(n.orderInfo.refundAmount||"99.00"),l:e.t(i.getWithdrawStatusText()),m:e.n(n.orderInfo.withdrawStatus||"waiting"),n:!n.orderInfo.isWithdrawn},n.orderInfo.isWithdrawn?{}:{o:e.o(((...e)=>i.handleWithdraw&&i.handleWithdraw(...e)))},{p:e.o(((...e)=>i.goToHome&&i.goToHome(...e)))})}],["__scopeId","data-v-845b5869"]]);wx.createPage(d);
@@ -0,0 +1,6 @@
{
"navigationBarTitleText": "归还成功",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"usingComponents": {}
}
@@ -0,0 +1 @@
<view class="success-container data-v-845b5869"><view class="status-card data-v-845b5869"><view class="status-icon success data-v-845b5869"></view><view class="status-text data-v-845b5869">归还成功</view><view class="status-desc data-v-845b5869">您的充电宝已归还,费用已从押金中扣除</view></view><view class="order-card data-v-845b5869"><view class="card-title data-v-845b5869">订单信息</view><view class="info-item data-v-845b5869"><text class="label data-v-845b5869">订单号</text><text class="value data-v-845b5869">{{a}}</text></view><view class="info-item data-v-845b5869"><text class="label data-v-845b5869">设备号</text><text class="value data-v-845b5869">{{b}}</text></view><view class="info-item data-v-845b5869"><text class="label data-v-845b5869">使用时长</text><text class="value data-v-845b5869">{{c}}</text></view><view class="info-item data-v-845b5869"><text class="label data-v-845b5869">套餐时长</text><text class="value data-v-845b5869">{{d}}</text></view><view class="info-item data-v-845b5869"><text class="label data-v-845b5869">超出时长</text><text class="value data-v-845b5869">{{e}}</text></view><view class="info-item data-v-845b5869"><text class="label data-v-845b5869">归还时间</text><text class="value data-v-845b5869">{{f}}</text></view></view><view class="refund-card data-v-845b5869"><view class="card-title data-v-845b5869">费用信息</view><view class="info-item data-v-845b5869"><text class="label data-v-845b5869">套餐费用</text><text class="value data-v-845b5869">¥{{g}}</text></view><view class="info-item data-v-845b5869"><text class="label data-v-845b5869">超时费用</text><text class="value data-v-845b5869">¥{{h}}</text></view><view class="info-item data-v-845b5869"><text class="label data-v-845b5869">总费用</text><text class="value data-v-845b5869">¥{{i}}</text></view><view class="info-item data-v-845b5869"><text class="label data-v-845b5869">押金</text><text class="value data-v-845b5869">¥{{j}}</text></view><view class="info-item data-v-845b5869"><text class="label data-v-845b5869">退还金额</text><text class="value highlight data-v-845b5869">¥{{k}}</text></view><view class="info-item data-v-845b5869"><text class="label data-v-845b5869">退还状态</text><text class="{{['value', 'data-v-845b5869', m]}}">{{l}}</text></view></view><view class="notice-card data-v-845b5869"><view class="card-title data-v-845b5869">退款说明</view><view class="notice-content data-v-845b5869"><text class="data-v-845b5869">1. 押金剩余金额需要您手动申请提现</text><text class="data-v-845b5869">2. 提现申请提交后将在1-3个工作日内退还到原支付账户</text><text class="data-v-845b5869">3. 如有疑问,请联系客服</text></view></view><view class="button-group data-v-845b5869"><button wx:if="{{n}}" class="primary-btn data-v-845b5869" bindtap="{{o}}">申请退款</button><button class="primary-btn data-v-845b5869" bindtap="{{p}}">返回首页</button></view></view>
@@ -0,0 +1 @@
.success-container.data-v-845b5869{padding:20px;background-color:#f8f8f8;min-height:100vh}.status-card.data-v-845b5869{background-color:#fff;border-radius:12px;padding:30px;text-align:center;margin-bottom:20px;box-shadow:0 2px 8px rgba(0,0,0,.04)}.status-card .status-icon.data-v-845b5869{width:60px;height:60px;margin:0 auto 16px}.status-card .status-icon.success.data-v-845b5869{background-color:#07c160;border-radius:50%;position:relative}.status-card .status-icon.success.data-v-845b5869:after{content:"";position:absolute;left:50%;top:50%;width:30px;height:20px;border:3px solid #fff;border-top:none;border-right:none;transform-origin:center;transform:translate(-50%,-70%) rotate(-45deg)}.status-card .status-text.data-v-845b5869{font-size:24px;font-weight:700;color:#07c160;margin-bottom:8px}.status-card .status-desc.data-v-845b5869{font-size:14px;color:#666}.order-card.data-v-845b5869,.refund-card.data-v-845b5869{background-color:#fff;border-radius:12px;padding:20px;margin-bottom:20px;box-shadow:0 2px 8px rgba(0,0,0,.04)}.order-card .card-title.data-v-845b5869,.refund-card .card-title.data-v-845b5869{font-size:16px;font-weight:700;margin-bottom:16px;color:#333;border-bottom:1px solid #f0f0f0;padding-bottom:10px}.order-card .info-item.data-v-845b5869,.refund-card .info-item.data-v-845b5869{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.order-card .info-item.data-v-845b5869:last-child,.refund-card .info-item.data-v-845b5869:last-child{margin-bottom:0}.order-card .info-item .label.data-v-845b5869,.refund-card .info-item .label.data-v-845b5869{color:#666;font-size:14px}.order-card .info-item .value.data-v-845b5869,.refund-card .info-item .value.data-v-845b5869{color:#333;font-size:14px}.order-card .info-item .value.highlight.data-v-845b5869,.refund-card .info-item .value.highlight.data-v-845b5869{color:#ff6b00;font-weight:700;font-size:16px}.order-card .info-item .value.success.data-v-845b5869,.refund-card .info-item .value.success.data-v-845b5869{color:#07c160}.button-group.data-v-845b5869{margin-top:40rpx;display:flex;justify-content:space-between;gap:20rpx}.button-group .primary-btn.data-v-845b5869,.button-group .secondary-btn.data-v-845b5869{flex:1;height:88rpx;line-height:88rpx;border-radius:44rpx;text-align:center;font-size:32rpx}.button-group .primary-btn.data-v-845b5869{background:#07c160;color:#fff}.button-group .primary-btn.data-v-845b5869:active{opacity:.8}.button-group .secondary-btn.data-v-845b5869{background:#f0f0f0;color:#333}.button-group .secondary-btn.data-v-845b5869:active{opacity:.8}.notice-card.data-v-845b5869{background-color:#fff;border-radius:12px;padding:20px;margin-bottom:20px;box-shadow:0 2px 8px rgba(0,0,0,.04)}.notice-card .card-title.data-v-845b5869{font-size:16px;font-weight:700;margin-bottom:16px;color:#333;border-bottom:1px solid #f0f0f0;padding-bottom:10px}.notice-card .notice-content.data-v-845b5869{text-align:left;color:#666;font-size:14px}.waiting.data-v-845b5869{color:#fa0;font-weight:700}
+1
View File
@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),o=require("../../config/user.js"),r={data:()=>({orderId:"",orderInfo:{},isLoading:!0,deviceMessage:"正在准备您的设备,请稍候...",hasTriggeredDevice:!1}),onLoad(o){o&&o.orderId?(this.orderId=o.orderId,this.loadOrderInfo(),e.index.$once("orderSuccess:"+this.orderId,(()=>{console.log("已经触发过弹出逻辑,不再重复触发"),this.hasTriggeredDevice=!0}))):(e.index.showToast({title:"订单信息不存在",icon:"none"}),setTimeout((()=>{this.goToHome()}),1500))},methods:{async loadOrderInfo(){try{e.index.showLoading({title:"加载中"});const r=await o.queryById(this.orderId);if(200!==r.code||!r.data)throw new Error("获取订单信息失败");{const o=r.data;this.orderInfo={orderNo:o.orderNo||o.orderId,deviceNo:o.deviceNo,amount:o.payAmount||o.amount,payTime:o.payTime||this.formatTime(new Date)},"IN_USED"===o.orderStatus?(this.deviceMessage="设备已弹出,请取走您的充电宝",this.isLoading=!1,this.hasTriggeredDevice||(e.index.$emit("orderSuccess:"+this.orderId),this.hasTriggeredDevice=!0)):this.triggerDeviceEject()}e.index.hideLoading()}catch(r){e.index.hideLoading(),e.index.showToast({title:r.message||"获取订单信息失败",icon:"none"})}},async triggerDeviceEject(){if(this.hasTriggeredDevice)console.log("已经触发过弹出充电宝,不重复触发");else{this.hasTriggeredDevice=!0,e.index.$emit("orderSuccess:"+this.orderId),this.isLoading=!0,this.deviceMessage="正在准备您的设备,请稍候...";try{console.log(`准备触发弹出充电宝,orderId: ${this.orderId}`);const r=await o.confirmPaymentAndRent(this.orderId);if(console.log("确认支付并弹出充电宝结果:",JSON.stringify(r)),!r||200!==r.code)throw new Error(r&&r.msg||"弹出充电宝失败");this.deviceMessage="设备已弹出,请取走您的充电宝",e.index.showToast({title:"充电宝已弹出",icon:"success"})}catch(r){console.error("弹出充电宝错误:",r),this.deviceMessage="弹出设备失败,请联系客服",e.index.showToast({title:r.message||"弹出充电宝失败,请联系客服",icon:"none"})}finally{this.isLoading=!1}}},formatTime:e=>`${e.getFullYear()}-${(e.getMonth()+1).toString().padStart(2,"0")}-${e.getDate().toString().padStart(2,"0")} ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}`,goToHome(){e.index.switchTab({url:"/pages/index/index"})},goToOrderList(){e.index.redirectTo({url:"/pages/order/index"})}}};const i=e._export_sfc(r,[["render",function(o,r,i,t,d,s){return e.e({a:e.t(d.orderInfo.orderNo||"-"),b:e.t(d.orderInfo.deviceNo||"-"),c:e.t(d.orderInfo.amount||"0.00"),d:e.t(d.orderInfo.payTime||"-"),e:e.t(d.deviceMessage),f:d.isLoading},(d.isLoading,{}),{g:e.o(((...e)=>s.goToHome&&s.goToHome(...e))),h:e.o(((...e)=>s.goToOrderList&&s.goToOrderList(...e)))})}],["__scopeId","data-v-174f45e8"]]);wx.createPage(i);
@@ -0,0 +1,6 @@
{
"navigationBarTitleText": "支付成功",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"usingComponents": {}
}
@@ -0,0 +1 @@
<view class="success-container data-v-174f45e8"><view class="status-card data-v-174f45e8"><view class="status-icon success data-v-174f45e8"></view><view class="status-text data-v-174f45e8">支付成功</view><view class="status-desc data-v-174f45e8">您的订单已支付成功</view></view><view class="order-card data-v-174f45e8"><view class="card-title data-v-174f45e8">订单信息</view><view class="info-item data-v-174f45e8"><text class="label data-v-174f45e8">订单号</text><text class="value data-v-174f45e8">{{a}}</text></view><view class="info-item data-v-174f45e8"><text class="label data-v-174f45e8">设备号</text><text class="value data-v-174f45e8">{{b}}</text></view><view class="info-item data-v-174f45e8"><text class="label data-v-174f45e8">支付金额</text><text class="value data-v-174f45e8">¥{{c}}</text></view><view class="info-item data-v-174f45e8"><text class="label data-v-174f45e8">支付时间</text><text class="value data-v-174f45e8">{{d}}</text></view></view><view class="device-status data-v-174f45e8"><view class="status-message data-v-174f45e8">{{e}}</view><view wx:if="{{f}}" class="loading-animation data-v-174f45e8"><view class="loading-circle data-v-174f45e8"></view></view></view><view class="button-group data-v-174f45e8"><button class="primary-btn data-v-174f45e8" bindtap="{{g}}">返回首页</button><button class="secondary-btn data-v-174f45e8" bindtap="{{h}}">查看订单</button></view></view>
@@ -0,0 +1 @@
.success-container.data-v-174f45e8{padding:20px;background-color:#f5f5f5;min-height:100vh}.status-card.data-v-174f45e8{background-color:#fff;border-radius:12px;padding:30px;text-align:center;margin-bottom:20px}.status-card .status-icon.data-v-174f45e8{width:60px;height:60px;margin:0 auto 16px;background-color:#07c160;border-radius:50%;position:relative}.status-card .status-icon.data-v-174f45e8:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:30px;height:20px;border:3px solid #fff;border-top:none;border-right:none;transform-origin:center;transform:translate(-50%,-70%) rotate(-45deg)}.status-card .status-text.data-v-174f45e8{font-size:24px;font-weight:700;color:#07c160;margin-bottom:8px}.status-card .status-desc.data-v-174f45e8{font-size:14px;color:#666}.order-card.data-v-174f45e8{background-color:#fff;border-radius:12px;padding:20px;margin-bottom:20px}.order-card .card-title.data-v-174f45e8{font-size:16px;font-weight:700;margin-bottom:16px;color:#333}.order-card .info-item.data-v-174f45e8{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.order-card .info-item .label.data-v-174f45e8{color:#666;font-size:14px}.order-card .info-item .value.data-v-174f45e8{color:#333;font-size:14px}.device-status.data-v-174f45e8{background-color:#fff;border-radius:12px;padding:20px;margin-bottom:20px;text-align:center}.device-status .status-message.data-v-174f45e8{font-size:16px;color:#333;margin-bottom:12px}.device-status .loading-animation.data-v-174f45e8{display:flex;justify-content:center;align-items:center;height:40px}.device-status .loading-animation .loading-circle.data-v-174f45e8{width:30px;height:30px;border-radius:50%;border:3px solid #f0f0f0;border-top-color:#07c160;animation:spin-174f45e8 1s linear infinite}@keyframes spin-174f45e8{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.button-group.data-v-174f45e8{margin-top:30px;display:flex;flex-direction:column;gap:16px}.button-group .primary-btn.data-v-174f45e8{background-color:#07c160;color:#fff;border:none;border-radius:24px;padding:12px;font-size:16px}.button-group .primary-btn.data-v-174f45e8:active{opacity:.8}.button-group .secondary-btn.data-v-174f45e8{background-color:#fff;color:#07c160;border:1px solid #07c160;border-radius:24px;padding:12px;font-size:16px}.button-group .secondary-btn.data-v-174f45e8:active{background-color:#f5f5f5}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6 @@
{
"navigationBarTitleText": "归还设备",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"usingComponents": {}
}
@@ -0,0 +1 @@
<view class="return-container data-v-44a2261b"><view class="order-card data-v-44a2261b"><view class="order-header data-v-44a2261b"><text class="title data-v-44a2261b">{{a}}</text><text class="order-no data-v-44a2261b">订单号:{{b}}</text></view><view class="device-info data-v-44a2261b"><text class="device-name data-v-44a2261b">共享风扇</text><text class="device-id data-v-44a2261b">设备号:{{c}}</text></view><view class="time-info data-v-44a2261b"><view class="time-item data-v-44a2261b"><text class="label data-v-44a2261b">开始时间</text><text class="value data-v-44a2261b">{{d}}</text></view><view class="time-item data-v-44a2261b"><text class="label data-v-44a2261b">已使用时长</text><text class="value highlight data-v-44a2261b">{{e}}</text></view><view class="time-item data-v-44a2261b"><text class="label data-v-44a2261b">当前费用</text><text class="value data-v-44a2261b">¥{{f}}</text></view></view><view wx:if="{{false}}" class="debug-info data-v-44a2261b"><view class="debug-title data-v-44a2261b">调试信息</view><view class="debug-item data-v-44a2261b">原始开始时间: {{g}}</view><view class="debug-item data-v-44a2261b">处理后开始时间: {{h}}</view><view class="debug-item data-v-44a2261b">订单状态: {{i}}</view></view></view><view class="notice-card data-v-44a2261b"><view class="notice-title data-v-44a2261b">归还说明</view><view class="notice-list data-v-44a2261b"><view class="notice-item data-v-44a2261b"><view class="dot data-v-44a2261b"></view><text class="data-v-44a2261b">请确保设备完好无损</text></view><view class="notice-item data-v-44a2261b"><view class="dot data-v-44a2261b"></view><text class="data-v-44a2261b">将充电宝插入原位置或空闲插口</text></view><view class="notice-item data-v-44a2261b"><view class="dot data-v-44a2261b"></view><text class="data-v-44a2261b">系统将自动检测归还并处理退款</text></view><view class="notice-item data-v-44a2261b"><view class="dot data-v-44a2261b"></view><text class="data-v-44a2261b">归还成功后将自动跳转到成功页面</text></view></view></view><view class="bottom-bar data-v-44a2261b"><button class="secondary-btn data-v-44a2261b" bindtap="{{j}}">刷新状态</button><button class="primary-btn data-v-44a2261b" bindtap="{{k}}">返回首页</button></view></view>
@@ -0,0 +1 @@
.return-container.data-v-44a2261b{min-height:100vh;background:#f8f8f8;padding:30rpx 30rpx 180rpx;box-sizing:border-box}.return-container .order-card.data-v-44a2261b{background:#fff;border-radius:24rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.return-container .order-card .order-header.data-v-44a2261b{display:flex;justify-content:space-between;align-items:center;margin-bottom:30rpx}.return-container .order-card .order-header .title.data-v-44a2261b{font-size:32rpx;font-weight:700;color:#333}.return-container .order-card .order-header .order-no.data-v-44a2261b{font-size:24rpx;color:#999}.return-container .order-card .device-info.data-v-44a2261b{margin-bottom:30rpx}.return-container .order-card .device-info .device-name.data-v-44a2261b{font-size:28rpx;color:#333;display:block;margin-bottom:10rpx}.return-container .order-card .device-info .device-id.data-v-44a2261b{font-size:24rpx;color:#666}.return-container .order-card .time-info.data-v-44a2261b{background:#f9f9f9;border-radius:16rpx;padding:20rpx}.return-container .order-card .time-info .time-item.data-v-44a2261b{display:flex;justify-content:space-between;align-items:center;margin-bottom:16rpx}.return-container .order-card .time-info .time-item.data-v-44a2261b:last-child{margin-bottom:0}.return-container .order-card .time-info .time-item .label.data-v-44a2261b{font-size:26rpx;color:#666}.return-container .order-card .time-info .time-item .value.data-v-44a2261b{font-size:26rpx;color:#333}.return-container .order-card .time-info .time-item .value.highlight.data-v-44a2261b{color:#ff6b00;font-weight:700}.return-container .notice-card.data-v-44a2261b{background:#fff;border-radius:24rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.return-container .notice-card .notice-title.data-v-44a2261b{font-size:28rpx;font-weight:700;color:#333;margin-bottom:20rpx}.return-container .notice-card .notice-list .notice-item.data-v-44a2261b{display:flex;align-items:flex-start;margin-bottom:16rpx}.return-container .notice-card .notice-list .notice-item.data-v-44a2261b:last-child{margin-bottom:0}.return-container .notice-card .notice-list .notice-item .dot.data-v-44a2261b{width:12rpx;height:12rpx;background:#07c160;border-radius:50%;margin-top:10rpx;margin-right:16rpx;flex-shrink:0}.return-container .notice-card .notice-list .notice-item text.data-v-44a2261b{font-size:26rpx;color:#666;line-height:1.5}.return-container .bottom-bar.data-v-44a2261b{position:fixed;left:0;right:0;bottom:0;padding:30rpx;background:#fff;box-shadow:0 -4rpx 16rpx rgba(0,0,0,.04);z-index:10;display:flex;justify-content:space-between;gap:20rpx}.return-container .bottom-bar .primary-btn.data-v-44a2261b,.return-container .bottom-bar .secondary-btn.data-v-44a2261b{height:88rpx;line-height:88rpx;font-size:32rpx;border-radius:44rpx;text-align:center;flex:1}.return-container .bottom-bar .primary-btn.data-v-44a2261b{background:#07c160;color:#fff}.return-container .bottom-bar .primary-btn.data-v-44a2261b:active{opacity:.8}.return-container .bottom-bar .secondary-btn.data-v-44a2261b{background:#f0f0f0;color:#333}.return-container .bottom-bar .secondary-btn.data-v-44a2261b:active{opacity:.8}
@@ -0,0 +1 @@
"use strict";const e=require("../../../common/vendor.js"),i=require("../../../util/index.js"),o=require("../../../config/user.js"),d={data:()=>({}),async onLoad(d){try{if(e.index.showLoading({title:"加载中..."}),e.index.getStorageSync("token")||await i.wxLogin(),!d.deviceNo)return e.index.hideLoading(),void e.index.showToast({title:"设备编号不能为空",icon:"none"});const n=await o.queryHasOrder(d.deviceNo);e.index.hideLoading(),n.data&&n.data.data&&n.data.data.length>0?e.index.redirectTo({url:`/pages/device/return?deviceNo=${d.deviceNo}`}):e.index.redirectTo({url:`/pages/device/detail?deviceNo=${d.deviceNo}`})}catch(n){e.index.hideLoading(),e.index.showToast({title:"页面加载失败,请重试",icon:"none"}),console.error("bagCheck onLoad error:",n)}},methods:{}};const n=e._export_sfc(d,[["render",function(e,i,o,d,n,t){return{}}]]);wx.createPage(n);
@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "共享风扇",
"usingComponents": {}
}
@@ -0,0 +1 @@
<view></view>