project:强制覆盖代码,更新.gitignore文件内容

This commit is contained in:
2025-09-16 17:23:51 +08:00
parent ab9a7279f5
commit 5ad77a857c
97 changed files with 2295 additions and 1751 deletions
+1 -1
View File
@@ -1 +1 @@
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./common/vendor.js"),n=require("./util/index.js"),e=require("./utils/orderMonitor.js");Math;const t={onLaunch:function(){console.log("App Launch")},onShow:async function(){console.log("App Show"),await this.autoLogin()},onHide:function(){console.log("App Hide")},methods:{async autoLogin(){try{await n.wxLogin()}catch(o){console.error("自动登录失败:",o)}}}};function r(){const n=o.createSSRApp(t);return n.config.globalProperties.$orderMonitor=e.orderMonitor,{app:n}}r().app.mount("#app"),exports.createApp=r;
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./common/vendor.js"),e=require("./util/index.js"),t=require("./utils/orderMonitor.js");Math;const n={onLaunch:function(){console.log("App Launch")},onShow:async function(){await this.autoLogin()},onHide:function(){console.log("App Hide")},methods:{async autoLogin(){try{await e.wxLogin()}catch(o){console.error("自动登录失败:",o)}},async getUserInfoData(){try{await e.getUserInfo()}catch(o){console.error("获取用户信息失败:",o)}}}};function r(){const e=o.createSSRApp(n);return e.config.globalProperties.$orderMonitor=t.orderMonitor,{app:e}}r().app.mount("#app"),exports.createApp=r;
+4 -2
View File
@@ -5,14 +5,16 @@
"pages/deposit/index",
"pages/order/index",
"pages/order/payment",
"pages/order/details",
"pages/expressReturn/addExpressReturn",
"pages/feedback/index",
"pages/help/index",
"pages/device/detail",
"pages/serve/bagCheck/index",
"pages/return/index",
"pages/order/success",
"pages/order/return-success"
"pages/order/return-success",
"pages/expressReturn/index",
"pages/expressReturn/detail"
],
"window": {
"navigationBarTextStyle": "black",
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
"use strict";const e=require("../common/vendor.js"),d=require("./url.js");exports.request=a=>new Promise(((t,o)=>{a.hideLoading||e.index.showLoading({title:a.loadingText||"加载中...",mask:!0}),e.index.request({url:d.URL+a.url,method:a.method,data:a.data,header:{"Content-Type":"application/x-www-form-urlencoded",...a.headers,appid:d.appid,Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")},success:e=>200!==e.statusCode?(console.error(`HTTP状态码错误: ${e.statusCode}`,e.data),e.data?void t(e.data):void o({msg:`请求失败,状态码:${e.statusCode}`})):e.data&&200!==e.data.code?(console.warn(`业务状态码错误: ${e.data.code}`,e.data),a.ignoreEmptyError&&500===e.data.code&&e.data.msg&&(e.data.msg.includes("未找到")||e.data.msg.includes("不存在"))?void t({code:200,msg:"操作成功",data:[]}):void t(e.data)):void t(e.data),fail(e){console.error(`请求失败: ${a.url}`,e),o(e)},complete(){a.hideLoading||e.index.hideLoading()}})}));
"use strict";const e=require("../common/vendor.js"),a=require("./url.js");exports.request=d=>new Promise(((t,o)=>{d.hideLoading||e.index.showLoading({title:d.loadingText||"加载中...",mask:!0}),e.index.request({url:a.URL+d.url,method:d.method,data:d.data,header:{"Content-Type":"application/json",...d.headers,appid:a.appid,Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")},success:e=>200!==e.statusCode?(console.error(`HTTP状态码错误: ${e.statusCode}`,e.data),e.data?void t(e.data):void o({msg:`请求失败,状态码:${e.statusCode}`})):e.data&&200!==e.data.code?(console.warn(`业务状态码错误: ${e.data.code}`,e.data),d.ignoreEmptyError&&500===e.data.code&&e.data.msg&&(e.data.msg.includes("未找到")||e.data.msg.includes("不存在"))?void t({code:200,msg:"操作成功",data:[]}):void t(e.data)):void t(e.data),fail(e){console.error(`请求失败: ${d.url}`,e),o(e)},complete(){d.hideLoading||e.index.hideLoading()}})}));
+1 -1
View File
@@ -1 +1 @@
"use strict";const e=require("./http.js");exports.cancelOrder=r=>e.request({url:`/device/order/clear/${r.orderId}`,method:"get",data:r}),exports.checkOrdersByStatus=(r,t)=>{const o=t.join(",");return e.request({url:`/app/order/list?deviceNo=${r}&orderStatus=${o}`,method:"get",hideLoading:!0,ignoreEmptyError:!0})},exports.confirmPaymentAndRent=r=>(console.log(`确认支付并弹出风扇, orderId: ${r}`),e.request({url:`/app/device/confirmPaymentAndRent?orderId=${r}`,method:"GET"})),exports.getDeviceInfo=r=>e.request({url:`/app/device/${r}`,method:"get"}),exports.getMyIndexInfo=r=>e.request({url:"/app/user/userInfo",method:"get",data:r}),exports.getOrderByOrderNo=r=>e.request({url:`/app/order/byOrderNo/${r}`,method:"get",hideLoading:!0}),exports.getOrderByOrderNoScore=r=>(console.log("通过订单号获取支付分订单信息",r),e.request({url:`/app/wx-payment/score/create/${r}`,method:"get",hideLoading:!0})),exports.getOrderByOrderNoScorePayStatus=r=>(console.log("通过订单号获取支付分订单状态",r),e.request({url:`/app/wx-payment/score/status/${r}`,method:"get",hideLoading:!0})),exports.getOrderList=r=>e.request({url:"/app/order/list",method:"get",data:r,hideLoading:!0}),exports.login=r=>e.request({url:"/app/user/login",method:"get",data:r}),exports.queryById=r=>(console.log(`查询订单详情, orderId: ${r}`),e.request({url:`/app/order/${r}`,method:"get",hideLoading:!0})),exports.rentPowerBank=(r,t)=>e.request({url:"/app/device/rentPowerBank",method:"post",data:{deviceNo:r,phone:t}}),exports.updateOrderPackage=r=>(console.log("更新订单套餐信息:",r),e.request({url:"/app/device/updateOrderPackage",method:"post",data:r})),exports.updateUserBalance=r=>e.request({url:`/app/user/updateBalance/${r}`,method:"post",hideLoading:!0}),exports.withdrawDeposit=r=>(console.log("调用提现API,订单号:",r),e.request({url:`/app/withdraw/add/${r}`,method:"get",hideLoading:!0}));
"use strict";const e=require("./http.js");exports.addUserFeedback=r=>(console.log(r),e.request({url:"/app/feedback/add",method:"post",data:r})),exports.cancelOrder=r=>e.request({url:`/device/order/clear/${r.orderId}`,method:"get",data:r}),exports.checkOrdersByStatus=(r,t)=>{const o=t.join(",");return e.request({url:`/app/order/list?deviceNo=${r}&orderStatus=${o}`,method:"get",hideLoading:!0,ignoreEmptyError:!0})},exports.confirmPaymentAndRent=r=>(console.log(`确认支付并弹出风扇, orderId: ${r}`),e.request({url:`/app/device/confirmPaymentAndRent?orderId=${r}`,method:"GET"})),exports.getDeviceInfo=r=>e.request({url:`/app/device/${r}`,method:"get"}),exports.getMyIndexInfo=r=>e.request({url:"/app/user/userInfo",method:"get",data:r}),exports.getOrderByOrderNo=r=>e.request({url:`/app/order/byOrderNo/${r}`,method:"get",hideLoading:!0}),exports.getOrderByOrderNoScore=r=>(console.log("通过订单号获取支付分订单信息",r),e.request({url:`/app/wx-payment/score/create/${r}`,method:"get",hideLoading:!0})),exports.getOrderByOrderNoScorePayStatus=r=>(console.log("通过订单号获取支付分订单状态",r),e.request({url:`/app/wx-payment/score/status/${r}`,method:"get",hideLoading:!0})),exports.getOrderList=r=>e.request({url:"/app/order/list",method:"get",data:r,hideLoading:!0}),exports.login=r=>e.request({url:"/app/user/login",method:"get",data:r}),exports.queryById=r=>(console.log(`查询订单详情, orderId: ${r}`),e.request({url:`/app/order/${r}`,method:"get",hideLoading:!0})),exports.rentPowerBank=(r,t)=>e.request({url:"/app/device/rentPowerBank",method:"post",data:{deviceNo:r,phone:t}}),exports.updateOrderPackage=r=>(console.log("更新订单套餐信息:",r),e.request({url:"/app/device/updateOrderPackage",method:"post",data:r})),exports.updateUserBalance=r=>e.request({url:`/app/user/updateBalance/${r}`,method:"post",hideLoading:!0}),exports.withdrawDeposit=r=>e.request({url:`/app/withdraw/add/${r}`,method:"get",hideLoading:!0});
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
<view class="container data-v-f998093e"><view class="device-header data-v-f998093e"><view class="{{['device-status-card', 'data-v-f998093e', b]}}"><view class="status-indicator data-v-f998093e"></view><text class="status-text data-v-f998093e">{{a}}</text></view><view class="device-title data-v-f998093e"><text class="name data-v-f998093e">共享风扇</text><view class="device-meta data-v-f998093e"><text class="id-label data-v-f998093e">设备号:</text><text class="id-value data-v-f998093e">{{c}}</text></view></view></view><view class="card device-info-card data-v-f998093e"><view class="card-row data-v-f998093e"><view class="card-item data-v-f998093e"><view class="item-icon location-icon data-v-f998093e"><image class="data-v-f998093e" src="{{d}}" mode="aspectFill" style="width:45rpx;height:45rpx"></image></view><view class="item-content data-v-f998093e"><text class="item-label data-v-f998093e">当前位置</text><text class="item-value data-v-f998093e">{{e}}</text></view></view></view></view><view class="card pricing-card data-v-f998093e"><view class="card-header data-v-f998093e"><text class="card-title data-v-f998093e">计费规则</text></view><view class="pricing-banner data-v-f998093e"><view class="pricing-main data-v-f998093e"><text class="price data-v-f998093e">¥{{f}}</text><text class="unit data-v-f998093e">/小时</text></view><text class="cap-price data-v-f998093e">封顶 ¥{{g}}</text></view><view class="pricing-rules data-v-f998093e"><view class="rule-item data-v-f998093e"><view class="rule-dot data-v-f998093e"></view><text class="rule-text data-v-f998093e">不足60分钟按60分钟计费</text></view><view class="rule-item data-v-f998093e"><view class="rule-dot data-v-f998093e"></view><text class="rule-text data-v-f998093e">持续计费至99元视为买断</text></view></view></view><view class="card notice-card data-v-f998093e"><view class="card-header data-v-f998093e"><text class="card-title data-v-f998093e">使用须知</text></view><view class="notice-items data-v-f998093e"><view class="notice-item data-v-f998093e"><view class="notice-dot data-v-f998093e"></view><text class="notice-text data-v-f998093e">请在使用前检查设备是否完好</text></view><view class="notice-item data-v-f998093e"><view class="notice-dot data-v-f998093e"></view><text class="notice-text data-v-f998093e">请在指定区域内使用设备</text></view><view class="notice-item data-v-f998093e"><view class="notice-dot data-v-f998093e"></view><text class="notice-text data-v-f998093e">归还时请确保设备完好,避免损坏</text></view></view></view><view class="footer data-v-f998093e"><button class="{{['rent-button', 'data-v-f998093e', i && 'return-button']}}" bindtap="{{j}}"><text class="data-v-f998093e">{{h}}</text></button><view class="wechat-credit data-v-f998093e"><image src="{{k}}" mode="aspectFit" class="wx-icon data-v-f998093e"></image><view class="credit-text data-v-f998093e"><text class="data-v-f998093e">微信支付分</text><text class="credit-divider data-v-f998093e">|</text><text class="credit-score data-v-f998093e">550分及以上优享</text></view></view></view><view wx:if="{{l}}" class="phone-auth-popup data-v-f998093e"><view class="popup-mask data-v-f998093e" catchtap="{{m}}"></view><view class="popup-content data-v-f998093e"><view class="popup-header data-v-f998093e"><text class="popup-title data-v-f998093e">授权获取手机号</text></view><view class="popup-body data-v-f998093e"><view class="auth-desc data-v-f998093e"><text class="data-v-f998093e">为了提供更好的服务,需要授权获取您的手机号</text></view><button class="auth-btn data-v-f998093e" open-type="getPhoneNumber" bindgetphonenumber="{{n}}"> 一键获取手机号 </button><view class="auth-cancel data-v-f998093e" bindtap="{{o}}"><text class="data-v-f998093e">暂不授权</text></view></view></view></view></view>
<view class="container data-v-23b2f720"><view class="device-header data-v-23b2f720"><view class="{{['device-status-card', 'data-v-23b2f720', b]}}"><view class="status-indicator data-v-23b2f720"></view><text class="status-text data-v-23b2f720">{{a}}</text></view><view class="device-title data-v-23b2f720"><text class="name data-v-23b2f720">共享风扇</text><view class="device-meta data-v-23b2f720"><text class="id-label data-v-23b2f720">设备号:</text><text class="id-value data-v-23b2f720">{{c}}</text></view></view></view><view class="card device-info-card data-v-23b2f720"><view class="card-row data-v-23b2f720"><view class="card-item data-v-23b2f720"><view class="item-icon location-icon data-v-23b2f720"><image class="data-v-23b2f720" src="{{d}}" mode="aspectFill" style="width:45rpx;height:45rpx"></image></view><view class="item-content data-v-23b2f720"><text class="item-label data-v-23b2f720">当前位置</text><text class="item-value data-v-23b2f720">{{e}}</text></view></view></view></view><view class="card pricing-card data-v-23b2f720"><view class="card-header data-v-23b2f720"><text class="card-title data-v-23b2f720">计费规则</text></view><view class="pricing-banner data-v-23b2f720"><view class="pricing-main data-v-23b2f720"><text class="price data-v-23b2f720">¥{{f}}</text><text class="unit data-v-23b2f720">/小时</text></view><text class="cap-price data-v-23b2f720">封顶 ¥{{g}}</text></view><view class="pricing-rules data-v-23b2f720"><view class="rule-item data-v-23b2f720"><view class="rule-dot data-v-23b2f720"></view><text class="rule-text data-v-23b2f720">不足60分钟按60分钟计费</text></view><view class="rule-item data-v-23b2f720"><view class="rule-dot data-v-23b2f720"></view><text class="rule-text data-v-23b2f720">持续计费至99元视为买断</text></view></view></view><view class="card notice-card data-v-23b2f720"><view class="card-header data-v-23b2f720"><text class="card-title data-v-23b2f720">使用须知</text></view><view class="notice-items data-v-23b2f720"><view class="notice-item data-v-23b2f720"><view class="notice-dot data-v-23b2f720"></view><text class="notice-text data-v-23b2f720">请在使用前检查设备是否完好</text></view><view class="notice-item data-v-23b2f720"><view class="notice-dot data-v-23b2f720"></view><text class="notice-text data-v-23b2f720">请在指定区域内使用设备</text></view><view class="notice-item data-v-23b2f720"><view class="notice-dot data-v-23b2f720"></view><text class="notice-text data-v-23b2f720">归还时请确保设备完好,避免损坏</text></view></view></view><view class="footer data-v-23b2f720"><button class="{{['rent-button', 'data-v-23b2f720', i && 'return-button']}}" bindtap="{{j}}"><text class="data-v-23b2f720">{{h}}</text></button><view class="wechat-credit data-v-23b2f720"><image src="{{k}}" mode="aspectFit" class="wx-icon data-v-23b2f720"></image><view class="credit-text data-v-23b2f720"><text class="data-v-23b2f720">微信支付分</text><text class="credit-divider data-v-23b2f720">|</text><text class="credit-score data-v-23b2f720">550分及以上优享</text></view></view></view><view wx:if="{{l}}" class="phone-auth-popup data-v-23b2f720"><view class="popup-mask data-v-23b2f720" catchtap="{{m}}"></view><view class="popup-content data-v-23b2f720"><view class="popup-header data-v-23b2f720"><text class="popup-title data-v-23b2f720">授权获取手机号</text></view><view class="popup-body data-v-23b2f720"><view class="auth-desc data-v-23b2f720"><text class="data-v-23b2f720">为了提供更好的服务,需要授权获取您的手机号</text></view><button class="auth-btn data-v-23b2f720" open-type="getPhoneNumber" bindgetphonenumber="{{n}}"> 一键获取手机号 </button><view class="auth-cancel data-v-23b2f720" bindtap="{{o}}"><text class="data-v-23b2f720">暂不授权</text></view></view></view></view></view>
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +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(){if(-1===this.selectedType)return void e.index.showToast({title:"请选择问题类型",icon:"none"});if(!this.description.trim())return void e.index.showToast({title:"请描述您的问题",icon:"none"});if(!this.contact)return void e.index.showToast({title:"请留下联系方式",icon:"none"});const t={type:this.types[this.selectedType],content:this.description,phone:this.contact,images:this.images};e.index.request({url:"/app/feedback/add",method:"POST",data:t,success:t=>{200===t.statusCode?(e.index.showToast({title:"提交成功",icon:"success"}),this.selectedType=-1,this.description="",this.contact="",this.images=[]):e.index.showToast({title:"提交失败",icon:"none"})},fail:()=>{e.index.showToast({title:"提交失败",icon:"none"})}})}}};const s=e._export_sfc(t,[["render",function(t,s,i,o,c,n){return e.e({a:e.f(c.types,((t,s,i)=>({a:e.t(t),b:s,c:c.selectedType===s?1:"",d:e.o((e=>n.selectType(s)),s)}))),b:c.description,c:e.o((e=>c.description=e.detail.value)),d:e.t(c.description.length),e:e.f(c.images,((t,s,i)=>({a:t,b:e.o((e=>n.deleteImage(s)),s),c:s}))),f:c.images.length<3},c.images.length<3?{g:e.o(((...e)=>n.chooseImage&&n.chooseImage(...e)))}:{},{h:c.contact,i:e.o((e=>c.contact=e.detail.value)),j:e.o(((...e)=>n.submitFeedback&&n.submitFeedback(...e)))})}],["__scopeId","data-v-e7b0add7"]]);wx.createPage(s);
"use strict";const e=require("../../common/vendor.js"),a=require("../../config/user.js"),o={__name:"index",setup(o){const t=e.ref(["设备故障","收费问题","使用建议","其他"]),l=e.ref(-1),u=e.ref(""),n=e.ref(""),i=e.ref([]),s=e.ref(""),v=()=>{e.index.chooseImage({count:3-i.value.length,success:e=>{i.value=[...i.value,...e.tempFilePaths]}})},c=async()=>{if(-1===l.value)return void e.index.showToast({title:"请选择问题类型",icon:"none"});if(!n.value.trim())return void e.index.showToast({title:"请描述您的问题",icon:"none"});if(!s.value)return void e.index.showToast({title:"请留下联系方式",icon:"none"});"设备故障"==t.value[l.value]||"收费问题"==t.value[l.value]?u.value="complain":u.value="suggestion";const o={type:u.value,content:n.value,phone:s.value,images:i.value};200==(await a.addUserFeedback(o)).code?e.index.showToast({title:"反馈成功",icon:"success"}):e.index.showToast({title:"反馈失败",icon:"none"})};return(a,o)=>e.e({a:e.f(t.value,((a,o,t)=>({a:e.t(a),b:o,c:l.value===o?1:"",d:e.o((e=>(e=>{l.value=e})(o)),o)}))),b:n.value,c:e.o((e=>n.value=e.detail.value)),d:e.t(n.value.length),e:e.f(i.value,((a,o,t)=>({a:a,b:e.o((e=>(e=>{i.value.splice(e,1)})(o)),o),c:o}))),f:i.value.length<3},i.value.length<3?{g:e.o(v)}:{},{h:s.value,i:e.o((e=>s.value=e.detail.value)),j:e.o(c)})}},t=e._export_sfc(o,[["__scopeId","data-v-e2170816"]]);wx.createPage(t);
+1 -1
View File
@@ -1 +1 @@
<view class="feedback-container data-v-e7b0add7"><view class="type-section data-v-e7b0add7"><view class="section-title data-v-e7b0add7">问题类型</view><view class="type-grid data-v-e7b0add7"><view wx:for="{{a}}" wx:for-item="type" wx:key="b" class="{{['type-item', 'data-v-e7b0add7', type.c && 'active']}}" bindtap="{{type.d}}">{{type.a}}</view></view></view><view class="description-section data-v-e7b0add7"><view class="section-title data-v-e7b0add7">问题描述</view><block wx:if="{{r0}}"><textarea class="description-input data-v-e7b0add7" placeholder="请详细描述您遇到的问题,以便我们更好地为您解决" maxlength="500" value="{{b}}" bindinput="{{c}}"/></block><view class="word-count data-v-e7b0add7">{{d}}/500</view></view><view class="upload-section data-v-e7b0add7"><view class="section-title data-v-e7b0add7">图片上传(选填)</view><view class="upload-grid data-v-e7b0add7"><view wx:for="{{e}}" wx:for-item="img" wx:key="c" class="upload-item data-v-e7b0add7"><image class="data-v-e7b0add7" src="{{img.a}}" mode="aspectFill"/><view class="delete-btn data-v-e7b0add7" bindtap="{{img.b}}">×</view></view><view wx:if="{{f}}" class="upload-btn data-v-e7b0add7" bindtap="{{g}}"><text class="plus data-v-e7b0add7">+</text><text class="tip data-v-e7b0add7">上传图片</text></view></view></view><view class="contact-section data-v-e7b0add7"><view class="section-title data-v-e7b0add7">联系方式</view><input class="contact-input data-v-e7b0add7" placeholder="请留下您的手机号,方便我们联系您" type="number" maxlength="11" value="{{h}}" bindinput="{{i}}"/></view><view class="submit-section data-v-e7b0add7"><button class="submit-btn data-v-e7b0add7" bindtap="{{j}}">提交反馈</button></view></view>
<view class="feedback-container data-v-e2170816"><view class="type-section data-v-e2170816"><view class="section-title data-v-e2170816">问题类型</view><view class="type-grid data-v-e2170816"><view wx:for="{{a}}" wx:for-item="type" wx:key="b" class="{{['type-item', 'data-v-e2170816', type.c && 'active']}}" bindtap="{{type.d}}">{{type.a}}</view></view></view><view class="description-section data-v-e2170816"><view class="section-title data-v-e2170816">问题描述</view><block wx:if="{{r0}}"><textarea class="description-input data-v-e2170816" placeholder="请详细描述您遇到的问题,以便我们更好地为您解决" maxlength="500" value="{{b}}" bindinput="{{c}}"/></block><view class="word-count data-v-e2170816">{{d}}/500</view></view><view class="upload-section data-v-e2170816"><view class="section-title data-v-e2170816">图片上传(选填)</view><view class="upload-grid data-v-e2170816"><view wx:for="{{e}}" wx:for-item="img" wx:key="c" class="upload-item data-v-e2170816"><image class="data-v-e2170816" src="{{img.a}}" mode="aspectFill"/><view class="delete-btn data-v-e2170816" bindtap="{{img.b}}">×</view></view><view wx:if="{{f}}" class="upload-btn data-v-e2170816" bindtap="{{g}}"><text class="plus data-v-e2170816">+</text><text class="tip data-v-e2170816">上传图片</text></view></view></view><view class="contact-section data-v-e2170816"><view class="section-title data-v-e2170816">联系方式</view><input class="contact-input data-v-e2170816" placeholder="请留下您的手机号,方便我们联系您" type="number" maxlength="11" value="{{h}}" bindinput="{{i}}"/></view><view class="submit-section data-v-e2170816"><button class="submit-btn data-v-e2170816" bindtap="{{j}}">提交反馈</button></view></view>
+1 -1
View File
@@ -1 +1 @@
.feedback-container.data-v-e7b0add7{min-height:100vh;background:#f8f8f8;padding:30rpx}.feedback-container .section-title.data-v-e7b0add7{font-size:30rpx;color:#333;font-weight:500;margin-bottom:20rpx}.feedback-container .type-section.data-v-e7b0add7{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:20rpx}.feedback-container .type-section .type-grid.data-v-e7b0add7{display:flex;flex-wrap:wrap;margin:0 -10rpx}.feedback-container .type-section .type-grid .type-item.data-v-e7b0add7{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-e7b0add7{background:#e3f2fd;color:#1976d2}.feedback-container .description-section.data-v-e7b0add7{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:20rpx}.feedback-container .description-section .description-input.data-v-e7b0add7{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-e7b0add7{text-align:right;font-size:24rpx;color:#999;margin-top:10rpx}.feedback-container .upload-section.data-v-e7b0add7{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:20rpx}.feedback-container .upload-section .upload-grid.data-v-e7b0add7{display:flex;flex-wrap:wrap}.feedback-container .upload-section .upload-grid .upload-item.data-v-e7b0add7{width:200rpx;height:200rpx;margin-right:20rpx;margin-bottom:20rpx;position:relative}.feedback-container .upload-section .upload-grid .upload-item image.data-v-e7b0add7{width:100%;height:100%;border-radius:10rpx}.feedback-container .upload-section .upload-grid .upload-item .delete-btn.data-v-e7b0add7{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-e7b0add7{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-e7b0add7{font-size:60rpx;line-height:1;margin-bottom:10rpx}.feedback-container .upload-section .upload-grid .upload-btn .tip.data-v-e7b0add7{font-size:24rpx}.feedback-container .contact-section.data-v-e7b0add7{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:40rpx}.feedback-container .contact-section .contact-input.data-v-e7b0add7{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-e7b0add7{padding:0 40rpx}.feedback-container .submit-section .submit-btn.data-v-e7b0add7{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-e7b0add7:active{transform:scale(.98)}
.feedback-container.data-v-e2170816{min-height:100vh;background:#f8f8f8;padding:30rpx}.feedback-container .section-title.data-v-e2170816{font-size:30rpx;color:#333;font-weight:500;margin-bottom:20rpx}.feedback-container .type-section.data-v-e2170816{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:20rpx}.feedback-container .type-section .type-grid.data-v-e2170816{display:flex;flex-wrap:wrap;margin:0 -10rpx}.feedback-container .type-section .type-grid .type-item.data-v-e2170816{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-e2170816{background:#e3f2fd;color:#1976d2}.feedback-container .description-section.data-v-e2170816{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:20rpx}.feedback-container .description-section .description-input.data-v-e2170816{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-e2170816{text-align:right;font-size:24rpx;color:#999;margin-top:10rpx}.feedback-container .upload-section.data-v-e2170816{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:20rpx}.feedback-container .upload-section .upload-grid.data-v-e2170816{display:flex;flex-wrap:wrap}.feedback-container .upload-section .upload-grid .upload-item.data-v-e2170816{width:200rpx;height:200rpx;margin-right:20rpx;margin-bottom:20rpx;position:relative}.feedback-container .upload-section .upload-grid .upload-item image.data-v-e2170816{width:100%;height:100%;border-radius:10rpx}.feedback-container .upload-section .upload-grid .upload-item .delete-btn.data-v-e2170816{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-e2170816{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-e2170816{font-size:60rpx;line-height:1;margin-bottom:10rpx}.feedback-container .upload-section .upload-grid .upload-btn .tip.data-v-e2170816{font-size:24rpx}.feedback-container .contact-section.data-v-e2170816{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:40rpx}.feedback-container .contact-section .contact-input.data-v-e2170816{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-e2170816{padding:0 40rpx}.feedback-container .submit-section .submit-btn.data-v-e2170816{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-e2170816:active{transform:scale(.98)}
+1 -1
View File
@@ -1 +1 @@
"use strict";const e=require("../../common/vendor.js"),a=require("../../common/assets.js"),o=require("../../util/index.js");if(!Array){e.resolveComponent("uni-icons")()}const n={__name:"index",setup(n){const t=e.ref({}),r=e.ref("0.00"),i=e.ref(""),s=e.ref(null),d=e.ref(!1);e.onMounted((()=>{l()}));const l=async()=>{try{if(!e.index.getStorageSync("token"))return void(await o.wxLogin());const a=await o.getUserInfo();console.log("User info response:",a),200==a.code&&(a.data.openId&&(i.value=a.data.openId,e.index.setStorageSync("openId",a.data.openId)),t.value={nickName:a.data.nickname,phone:a.data.phone,avatar:a.data.iconUrl,isAdmin:a.data.isAdmin},e.index.setStorageSync("userInfo",t.value),r.value=a.data.balanceAmount||"0.00")}catch(a){console.error("获取用户信息失败:",a),e.index.showToast({title:"获取用户信息失败",icon:"none"})}},c=a=>{e.index.navigateTo({url:a})},p=()=>{c("/pages/deposit/index")},u=()=>{t.value||v()},v=()=>{s.value&&(s.value.open(),d.value=!0)};return(o,n)=>{return e.e({a:t.value.avatar},t.value.avatar?{b:t.value.avatar}:{c:a._imports_0$2},{d:t.value.isAdmin},(t.value.isAdmin,{}),{e:t.value},t.value?{f:e.t(t.value.nickName),g:e.t(t.value.phone?(i=t.value.phone,i?i.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2"):""):"未绑定手机号")}:{},{h:e.p({type:"right",size:"16",color:"#999"}),i:e.o(u),j:e.t(r.value),k:e.o(p),l:a._imports_1,m:e.p({type:"right",size:"16",color:"#999"}),n:e.o((e=>c("/pages/order/index"))),o:a._imports_2,p:e.p({type:"right",size:"16",color:"#999"}),q:e.o((e=>c("/pages/feedback/index"))),r:a._imports_3,s:e.p({type:"right",size:"16",color:"#999"}),t:e.o((e=>c("/pages/help/index")))});var i}}},t=e._export_sfc(n,[["__scopeId","data-v-6fbc3933"]]);wx.createPage(t);
"use strict";const e=require("../../common/vendor.js"),a=require("../../common/assets.js"),o=require("../../util/index.js");if(!Array){e.resolveComponent("uni-icons")()}const n={__name:"index",setup(n){const t=e.ref({}),r=e.ref("0.00"),i=e.ref(""),s=e.ref(null),d=e.ref(!1);e.onMounted((()=>{l()}));const l=async()=>{try{if(!e.index.getStorageSync("token"))return void(await o.wxLogin());const a=await o.getUserInfo();console.log("User info response:",a),200==a.code&&(a.data.openId&&(i.value=a.data.openId,e.index.setStorageSync("openId",a.data.openId)),t.value={nickName:a.data.nickname,phone:a.data.phone,avatar:a.data.iconUrl,isAdmin:a.data.isAdmin},e.index.setStorageSync("userInfo",t.value),r.value=a.data.balanceAmount||"0.00")}catch(a){console.error("获取用户信息失败:",a),e.index.showToast({title:"获取用户信息失败",icon:"none"})}},c=a=>{e.index.navigateTo({url:a})},p=()=>{c("/pages/deposit/index")},u=()=>{t.value||v()},v=()=>{s.value&&(s.value.open(),d.value=!0)};return(o,n)=>{return e.e({a:t.value.avatar},t.value.avatar?{b:t.value.avatar}:{c:a._imports_0$2},{d:t.value.isAdmin},(t.value.isAdmin,{}),{e:t.value},t.value?{f:e.t(t.value.nickName),g:e.t(t.value.phone?(i=t.value.phone,i?i.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2"):""):"未绑定手机号")}:{},{h:e.p({type:"right",size:"16",color:"#999"}),i:e.o(u),j:e.t(r.value),k:e.o(p),l:a._imports_1,m:e.p({type:"right",size:"16",color:"#999"}),n:e.o((e=>c("/pages/order/index"))),o:a._imports_2,p:e.p({type:"right",size:"16",color:"#999"}),q:e.o((e=>c("/pages/feedback/index"))),r:a._imports_3,s:e.p({type:"right",size:"16",color:"#999"}),t:e.o((e=>c("/pages/help/index")))});var i}}},t=e._export_sfc(n,[["__scopeId","data-v-ffe8dcc1"]]);wx.createPage(t);
+1 -1
View File
@@ -1 +1 @@
<view class="profile-container data-v-6fbc3933"><view class="header-section data-v-6fbc3933"><view class="user-profile data-v-6fbc3933" bindtap="{{i}}"><view class="avatar-container data-v-6fbc3933"><image wx:if="{{a}}" class="avatar data-v-6fbc3933" src="{{b}}" mode="aspectFill"></image><image wx:else class="avatar data-v-6fbc3933" src="{{c}}" mode="aspectFill"></image><view wx:if="{{d}}" class="avatar-badge data-v-6fbc3933"></view></view><view wx:if="{{e}}" class="user-details data-v-6fbc3933"><view class="username data-v-6fbc3933">{{f}}</view><view class="user-id data-v-6fbc3933">{{g}}</view></view><view wx:else class="user-details data-v-6fbc3933"><view class="username data-v-6fbc3933">点击登录</view><view class="user-id data-v-6fbc3933">授权登录后享受更多服务</view></view><view class="edit-profile data-v-6fbc3933"><uni-icons wx:if="{{h}}" class="data-v-6fbc3933" u-i="6fbc3933-0" bind:__l="__l" u-p="{{h}}"></uni-icons></view></view></view><view class="balance-card data-v-6fbc3933"><view class="balance-info data-v-6fbc3933"><view class="balance-label data-v-6fbc3933">押金余额</view><view class="balance-amount data-v-6fbc3933">¥{{j}}</view></view><view class="action-button data-v-6fbc3933" bindtap="{{k}}"><text class="data-v-6fbc3933">提现</text></view></view><view class="function-list data-v-6fbc3933"><view class="function-item data-v-6fbc3933" bindtap="{{n}}"><view class="item-left data-v-6fbc3933"><view class="item-icon data-v-6fbc3933"><image class="data-v-6fbc3933" src="{{l}}" mode="aspectFit"></image></view><text class="item-title data-v-6fbc3933">订单中心</text></view><view class="item-right data-v-6fbc3933"><uni-icons wx:if="{{m}}" class="data-v-6fbc3933" u-i="6fbc3933-1" bind:__l="__l" u-p="{{m}}"></uni-icons></view></view><view class="function-item data-v-6fbc3933" bindtap="{{q}}"><view class="item-left data-v-6fbc3933"><view class="item-icon data-v-6fbc3933"><image class="data-v-6fbc3933" src="{{o}}" mode="aspectFit"></image></view><text class="item-title data-v-6fbc3933">投诉建议</text></view><view class="item-right data-v-6fbc3933"><uni-icons wx:if="{{p}}" class="data-v-6fbc3933" u-i="6fbc3933-2" bind:__l="__l" u-p="{{p}}"></uni-icons></view></view><view class="function-item data-v-6fbc3933" bindtap="{{t}}"><view class="item-left data-v-6fbc3933"><view class="item-icon data-v-6fbc3933"><image class="data-v-6fbc3933" src="{{r}}" mode="aspectFit"></image></view><text class="item-title data-v-6fbc3933">帮助中心</text></view><view class="item-right data-v-6fbc3933"><uni-icons wx:if="{{s}}" class="data-v-6fbc3933" u-i="6fbc3933-3" bind:__l="__l" u-p="{{s}}"></uni-icons></view></view></view></view>
<view class="profile-container data-v-ffe8dcc1"><view class="header-section data-v-ffe8dcc1"><view class="user-profile data-v-ffe8dcc1" bindtap="{{i}}"><view class="avatar-container data-v-ffe8dcc1"><image wx:if="{{a}}" class="avatar data-v-ffe8dcc1" src="{{b}}" mode="aspectFill"></image><image wx:else class="avatar data-v-ffe8dcc1" src="{{c}}" mode="aspectFill"></image><view wx:if="{{d}}" class="avatar-badge data-v-ffe8dcc1"></view></view><view wx:if="{{e}}" class="user-details data-v-ffe8dcc1"><view class="username data-v-ffe8dcc1">{{f}}</view><view class="user-id data-v-ffe8dcc1">{{g}}</view></view><view wx:else class="user-details data-v-ffe8dcc1"><view class="username data-v-ffe8dcc1">点击登录</view><view class="user-id data-v-ffe8dcc1">授权登录后享受更多服务</view></view><view class="edit-profile data-v-ffe8dcc1"><uni-icons wx:if="{{h}}" class="data-v-ffe8dcc1" u-i="ffe8dcc1-0" bind:__l="__l" u-p="{{h}}"></uni-icons></view></view></view><view class="balance-card data-v-ffe8dcc1"><view class="balance-info data-v-ffe8dcc1"><view class="balance-label data-v-ffe8dcc1">押金余额</view><view class="balance-amount data-v-ffe8dcc1">¥{{j}}</view></view><view class="action-button data-v-ffe8dcc1" bindtap="{{k}}"><text class="data-v-ffe8dcc1">提现</text></view></view><view class="function-list data-v-ffe8dcc1"><view class="function-item data-v-ffe8dcc1" bindtap="{{n}}"><view class="item-left data-v-ffe8dcc1"><view class="item-icon data-v-ffe8dcc1"><image class="data-v-ffe8dcc1" src="{{l}}" mode="aspectFit"></image></view><text class="item-title data-v-ffe8dcc1">订单中心</text></view><view class="item-right data-v-ffe8dcc1"><uni-icons wx:if="{{m}}" class="data-v-ffe8dcc1" u-i="ffe8dcc1-1" bind:__l="__l" u-p="{{m}}"></uni-icons></view></view><view class="function-item data-v-ffe8dcc1" bindtap="{{q}}"><view class="item-left data-v-ffe8dcc1"><view class="item-icon data-v-ffe8dcc1"><image class="data-v-ffe8dcc1" src="{{o}}" mode="aspectFit"></image></view><text class="item-title data-v-ffe8dcc1">投诉建议</text></view><view class="item-right data-v-ffe8dcc1"><uni-icons wx:if="{{p}}" class="data-v-ffe8dcc1" u-i="ffe8dcc1-2" bind:__l="__l" u-p="{{p}}"></uni-icons></view></view><view class="function-item data-v-ffe8dcc1" bindtap="{{t}}"><view class="item-left data-v-ffe8dcc1"><view class="item-icon data-v-ffe8dcc1"><image class="data-v-ffe8dcc1" src="{{r}}" mode="aspectFit"></image></view><text class="item-title data-v-ffe8dcc1">帮助中心</text></view><view class="item-right data-v-ffe8dcc1"><uni-icons wx:if="{{s}}" class="data-v-ffe8dcc1" u-i="ffe8dcc1-3" bind:__l="__l" u-p="{{s}}"></uni-icons></view></view></view></view>
+1 -1
View File
@@ -1 +1 @@
.profile-container.data-v-6fbc3933{min-height:100vh;background-color:#f5f7fa;padding-bottom:env(safe-area-inset-bottom)}.header-section.data-v-6fbc3933{padding:40rpx;background:linear-gradient(135deg,#4facfe,#00f2fe);position:relative;border-radius:0 0 30rpx 30rpx;margin-bottom:20rpx;box-shadow:0 10rpx 30rpx rgba(79,172,254,.2)}.user-profile.data-v-6fbc3933{display:flex;align-items:center;padding:20rpx 0}.avatar-container.data-v-6fbc3933{position:relative;margin-right:30rpx}.avatar.data-v-6fbc3933{width:120rpx;height:120rpx;border-radius:60rpx;border:4rpx solid rgba(255,255,255,.6);box-shadow:0 8rpx 20rpx rgba(0,0,0,.1)}.avatar-badge.data-v-6fbc3933{position:absolute;bottom:0;right:0;width:36rpx;height:36rpx;border-radius:18rpx;background-color:#ff9500;border:4rpx solid white}.user-details.data-v-6fbc3933{flex:1}.username.data-v-6fbc3933{font-size:36rpx;font-weight:600;color:#fff;margin-bottom:8rpx}.user-id.data-v-6fbc3933{font-size:26rpx;color:rgba(255,255,255,.8)}.edit-profile.data-v-6fbc3933{background-color:rgba(255,255,255,.2);padding:10rpx;border-radius:50%}.balance-card.data-v-6fbc3933{margin:30rpx;background:#fff;border-radius:20rpx;padding:30rpx;display:flex;justify-content:space-between;align-items:center;box-shadow:0 10rpx 30rpx rgba(0,0,0,.05)}.balance-label.data-v-6fbc3933{font-size:28rpx;color:#666;margin-bottom:10rpx}.balance-amount.data-v-6fbc3933{font-size:48rpx;font-weight:600;color:#4facfe}.action-button.data-v-6fbc3933{background:linear-gradient(135deg,#4facfe,#00f2fe);border-radius:40rpx;height:80rpx;display:flex;align-items:center;justify-content:center;padding:0 40rpx;color:#fff;font-weight:500;font-size:30rpx;box-shadow:0 8rpx 16rpx rgba(79,172,254,.2)}.action-button.data-v-6fbc3933:active{opacity:.9;transform:scale(.98)}.action-button text.data-v-6fbc3933{margin-right:10rpx}.function-list.data-v-6fbc3933{margin:30rpx;background:#fff;border-radius:20rpx;overflow:hidden;box-shadow:0 6rpx 16rpx rgba(0,0,0,.04)}.function-item.data-v-6fbc3933{display:flex;justify-content:space-between;align-items:center;padding:32rpx 30rpx;border-bottom:1rpx solid #f0f0f0}.function-item.data-v-6fbc3933:last-child{border-bottom:none}.function-item.data-v-6fbc3933:active{background-color:#f9f9f9}.item-left.data-v-6fbc3933{display:flex;align-items:center}.item-icon.data-v-6fbc3933{width:48rpx;height:48rpx;margin-right:24rpx;display:flex;align-items:center;justify-content:center}.item-icon image.data-v-6fbc3933{width:40rpx;height:40rpx}.item-title.data-v-6fbc3933{font-size:30rpx;color:#333;font-weight:500}.item-right.data-v-6fbc3933{display:flex;align-items:center}.auth-popup.data-v-6fbc3933{background-color:#fff;width:100%;padding:40rpx;border-radius:15rpx}.auth-title.data-v-6fbc3933{font-size:34rpx;font-weight:600;color:#333;text-align:center;margin-bottom:20rpx}.auth-desc.data-v-6fbc3933{font-size:28rpx;color:#666;text-align:center;margin-bottom:40rpx}.auth-buttons.data-v-6fbc3933{display:flex;justify-content:space-between}.cancel-btn.data-v-6fbc3933,.confirm-btn.data-v-6fbc3933{width:240rpx;height:80rpx;line-height:80rpx;text-align:center;border-radius:40rpx;font-size:28rpx}.cancel-btn.data-v-6fbc3933:after,.confirm-btn.data-v-6fbc3933:after{border:none}.cancel-btn.data-v-6fbc3933{background-color:#f0f0f0;color:#666}.confirm-btn.data-v-6fbc3933{background:linear-gradient(135deg,#4facfe,#00f2fe);color:#fff}
.profile-container.data-v-ffe8dcc1{min-height:100vh;background-color:#f5f7fa;padding-bottom:env(safe-area-inset-bottom)}.header-section.data-v-ffe8dcc1{padding:40rpx;background:linear-gradient(135deg,#4facfe,#00f2fe);position:relative;border-radius:0 0 30rpx 30rpx;margin-bottom:20rpx;box-shadow:0 10rpx 30rpx rgba(79,172,254,.2)}.user-profile.data-v-ffe8dcc1{display:flex;align-items:center;padding:20rpx 0}.avatar-container.data-v-ffe8dcc1{position:relative;margin-right:30rpx}.avatar.data-v-ffe8dcc1{width:120rpx;height:120rpx;border-radius:60rpx;border:4rpx solid rgba(255,255,255,.6);box-shadow:0 8rpx 20rpx rgba(0,0,0,.1)}.avatar-badge.data-v-ffe8dcc1{position:absolute;bottom:0;right:0;width:36rpx;height:36rpx;border-radius:18rpx;background-color:#ff9500;border:4rpx solid white}.user-details.data-v-ffe8dcc1{flex:1}.username.data-v-ffe8dcc1{font-size:36rpx;font-weight:600;color:#fff;margin-bottom:8rpx}.user-id.data-v-ffe8dcc1{font-size:26rpx;color:rgba(255,255,255,.8)}.edit-profile.data-v-ffe8dcc1{background-color:rgba(255,255,255,.2);padding:10rpx;border-radius:50%}.balance-card.data-v-ffe8dcc1{margin:30rpx;background:#fff;border-radius:20rpx;padding:30rpx;display:flex;justify-content:space-between;align-items:center;box-shadow:0 10rpx 30rpx rgba(0,0,0,.05)}.balance-label.data-v-ffe8dcc1{font-size:28rpx;color:#666;margin-bottom:10rpx}.balance-amount.data-v-ffe8dcc1{font-size:48rpx;font-weight:600;color:#4facfe}.action-button.data-v-ffe8dcc1{background:linear-gradient(135deg,#4facfe,#00f2fe);border-radius:40rpx;height:80rpx;display:flex;align-items:center;justify-content:center;padding:0 40rpx;color:#fff;font-weight:500;font-size:30rpx;box-shadow:0 8rpx 16rpx rgba(79,172,254,.2)}.action-button.data-v-ffe8dcc1:active{opacity:.9;transform:scale(.98)}.action-button text.data-v-ffe8dcc1{margin-right:10rpx}.function-list.data-v-ffe8dcc1{margin:30rpx;background:#fff;border-radius:20rpx;overflow:hidden;box-shadow:0 6rpx 16rpx rgba(0,0,0,.04)}.function-item.data-v-ffe8dcc1{display:flex;justify-content:space-between;align-items:center;padding:32rpx 30rpx;border-bottom:1rpx solid #f0f0f0}.function-item.data-v-ffe8dcc1:last-child{border-bottom:none}.function-item.data-v-ffe8dcc1:active{background-color:#f9f9f9}.item-left.data-v-ffe8dcc1{display:flex;align-items:center}.item-icon.data-v-ffe8dcc1{width:48rpx;height:48rpx;margin-right:24rpx;display:flex;align-items:center;justify-content:center}.item-icon image.data-v-ffe8dcc1{width:40rpx;height:40rpx}.item-title.data-v-ffe8dcc1{font-size:30rpx;color:#333;font-weight:500}.item-right.data-v-ffe8dcc1{display:flex;align-items:center}.auth-popup.data-v-ffe8dcc1{background-color:#fff;width:100%;padding:40rpx;border-radius:15rpx}.auth-title.data-v-ffe8dcc1{font-size:34rpx;font-weight:600;color:#333;text-align:center;margin-bottom:20rpx}.auth-desc.data-v-ffe8dcc1{font-size:28rpx;color:#666;text-align:center;margin-bottom:40rpx}.auth-buttons.data-v-ffe8dcc1{display:flex;justify-content:space-between}.cancel-btn.data-v-ffe8dcc1,.confirm-btn.data-v-ffe8dcc1{width:240rpx;height:80rpx;line-height:80rpx;text-align:center;border-radius:40rpx;font-size:28rpx}.cancel-btn.data-v-ffe8dcc1:after,.confirm-btn.data-v-ffe8dcc1:after{border:none}.cancel-btn.data-v-ffe8dcc1{background-color:#f0f0f0;color:#666}.confirm-btn.data-v-ffe8dcc1{background:linear-gradient(135deg,#4facfe,#00f2fe);color:#fff}
-1
View File
@@ -1 +0,0 @@
"use strict";const e=require("../../common/vendor.js"),a=require("../../common/assets.js"),t=require("../../config/user.js"),r={__name:"details",setup(r){const n=e.ref(""),u=e.ref({}),o=e.computed((()=>{switch(u.value.orderStatus){case"waiting_for_payment":return"待支付";case"in_used":default:return"使用中";case"used_done":return"已完成";case"order_cancelled":return"已取消"}}));e.onLoad((async a=>{a&&a.orderId?(n.value=a.orderId,await i()):(e.index.showToast({title:"订单信息不存在",icon:"none"}),setTimeout((()=>{e.index.navigateBack()}),1500))}));const i=async()=>{try{e.index.showLoading({title:"加载中"});const a=await t.queryById(n.value);if(200!==a.code||!a.data)throw new Error("获取订单详情失败");u.value=a.data,u.value.createTime&&(u.value.createTime=d(new Date(u.value.createTime))),u.value.startTime&&(u.value.startTime=d(new Date(u.value.startTime))),u.value.endTime&&(u.value.endTime=d(new Date(u.value.endTime))),e.index.hideLoading()}catch(a){e.index.hideLoading(),e.index.showToast({title:a.message||"获取订单详情失败",icon:"none"})}},d=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")}`,l=e=>{if(!e)return"";const a=parseInt(e);if(a<60)return`${a}分钟`;{const e=Math.floor(a/60),t=a%60;return t>0?`${e}小时${t}分钟`:`${e}小时`}};return(t,r)=>e.e({a:e.t(o.value),b:e.t(u.value.orderNo||"-"),c:e.t(u.value.deviceNo||"-"),d:"wx_score_pay"===u.value.payWay},"wx_score_pay"===u.value.payWay?{e:a._imports_0$3}:("wx_member_pay"===u.value.payWay||u.value.payWay,{}),{f:"wx_member_pay"===u.value.payWay,g:"wx_pay"===u.value.payWay,h:e.t(u.value.startTime||"-"),i:u.value.endTime},u.value.endTime?{j:e.t(u.value.endTime)}:{},{k:u.value.phone},u.value.phone?{l:e.t(u.value.phone)}:{},{m:u.value.depositAmount},u.value.depositAmount?{n:e.t(u.value.depositAmount)}:{},{o:u.value.packageTime&&u.value.packagePrice},u.value.packageTime&&u.value.packagePrice?{p:e.t(u.value.packagePrice),q:e.t(l(u.value.packageTime))}:{},{r:e.t(u.value.payAmount||0)})}},n=e._export_sfc(r,[["__scopeId","data-v-d8a382d6"]]);wx.createPage(n);
@@ -1,6 +0,0 @@
{
"navigationBarTitleText": "订单详情",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"usingComponents": {}
}
@@ -1 +0,0 @@
<view class="return-container data-v-d8a382d6"><view class="order-card data-v-d8a382d6"><view class="order-header data-v-d8a382d6"><text class="title data-v-d8a382d6">{{a}}</text><text class="order-no data-v-d8a382d6">订单号:{{b}}</text></view><view class="device-info data-v-d8a382d6"><view class="device-left data-v-d8a382d6"><view class="device-name data-v-d8a382d6">共享风扇</view><view class="device-id data-v-d8a382d6">设备号:{{c}}</view></view><view class="device-right data-v-d8a382d6"><view wx:if="{{d}}" class="payment-badge wx-score data-v-d8a382d6"><image src="{{e}}" mode="aspectFit" class="badge-icon data-v-d8a382d6"></image><view class="badge-text data-v-d8a382d6"><text class="data-v-d8a382d6">微信支付分</text><text class="divider data-v-d8a382d6">|</text><text class="highlight data-v-d8a382d6">免押租借</text></view></view><view wx:elif="{{f}}" class="payment-badge member data-v-d8a382d6"><text class="badge-text data-v-d8a382d6">会员订单</text></view><view wx:elif="{{g}}" class="payment-badge deposit data-v-d8a382d6"><text class="badge-text data-v-d8a382d6">押金租借</text></view></view></view><view class="time-info data-v-d8a382d6"><view class="time-item data-v-d8a382d6"><text class="label data-v-d8a382d6">开始时间</text><text class="value data-v-d8a382d6">{{h}}</text></view><view wx:if="{{i}}" class="time-item data-v-d8a382d6"><text class="label data-v-d8a382d6">结束时间</text><text class="value data-v-d8a382d6">{{j}}</text></view><view wx:if="{{k}}" class="time-item data-v-d8a382d6"><text class="label data-v-d8a382d6">联系电话</text><text class="value data-v-d8a382d6">{{l}}</text></view></view></view><view class="notice-card data-v-d8a382d6"><view class="notice-title data-v-d8a382d6">费用信息</view><view class="notice-list data-v-d8a382d6"><view wx:if="{{m}}" class="notice-item data-v-d8a382d6"><view class="dot data-v-d8a382d6"></view><text class="data-v-d8a382d6">押金:¥{{n}}</text></view><view wx:if="{{o}}" class="notice-item data-v-d8a382d6"><view class="dot data-v-d8a382d6"></view><text class="data-v-d8a382d6">套餐:¥{{p}}元 / {{q}}</text></view><view class="notice-item data-v-d8a382d6"><view class="dot data-v-d8a382d6"></view><text class="data-v-d8a382d6">合计:¥{{r}}</text></view></view></view></view>
@@ -1 +0,0 @@
.return-container.data-v-d8a382d6{min-height:100vh;background:#f7f8fa;padding:30rpx 30rpx 180rpx;box-sizing:border-box}.return-container .order-card.data-v-d8a382d6{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.return-container .order-card .order-header.data-v-d8a382d6{display:flex;justify-content:space-between;align-items:center;margin-bottom:20rpx;padding-bottom:16rpx;border-bottom:1rpx solid #f0f0f0}.return-container .order-card .order-header .title.data-v-d8a382d6{font-size:30rpx;font-weight:700;color:#333}.return-container .order-card .order-header .order-no.data-v-d8a382d6{font-size:24rpx;color:#999}.return-container .order-card .device-info.data-v-d8a382d6{margin-bottom:24rpx;display:flex;justify-content:space-between;align-items:flex-start}.return-container .order-card .device-info .device-left.data-v-d8a382d6{flex:1;margin-right:20rpx}.return-container .order-card .device-info .device-left .device-name.data-v-d8a382d6{font-size:32rpx;font-weight:500;color:#333;margin-bottom:8rpx}.return-container .order-card .device-info .device-left .device-id.data-v-d8a382d6{font-size:26rpx;color:#999;margin-bottom:0}.return-container .order-card .device-info .device-right .payment-badge.data-v-d8a382d6{display:inline-flex;align-items:center;padding:6rpx 12rpx;border-radius:8rpx;white-space:nowrap}.return-container .order-card .device-info .device-right .payment-badge.wx-score.data-v-d8a382d6{background:rgba(7,193,96,.08)}.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-icon.data-v-d8a382d6{width:32rpx;height:26rpx;margin-right:8rpx}.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-text.data-v-d8a382d6{font-size:22rpx;color:#07c160;display:flex;align-items:center}.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-text .divider.data-v-d8a382d6{margin:0 6rpx}.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-text .highlight.data-v-d8a382d6{font-weight:500}.return-container .order-card .device-info .device-right .payment-badge.member.data-v-d8a382d6{background:rgba(25,118,210,.08)}.return-container .order-card .device-info .device-right .payment-badge.member .badge-text.data-v-d8a382d6{font-size:22rpx;color:#1976d2;font-weight:500}.return-container .order-card .device-info .device-right .payment-badge.deposit.data-v-d8a382d6{background:#f5f5f5}.return-container .order-card .device-info .device-right .payment-badge.deposit .badge-text.data-v-d8a382d6{font-size:22rpx;color:#666;font-weight:500}.return-container .order-card .time-info.data-v-d8a382d6{background:#f9f9f9;border-radius:16rpx;padding:20rpx}.return-container .order-card .time-info .time-item.data-v-d8a382d6{display:flex;justify-content:space-between;align-items:center;margin-bottom:16rpx}.return-container .order-card .time-info .time-item.data-v-d8a382d6:last-child{margin-bottom:0}.return-container .order-card .time-info .time-item .label.data-v-d8a382d6{font-size:26rpx;color:#666}.return-container .order-card .time-info .time-item .value.data-v-d8a382d6{font-size:26rpx;color:#333}.return-container .order-card .time-info .time-item .value.highlight.data-v-d8a382d6{color:#ff6b6b;font-weight:700}.return-container .notice-card.data-v-d8a382d6{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.return-container .notice-card .notice-title.data-v-d8a382d6{font-size:30rpx;font-weight:700;color:#333;margin-bottom:20rpx}.return-container .notice-card .notice-list .notice-item.data-v-d8a382d6{display:flex;align-items:flex-start;margin-bottom:16rpx}.return-container .notice-card .notice-list .notice-item.data-v-d8a382d6:last-child{margin-bottom:0}.return-container .notice-card .notice-list .notice-item .dot.data-v-d8a382d6{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-d8a382d6{font-size:26rpx;color:#666;line-height:1.5}.return-container .bottom-bar.data-v-d8a382d6{position:fixed;left:0;right:0;bottom:0;padding:20rpx 30rpx;padding-bottom:calc(20rpx + env(safe-area-inset-bottom));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 .action-item.data-v-d8a382d6{height:88rpx;display:flex;align-items:center;justify-content:center;font-size:30rpx;border-radius:44rpx;flex:1}.return-container .bottom-bar .action-item.primary.data-v-d8a382d6{background:#07c160;color:#fff}.return-container .bottom-bar .action-item.primary.data-v-d8a382d6:active{opacity:.8}.return-container .bottom-bar .action-item.secondary.data-v-d8a382d6{background:#f5f5f5;color:#333;border:1rpx solid #e0e0e0}.return-container .bottom-bar .action-item.secondary.data-v-d8a382d6:active{opacity:.8}
+1 -1
View File
@@ -1 +1 @@
"use strict";const e=require("../../common/vendor.js"),t=require("../../common/assets.js"),a=require("../../config/user.js"),s=require("../../config/url.js"),r={__name:"index",setup(r){const o=e.ref(0),n=e.ref([]),d=e.reactive({0:{text:"待支付",class:"status-waiting"},1:{text:"使用中",class:"status-using"},2:{text:"已完成",class:"status-finished"},3:{text:"已取消",class:"status-cancelled"},waiting_for_payment:{text:"待支付",class:"status-waiting"},in_used:{text:"使用中",class:"status-using"},used_done:{text:"已完成",class:"status-finished"},order_cancelled:{text:"已取消",class:"status-cancelled"}}),i=e.reactive([{text:"全部",status:[]},{text:"待付款",status:["waiting_for_payment"]},{text:"使用中",status:["in_used"]},{text:"已完成",status:["used_done"]},{text:"已取消",status:["order_cancelled"]}]);e.onLoad((async e=>{if(e&&e.orderId)try{const t=await a.queryById(e.orderId);if(200===t.code&&t.data){const e=t.data,a=e.startTime||e.createTime||"",s={orderNo:e.orderId,status:e.orderStatus,deviceId:e.deviceNo,payWay:e.payWay,startTime:a,endTime:e.endTime||"",amount:e.payAmount||e.actualDeviceAmount||"0.00"};n.value=[s,...n.value];const r=i.findIndex((t=>t.status.includes(e.orderStatus)));-1!==r&&c(r)}}catch(t){console.error("获取订单详情失败:",t)}await u()}));const c=async e=>{o.value=e;const t=i[e].status[0];await u(t)},u=async t=>{try{null!=t&&(t={orderStatus:t});const e=await a.getOrderList(t);200===e.code&&e.data&&e.data.records&&(n.value=e.data.records.map((e=>{const t=e.startTime||e.createTime||"";return{orderNo:e.orderNo,orderId:e.orderId,orderStatus:e.orderStatus,deviceId:e.deviceNo,payWay:e.payWay,startTime:t,endTime:e.endTime||"",amount:e.payAmount||e.actualDeviceAmount||"0.00"}})))}catch(s){console.error("获取订单列表失败:",s),e.index.showToast({title:"获取订单列表失败",icon:"none"})}};return(r,l)=>e.e({a:e.f(i,((t,a,s)=>({a:e.t(t.text),b:a,c:o.value===a?1:"",d:e.o((e=>c(a)),a)}))),b:0===n.value.length},(n.value.length,{}),{c:e.f(n.value,((r,n,c)=>{var l,y;return e.e({a:e.t(r.orderNo),b:e.t(null==(l=d[r.orderStatus])?void 0:l.text),c:e.n(null==(y=d[r.orderStatus])?void 0:y.class),d:e.t(r.deviceId),e:"wx_score_pay"==r.payWay},"wx_score_pay"==r.payWay?{f:t._imports_0$3}:("wx_member_pay"==r.payWay||r.payWay,{}),{g:"wx_member_pay"==r.payWay,h:"wx_pay"==r.payWay,i:e.t(r.startTime),j:e.t(r.endTime||"-"),k:e.t(r.amount),l:"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus},"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus?{m:e.o((t=>(async t=>{try{e.index.showLoading({title:"处理中"});const r=await e.index.request({url:`${s.URL||"http://127.0.0.1:8080"}/app/wx-payment/create/${t.orderNo}`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200!==r.statusCode||200!==r.data.code)throw new Error(r.data.msg||"创建支付订单失败");{const s=r.data.data;await e.index.requestPayment({...s,success:async()=>{e.index.showToast({title:"支付成功",icon:"success"});try{await a.updateUserBalance(t.orderId||t.orderNo)}catch(s){console.warn("更新用户余额失败:",s)}await u(i[o.value].status)},fail:e=>{throw console.error("支付失败:",e),new Error("支付失败,请重试")}})}e.index.hideLoading()}catch(r){e.index.hideLoading(),e.index.showToast({title:r.message||"支付失败",icon:"none"})}})(r)),n)}:{},{n:"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus},"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus?{o:e.o((t=>(async t=>{try{e.index.showModal({title:"确认取消",content:"确定要取消此订单吗?",success:async s=>{if(s.confirm){e.index.showLoading({title:"处理中"});const s=await a.cancelOrder({orderId:t.orderNo});if(!s)throw new Error(s.msg||"取消订单失败");e.index.hideLoading(),e.index.showToast({title:"订单已取消",icon:"success"}),await u()}}})}catch(s){e.index.hideLoading(),e.index.showToast({title:s.message||"取消订单失败",icon:"none"})}})(r)),n)}:{},{p:"in_used"==r.status||"in_used"==r.orderStatus},"in_used"==r.status||"in_used"==r.orderStatus?{q:e.o((t=>{return a=r.deviceId,s=r.orderId,console.log(s),void e.index.navigateTo({url:`/pages/return/index?deviceId=${a}&orderId=${s}`});var a,s}),n)}:{},{r:e.o((t=>(t=>{e.index.navigateTo({url:`/pages/order/details?orderId=${t.orderId||t.orderNo}`})})(r)),n),s:n})}))})}},o=e._export_sfc(r,[["__scopeId","data-v-ccb8ba5b"]]);wx.createPage(o);
"use strict";const e=require("../../common/vendor.js"),t=require("../../common/assets.js"),a=require("../../config/user.js"),s=require("../../config/url.js"),r={__name:"index",setup(r){const o=e.ref(0),n=e.ref([]),d=e.reactive({0:{text:"待支付",class:"status-waiting"},1:{text:"使用中",class:"status-using"},2:{text:"已完成",class:"status-finished"},3:{text:"已取消",class:"status-cancelled"},waiting_for_payment:{text:"待支付",class:"status-waiting"},in_used:{text:"使用中",class:"status-using"},used_done:{text:"已完成",class:"status-finished"},order_cancelled:{text:"已取消",class:"status-cancelled"}}),i=e.reactive([{text:"全部",status:[]},{text:"待付款",status:["waiting_for_payment"]},{text:"使用中",status:["in_used"]},{text:"已完成",status:["used_done"]},{text:"已取消",status:["order_cancelled"]}]);e.onLoad((async e=>{if(e&&e.orderId)try{const t=await a.queryById(e.orderId);if(200===t.code&&t.data){const e=t.data,a=e.startTime||e.createTime||"",s={orderNo:e.orderId,status:e.orderStatus,deviceId:e.deviceNo,payWay:e.payWay,startTime:a,endTime:e.endTime||"",amount:e.payAmount||e.actualDeviceAmount||"0.00"};n.value=[s,...n.value];const r=i.findIndex((t=>t.status.includes(e.orderStatus)));-1!==r&&c(r)}}catch(t){console.error("获取订单详情失败:",t)}await u()}));const c=async e=>{o.value=e;const t=i[e].status[0];await u(t)},u=async t=>{try{null!=t&&(t={orderStatus:t});const e=await a.getOrderList(t);200===e.code&&e.data&&e.data.records&&(n.value=e.data.records.map((e=>{const t=e.startTime||e.createTime||"";return{orderNo:e.orderNo,orderId:e.orderId,orderStatus:e.orderStatus,deviceId:e.deviceNo,payWay:e.payWay,startTime:t,endTime:e.endTime||"",amount:e.payAmount||e.actualDeviceAmount||"0.00"}})))}catch(s){console.error("获取订单列表失败:",s),e.index.showToast({title:"获取订单列表失败",icon:"none"})}};return(r,l)=>e.e({a:e.f(i,((t,a,s)=>({a:e.t(t.text),b:a,c:o.value===a?1:"",d:e.o((e=>c(a)),a)}))),b:0===n.value.length},(n.value.length,{}),{c:e.f(n.value,((r,n,c)=>{var l,y;return e.e({a:e.t(r.orderNo),b:e.t(null==(l=d[r.orderStatus])?void 0:l.text),c:e.n(null==(y=d[r.orderStatus])?void 0:y.class),d:e.t(r.deviceId),e:"wx_score_pay"==r.payWay},"wx_score_pay"==r.payWay?{f:t._imports_0$3}:("wx_member_pay"==r.payWay||r.payWay,{}),{g:"wx_member_pay"==r.payWay,h:"wx_pay"==r.payWay,i:e.t(r.startTime),j:e.t(r.endTime||"-"),k:e.t(r.amount),l:"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus},"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus?{m:e.o((t=>(async t=>{try{e.index.showLoading({title:"处理中"});const r=await e.index.request({url:`${s.URL||"http://127.0.0.1:8080"}/app/wx-payment/create/${t.orderNo}`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200!==r.statusCode||200!==r.data.code)throw new Error(r.data.msg||"创建支付订单失败");{const s=r.data.data;await e.index.requestPayment({...s,success:async()=>{e.index.showToast({title:"支付成功",icon:"success"});try{await a.updateUserBalance(t.orderId||t.orderNo)}catch(s){console.warn("更新用户余额失败:",s)}await u(i[o.value].status)},fail:e=>{throw console.error("支付失败:",e),new Error("支付失败,请重试")}})}e.index.hideLoading()}catch(r){e.index.hideLoading(),e.index.showToast({title:r.message||"支付失败",icon:"none"})}})(r)),n)}:{},{n:"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus},"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus?{o:e.o((t=>(async t=>{try{e.index.showModal({title:"确认取消",content:"确定要取消此订单吗?",success:async s=>{if(s.confirm){e.index.showLoading({title:"处理中"});const s=await a.cancelOrder({orderId:t.orderNo});if(!s)throw new Error(s.msg||"取消订单失败");e.index.hideLoading(),e.index.showToast({title:"订单已取消",icon:"success"}),await u()}}})}catch(s){e.index.hideLoading(),e.index.showToast({title:s.message||"取消订单失败",icon:"none"})}})(r)),n)}:{},{p:"in_used"==r.status||"in_used"==r.orderStatus},"in_used"==r.status||"in_used"==r.orderStatus?{q:e.o((t=>{return a=r.deviceId,s=r.orderId,console.log(s),void e.index.navigateTo({url:`/pages/return/index?deviceId=${a}&orderId=${s}`});var a,s}),n)}:{},{r:e.o((t=>(t=>{e.index.navigateTo({url:`/pages/return/index?orderId=${t.orderId||t.orderNo}&deviceId=${t.deviceId}`})})(r)),n),s:n})}))})}},o=e._export_sfc(r,[["__scopeId","data-v-f4c30c93"]]);wx.createPage(o);
+1 -1
View File
@@ -1 +1 @@
<view class="order-container data-v-ccb8ba5b"><view class="status-tabs data-v-ccb8ba5b"><view wx:for="{{a}}" wx:for-item="tab" wx:key="b" class="{{['tab-item', 'data-v-ccb8ba5b', tab.c && 'active']}}" bindtap="{{tab.d}}">{{tab.a}}</view></view><view class="order-list data-v-ccb8ba5b"><view wx:if="{{b}}" class="empty-state data-v-ccb8ba5b"><view class="empty-icon data-v-ccb8ba5b"></view><text class="empty-text data-v-ccb8ba5b">暂无订单记录</text></view><view wx:for="{{c}}" wx:for-item="order" wx:key="s" class="order-item data-v-ccb8ba5b"><view class="order-header data-v-ccb8ba5b"><view class="order-id data-v-ccb8ba5b"><text class="data-v-ccb8ba5b">订单号:{{order.a}}</text></view><view class="{{['order-status', 'data-v-ccb8ba5b', order.c]}}">{{order.b}}</view></view><view class="order-body data-v-ccb8ba5b"><view class="device-info data-v-ccb8ba5b"><view class="device-left data-v-ccb8ba5b"><view class="device-name data-v-ccb8ba5b">共享风扇</view><view class="device-id data-v-ccb8ba5b">设备号:{{order.d}}</view></view><view class="device-right data-v-ccb8ba5b"><view wx:if="{{order.e}}" class="payment-badge wx-score data-v-ccb8ba5b"><image src="{{order.f}}" mode="aspectFit" class="badge-icon data-v-ccb8ba5b"></image><view class="badge-text data-v-ccb8ba5b"><text class="data-v-ccb8ba5b">微信支付分</text><text class="divider data-v-ccb8ba5b">|</text><text class="highlight data-v-ccb8ba5b">免押租借</text></view></view><view wx:elif="{{order.g}}" class="payment-badge member data-v-ccb8ba5b"><text class="badge-text data-v-ccb8ba5b">会员订单</text></view><view wx:elif="{{order.h}}" class="payment-badge deposit data-v-ccb8ba5b"><text class="badge-text data-v-ccb8ba5b">押金租借</text></view></view></view><view class="order-times data-v-ccb8ba5b"><view class="time-row data-v-ccb8ba5b"><text class="time-label data-v-ccb8ba5b">开始时间:</text><text class="time-value data-v-ccb8ba5b">{{order.i}}</text></view><view class="time-row data-v-ccb8ba5b"><text class="time-label data-v-ccb8ba5b">结束时间:</text><text class="time-value data-v-ccb8ba5b">{{order.j}}</text></view></view></view><view class="order-footer data-v-ccb8ba5b"><view class="price data-v-ccb8ba5b">¥{{order.k}}</view><view class="actions data-v-ccb8ba5b"><view wx:if="{{order.l}}" class="action-item primary data-v-ccb8ba5b" bindtap="{{order.m}}"> 立即支付 </view><view wx:if="{{order.n}}" class="action-item secondary data-v-ccb8ba5b" bindtap="{{order.o}}"> 取消订单 </view><view wx:if="{{order.p}}" class="action-item primary data-v-ccb8ba5b" bindtap="{{order.q}}"> 归还设备 </view><view class="action-item secondary data-v-ccb8ba5b" bindtap="{{order.r}}"> 查看详情 </view></view></view></view></view></view>
<view class="order-container data-v-f4c30c93"><view class="status-tabs data-v-f4c30c93"><view wx:for="{{a}}" wx:for-item="tab" wx:key="b" class="{{['tab-item', 'data-v-f4c30c93', tab.c && 'active']}}" bindtap="{{tab.d}}">{{tab.a}}</view></view><view class="order-list data-v-f4c30c93"><view wx:if="{{b}}" class="empty-state data-v-f4c30c93"><view class="empty-icon data-v-f4c30c93"></view><text class="empty-text data-v-f4c30c93">暂无订单记录</text></view><view wx:for="{{c}}" wx:for-item="order" wx:key="s" class="order-item data-v-f4c30c93"><view class="order-header data-v-f4c30c93"><view class="order-id data-v-f4c30c93"><text class="data-v-f4c30c93">订单号:{{order.a}}</text></view><view class="{{['order-status', 'data-v-f4c30c93', order.c]}}">{{order.b}}</view></view><view class="order-body data-v-f4c30c93"><view class="device-info data-v-f4c30c93"><view class="device-left data-v-f4c30c93"><view class="device-name data-v-f4c30c93">共享风扇</view><view class="device-id data-v-f4c30c93">设备号:{{order.d}}</view></view><view class="device-right data-v-f4c30c93"><view wx:if="{{order.e}}" class="payment-badge wx-score data-v-f4c30c93"><image src="{{order.f}}" mode="aspectFit" class="badge-icon data-v-f4c30c93"></image><view class="badge-text data-v-f4c30c93"><text class="data-v-f4c30c93">微信支付分</text><text class="divider data-v-f4c30c93">|</text><text class="highlight data-v-f4c30c93">免押租借</text></view></view><view wx:elif="{{order.g}}" class="payment-badge member data-v-f4c30c93"><text class="badge-text data-v-f4c30c93">会员订单</text></view><view wx:elif="{{order.h}}" class="payment-badge deposit data-v-f4c30c93"><text class="badge-text data-v-f4c30c93">押金租借</text></view></view></view><view class="order-times data-v-f4c30c93"><view class="time-row data-v-f4c30c93"><text class="time-label data-v-f4c30c93">开始时间:</text><text class="time-value data-v-f4c30c93">{{order.i}}</text></view><view class="time-row data-v-f4c30c93"><text class="time-label data-v-f4c30c93">结束时间:</text><text class="time-value data-v-f4c30c93">{{order.j}}</text></view></view></view><view class="order-footer data-v-f4c30c93"><view class="price data-v-f4c30c93">¥{{order.k}}</view><view class="actions data-v-f4c30c93"><view wx:if="{{order.l}}" class="action-item primary data-v-f4c30c93" bindtap="{{order.m}}"> 立即支付 </view><view wx:if="{{order.n}}" class="action-item secondary data-v-f4c30c93" bindtap="{{order.o}}"> 取消订单 </view><view wx:if="{{order.p}}" class="action-item primary data-v-f4c30c93" bindtap="{{order.q}}"> 归还设备 </view><view class="action-item secondary data-v-f4c30c93" bindtap="{{order.r}}"> 查看详情 </view></view></view></view></view></view>
File diff suppressed because one or more lines are too long
@@ -1 +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,n=0,d=0,i="0.00",a="0.00";if(e.remark)try{const r=e.remark,o=r.match(/使用时长:(\d+)分钟/);o&&o[1]&&(d=parseInt(o[1]));const s=r.match(/套餐时长:(\d+)分钟/);s&&s[1]&&(t=parseInt(s[1]));const c=r.match(/超出时长:(\d+)分钟/);c&&c[1]&&(n=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:d,packageMinutes:t,extraMinutes:n,packagePrice:i,extraFee:a})}catch(r){console.error("解析remark字段失败:",r)}this.orderInfo={orderNo:e.orderNo||"",deviceNo:e.deviceNo||"",usedTime:d+"分钟",packageTime:t+"分钟",extraTime:n+"分钟",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 n=e._export_sfc(o,[["render",function(t,r,o,n,d,i){return e.e({a:e.t(d.orderInfo.orderNo||"-"),b:e.t(d.orderInfo.deviceNo||"-"),c:e.t(d.orderInfo.usedTime||"-"),d:e.t(d.orderInfo.packageTime||"1小时"),e:e.t(d.orderInfo.extraTime||"0分钟"),f:e.t(d.orderInfo.endTime||"-"),g:e.t(d.orderInfo.packagePrice||"0.00"),h:e.t(d.orderInfo.extraFee||"0.00"),i:e.t(d.orderInfo.currentFee||"0.00"),j:e.t(d.orderInfo.deposit||"99.00"),k:e.t(d.orderInfo.refundAmount||"99.00"),l:e.t(i.getWithdrawStatusText()),m:e.n(d.orderInfo.withdrawStatus||"waiting"),n:!d.orderInfo.isWithdrawn&&d.orderInfo.refundAmount>0},!d.orderInfo.isWithdrawn&&d.orderInfo.refundAmount>0?{o:e.o(((...e)=>i.handleWithdraw&&i.handleWithdraw(...e)))}:{},{p:e.o(((...e)=>i.goToHome&&i.goToHome(...e)))})}],["__scopeId","data-v-ef3c1c80"]]);wx.createPage(n);
"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,n=0,d=0,i="0.00",a="0.00";if(e.remark)try{const r=e.remark,o=r.match(/使用时长:(\d+)分钟/);o&&o[1]&&(d=parseInt(o[1]));const s=r.match(/套餐时长:(\d+)分钟/);s&&s[1]&&(t=parseInt(s[1]));const c=r.match(/超出时长:(\d+)分钟/);c&&c[1]&&(n=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:d,packageMinutes:t,extraMinutes:n,packagePrice:i,extraFee:a})}catch(r){console.error("解析remark字段失败:",r)}this.orderInfo={orderNo:e.orderNo||"",deviceNo:e.deviceNo||"",usedTime:d+"分钟",packageTime:t+"分钟",extraTime:n+"分钟",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 n=e._export_sfc(o,[["render",function(t,r,o,n,d,i){return e.e({a:e.t(d.orderInfo.orderNo||"-"),b:e.t(d.orderInfo.deviceNo||"-"),c:e.t(d.orderInfo.usedTime||"-"),d:e.t(d.orderInfo.packageTime||"1小时"),e:e.t(d.orderInfo.extraTime||"0分钟"),f:e.t(d.orderInfo.endTime||"-"),g:e.t(d.orderInfo.packagePrice||"0.00"),h:e.t(d.orderInfo.extraFee||"0.00"),i:e.t(d.orderInfo.currentFee||"0.00"),j:e.t(d.orderInfo.deposit||"99.00"),k:e.t(d.orderInfo.refundAmount||"99.00"),l:e.t(i.getWithdrawStatusText()),m:e.n(d.orderInfo.withdrawStatus||"waiting"),n:!d.orderInfo.isWithdrawn&&d.orderInfo.refundAmount>0},!d.orderInfo.isWithdrawn&&d.orderInfo.refundAmount>0?{o:e.o(((...e)=>i.handleWithdraw&&i.handleWithdraw(...e)))}:{},{p:e.o(((...e)=>i.goToHome&&i.goToHome(...e)))})}],["__scopeId","data-v-ef076c96"]]);wx.createPage(n);
@@ -1 +1 @@
<view class="success-container data-v-ef3c1c80"><view class="status-card data-v-ef3c1c80"><view class="status-icon success data-v-ef3c1c80"></view><view class="status-text data-v-ef3c1c80">归还成功</view><view class="status-desc data-v-ef3c1c80">您的风扇已归还,费用已从押金中扣除</view></view><view class="order-card data-v-ef3c1c80"><view class="card-title data-v-ef3c1c80">订单信息</view><view class="info-item data-v-ef3c1c80"><text class="label data-v-ef3c1c80">订单号</text><text class="value data-v-ef3c1c80">{{a}}</text></view><view class="info-item data-v-ef3c1c80"><text class="label data-v-ef3c1c80">设备号</text><text class="value data-v-ef3c1c80">{{b}}</text></view><view class="info-item data-v-ef3c1c80"><text class="label data-v-ef3c1c80">使用时长</text><text class="value data-v-ef3c1c80">{{c}}</text></view><view class="info-item data-v-ef3c1c80"><text class="label data-v-ef3c1c80">套餐时长</text><text class="value data-v-ef3c1c80">{{d}}</text></view><view class="info-item data-v-ef3c1c80"><text class="label data-v-ef3c1c80">超出时长</text><text class="value data-v-ef3c1c80">{{e}}</text></view><view class="info-item data-v-ef3c1c80"><text class="label data-v-ef3c1c80">归还时间</text><text class="value data-v-ef3c1c80">{{f}}</text></view></view><view class="refund-card data-v-ef3c1c80"><view class="card-title data-v-ef3c1c80">费用信息</view><view class="info-item data-v-ef3c1c80"><text class="label data-v-ef3c1c80">套餐费用</text><text class="value data-v-ef3c1c80">¥{{g}}</text></view><view class="info-item data-v-ef3c1c80"><text class="label data-v-ef3c1c80">超时费用</text><text class="value data-v-ef3c1c80">¥{{h}}</text></view><view class="info-item data-v-ef3c1c80"><text class="label data-v-ef3c1c80">总费用</text><text class="value data-v-ef3c1c80">¥{{i}}</text></view><view class="info-item data-v-ef3c1c80"><text class="label data-v-ef3c1c80">押金</text><text class="value data-v-ef3c1c80">¥{{j}}</text></view><view class="info-item data-v-ef3c1c80"><text class="label data-v-ef3c1c80">退还金额</text><text class="value highlight data-v-ef3c1c80">¥{{k}}</text></view><view class="info-item data-v-ef3c1c80"><text class="label data-v-ef3c1c80">退还状态</text><text class="{{['value', 'data-v-ef3c1c80', m]}}">{{l}}</text></view></view><view class="notice-card data-v-ef3c1c80"><view class="card-title data-v-ef3c1c80">退款说明</view><view class="notice-content data-v-ef3c1c80"><text class="data-v-ef3c1c80">1. 押金剩余金额需要您手动申请提现</text><text class="data-v-ef3c1c80">2. 提现申请提交后将在1-3个工作日内退还到原支付账户</text><text class="data-v-ef3c1c80">3. 如有疑问,请联系客服</text></view></view><view class="button-group data-v-ef3c1c80"><button wx:if="{{n}}" class="primary-btn data-v-ef3c1c80" bindtap="{{o}}">申请退款</button><button class="primary-btn data-v-ef3c1c80" bindtap="{{p}}">返回首页</button></view></view>
<view class="success-container data-v-ef076c96"><view class="status-card data-v-ef076c96"><view class="status-icon success data-v-ef076c96"></view><view class="status-text data-v-ef076c96">归还成功</view><view class="status-desc data-v-ef076c96">您的风扇已归还,费用已从押金中扣除</view></view><view class="order-card data-v-ef076c96"><view class="card-title data-v-ef076c96">订单信息</view><view class="info-item data-v-ef076c96"><text class="label data-v-ef076c96">订单号</text><text class="value data-v-ef076c96">{{a}}</text></view><view class="info-item data-v-ef076c96"><text class="label data-v-ef076c96">设备号</text><text class="value data-v-ef076c96">{{b}}</text></view><view class="info-item data-v-ef076c96"><text class="label data-v-ef076c96">使用时长</text><text class="value data-v-ef076c96">{{c}}</text></view><view class="info-item data-v-ef076c96"><text class="label data-v-ef076c96">套餐时长</text><text class="value data-v-ef076c96">{{d}}</text></view><view class="info-item data-v-ef076c96"><text class="label data-v-ef076c96">超出时长</text><text class="value data-v-ef076c96">{{e}}</text></view><view class="info-item data-v-ef076c96"><text class="label data-v-ef076c96">归还时间</text><text class="value data-v-ef076c96">{{f}}</text></view></view><view class="refund-card data-v-ef076c96"><view class="card-title data-v-ef076c96">费用信息</view><view class="info-item data-v-ef076c96"><text class="label data-v-ef076c96">套餐费用</text><text class="value data-v-ef076c96">¥{{g}}</text></view><view class="info-item data-v-ef076c96"><text class="label data-v-ef076c96">超时费用</text><text class="value data-v-ef076c96">¥{{h}}</text></view><view class="info-item data-v-ef076c96"><text class="label data-v-ef076c96">总费用</text><text class="value data-v-ef076c96">¥{{i}}</text></view><view class="info-item data-v-ef076c96"><text class="label data-v-ef076c96">押金</text><text class="value data-v-ef076c96">¥{{j}}</text></view><view class="info-item data-v-ef076c96"><text class="label data-v-ef076c96">退还金额</text><text class="value highlight data-v-ef076c96">¥{{k}}</text></view><view class="info-item data-v-ef076c96"><text class="label data-v-ef076c96">退还状态</text><text class="{{['value', 'data-v-ef076c96', m]}}">{{l}}</text></view></view><view class="notice-card data-v-ef076c96"><view class="card-title data-v-ef076c96">退款说明</view><view class="notice-content data-v-ef076c96"><view class="data-v-ef076c96">1. 押金剩余金额需要您手动申请提现</view><view class="data-v-ef076c96">2. 提现申请提交后将在1-3个工作日内退还到原支付账户</view><view class="data-v-ef076c96">3. 如有疑问,请联系客服</view></view></view><view class="button-group data-v-ef076c96"><button wx:if="{{n}}" class="primary-btn data-v-ef076c96" bindtap="{{o}}">申请退款</button><button class="primary-btn data-v-ef076c96" bindtap="{{p}}">返回首页</button></view></view>
@@ -1 +1 @@
.success-container.data-v-ef3c1c80{padding:20px;background-color:#f8f8f8;min-height:100vh}.status-card.data-v-ef3c1c80{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-ef3c1c80{width:60px;height:60px;margin:0 auto 16px}.status-card .status-icon.success.data-v-ef3c1c80{background-color:#07c160;border-radius:50%;position:relative}.status-card .status-icon.success.data-v-ef3c1c80: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-ef3c1c80{font-size:24px;font-weight:700;color:#07c160;margin-bottom:8px}.status-card .status-desc.data-v-ef3c1c80{font-size:14px;color:#666}.order-card.data-v-ef3c1c80,.refund-card.data-v-ef3c1c80{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-ef3c1c80,.refund-card .card-title.data-v-ef3c1c80{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-ef3c1c80,.refund-card .info-item.data-v-ef3c1c80{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.order-card .info-item.data-v-ef3c1c80:last-child,.refund-card .info-item.data-v-ef3c1c80:last-child{margin-bottom:0}.order-card .info-item .label.data-v-ef3c1c80,.refund-card .info-item .label.data-v-ef3c1c80{color:#666;font-size:14px}.order-card .info-item .value.data-v-ef3c1c80,.refund-card .info-item .value.data-v-ef3c1c80{color:#333;font-size:14px}.order-card .info-item .value.highlight.data-v-ef3c1c80,.refund-card .info-item .value.highlight.data-v-ef3c1c80{color:#ff6b00;font-weight:700;font-size:16px}.order-card .info-item .value.success.data-v-ef3c1c80,.refund-card .info-item .value.success.data-v-ef3c1c80{color:#07c160}.button-group.data-v-ef3c1c80{margin-top:40rpx;display:flex;justify-content:center;gap:20rpx}.button-group .primary-btn.data-v-ef3c1c80,.button-group .secondary-btn.data-v-ef3c1c80{width:50%;height:88rpx;line-height:88rpx;border-radius:44rpx;text-align:center;font-size:32rpx}.button-group .primary-btn.data-v-ef3c1c80{background:#07c160;color:#fff}.button-group .primary-btn.data-v-ef3c1c80:active{opacity:.8}.button-group .secondary-btn.data-v-ef3c1c80{background:#f0f0f0;color:#333}.button-group .secondary-btn.data-v-ef3c1c80:active{opacity:.8}.notice-card.data-v-ef3c1c80{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-ef3c1c80{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-ef3c1c80{text-align:left;color:#666;font-size:14px}.waiting.data-v-ef3c1c80{color:#fa0;font-weight:700}
.success-container.data-v-ef076c96{padding:20px;background-color:#f8f8f8;min-height:100vh}.status-card.data-v-ef076c96{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-ef076c96{width:60px;height:60px;margin:0 auto 16px}.status-card .status-icon.success.data-v-ef076c96{background-color:#07c160;border-radius:50%;position:relative}.status-card .status-icon.success.data-v-ef076c96: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-ef076c96{font-size:24px;font-weight:700;color:#07c160;margin-bottom:8px}.status-card .status-desc.data-v-ef076c96{font-size:14px;color:#666}.order-card.data-v-ef076c96,.refund-card.data-v-ef076c96{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-ef076c96,.refund-card .card-title.data-v-ef076c96{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-ef076c96,.refund-card .info-item.data-v-ef076c96{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.order-card .info-item.data-v-ef076c96:last-child,.refund-card .info-item.data-v-ef076c96:last-child{margin-bottom:0}.order-card .info-item .label.data-v-ef076c96,.refund-card .info-item .label.data-v-ef076c96{color:#666;font-size:14px}.order-card .info-item .value.data-v-ef076c96,.refund-card .info-item .value.data-v-ef076c96{color:#333;font-size:14px}.order-card .info-item .value.highlight.data-v-ef076c96,.refund-card .info-item .value.highlight.data-v-ef076c96{color:#ff6b00;font-weight:700;font-size:16px}.order-card .info-item .value.success.data-v-ef076c96,.refund-card .info-item .value.success.data-v-ef076c96{color:#07c160}.button-group.data-v-ef076c96{margin-top:40rpx;display:flex;justify-content:center;gap:20rpx}.button-group .primary-btn.data-v-ef076c96,.button-group .secondary-btn.data-v-ef076c96{width:50%;height:88rpx;line-height:88rpx;border-radius:44rpx;text-align:center;font-size:32rpx}.button-group .primary-btn.data-v-ef076c96{background:#07c160;color:#fff}.button-group .primary-btn.data-v-ef076c96:active{opacity:.8}.button-group .secondary-btn.data-v-ef076c96{background:#f0f0f0;color:#333}.button-group .secondary-btn.data-v-ef076c96:active{opacity:.8}.notice-card.data-v-ef076c96{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-ef076c96{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-ef076c96{text-align:left;color:#666;font-size:14px}.waiting.data-v-ef076c96{color:#fa0;font-weight:700}
+1 -1
View File
@@ -1 +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-333e92b6"]]);wx.createPage(i);
"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-e41af8d4"]]);wx.createPage(i);
+1 -1
View File
@@ -1 +1 @@
<view class="success-container data-v-333e92b6"><view class="status-card data-v-333e92b6"><view class="status-icon success data-v-333e92b6"></view><view class="status-text data-v-333e92b6">支付成功</view><view class="status-desc data-v-333e92b6">您的订单已支付成功</view></view><view class="order-card data-v-333e92b6"><view class="card-title data-v-333e92b6">订单信息</view><view class="info-item data-v-333e92b6"><text class="label data-v-333e92b6">订单号</text><text class="value data-v-333e92b6">{{a}}</text></view><view class="info-item data-v-333e92b6"><text class="label data-v-333e92b6">设备号</text><text class="value data-v-333e92b6">{{b}}</text></view><view class="info-item data-v-333e92b6"><text class="label data-v-333e92b6">支付金额</text><text class="value data-v-333e92b6">¥{{c}}</text></view><view class="info-item data-v-333e92b6"><text class="label data-v-333e92b6">支付时间</text><text class="value data-v-333e92b6">{{d}}</text></view></view><view class="device-status data-v-333e92b6"><view class="status-message data-v-333e92b6">{{e}}</view><view wx:if="{{f}}" class="loading-animation data-v-333e92b6"><view class="loading-circle data-v-333e92b6"></view></view></view><view class="button-group data-v-333e92b6"><button class="primary-btn data-v-333e92b6" bindtap="{{g}}">返回首页</button><button class="secondary-btn data-v-333e92b6" bindtap="{{h}}">查看订单</button></view></view>
<view class="success-container data-v-e41af8d4"><view class="status-card data-v-e41af8d4"><view class="status-icon success data-v-e41af8d4"></view><view class="status-text data-v-e41af8d4">支付成功</view><view class="status-desc data-v-e41af8d4">您的订单已支付成功</view></view><view class="order-card data-v-e41af8d4"><view class="card-title data-v-e41af8d4">订单信息</view><view class="info-item data-v-e41af8d4"><text class="label data-v-e41af8d4">订单号</text><text class="value data-v-e41af8d4">{{a}}</text></view><view class="info-item data-v-e41af8d4"><text class="label data-v-e41af8d4">设备号</text><text class="value data-v-e41af8d4">{{b}}</text></view><view class="info-item data-v-e41af8d4"><text class="label data-v-e41af8d4">支付金额</text><text class="value data-v-e41af8d4">¥{{c}}</text></view><view class="info-item data-v-e41af8d4"><text class="label data-v-e41af8d4">支付时间</text><text class="value data-v-e41af8d4">{{d}}</text></view></view><view class="device-status data-v-e41af8d4"><view class="status-message data-v-e41af8d4">{{e}}</view><view wx:if="{{f}}" class="loading-animation data-v-e41af8d4"><view class="loading-circle data-v-e41af8d4"></view></view></view><view class="button-group data-v-e41af8d4"><button class="primary-btn data-v-e41af8d4" bindtap="{{g}}">返回首页</button><button class="secondary-btn data-v-e41af8d4" bindtap="{{h}}">查看订单</button></view></view>
+1 -1
View File
@@ -1 +1 @@
.success-container.data-v-333e92b6{padding:20px;background-color:#f5f5f5;min-height:100vh}.status-card.data-v-333e92b6{background-color:#fff;border-radius:12px;padding:30px;text-align:center;margin-bottom:20px}.status-card .status-icon.data-v-333e92b6{width:60px;height:60px;margin:0 auto 16px;background-color:#07c160;border-radius:50%;position:relative}.status-card .status-icon.data-v-333e92b6: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-333e92b6{font-size:24px;font-weight:700;color:#07c160;margin-bottom:8px}.status-card .status-desc.data-v-333e92b6{font-size:14px;color:#666}.order-card.data-v-333e92b6{background-color:#fff;border-radius:12px;padding:20px;margin-bottom:20px}.order-card .card-title.data-v-333e92b6{font-size:16px;font-weight:700;margin-bottom:16px;color:#333}.order-card .info-item.data-v-333e92b6{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.order-card .info-item .label.data-v-333e92b6{color:#666;font-size:14px}.order-card .info-item .value.data-v-333e92b6{color:#333;font-size:14px}.device-status.data-v-333e92b6{background-color:#fff;border-radius:12px;padding:20px;margin-bottom:20px;text-align:center}.device-status .status-message.data-v-333e92b6{font-size:16px;color:#333;margin-bottom:12px}.device-status .loading-animation.data-v-333e92b6{display:flex;justify-content:center;align-items:center;height:40px}.device-status .loading-animation .loading-circle.data-v-333e92b6{width:30px;height:30px;border-radius:50%;border:3px solid #f0f0f0;border-top-color:#07c160;animation:spin-333e92b6 1s linear infinite}@keyframes spin-333e92b6{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.button-group.data-v-333e92b6{margin-top:30px;display:flex;flex-direction:column;gap:16px}.button-group .primary-btn.data-v-333e92b6{background-color:#07c160;color:#fff;border:none;border-radius:24px;padding:12px;font-size:16px}.button-group .primary-btn.data-v-333e92b6:active{opacity:.8}.button-group .secondary-btn.data-v-333e92b6{background-color:#fff;color:#07c160;border:1px solid #07c160;border-radius:24px;padding:12px;font-size:16px}.button-group .secondary-btn.data-v-333e92b6:active{background-color:#f5f5f5}
.success-container.data-v-e41af8d4{padding:20px;background-color:#f5f5f5;min-height:100vh}.status-card.data-v-e41af8d4{background-color:#fff;border-radius:12px;padding:30px;text-align:center;margin-bottom:20px}.status-card .status-icon.data-v-e41af8d4{width:60px;height:60px;margin:0 auto 16px;background-color:#07c160;border-radius:50%;position:relative}.status-card .status-icon.data-v-e41af8d4: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-e41af8d4{font-size:24px;font-weight:700;color:#07c160;margin-bottom:8px}.status-card .status-desc.data-v-e41af8d4{font-size:14px;color:#666}.order-card.data-v-e41af8d4{background-color:#fff;border-radius:12px;padding:20px;margin-bottom:20px}.order-card .card-title.data-v-e41af8d4{font-size:16px;font-weight:700;margin-bottom:16px;color:#333}.order-card .info-item.data-v-e41af8d4{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.order-card .info-item .label.data-v-e41af8d4{color:#666;font-size:14px}.order-card .info-item .value.data-v-e41af8d4{color:#333;font-size:14px}.device-status.data-v-e41af8d4{background-color:#fff;border-radius:12px;padding:20px;margin-bottom:20px;text-align:center}.device-status .status-message.data-v-e41af8d4{font-size:16px;color:#333;margin-bottom:12px}.device-status .loading-animation.data-v-e41af8d4{display:flex;justify-content:center;align-items:center;height:40px}.device-status .loading-animation .loading-circle.data-v-e41af8d4{width:30px;height:30px;border-radius:50%;border:3px solid #f0f0f0;border-top-color:#07c160;animation:spin-e41af8d4 1s linear infinite}@keyframes spin-e41af8d4{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.button-group.data-v-e41af8d4{margin-top:30px;display:flex;gap:16px}.button-group .primary-btn.data-v-e41af8d4{background-color:#07c160;color:#fff;border:none;border-radius:24px;padding:12px;font-size:16px}.button-group .primary-btn.data-v-e41af8d4:active{opacity:.8}.button-group .secondary-btn.data-v-e41af8d4{background-color:#fff;color:#07c160;border:1px solid #07c160;border-radius:24px;padding:12px;font-size:16px}.button-group .secondary-btn.data-v-e41af8d4:active{background-color:#f5f5f5}
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
<view class="return-container data-v-30d62b50"><view class="order-card data-v-30d62b50"><view class="order-header data-v-30d62b50"><text class="title data-v-30d62b50">{{a}}</text><text class="order-no data-v-30d62b50">订单号:{{b}}</text></view><view class="device-info data-v-30d62b50"><view class="device-left data-v-30d62b50"><view class="device-name data-v-30d62b50">共享风扇</view><view class="device-id data-v-30d62b50">设备号:{{c}}</view></view><view class="device-right data-v-30d62b50"><view wx:if="{{d}}" class="payment-badge wx-score data-v-30d62b50"><image src="{{e}}" mode="aspectFit" class="badge-icon data-v-30d62b50"></image><view class="badge-text data-v-30d62b50"><text class="data-v-30d62b50">微信支付分</text><text class="divider data-v-30d62b50">|</text><text class="highlight data-v-30d62b50">免押租借</text></view></view><view wx:else class="payment-badge deposit data-v-30d62b50"><text class="badge-text data-v-30d62b50">押金租借</text></view></view></view><view class="time-info data-v-30d62b50"><view class="time-item data-v-30d62b50"><text class="label data-v-30d62b50">开始时间</text><text class="value data-v-30d62b50">{{f}}</text></view><view class="time-item data-v-30d62b50"><text class="label data-v-30d62b50">已使用时长</text><text class="value highlight data-v-30d62b50">{{g}}</text></view><view class="time-item data-v-30d62b50"><text class="label data-v-30d62b50">当前费用</text><text class="value data-v-30d62b50">¥{{h}}</text></view></view><view wx:if="{{false}}" class="debug-info data-v-30d62b50"><view class="debug-title data-v-30d62b50">调试信息</view><view class="debug-item data-v-30d62b50">原始开始时间: {{i}}</view><view class="debug-item data-v-30d62b50">处理后开始时间: {{j}}</view><view class="debug-item data-v-30d62b50">订单状态: {{k}}</view></view></view><view class="notice-card data-v-30d62b50"><view class="notice-title data-v-30d62b50">归还说明</view><view class="notice-list data-v-30d62b50"><view class="notice-item data-v-30d62b50"><view class="dot data-v-30d62b50"></view><text class="data-v-30d62b50">请确保设备完好无损</text></view><view class="notice-item data-v-30d62b50"><view class="dot data-v-30d62b50"></view><text class="data-v-30d62b50">将风扇插入原位置或空闲插口</text></view><view class="notice-item data-v-30d62b50"><view class="dot data-v-30d62b50"></view><text class="data-v-30d62b50">系统将自动检测归还并处理退款</text></view><view class="notice-item data-v-30d62b50"><view class="dot data-v-30d62b50"></view><text class="data-v-30d62b50">归还成功后将自动跳转到成功页面</text></view></view></view><view class="bottom-bar data-v-30d62b50"><view class="action-item secondary data-v-30d62b50" bindtap="{{l}}">刷新状态</view><view class="action-item primary data-v-30d62b50" bindtap="{{m}}">返回首页</view></view></view>
<view class="return-container data-v-c1cfdb3c"><view class="order-card data-v-c1cfdb3c"><view class="order-header data-v-c1cfdb3c"><text class="title data-v-c1cfdb3c">{{a}}</text><text class="order-no data-v-c1cfdb3c">订单号:{{b}}</text></view><view class="device-info data-v-c1cfdb3c"><view class="device-left data-v-c1cfdb3c"><view class="device-name data-v-c1cfdb3c">共享风扇</view><view class="device-id data-v-c1cfdb3c">设备号:{{c}}</view></view><view class="device-right data-v-c1cfdb3c"><view wx:if="{{d}}" class="payment-badge wx-score data-v-c1cfdb3c"><image src="{{e}}" mode="aspectFit" class="badge-icon data-v-c1cfdb3c"></image><view class="badge-text data-v-c1cfdb3c"><text class="data-v-c1cfdb3c">微信支付分</text><text class="divider data-v-c1cfdb3c">|</text><text class="highlight data-v-c1cfdb3c">免押租借</text></view></view><view wx:elif="{{f}}" class="payment-badge member data-v-c1cfdb3c"><text class="badge-text data-v-c1cfdb3c">会员订单</text></view><view wx:elif="{{g}}" class="payment-badge deposit data-v-c1cfdb3c"><text class="badge-text data-v-c1cfdb3c">押金租借</text></view></view></view><view class="time-info data-v-c1cfdb3c"><view class="time-item data-v-c1cfdb3c"><text class="label data-v-c1cfdb3c">开始时间</text><text class="value data-v-c1cfdb3c">{{h}}</text></view><view wx:if="{{i}}" class="time-item data-v-c1cfdb3c"><text class="label data-v-c1cfdb3c">结束时间</text><text class="value data-v-c1cfdb3c">{{j}}</text></view><view wx:if="{{k}}" class="time-item data-v-c1cfdb3c"><text class="label data-v-c1cfdb3c">已使用时长</text><text class="value highlight data-v-c1cfdb3c">{{l}}</text></view><view wx:if="{{m}}" class="time-item data-v-c1cfdb3c"><text class="label data-v-c1cfdb3c">当前费用</text><text class="value data-v-c1cfdb3c">¥{{n}}</text></view><view wx:if="{{o}}" class="time-item data-v-c1cfdb3c"><text class="label data-v-c1cfdb3c">联系电话</text><text class="value data-v-c1cfdb3c">{{p}}</text></view></view><view wx:if="{{false}}" class="debug-info data-v-c1cfdb3c"><view class="debug-title data-v-c1cfdb3c">调试信息</view><view class="debug-item data-v-c1cfdb3c">原始开始时间: {{q}}</view><view class="debug-item data-v-c1cfdb3c">处理后开始时间: {{r}}</view><view class="debug-item data-v-c1cfdb3c">订单状态: {{s}}</view></view></view><view wx:if="{{t}}" class="notice-card data-v-c1cfdb3c"><view class="notice-title data-v-c1cfdb3c">费用信息</view><view class="notice-list data-v-c1cfdb3c"><view wx:if="{{v}}" class="notice-item data-v-c1cfdb3c"><view class="dot data-v-c1cfdb3c"></view><text class="data-v-c1cfdb3c">押金:¥{{w}}</text></view><view wx:if="{{x}}" class="notice-item data-v-c1cfdb3c"><view class="dot data-v-c1cfdb3c"></view><text class="data-v-c1cfdb3c">套餐:¥{{y}}元 / {{z}}</text></view><view class="notice-item data-v-c1cfdb3c"><view class="dot data-v-c1cfdb3c"></view><text class="data-v-c1cfdb3c">合计:¥{{A}}</text></view></view></view><view wx:if="{{B}}" class="notice-card data-v-c1cfdb3c"><view class="notice-title data-v-c1cfdb3c">归还说明</view><view class="notice-list data-v-c1cfdb3c"><view class="notice-item data-v-c1cfdb3c"><view class="dot data-v-c1cfdb3c"></view><text class="data-v-c1cfdb3c">请确保设备完好无损</text></view><view class="notice-item data-v-c1cfdb3c"><view class="dot data-v-c1cfdb3c"></view><text class="data-v-c1cfdb3c">将风扇插入原位置或空闲插口</text></view><view class="notice-item data-v-c1cfdb3c"><view class="dot data-v-c1cfdb3c"></view><text class="data-v-c1cfdb3c">系统将自动检测归还并处理退款</text></view><view class="notice-item data-v-c1cfdb3c"><view class="dot data-v-c1cfdb3c"></view><text class="data-v-c1cfdb3c">归还成功后将自动跳转到成功页面</text></view></view></view><view class="bottom-bar data-v-c1cfdb3c"><view wx:if="{{C}}" class="action-item secondary data-v-c1cfdb3c" bindtap="{{D}}"> 刷新状态</view><view wx:if="{{E}}" class="action-item primary data-v-c1cfdb3c" bindtap="{{F}}">返回首页</view><view wx:if="{{G}}" class="action-item secondary data-v-c1cfdb3c" bindtap="{{H}}">返回首页</view><view wx:if="{{I}}" class="action-item primary data-v-c1cfdb3c" bindtap="{{J}}">查看详情</view><view wx:if="{{K}}" class="action-item secondary data-v-c1cfdb3c" bindtap="{{L}}">取消订单</view><view wx:if="{{M}}" class="action-item primary data-v-c1cfdb3c" bindtap="{{N}}">立即支付</view></view></view>
+1 -1
View File
@@ -1 +1 @@
.return-container.data-v-30d62b50{min-height:100vh;background:#f7f8fa;padding:30rpx 30rpx 180rpx;box-sizing:border-box}.return-container .order-card.data-v-30d62b50{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.return-container .order-card .order-header.data-v-30d62b50{display:flex;justify-content:space-between;align-items:center;margin-bottom:20rpx;padding-bottom:16rpx;border-bottom:1rpx solid #f0f0f0}.return-container .order-card .order-header .title.data-v-30d62b50{font-size:30rpx;font-weight:700;color:#333}.return-container .order-card .order-header .order-no.data-v-30d62b50{font-size:24rpx;color:#999}.return-container .order-card .device-info.data-v-30d62b50{margin-bottom:24rpx;display:flex;justify-content:space-between;align-items:flex-start}.return-container .order-card .device-info .device-left.data-v-30d62b50{flex:1;margin-right:20rpx}.return-container .order-card .device-info .device-left .device-name.data-v-30d62b50{font-size:32rpx;font-weight:500;color:#333;margin-bottom:8rpx}.return-container .order-card .device-info .device-left .device-id.data-v-30d62b50{font-size:26rpx;color:#999;margin-bottom:0}.return-container .order-card .device-info .device-right .payment-badge.data-v-30d62b50{display:inline-flex;align-items:center;padding:6rpx 12rpx;border-radius:8rpx;white-space:nowrap}.return-container .order-card .device-info .device-right .payment-badge.wx-score.data-v-30d62b50{background:rgba(7,193,96,.08)}.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-icon.data-v-30d62b50{width:32rpx;height:26rpx;margin-right:8rpx}.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-text.data-v-30d62b50{font-size:22rpx;color:#07c160;display:flex;align-items:center}.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-text .divider.data-v-30d62b50{margin:0 6rpx}.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-text .highlight.data-v-30d62b50{font-weight:500}.return-container .order-card .device-info .device-right .payment-badge.deposit.data-v-30d62b50{background:#f5f5f5}.return-container .order-card .device-info .device-right .payment-badge.deposit .badge-text.data-v-30d62b50{font-size:22rpx;color:#666;font-weight:500}.return-container .order-card .time-info.data-v-30d62b50{background:#f9f9f9;border-radius:16rpx;padding:20rpx}.return-container .order-card .time-info .time-item.data-v-30d62b50{display:flex;justify-content:space-between;align-items:center;margin-bottom:16rpx}.return-container .order-card .time-info .time-item.data-v-30d62b50:last-child{margin-bottom:0}.return-container .order-card .time-info .time-item .label.data-v-30d62b50{font-size:26rpx;color:#666}.return-container .order-card .time-info .time-item .value.data-v-30d62b50{font-size:26rpx;color:#333}.return-container .order-card .time-info .time-item .value.highlight.data-v-30d62b50{color:#ff6b6b;font-weight:700}.return-container .notice-card.data-v-30d62b50{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.return-container .notice-card .notice-title.data-v-30d62b50{font-size:30rpx;font-weight:700;color:#333;margin-bottom:20rpx}.return-container .notice-card .notice-list .notice-item.data-v-30d62b50{display:flex;align-items:flex-start;margin-bottom:16rpx}.return-container .notice-card .notice-list .notice-item.data-v-30d62b50:last-child{margin-bottom:0}.return-container .notice-card .notice-list .notice-item .dot.data-v-30d62b50{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-30d62b50{font-size:26rpx;color:#666;line-height:1.5}.return-container .bottom-bar.data-v-30d62b50{position:fixed;left:0;right:0;bottom:0;padding:20rpx 30rpx;padding-bottom:calc(20rpx + env(safe-area-inset-bottom));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 .action-item.data-v-30d62b50{height:88rpx;display:flex;align-items:center;justify-content:center;font-size:30rpx;border-radius:44rpx;flex:1}.return-container .bottom-bar .action-item.primary.data-v-30d62b50{background:#07c160;color:#fff}.return-container .bottom-bar .action-item.primary.data-v-30d62b50:active{opacity:.8}.return-container .bottom-bar .action-item.secondary.data-v-30d62b50{background:#f5f5f5;color:#333;border:1rpx solid #e0e0e0}.return-container .bottom-bar .action-item.secondary.data-v-30d62b50:active{opacity:.8}
.return-container.data-v-c1cfdb3c{min-height:100vh;background:#f7f8fa;padding:30rpx 30rpx 180rpx;box-sizing:border-box}.return-container .order-card.data-v-c1cfdb3c{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.return-container .order-card .order-header.data-v-c1cfdb3c{display:flex;justify-content:space-between;align-items:center;margin-bottom:20rpx;padding-bottom:16rpx;border-bottom:1rpx solid #f0f0f0}.return-container .order-card .order-header .title.data-v-c1cfdb3c{font-size:30rpx;font-weight:700;color:#333}.return-container .order-card .order-header .order-no.data-v-c1cfdb3c{font-size:24rpx;color:#999}.return-container .order-card .device-info.data-v-c1cfdb3c{margin-bottom:24rpx;display:flex;justify-content:space-between;align-items:flex-start}.return-container .order-card .device-info .device-left.data-v-c1cfdb3c{flex:1;margin-right:20rpx}.return-container .order-card .device-info .device-left .device-name.data-v-c1cfdb3c{font-size:32rpx;font-weight:500;color:#333;margin-bottom:8rpx}.return-container .order-card .device-info .device-left .device-id.data-v-c1cfdb3c{font-size:26rpx;color:#999;margin-bottom:0}.return-container .order-card .device-info .device-right .payment-badge.data-v-c1cfdb3c{display:inline-flex;align-items:center;padding:6rpx 12rpx;border-radius:8rpx;white-space:nowrap}.return-container .order-card .device-info .device-right .payment-badge.wx-score.data-v-c1cfdb3c{background:rgba(7,193,96,.08)}.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-icon.data-v-c1cfdb3c{width:32rpx;height:26rpx;margin-right:8rpx}.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-text.data-v-c1cfdb3c{font-size:22rpx;color:#07c160;display:flex;align-items:center}.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-text .divider.data-v-c1cfdb3c{margin:0 6rpx}.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-text .highlight.data-v-c1cfdb3c{font-weight:500}.return-container .order-card .device-info .device-right .payment-badge.member.data-v-c1cfdb3c{background:rgba(25,118,210,.08)}.return-container .order-card .device-info .device-right .payment-badge.member .badge-text.data-v-c1cfdb3c{font-size:22rpx;color:#1976d2;font-weight:500}.return-container .order-card .device-info .device-right .payment-badge.deposit.data-v-c1cfdb3c{background:#f5f5f5}.return-container .order-card .device-info .device-right .payment-badge.deposit .badge-text.data-v-c1cfdb3c{font-size:22rpx;color:#666;font-weight:500}.return-container .order-card .time-info.data-v-c1cfdb3c{background:#f9f9f9;border-radius:16rpx;padding:20rpx}.return-container .order-card .time-info .time-item.data-v-c1cfdb3c{display:flex;justify-content:space-between;align-items:center;margin-bottom:16rpx}.return-container .order-card .time-info .time-item.data-v-c1cfdb3c:last-child{margin-bottom:0}.return-container .order-card .time-info .time-item .label.data-v-c1cfdb3c{font-size:26rpx;color:#666}.return-container .order-card .time-info .time-item .value.data-v-c1cfdb3c{font-size:26rpx;color:#333}.return-container .order-card .time-info .time-item .value.highlight.data-v-c1cfdb3c{color:#ff6b6b;font-weight:700}.return-container .notice-card.data-v-c1cfdb3c{background:#fff;border-radius:20rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.return-container .notice-card .notice-title.data-v-c1cfdb3c{font-size:30rpx;font-weight:700;color:#333;margin-bottom:20rpx}.return-container .notice-card .notice-list .notice-item.data-v-c1cfdb3c{display:flex;align-items:flex-start;margin-bottom:16rpx}.return-container .notice-card .notice-list .notice-item.data-v-c1cfdb3c:last-child{margin-bottom:0}.return-container .notice-card .notice-list .notice-item .dot.data-v-c1cfdb3c{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-c1cfdb3c{font-size:26rpx;color:#666;line-height:1.5}.return-container .bottom-bar.data-v-c1cfdb3c{position:fixed;left:0;right:0;bottom:0;padding:20rpx 30rpx;padding-bottom:calc(20rpx + env(safe-area-inset-bottom));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 .action-item.data-v-c1cfdb3c{height:88rpx;display:flex;align-items:center;justify-content:center;font-size:30rpx;border-radius:44rpx;flex:1}.return-container .bottom-bar .action-item.primary.data-v-c1cfdb3c{background:#07c160;color:#fff}.return-container .bottom-bar .action-item.primary.data-v-c1cfdb3c:active{opacity:.8}.return-container .bottom-bar .action-item.secondary.data-v-c1cfdb3c{background:#f5f5f5;color:#333;border:1rpx solid #e0e0e0}.return-container .bottom-bar .action-item.secondary.data-v-c1cfdb3c:active{opacity:.8}
+1 -1
View File
@@ -1 +1 @@
"use strict";const e=require("../common/vendor.js"),r=require("../config/user.js");const t=new class{constructor(){this.activeOrders=new Map,this.timer=null,this.checkInterval=1e4,this.isRunning=!1,this.currentPage=null}addOrder(e,r="return"){e&&e.orderId?(console.log(`添加订单到监控队列: ${e.orderId}, 页面: ${r}`),this.activeOrders.set(e.orderId,{...e,pageName:r}),this.isRunning||this.start()):console.error("添加订单监控失败:无效的订单数据")}removeOrder(e){if(e){if(e.orderId&&this.activeOrders.has(e.orderId))console.log("从监控队列移除订单:",e.orderId),this.activeOrders.delete(e.orderId);else if(e.pageName){console.log("从监控队列移除页面相关订单:",e.pageName);for(const[r,t]of this.activeOrders.entries())t.pageName===e.pageName&&this.activeOrders.delete(r)}0===this.activeOrders.size&&this.stop()}}setActivePage(e){this.currentPage=e,console.log("设置当前活跃页面:",e)}start(){this.isRunning||(console.log("启动订单监控服务"),this.isRunning=!0,this.checkOrders(),this.timer=setInterval((()=>{this.checkOrders()}),this.checkInterval))}stop(){this.isRunning&&(console.log("停止订单监控服务"),this.isRunning=!1,this.timer&&(clearInterval(this.timer),this.timer=null))}async checkOrders(){if(0!==this.activeOrders.size){console.log(`检查 ${this.activeOrders.size} 个活跃订单状态, 当前页面: ${this.currentPage}`);for(const[r,t]of this.activeOrders.entries())try{t.pageName&&"return"!==t.pageName||"return"!==this.currentPage&&null!==this.currentPage||await this.checkOrderStatus(r)}catch(e){}}}async checkOrderStatus(t){try{console.log(`检查订单 ${t} 的状态`);const s=await r.queryById(t);if(200===s.code&&s.data){const r=s.data,i=this.activeOrders.get(t),o=i?i.pageName:null;if(this.activeOrders.set(t,{...r,pageName:o}),"used_done"===r.orderStatus||"used_down"===r.orderStatus){console.log(`订单 ${t} 已完成!`),e.index.$emit("orderCompleted",r),e.index.showToast({title:"风扇归还成功",icon:"success",duration:2e3});const s=e.index.createInnerAudioContext();s.src="/static/audio/return_success.mp3",s.play(),this.removeOrder({orderId:t}),setTimeout((()=>{e.index.showModal({title:"归还成功",content:"风扇已归还成功,剩余押金将退还到您的账户",confirmText:"查看详情",success:r=>{r.confirm&&e.index.redirectTo({url:`/pages/order/return-success?orderId=${t}`})}})}),500)}}}catch(s){console.error(`检查订单 ${t} 状态出错:`,s)}}};e.index.onAppRoute((e=>{const r=e.path||"",s=r.split("/"),i=s[s.length-1];t.setActivePage(i||null),console.log("页面切换:",r,"当前活跃页面:",i)}));(()=>{const r=e.index.getStorageSync("activeOrderId");if(r){const e={orderId:r};t.addOrder(e,"return")}})(),exports.orderMonitor=t;
"use strict";const e=require("../common/vendor.js"),t=require("../config/user.js");const r=new class{constructor(){this.activeOrders=new Map,this.timer=null,this.checkInterval=1e4,this.isRunning=!1,this.currentPage=null}addOrder(e,t="return"){e&&e.orderId?(console.log(`添加订单到监控队列: ${e.orderId}, 页面: ${t}`),this.activeOrders.set(e.orderId,{...e,pageName:t}),this.isRunning||this.start()):console.error("添加订单监控失败:无效的订单数据")}removeOrder(e){if(e){if(e.orderId&&this.activeOrders.has(e.orderId))console.log("从监控队列移除订单:",e.orderId),this.activeOrders.delete(e.orderId);else if(e.pageName){console.log("从监控队列移除页面相关订单:",e.pageName);for(const[t,r]of this.activeOrders.entries())r.pageName===e.pageName&&this.activeOrders.delete(t)}0===this.activeOrders.size&&this.stop()}}setActivePage(e){this.currentPage=e,console.log("设置当前活跃页面:",e)}start(){this.isRunning||(console.log("启动订单监控服务"),this.isRunning=!0,this.checkOrders(),this.timer=setInterval((()=>{this.checkOrders()}),this.checkInterval))}stop(){this.isRunning&&(console.log("停止订单监控服务"),this.isRunning=!1,this.timer&&(clearInterval(this.timer),this.timer=null))}async checkOrders(){if(0!==this.activeOrders.size){console.log(`检查 ${this.activeOrders.size} 个活跃订单状态, 当前页面: ${this.currentPage}`);for(const[t,r]of this.activeOrders.entries())try{r.pageName&&"return"!==r.pageName||"return"!==this.currentPage&&null!==this.currentPage||await this.checkOrderStatus(t)}catch(e){}}}async checkOrderStatus(r){try{const s=new Date;console.log(`检查订单 ${r} 的状态`);const i=await t.queryById(r);if(200===i.code&&i.data){const t=i.data,o=this.activeOrders.get(r),n=o?o.pageName:null;if(this.activeOrders.set(r,{...t,pageName:n}),"used_done"===t.orderStatus||"used_down"===t.orderStatus){console.log(`订单 ${r} 已完成!`);let i=!0;if(t.endTime){const e=new Date(t.endTime),o=Math.abs(s-e)/6e4;o>3&&(console.log(`订单 ${r} 完成时间与当前时间相差${o.toFixed(2)}分钟,超过3分钟,不进行提醒`),i=!1)}i&&(e.index.$emit("orderCompleted",t),e.index.showToast({title:"风扇归还成功",icon:"success",duration:2e3}),setTimeout((()=>{e.index.showModal({title:"归还成功",content:"风扇已归还成功,剩余押金将退还到您的账户",confirmText:"查看详情",success:t=>{t.confirm&&e.index.redirectTo({url:`/pages/order/return-success?orderId=${r}`})}})}),500)),this.removeOrder({orderId:r})}}}catch(s){console.error(`检查订单 ${r} 状态出错:`,s)}}};e.index.onAppRoute((e=>{const t=e.path||"",s=t.split("/"),i=s[s.length-1];r.setActivePage(i||null),console.log("页面切换:",t,"当前活跃页面:",i)}));(()=>{const t=e.index.getStorageSync("activeOrderId");if(t){const e={orderId:t};r.addOrder(e,"return")}})(),exports.orderMonitor=r;
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"app.js","sources":["App.vue","main.js"],"sourcesContent":["<script>\r\n\timport {\r\n\t\twxLogin,\r\n\t\tgetUserInfo\r\n\t} from './util/index'\r\n\r\n\r\n\texport default {\r\n\t\tonLaunch: function() {\r\n\t\t\tconsole.log('App Launch')\r\n\t\t\t\r\n\t\t},\r\n\t\tonShow: async function() {\r\n\t\t\tconsole.log('App Show')\r\n\t\t\tawait this.autoLogin()\r\n\r\n\t\t},\r\n\t\tonHide: function() {\r\n\t\t\tconsole.log('App Hide')\r\n\t\t},\r\n\r\n\r\n\r\n\t\tmethods: {\r\n\t\t\tasync autoLogin() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst loginResult = await wxLogin()\r\n\t\t\t\t\t// await getUserInfo()\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tconsole.error('自动登录失败:', error)\r\n\t\t\t\t\t// 登录失败的处理可以在 wxLogin 中统一处理\r\n\t\t\t\t\t// 这里可以添加特殊的错误处理逻辑\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n\t@import \"uview-ui/index.scss\"\r\n\r\n\t/*每个页面公共css */\r\n</style>","import App from './App'\r\nimport { orderMonitor } from './utils/orderMonitor.js'\r\n\r\nimport uView from \"uview-ui\";\r\n\r\n\r\n// #ifndef VUE3\r\nimport Vue from 'vue'\r\nimport './uni.promisify.adaptor'\r\nVue.config.productionTip = false\r\n\r\n// 注册全局订单监控服务\r\nVue.prototype.$orderMonitor = orderMonitor\r\n\r\nApp.mpType = 'app'\r\nVue.use(uView)\r\nconst app = new Vue({\r\n ...App\r\n})\r\napp.$mount()\r\n// #endif\r\n\r\n// #ifdef VUE3\r\nimport { createSSRApp } from 'vue'\r\nexport function createApp() {\r\n const app = createSSRApp(App)\r\n \r\n // 注册全局订单监控服务到VUE3\r\n app.config.globalProperties.$orderMonitor = orderMonitor\r\n \r\n return {\r\n app\r\n }\r\n}\r\n// #endif"],"names":["uni","wxLogin","createSSRApp","App","orderMonitor"],"mappings":";;;;;;;;;;;;;;;;;;;;AAOC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,iBAAY,YAAY;AAAA,EAExB;AAAA,EACD,QAAQ,iBAAiB;AACxBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AACtB,UAAM,KAAK,UAAU;AAAA,EAErB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACtB;AAAA,EAID,SAAS;AAAA,IACR,MAAM,YAAY;AACjB,UAAI;AACH,cAAM,cAAc,MAAMC,mBAAQ;AAAA,MAEjC,SAAO,OAAO;AACfD,sBAAAA,sCAAc,WAAW,KAAK;AAAA,MAG/B;AAAA,IACD;AAAA,EACD;AACD;ACXM,SAAS,YAAY;AAC1B,QAAM,MAAME,cAAY,aAACC,SAAG;AAG5B,MAAI,OAAO,iBAAiB,gBAAgBC,mBAAY;AAExD,SAAO;AAAA,IACL;AAAA,EACD;AACH;;;"}
{"version":3,"file":"app.js","sources":["App.vue","main.js"],"sourcesContent":["<script>\r\n\timport {\r\n\t\twxLogin,\r\n\t\tgetUserInfo\r\n\t} from './util/index'\r\n\r\n\r\n\texport default {\r\n\t\tonLaunch: function() {\r\n\t\t\tconsole.log('App Launch')\r\n\r\n\t\t},\r\n\t\tonShow: async function() {\r\n\t\t\t// if (this.getUserInfoData()) {\r\n\r\n\t\t\t// } else {\r\n\t\t\t// \tconsole.log('App Show')\r\n\t\t\t\tawait this.autoLogin()\r\n\t\t\t// }\r\n\t\t},\r\n\t\tonHide: function() {\r\n\t\t\tconsole.log('App Hide')\r\n\t\t},\r\n\t\tmethods: {\r\n\t\t\tasync autoLogin() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst loginResult = await wxLogin()\r\n\t\t\t\t\t// await getUserInfo()\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tconsole.error('自动登录失败:', error)\r\n\t\t\t\t\t// 登录失败的处理可以在 wxLogin 中统一处理\r\n\t\t\t\t\t// 这里可以添加特殊的错误处理逻辑\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tasync getUserInfoData() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tawait getUserInfo()\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tconsole.error('获取用户信息失败:', error)\r\n\t\t\t\t\t// 获取用户信息失败的处理逻辑\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n\t@import \"uview-ui/index.scss\"\r\n\r\n\t/*每个页面公共css */\r\n</style>","import App from './App'\r\nimport { orderMonitor } from './utils/orderMonitor.js'\r\n\r\nimport uView from \"uview-ui\";\r\n\r\n\r\n// #ifndef VUE3\r\nimport Vue from 'vue'\r\nimport './uni.promisify.adaptor'\r\nVue.config.productionTip = false\r\n\r\n// 注册全局订单监控服务\r\nVue.prototype.$orderMonitor = orderMonitor\r\n\r\nApp.mpType = 'app'\r\nVue.use(uView)\r\nconst app = new Vue({\r\n ...App\r\n})\r\napp.$mount()\r\n// #endif\r\n\r\n// #ifdef VUE3\r\nimport { createSSRApp } from 'vue'\r\nexport function createApp() {\r\n const app = createSSRApp(App)\r\n \r\n // 注册全局订单监控服务到VUE3\r\n app.config.globalProperties.$orderMonitor = orderMonitor\r\n \r\n return {\r\n app\r\n }\r\n}\r\n// #endif"],"names":["uni","wxLogin","getUserInfo","createSSRApp","App","orderMonitor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAOC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,iBAAY,YAAY;AAAA,EAExB;AAAA,EACD,QAAQ,iBAAiB;AAKvB,UAAM,KAAK,UAAU;AAAA,EAEtB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACtB;AAAA,EACD,SAAS;AAAA,IACR,MAAM,YAAY;AACjB,UAAI;AACH,cAAM,cAAc,MAAMC,mBAAQ;AAAA,MAEjC,SAAO,OAAO;AACfD,sBAAAA,sCAAc,WAAW,KAAK;AAAA,MAG/B;AAAA,IACA;AAAA,IACD,MAAM,kBAAkB;AACvB,UAAI;AACH,cAAME,uBAAY;AAAA,MACjB,SAAO,OAAO;AACfF,sBAAAA,MAAA,MAAA,SAAA,iBAAc,aAAa,KAAK;AAAA,MAEjC;AAAA,IACD;AAAA,EACD;AACD;ACnBM,SAAS,YAAY;AAC1B,QAAM,MAAMG,cAAY,aAACC,SAAG;AAG5B,MAAI,OAAO,iBAAiB,gBAAgBC,mBAAY;AAExD,SAAO;AAAA,IACL;AAAA,EACD;AACH;;;"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"http.js","sources":["config/http.js"],"sourcesContent":["import {\r\n\tURL,\r\n\tappid\r\n} from './url'\r\n\r\nconst request = (option) => {\r\n\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t// 默认不显示加载中提示\r\n\t\tif (!option.hideLoading) {\r\n\t\t\tuni.showLoading({\r\n\t\t\t\ttitle: option.loadingText || '加载中...',\r\n\t\t\t\tmask: true\r\n\t\t\t})\r\n\t\t}\r\n\t\t\r\n\t\tuni.request({\r\n\t\t\turl: URL + option.url,\r\n\t\t\tmethod: option.method,\r\n\t\t\tdata: option.data,\r\n\t\t\theader: {\r\n\t\t\t\t\"Content-Type\": \"application/x-www-form-urlencoded\",\r\n\t\t\t\t\t...option.headers,\r\n\t\t\t\t'appid': appid,\r\n\t\t\t\t'Authorization': \"Bearer \" + uni.getStorageSync('token'),\r\n\t\t\t\t'Clientid': uni.getStorageSync('client_id')\r\n\t\t\t},\r\n\t\t\tsuccess(res) {\r\n\r\n\t\t\t\t\r\n\t\t\t\t// 检查响应状态码\r\n\t\t\t\tif (res.statusCode !== 200) {\r\n\t\t\t\t\tconsole.error(`HTTP状态码错误: ${res.statusCode}`, res.data)\r\n\t\t\t\t\t\r\n\t\t\t\t\t// 为了适应某些服务器的异常响应,我们仍然返回数据\r\n\t\t\t\t\tif (res.data) {\r\n\t\t\t\t\t\tresolve(res.data)\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\treject({msg: `请求失败,状态码:${res.statusCode}`})\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// 检查业务状态码\r\n\t\t\t\tif (res.data && res.data.code !== 200) {\r\n\t\t\t\t\tconsole.warn(`业务状态码错误: ${res.data.code}`, res.data)\r\n\t\t\t\t\t\r\n\t\t\t\t\t// 判断是否需要忽略数据为空的错误\r\n\t\t\t\t\tif (option.ignoreEmptyError && \r\n\t\t\t\t\t\t(res.data.code === 500 && res.data.msg && \r\n\t\t\t\t\t\t(res.data.msg.includes('未找到') || res.data.msg.includes('不存在')))) {\r\n\t\t\t\t\t\t// 对于指定需要忽略的错误,返回一个标准的\"成功但数据为空\"的响应\r\n\t\t\t\t\t\tresolve({\r\n\t\t\t\t\t\t\tcode: 200,\r\n\t\t\t\t\t\t\tmsg: \"操作成功\",\r\n\t\t\t\t\t\t\tdata: []\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\t// 仍然返回数据,由业务逻辑处理\r\n\t\t\t\t\tresolve(res.data)\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tresolve(res.data)\r\n\t\t\t},\r\n\t\t\tfail(err) {\r\n\t\t\t\t// 网络请求本身失败\r\n\t\t\t\tconsole.error(`请求失败: ${option.url}`, err)\r\n\t\t\t\treject(err)\r\n\t\t\t},\r\n\t\t\tcomplete() {\r\n\t\t\t\t// 隐藏加载提示\r\n\t\t\t\tif (!option.hideLoading) {\r\n\t\t\t\t\tuni.hideLoading()\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t})\r\n}\r\n\r\n\r\nexport default request"],"names":["uni","URL","appid"],"mappings":";;;AAKK,MAAC,UAAU,CAAC,WAAW;AAC3B,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAGvC,QAAI,CAAC,OAAO,aAAa;AACxBA,oBAAAA,MAAI,YAAY;AAAA,QACf,OAAO,OAAO,eAAe;AAAA,QAC7B,MAAM;AAAA,MACV,CAAI;AAAA,IACD;AAEDA,kBAAAA,MAAI,QAAQ;AAAA,MACX,KAAKC,WAAAA,MAAM,OAAO;AAAA,MAClB,QAAQ,OAAO;AAAA,MACf,MAAM,OAAO;AAAA,MACb,QAAQ;AAAA,QACP,gBAAgB;AAAA,QACf,GAAG,OAAO;AAAA,QACX,SAASC,WAAK;AAAA,QACd,iBAAiB,YAAYF,oBAAI,eAAe,OAAO;AAAA,QACvD,YAAYA,cAAAA,MAAI,eAAe,WAAW;AAAA,MAC1C;AAAA,MACD,QAAQ,KAAK;AAIZ,YAAI,IAAI,eAAe,KAAK;AAC3BA,wBAAAA,6CAAc,cAAc,IAAI,UAAU,IAAI,IAAI,IAAI;AAGtD,cAAI,IAAI,MAAM;AACb,oBAAQ,IAAI,IAAI;AAChB;AAAA,UACA;AAED,iBAAO,EAAC,KAAK,YAAY,IAAI,UAAU,GAAE,CAAC;AAC1C;AAAA,QACA;AAGD,YAAI,IAAI,QAAQ,IAAI,KAAK,SAAS,KAAK;AACtCA,wBAAAA,MAAa,MAAA,QAAA,wBAAA,YAAY,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI;AAGlD,cAAI,OAAO,qBACT,IAAI,KAAK,SAAS,OAAO,IAAI,KAAK,QAClC,IAAI,KAAK,IAAI,SAAS,KAAK,KAAK,IAAI,KAAK,IAAI,SAAS,KAAK,KAAK;AAEjE,oBAAQ;AAAA,cACP,MAAM;AAAA,cACN,KAAK;AAAA,cACL,MAAM,CAAE;AAAA,YACf,CAAO;AACD;AAAA,UACA;AAGD,kBAAQ,IAAI,IAAI;AAChB;AAAA,QACA;AAED,gBAAQ,IAAI,IAAI;AAAA,MAChB;AAAA,MACD,KAAK,KAAK;AAETA,4BAAA,MAAA,SAAA,wBAAc,SAAS,OAAO,GAAG,IAAI,GAAG;AACxC,eAAO,GAAG;AAAA,MACV;AAAA,MACD,WAAW;AAEV,YAAI,CAAC,OAAO,aAAa;AACxBA,wBAAAA,MAAI,YAAa;AAAA,QACjB;AAAA,MACD;AAAA,IACJ,CAAG;AAAA,EACH,CAAE;AACF;;"}
{"version":3,"file":"http.js","sources":["config/http.js"],"sourcesContent":["import {\r\n\tURL,\r\n\tappid\r\n} from './url'\r\n\r\nconst request = (option) => {\r\n\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t// 默认不显示加载中提示\r\n\t\tif (!option.hideLoading) {\r\n\t\t\tuni.showLoading({\r\n\t\t\t\ttitle: option.loadingText || '加载中...',\r\n\t\t\t\tmask: true\r\n\t\t\t})\r\n\t\t}\r\n\t\t\r\n\t\tuni.request({\r\n\t\t\turl: URL + option.url,\r\n\t\t\tmethod: option.method,\r\n\t\t\tdata: option.data,\r\n\t\t\theader: {\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t\t...option.headers,\r\n\t\t\t\t'appid': appid,\r\n\t\t\t\t'Authorization': \"Bearer \" + uni.getStorageSync('token'),\r\n\t\t\t\t'Clientid': uni.getStorageSync('client_id')\r\n\t\t\t},\r\n\t\t\tsuccess(res) {\r\n\r\n\t\t\t\t\r\n\t\t\t\t// 检查响应状态码\r\n\t\t\t\tif (res.statusCode !== 200) {\r\n\t\t\t\t\tconsole.error(`HTTP状态码错误: ${res.statusCode}`, res.data)\r\n\t\t\t\t\t\r\n\t\t\t\t\t// 为了适应某些服务器的异常响应,我们仍然返回数据\r\n\t\t\t\t\tif (res.data) {\r\n\t\t\t\t\t\tresolve(res.data)\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\treject({msg: `请求失败,状态码:${res.statusCode}`})\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// 检查业务状态码\r\n\t\t\t\tif (res.data && res.data.code !== 200) {\r\n\t\t\t\t\tconsole.warn(`业务状态码错误: ${res.data.code}`, res.data)\r\n\t\t\t\t\t\r\n\t\t\t\t\t// 判断是否需要忽略数据为空的错误\r\n\t\t\t\t\tif (option.ignoreEmptyError && \r\n\t\t\t\t\t\t(res.data.code === 500 && res.data.msg && \r\n\t\t\t\t\t\t(res.data.msg.includes('未找到') || res.data.msg.includes('不存在')))) {\r\n\t\t\t\t\t\t// 对于指定需要忽略的错误,返回一个标准的\"成功但数据为空\"的响应\r\n\t\t\t\t\t\tresolve({\r\n\t\t\t\t\t\t\tcode: 200,\r\n\t\t\t\t\t\t\tmsg: \"操作成功\",\r\n\t\t\t\t\t\t\tdata: []\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\t// 仍然返回数据,由业务逻辑处理\r\n\t\t\t\t\tresolve(res.data)\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tresolve(res.data)\r\n\t\t\t},\r\n\t\t\tfail(err) {\r\n\t\t\t\t// 网络请求本身失败\r\n\t\t\t\tconsole.error(`请求失败: ${option.url}`, err)\r\n\t\t\t\treject(err)\r\n\t\t\t},\r\n\t\t\tcomplete() {\r\n\t\t\t\t// 隐藏加载提示\r\n\t\t\t\tif (!option.hideLoading) {\r\n\t\t\t\t\tuni.hideLoading()\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t})\r\n}\r\n\r\n\r\nexport default request"],"names":["uni","URL","appid"],"mappings":";;;AAKK,MAAC,UAAU,CAAC,WAAW;AAC3B,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAGvC,QAAI,CAAC,OAAO,aAAa;AACxBA,oBAAAA,MAAI,YAAY;AAAA,QACf,OAAO,OAAO,eAAe;AAAA,QAC7B,MAAM;AAAA,MACV,CAAI;AAAA,IACD;AAEDA,kBAAAA,MAAI,QAAQ;AAAA,MACX,KAAKC,WAAAA,MAAM,OAAO;AAAA,MAClB,QAAQ,OAAO;AAAA,MACf,MAAM,OAAO;AAAA,MACb,QAAQ;AAAA,QACP,gBAAgB;AAAA,QACf,GAAG,OAAO;AAAA,QACX,SAASC,WAAK;AAAA,QACd,iBAAiB,YAAYF,oBAAI,eAAe,OAAO;AAAA,QACvD,YAAYA,cAAAA,MAAI,eAAe,WAAW;AAAA,MAC1C;AAAA,MACD,QAAQ,KAAK;AAIZ,YAAI,IAAI,eAAe,KAAK;AAC3BA,wBAAAA,6CAAc,cAAc,IAAI,UAAU,IAAI,IAAI,IAAI;AAGtD,cAAI,IAAI,MAAM;AACb,oBAAQ,IAAI,IAAI;AAChB;AAAA,UACA;AAED,iBAAO,EAAC,KAAK,YAAY,IAAI,UAAU,GAAE,CAAC;AAC1C;AAAA,QACA;AAGD,YAAI,IAAI,QAAQ,IAAI,KAAK,SAAS,KAAK;AACtCA,wBAAAA,MAAa,MAAA,QAAA,wBAAA,YAAY,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI;AAGlD,cAAI,OAAO,qBACT,IAAI,KAAK,SAAS,OAAO,IAAI,KAAK,QAClC,IAAI,KAAK,IAAI,SAAS,KAAK,KAAK,IAAI,KAAK,IAAI,SAAS,KAAK,KAAK;AAEjE,oBAAQ;AAAA,cACP,MAAM;AAAA,cACN,KAAK;AAAA,cACL,MAAM,CAAE;AAAA,YACf,CAAO;AACD;AAAA,UACA;AAGD,kBAAQ,IAAI,IAAI;AAChB;AAAA,QACA;AAED,gBAAQ,IAAI,IAAI;AAAA,MAChB;AAAA,MACD,KAAK,KAAK;AAETA,4BAAA,MAAA,SAAA,wBAAc,SAAS,OAAO,GAAG,IAAI,GAAG;AACxC,eAAO,GAAG;AAAA,MACV;AAAA,MACD,WAAW;AAEV,YAAI,CAAC,OAAO,aAAa;AACxBA,wBAAAA,MAAI,YAAa;AAAA,QACjB;AAAA,MACD;AAAA,IACJ,CAAG;AAAA,EACH,CAAE;AACF;;"}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"url.js","sources":["config/url.js"],"sourcesContent":["// export const URL = \"https://my.gxfs123.com/api\" //正式服务器\r\n// export const URL = \"https://fansdev.gxfs123.com/api\" //测试服务器\r\nexport const URL = \"http://192.168.10.76:8080\" \t\t//本地调试\r\n\r\nexport const appid = \"wx2165f0be356ae7a9\" //小程序appid"],"names":[],"mappings":";AAEY,MAAC,MAAM;AAEP,MAAC,QAAQ;;;"}
{"version":3,"file":"url.js","sources":["config/url.js"],"sourcesContent":["export const URL = \"https://my.gxfs123.com/api\" //正式服务器\r\n// export const URL = \"https://fansdev.gxfs123.com/api\" //测试服务器\r\n// export const URL = \"http://192.168.5.13:8080\" \t\t//本地调试\r\n\r\nexport const appid = \"wx2165f0be356ae7a9\" //小程序appid"],"names":[],"mappings":";AAAY,MAAC,MAAM;AAIP,MAAC,QAAQ;;;"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
{"version":3,"file":"index.js","sources":["pages/help/index.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaGVscC9pbmRleC52dWU"],"sourcesContent":["<template>\r\n <view class=\"help-container\">\r\n <!-- 常见问题 -->\r\n <view class=\"faq-list\">\r\n <view \r\n class=\"faq-item\"\r\n v-for=\"(item, index) in faqList\"\r\n :key=\"index\"\r\n @click=\"toggleFaq(index)\"\r\n >\r\n <view class=\"faq-header\">\r\n <text class=\"question\">{{ item.question }}</text>\r\n <view class=\"arrow\" :class=\"{ open: item.isOpen }\"></view>\r\n </view>\r\n <view class=\"answer\" v-show=\"item.isOpen\">\r\n {{ item.answer }}\r\n </view>\r\n </view>\r\n </view>\r\n\r\n <!-- 联系客服 -->\r\n <view class=\"contact-card\">\r\n <view class=\"contact-title\">{{ HELP_CONTENT.CONTACT.TITLE }}</view>\r\n <view class=\"contact-content\">\r\n <view class=\"contact-item\">\r\n <text class=\"label\">{{ HELP_CONTENT.CONTACT.PHONE.LABEL }}</text>\r\n <text class=\"value\" @click=\"makePhoneCall\">{{ HELP_CONTENT.CONTACT.PHONE.VALUE }}</text>\r\n </view>\r\n <view class=\"contact-item\">\r\n <text class=\"label\">{{ HELP_CONTENT.CONTACT.SERVICE_TIME.LABEL }}</text>\r\n <text class=\"value\">{{ HELP_CONTENT.CONTACT.SERVICE_TIME.VALUE }}</text>\r\n </view>\r\n </view>\r\n </view>\r\n </view>\r\n</template>\r\n\r\n<script>\r\nimport { HELP_CONTENT } from '@/constants/help'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n HELP_CONTENT,\r\n faqList: HELP_CONTENT.FAQ_LIST.map(item => ({\r\n ...item,\r\n isOpen: false\r\n }))\r\n }\r\n },\r\n methods: {\r\n toggleFaq(index) {\r\n this.faqList[index].isOpen = !this.faqList[index].isOpen\r\n },\r\n makePhoneCall() {\r\n uni.makePhoneCall({\r\n phoneNumber: HELP_CONTENT.CONTACT.PHONE.VALUE\r\n })\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.help-container {\r\n min-height: 100vh;\r\n background: #f8f8f8;\r\n padding: 30rpx;\r\n\r\n .faq-list {\r\n background: #fff;\r\n border-radius: 20rpx;\r\n padding: 20rpx;\r\n margin-bottom: 30rpx;\r\n box-shadow: 0 4rpx 16rpx rgba(0,0,0,0.04);\r\n\r\n .faq-item {\r\n border-bottom: 1rpx solid #f5f5f5;\r\n \r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n\r\n .faq-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 30rpx 20rpx;\r\n\r\n .question {\r\n font-size: 30rpx;\r\n color: #333;\r\n flex: 1;\r\n padding-right: 20rpx;\r\n }\r\n\r\n .arrow {\r\n width: 16rpx;\r\n height: 16rpx;\r\n border-right: 4rpx solid #999;\r\n border-bottom: 4rpx solid #999;\r\n transform: rotate(45deg);\r\n transition: all 0.3s;\r\n\r\n &.open {\r\n transform: rotate(-135deg);\r\n }\r\n }\r\n }\r\n\r\n .answer {\r\n font-size: 28rpx;\r\n color: #666;\r\n line-height: 1.6;\r\n padding: 0 20rpx 30rpx;\r\n background: #f9f9f9;\r\n border-radius: 10rpx;\r\n margin: 0 20rpx 20rpx;\r\n }\r\n }\r\n }\r\n\r\n .contact-card {\r\n background: #fff;\r\n border-radius: 20rpx;\r\n padding: 30rpx;\r\n box-shadow: 0 4rpx 16rpx rgba(0,0,0,0.04);\r\n\r\n .contact-title {\r\n font-size: 32rpx;\r\n color: #333;\r\n font-weight: 500;\r\n margin-bottom: 20rpx;\r\n border-left: 8rpx solid #1976D2;\r\n padding-left: 20rpx;\r\n }\r\n\r\n .contact-content {\r\n .contact-item {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 20rpx 0;\r\n \r\n .label {\r\n font-size: 28rpx;\r\n color: #666;\r\n }\r\n\r\n .value {\r\n font-size: 28rpx;\r\n color: #333;\r\n font-weight: 500;\r\n\r\n &:active {\r\n opacity: 0.7;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n</style> ","import MiniProgramPage from 'D:/uni-fans-score/pages/help/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["HELP_CONTENT","uni"],"mappings":";;;AAwCA,MAAK,YAAU;AAAA,EACb,OAAO;AACL,WAAO;AAAA,oBACLA,eAAY;AAAA,MACZ,SAASA,eAAY,aAAC,SAAS,IAAI,WAAS;AAAA,QAC1C,GAAG;AAAA,QACH,QAAQ;AAAA,MACV,EAAE;AAAA,IACJ;AAAA,EACD;AAAA,EACD,SAAS;AAAA,IACP,UAAU,OAAO;AACf,WAAK,QAAQ,KAAK,EAAE,SAAS,CAAC,KAAK,QAAQ,KAAK,EAAE;AAAA,IACnD;AAAA,IACD,gBAAgB;AACdC,oBAAAA,MAAI,cAAc;AAAA,QAChB,aAAaD,eAAY,aAAC,QAAQ,MAAM;AAAA,OACzC;AAAA,IACH;AAAA,EACF;AACF;;;;;;;;;;;;;;;;;;;;;;AC3DA,GAAG,WAAW,eAAe;"}
{"version":3,"file":"index.js","sources":["pages/help/index.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaGVscC9pbmRleC52dWU"],"sourcesContent":["<template>\r\n <view class=\"help-container\">\r\n <!-- 常见问题 -->\r\n <view class=\"faq-list\">\r\n <view \r\n class=\"faq-item\"\r\n v-for=\"(item, index) in faqList\"\r\n :key=\"index\"\r\n @click=\"toggleFaq(index)\"\r\n >\r\n <view class=\"faq-header\">\r\n <text class=\"question\">{{ item.question }}</text>\r\n <view class=\"arrow\" :class=\"{ open: item.isOpen }\"></view>\r\n </view>\r\n <view class=\"answer\" v-show=\"item.isOpen\">\r\n {{ item.answer }}\r\n </view>\r\n </view>\r\n </view>\r\n\r\n <!-- 联系客服 -->\r\n <view class=\"contact-card\">\r\n <view class=\"contact-title\">{{ HELP_CONTENT.CONTACT.TITLE }}</view>\r\n <view class=\"contact-content\">\r\n <view class=\"contact-item\">\r\n <text class=\"label\">{{ HELP_CONTENT.CONTACT.PHONE.LABEL }}</text>\r\n <text class=\"value\" @click=\"makePhoneCall\">{{ HELP_CONTENT.CONTACT.PHONE.VALUE }}</text>\r\n </view>\r\n <view class=\"contact-item\">\r\n <text class=\"label\">{{ HELP_CONTENT.CONTACT.SERVICE_TIME.LABEL }}</text>\r\n <text class=\"value\">{{ HELP_CONTENT.CONTACT.SERVICE_TIME.VALUE }}</text>\r\n </view>\r\n </view>\r\n </view>\r\n </view>\r\n</template>\r\n\r\n<script>\r\nimport { HELP_CONTENT } from '@/constants/help'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n HELP_CONTENT,\r\n faqList: HELP_CONTENT.FAQ_LIST.map(item => ({\r\n ...item,\r\n isOpen: false\r\n }))\r\n }\r\n },\r\n methods: {\r\n toggleFaq(index) {\r\n this.faqList[index].isOpen = !this.faqList[index].isOpen\r\n },\r\n makePhoneCall() {\r\n uni.makePhoneCall({\r\n phoneNumber: HELP_CONTENT.CONTACT.PHONE.VALUE\r\n })\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.help-container {\r\n min-height: 100vh;\r\n background: #f8f8f8;\r\n padding: 30rpx;\r\n\r\n .faq-list {\r\n background: #fff;\r\n border-radius: 20rpx;\r\n padding: 20rpx;\r\n margin-bottom: 30rpx;\r\n box-shadow: 0 4rpx 16rpx rgba(0,0,0,0.04);\r\n\r\n .faq-item {\r\n border-bottom: 1rpx solid #f5f5f5;\r\n \r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n\r\n .faq-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 30rpx 20rpx;\r\n\r\n .question {\r\n font-size: 30rpx;\r\n color: #333;\r\n flex: 1;\r\n padding-right: 20rpx;\r\n }\r\n\r\n .arrow {\r\n width: 16rpx;\r\n height: 16rpx;\r\n border-right: 4rpx solid #999;\r\n border-bottom: 4rpx solid #999;\r\n transform: rotate(45deg);\r\n transition: all 0.3s;\r\n\r\n &.open {\r\n transform: rotate(-135deg);\r\n }\r\n }\r\n }\r\n\r\n .answer {\r\n font-size: 28rpx;\r\n color: #666;\r\n line-height: 1.6;\r\n padding: 0 20rpx 30rpx;\r\n background: #f9f9f9;\r\n border-radius: 10rpx;\r\n margin: 0 20rpx 20rpx;\r\n }\r\n }\r\n }\r\n\r\n .contact-card {\r\n background: #fff;\r\n border-radius: 20rpx;\r\n padding: 30rpx;\r\n box-shadow: 0 4rpx 16rpx rgba(0,0,0,0.04);\r\n\r\n .contact-title {\r\n font-size: 32rpx;\r\n color: #333;\r\n font-weight: 500;\r\n margin-bottom: 20rpx;\r\n border-left: 8rpx solid #1976D2;\r\n padding-left: 20rpx;\r\n }\r\n\r\n .contact-content {\r\n .contact-item {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 20rpx 0;\r\n \r\n .label {\r\n font-size: 28rpx;\r\n color: #666;\r\n }\r\n\r\n .value {\r\n font-size: 28rpx;\r\n color: #333;\r\n font-weight: 500;\r\n\r\n &:active {\r\n opacity: 0.7;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n</style> ","import MiniProgramPage from 'D:/1/uni-fans-score/pages/help/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["HELP_CONTENT","uni"],"mappings":";;;AAwCA,MAAK,YAAU;AAAA,EACb,OAAO;AACL,WAAO;AAAA,oBACLA,eAAY;AAAA,MACZ,SAASA,eAAY,aAAC,SAAS,IAAI,WAAS;AAAA,QAC1C,GAAG;AAAA,QACH,QAAQ;AAAA,MACV,EAAE;AAAA,IACJ;AAAA,EACD;AAAA,EACD,SAAS;AAAA,IACP,UAAU,OAAO;AACf,WAAK,QAAQ,KAAK,EAAE,SAAS,CAAC,KAAK,QAAQ,KAAK,EAAE;AAAA,IACnD;AAAA,IACD,gBAAgB;AACdC,oBAAAA,MAAI,cAAc;AAAA,QAChB,aAAaD,eAAY,aAAC,QAAQ,MAAM;AAAA,OACzC;AAAA,IACH;AAAA,EACF;AACF;;;;;;;;;;;;;;;;;;;;;;AC3DA,GAAG,WAAW,eAAe;"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+11 -3
View File
@@ -9,7 +9,7 @@ if (!Math) {
"./pages/deposit/index.js";
"./pages/order/index.js";
"./pages/order/payment.js";
"./pages/order/details.js";
"./pages/expressReturn/addExpressReturn.js";
"./pages/feedback/index.js";
"./pages/help/index.js";
"./pages/device/detail.js";
@@ -17,17 +17,18 @@ if (!Math) {
"./pages/return/index.js";
"./pages/order/success.js";
"./pages/order/return-success.js";
"./pages/expressReturn/index.js";
"./pages/expressReturn/detail.js";
}
const _sfc_main = {
onLaunch: function() {
common_vendor.index.__f__("log", "at App.vue:10", "App Launch");
},
onShow: async function() {
common_vendor.index.__f__("log", "at App.vue:14", "App Show");
await this.autoLogin();
},
onHide: function() {
common_vendor.index.__f__("log", "at App.vue:19", "App Hide");
common_vendor.index.__f__("log", "at App.vue:22", "App Hide");
},
methods: {
async autoLogin() {
@@ -36,6 +37,13 @@ const _sfc_main = {
} catch (error) {
common_vendor.index.__f__("error", "at App.vue:30", "自动登录失败:", error);
}
},
async getUserInfoData() {
try {
await util_index.getUserInfo();
} catch (error) {
common_vendor.index.__f__("error", "at App.vue:39", "获取用户信息失败:", error);
}
}
}
};
+4 -2
View File
@@ -5,14 +5,16 @@
"pages/deposit/index",
"pages/order/index",
"pages/order/payment",
"pages/order/details",
"pages/expressReturn/addExpressReturn",
"pages/feedback/index",
"pages/help/index",
"pages/device/detail",
"pages/serve/bagCheck/index",
"pages/return/index",
"pages/order/success",
"pages/order/return-success"
"pages/order/return-success",
"pages/expressReturn/index",
"pages/expressReturn/detail"
],
"window": {
"navigationBarTextStyle": "black",
+45 -37
View File
@@ -2645,21 +2645,21 @@ function injectHook(type, hook, target = currentInstance, prepend = false) {
);
}
}
const createHook$1 = (lifecycle) => (hook, target = currentInstance) => (
const createHook = (lifecycle) => (hook, target = currentInstance) => (
// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)
(!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target)
);
const onBeforeMount = createHook$1("bm");
const onMounted = createHook$1("m");
const onBeforeUpdate = createHook$1("bu");
const onUpdated = createHook$1("u");
const onBeforeUnmount = createHook$1("bum");
const onUnmounted = createHook$1("um");
const onServerPrefetch = createHook$1("sp");
const onRenderTriggered = createHook$1(
const onBeforeMount = createHook("bm");
const onMounted = createHook("m");
const onBeforeUpdate = createHook("bu");
const onUpdated = createHook("u");
const onBeforeUnmount = createHook("bum");
const onUnmounted = createHook("um");
const onServerPrefetch = createHook("sp");
const onRenderTriggered = createHook(
"rtg"
);
const onRenderTracked = createHook$1(
const onRenderTracked = createHook(
"rtc"
);
function onErrorCaptured(hook, target = currentInstance) {
@@ -2672,11 +2672,15 @@ const getPublicInstance = (i) => {
return getExposeProxy(i) || i.proxy;
return getPublicInstance(i.parent);
};
function getComponentInternalInstance(i) {
return i;
}
const publicPropertiesMap = (
// Move PURE marker to new line to workaround compiler discarding it
// due to type annotation
/* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {
$: (i) => i,
// fixed by xxxxxx
$: getComponentInternalInstance,
// fixed by xxxxxx vue-i18n 在 dev 模式,访问了 $el,故模拟一个假的
// $el: i => i.vnode.el,
$el: (i) => i.__$el || (i.__$el = {}),
@@ -4547,6 +4551,7 @@ function warnRef(ref2) {
const queuePostRenderEffect = queuePostFlushCb;
function mountComponent(initialVNode, options) {
const instance = initialVNode.component = createComponentInstance(initialVNode, options.parentComponent, null);
instance.renderer = options.mpType ? options.mpType : "component";
{
instance.ctx.$onApplyOptions = onApplyOptions;
instance.ctx.$children = [];
@@ -4885,7 +4890,8 @@ function injectLifecycleHook(name, hook, publicThis, instance) {
}
function initHooks$1(options, instance, publicThis) {
const mpType = options.mpType || publicThis.$mpType;
if (!mpType || mpType === "component") {
if (!mpType || mpType === "component" || // instance.renderer 标识页面是否作为组件渲染
mpType === "page" && instance.renderer === "component") {
return;
}
Object.keys(options).forEach((name) => {
@@ -5541,10 +5547,10 @@ function handlePromise(promise2) {
function promisify$1(name, fn) {
return (args = {}, ...rest) => {
if (hasCallback(args)) {
return wrapperReturnValue(name, invokeApi(name, fn, args, rest));
return wrapperReturnValue(name, invokeApi(name, fn, extend({}, args), rest));
}
return wrapperReturnValue(name, handlePromise(new Promise((resolve2, reject) => {
invokeApi(name, fn, extend(args, { success: resolve2, fail: reject }), rest);
invokeApi(name, fn, extend({}, args, { success: resolve2, fail: reject }), rest);
})));
};
}
@@ -5941,7 +5947,7 @@ function promisify(name, api) {
}
return function promiseApi(options = {}, ...rest) {
if (isFunction(options.success) || isFunction(options.fail) || isFunction(options.complete)) {
return wrapperReturnValue(name, invokeApi(name, api, options, rest));
return wrapperReturnValue(name, invokeApi(name, api, extend({}, options), rest));
}
return wrapperReturnValue(name, handlePromise(new Promise((resolve2, reject) => {
invokeApi(name, api, extend({}, options, {
@@ -6108,7 +6114,7 @@ function getOSInfo(system, platform) {
osName = system.split(" ")[0] || platform;
osVersion = system.split(" ")[1] || "";
}
osName = osName.toLocaleLowerCase();
osName = osName.toLowerCase();
switch (osName) {
case "harmony":
case "ohos":
@@ -6148,9 +6154,9 @@ function populateParameters(fromRes, toRes) {
appVersion: "1.0.0",
appVersionCode: "100",
appLanguage: getAppLanguage(hostLanguage),
uniCompileVersion: "4.66",
uniCompilerVersion: "4.66",
uniRuntimeVersion: "4.66",
uniCompileVersion: "4.76",
uniCompilerVersion: "4.76",
uniRuntimeVersion: "4.76",
uniPlatform: "mp-weixin",
deviceBrand,
deviceModel: model,
@@ -6187,7 +6193,7 @@ function getGetDeviceType(fromRes, model) {
mac: "pc"
};
const deviceTypeMapsKeys = Object.keys(deviceTypeMaps);
const _model = model.toLocaleLowerCase();
const _model = model.toLowerCase();
for (let index2 = 0; index2 < deviceTypeMapsKeys.length; index2++) {
const _m = deviceTypeMapsKeys[index2];
if (_model.indexOf(_m) !== -1) {
@@ -6201,7 +6207,7 @@ function getGetDeviceType(fromRes, model) {
function getDeviceBrand(brand) {
let deviceBrand = brand;
if (deviceBrand) {
deviceBrand = deviceBrand.toLocaleLowerCase();
deviceBrand = deviceBrand.toLowerCase();
}
return deviceBrand;
}
@@ -6299,9 +6305,9 @@ const getAppBaseInfo = {
appLanguage: getAppLanguage(hostLanguage),
isUniAppX: false,
uniPlatform: "mp-weixin",
uniCompileVersion: "4.66",
uniCompilerVersion: "4.66",
uniRuntimeVersion: "4.66"
uniCompileVersion: "4.76",
uniCompilerVersion: "4.76",
uniRuntimeVersion: "4.76"
};
extend(toRes, parameters);
}
@@ -6974,14 +6980,14 @@ const atFileRegex = /^\s*at\s+[\w/./-]+:\d+$/;
function rewriteConsole() {
function wrapConsole(type) {
return function(...args) {
const originalArgs = [...args];
if (originalArgs.length) {
const maybeAtFile = originalArgs[originalArgs.length - 1];
if (typeof maybeAtFile === "string" && atFileRegex.test(maybeAtFile)) {
originalArgs.pop();
}
}
{
const originalArgs = [...args];
if (originalArgs.length) {
const maybeAtFile = originalArgs[originalArgs.length - 1];
if (typeof maybeAtFile === "string" && atFileRegex.test(maybeAtFile)) {
originalArgs.pop();
}
}
originalConsole[type](...originalArgs);
}
if (type === "error" && args.length === 1) {
@@ -7041,9 +7047,9 @@ function isConsoleWritable() {
return isWritable;
}
function initRuntimeSocketService() {
const hosts = "192.168.10.62,127.0.0.1";
const hosts = "192.168.5.17,127.0.0.1";
const port = "8090";
const id = "mp-weixin_A62-ap";
const id = "mp-weixin_Pk5qpf";
const lazy = typeof swan !== "undefined";
let restoreError = lazy ? () => {
} : initOnError();
@@ -8921,11 +8927,14 @@ const $u = {
throttle: throttle$1
};
index$1.$u = $u;
const createHook = (lifecycle) => (hook, target = getCurrentInstance()) => {
const createLifeCycleHook = (lifecycle, flag2 = 0) => (hook, target = getCurrentInstance()) => {
!isInSSRComponentSetup && injectHook(lifecycle, hook, target);
};
const onShow = /* @__PURE__ */ createHook(ON_SHOW);
const onLoad = /* @__PURE__ */ createHook(ON_LOAD);
const onLoad = /* @__PURE__ */ createLifeCycleHook(
ON_LOAD,
2
/* HookFlags.PAGE */
);
const mpMixin = {
// 将自定义节点设置成虚拟的(去掉自定义组件包裹层),更加接近Vue组件的表现,能更好的使用flex属性
options: {
@@ -10380,7 +10389,6 @@ exports.nextTick$1 = nextTick$1;
exports.o = o;
exports.onLoad = onLoad;
exports.onMounted = onMounted;
exports.onShow = onShow;
exports.onUnmounted = onUnmounted;
exports.p = p;
exports.props = props$3;
+1 -1
View File
@@ -14,7 +14,7 @@ const request = (option) => {
method: option.method,
data: option.data,
header: {
"Content-Type": "application/x-www-form-urlencoded",
"Content-Type": "application/json",
...option.headers,
"appid": config_url.appid,
"Authorization": "Bearer " + common_vendor.index.getStorageSync("token"),
+1 -1
View File
@@ -1,5 +1,5 @@
"use strict";
const URL = "http://192.168.10.76:8080";
const URL = "https://my.gxfs123.com/api";
const appid = "wx2165f0be356ae7a9";
exports.URL = URL;
exports.appid = appid;
+11 -3
View File
@@ -16,7 +16,6 @@ const getMyIndexInfo = (data) => {
});
};
const withdrawDeposit = (orderNo) => {
common_vendor.index.__f__("log", "at config/user.js:23", "调用提现API,订单号:", orderNo);
return config_http.request({
url: `/app/withdraw/add/${orderNo}`,
method: "get",
@@ -49,7 +48,7 @@ const getDeviceInfo = (deviceNo) => {
});
};
const queryById = (id) => {
common_vendor.index.__f__("log", "at config/user.js:81", `查询订单详情, orderId: ${id}`);
common_vendor.index.__f__("log", "at config/user.js:80", `查询订单详情, orderId: ${id}`);
return config_http.request({
url: `/app/order/${id}`,
method: "get",
@@ -74,12 +73,20 @@ const rentPowerBank = (deviceNo, phone) => {
});
};
const confirmPaymentAndRent = (orderId) => {
common_vendor.index.__f__("log", "at config/user.js:123", `确认支付并弹出风扇, orderId: ${orderId}`);
common_vendor.index.__f__("log", "at config/user.js:122", `确认支付并弹出风扇, orderId: ${orderId}`);
return config_http.request({
url: `/app/device/confirmPaymentAndRent?orderId=${orderId}`,
method: "GET"
});
};
const addUserFeedback = (data) => {
common_vendor.index.__f__("log", "at config/user.js:133", data);
return config_http.request({
url: "/app/feedback/add",
method: "post",
data
});
};
const getOrderByOrderNo = (orderNo) => {
return config_http.request({
url: `/app/order/byOrderNo/${orderNo}`,
@@ -118,6 +125,7 @@ const updateUserBalance = (orderId) => {
hideLoading: true
});
};
exports.addUserFeedback = addUserFeedback;
exports.cancelOrder = cancelOrder;
exports.checkOrdersByStatus = checkOrdersByStatus;
exports.confirmPaymentAndRent = confirmPaymentAndRent;
+20 -22
View File
@@ -19,36 +19,34 @@ const _sfc_main = {
const isLoggedIn = common_vendor.ref(true);
const phoneNumber = common_vendor.ref("");
const showPhoneAuthPopup = common_vendor.ref(false);
common_vendor.onLoad((options) => {
common_vendor.onLoad(async (options) => {
if (options.deviceNo != common_vendor.index.getStorageSync("deviceId") || !common_vendor.index.getStorageSync("deviceId")) {
deviceId.value = options.deviceNo;
common_vendor.index.setStorageSync("deviceId", options.deviceNo);
} else {
deviceId.value = common_vendor.index.getStorageSync("deviceId");
}
checkOrderStatus();
await checkOrderStatus();
await fetchDeviceInfo();
});
common_vendor.onMounted(async () => {
await checkUserPhone();
});
common_vendor.onShow(async () => {
await fetchDeviceInfo();
});
const checkUserPhone = async () => {
try {
const userInfoRes = await util_index.getUserInfo();
common_vendor.index.__f__("log", "at pages/device/detail.vue:220", userInfoRes.data.phone, "getUserInfoPhone");
common_vendor.index.__f__("log", "at pages/device/detail.vue:221", userInfoRes.data.phone, "getUserInfoPhone");
if (userInfoRes.code == 200 && userInfoRes.data && userInfoRes.data.phone) {
phoneNumber.value = userInfoRes.data.phone;
} else {
showPhoneAuthPopup.value = true;
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/device/detail.vue:229", "获取用户信息失败:", error);
common_vendor.index.__f__("error", "at pages/device/detail.vue:230", "获取用户信息失败:", error);
}
};
const onGetPhoneNumber = (e) => {
common_vendor.index.__f__("log", "at pages/device/detail.vue:235", "getPhoneNumber event:", e.detail);
common_vendor.index.__f__("log", "at pages/device/detail.vue:236", "getPhoneNumber event:", e.detail);
if (e.detail.errMsg && e.detail.errMsg.includes("deny")) {
common_vendor.index.showToast({
title: "需要授权手机号才能使用设备",
@@ -60,13 +58,13 @@ const _sfc_main = {
common_vendor.index.showLoading({
title: "获取中..."
});
common_vendor.index.__f__("log", "at pages/device/detail.vue:252", "获取到的授权code:", e.detail.code);
common_vendor.index.__f__("log", "at pages/device/detail.vue:253", "获取到的授权code:", e.detail.code);
try {
util_index.getUserPhoneNumber(e.detail.code).then((res) => {
common_vendor.index.__f__("log", "at pages/device/detail.vue:258", "获取手机号API响应原始数据:", JSON.stringify(res));
common_vendor.index.__f__("log", "at pages/device/detail.vue:259", "获取手机号API响应原始数据:", JSON.stringify(res));
common_vendor.index.hideLoading();
if (!res) {
common_vendor.index.__f__("error", "at pages/device/detail.vue:263", "API返回数据为空");
common_vendor.index.__f__("error", "at pages/device/detail.vue:264", "API返回数据为空");
common_vendor.index.showModal({
title: "数据异常",
content: "API返回为空",
@@ -74,8 +72,8 @@ const _sfc_main = {
});
return;
}
common_vendor.index.__f__("log", "at pages/device/detail.vue:273", "响应code:", res.code, "响应类型:", typeof res.code);
common_vendor.index.__f__("log", "at pages/device/detail.vue:274", "是否有data:", !!res.data, "是否有phone:", res.data && !!res.data.phone);
common_vendor.index.__f__("log", "at pages/device/detail.vue:274", "响应code:", res.code, "响应类型:", typeof res.code);
common_vendor.index.__f__("log", "at pages/device/detail.vue:275", "是否有data:", !!res.data, "是否有phone:", res.data && !!res.data.phone);
if (res.code == 200 && res.data && res.data.phoneNumber) {
phoneNumber.value = res.data.phoneNumber;
showPhoneAuthPopup.value = false;
@@ -84,7 +82,7 @@ const _sfc_main = {
icon: "success"
});
} else {
common_vendor.index.__f__("warn", "at pages/device/detail.vue:286", "获取手机号响应异常:", res.msg || "未知错误");
common_vendor.index.__f__("warn", "at pages/device/detail.vue:287", "获取手机号响应异常:", res.msg || "未知错误");
common_vendor.index.showModal({
title: "获取手机号异常",
content: `状态码: ${res.code}, 消息: ${res.msg || "无"}`,
@@ -93,7 +91,7 @@ const _sfc_main = {
}
}).catch((err) => {
common_vendor.index.hideLoading();
common_vendor.index.__f__("error", "at pages/device/detail.vue:296", "获取手机号码失败(catch):", err);
common_vendor.index.__f__("error", "at pages/device/detail.vue:297", "获取手机号码失败(catch):", err);
let errMsg = err.message || err.toString();
common_vendor.index.showModal({
title: "获取手机号失败",
@@ -103,7 +101,7 @@ const _sfc_main = {
});
} catch (outerError) {
common_vendor.index.hideLoading();
common_vendor.index.__f__("error", "at pages/device/detail.vue:308", "获取手机号外部错误:", outerError);
common_vendor.index.__f__("error", "at pages/device/detail.vue:309", "获取手机号外部错误:", outerError);
common_vendor.index.showModal({
title: "意外错误",
content: "处理过程发生异常: " + (outerError.message || outerError),
@@ -135,7 +133,7 @@ const _sfc_main = {
deviceStatus.class = "offline";
}
}
common_vendor.index.__f__("log", "at pages/device/detail.vue:346", "feeconfig", deviceInfo.value.feeConfig);
common_vendor.index.__f__("log", "at pages/device/detail.vue:347", "feeconfig", deviceInfo.value.feeConfig);
deviceFeeConfig.value = JSON.parse(deviceInfo.value.feeConfig)[0] || {};
}
};
@@ -216,17 +214,17 @@ const _sfc_main = {
packagePrice: parseFloat(selectedPkg.price)
});
if (updateRes.code !== 200) {
common_vendor.index.__f__("warn", "at pages/device/detail.vue:454", "更新订单套餐信息失败:", updateRes.msg);
common_vendor.index.__f__("warn", "at pages/device/detail.vue:455", "更新订单套餐信息失败:", updateRes.msg);
} else {
common_vendor.index.__f__("log", "at pages/device/detail.vue:457", "订单套餐信息已提前更新");
common_vendor.index.__f__("log", "at pages/device/detail.vue:458", "订单套餐信息已提前更新");
}
} catch (updateError) {
common_vendor.index.__f__("error", "at pages/device/detail.vue:460", "更新订单套餐信息时出错:", updateError);
common_vendor.index.__f__("error", "at pages/device/detail.vue:461", "更新订单套餐信息时出错:", updateError);
}
if (payWay == "wx-pay") {
common_vendor.index.hideLoading();
const res = await config_user.getOrderByOrderNo(order.orderNo);
common_vendor.index.__f__("log", "at pages/device/detail.vue:469", res);
common_vendor.index.__f__("log", "at pages/device/detail.vue:470", res);
const deposit = parseFloat(deviceInfo.value.depositAmount);
const packagePrice = parseFloat(selectedPkg.price);
const totalAmount = (deposit + packagePrice).toFixed(2);
@@ -243,7 +241,7 @@ const _sfc_main = {
const payResult = await util_index.initiateWeChatScorePayment(res);
if (payResult.errCode == "0") {
const res2 = await config_user.getOrderByOrderNoScorePayStatus(order.orderNo);
common_vendor.index.__f__("log", "at pages/device/detail.vue:497", res2.data.orderStatus);
common_vendor.index.__f__("log", "at pages/device/detail.vue:498", res2.data.orderStatus);
if (res2.data.orderStatus == "in_used") {
common_vendor.index.showToast({
title: "设备租借成功",
+73 -85
View File
@@ -1,118 +1,106 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const config_user = require("../../config/user.js");
const _sfc_main = {
data() {
return {
types: ["设备故障", "收费问题", "使用建议", "其他"],
selectedType: -1,
description: "",
images: [],
contact: ""
__name: "index",
setup(__props) {
const types = common_vendor.ref(["设备故障", "收费问题", "使用建议", "其他"]);
const selectedType = common_vendor.ref(-1);
const paramsType = common_vendor.ref("");
const description = common_vendor.ref("");
const images = common_vendor.ref([]);
const contact = common_vendor.ref("");
const selectType = (index) => {
selectedType.value = index;
};
},
methods: {
selectType(index) {
this.selectedType = index;
},
chooseImage() {
const chooseImage = () => {
common_vendor.index.chooseImage({
count: 3 - this.images.length,
count: 3 - images.value.length,
success: (res) => {
this.images = [...this.images, ...res.tempFilePaths];
images.value = [...images.value, ...res.tempFilePaths];
}
});
},
deleteImage(index) {
this.images.splice(index, 1);
},
submitFeedback() {
if (this.selectedType === -1) {
};
const deleteImage = (index) => {
images.value.splice(index, 1);
};
const submitFeedback = async () => {
if (selectedType.value === -1) {
common_vendor.index.showToast({
title: "请选择问题类型",
icon: "none"
});
return;
}
if (!this.description.trim()) {
if (!description.value.trim()) {
common_vendor.index.showToast({
title: "请描述您的问题",
icon: "none"
});
return;
}
if (!this.contact) {
if (!contact.value) {
common_vendor.index.showToast({
title: "请留下联系方式",
icon: "none"
});
return;
}
if (types.value[selectedType.value] == "设备故障" || types.value[selectedType.value] == "收费问题") {
paramsType.value = "complain";
} else {
paramsType.value = "suggestion";
}
const feedbackData = {
type: this.types[this.selectedType],
content: this.description,
phone: this.contact,
images: this.images
type: paramsType.value,
content: description.value,
phone: contact.value,
images: images.value
};
common_vendor.index.request({
url: "/app/feedback/add",
method: "POST",
data: feedbackData,
success: (res) => {
if (res.statusCode === 200) {
common_vendor.index.showToast({
title: "提交成功",
icon: "success"
});
this.selectedType = -1;
this.description = "";
this.contact = "";
this.images = [];
} else {
common_vendor.index.showToast({
title: "提交失败",
icon: "none"
});
}
},
fail: () => {
common_vendor.index.showToast({
title: "提交失败",
icon: "none"
});
}
const res = await config_user.addUserFeedback(feedbackData);
if (res.code == 200) {
common_vendor.index.showToast({
title: "反馈成功",
icon: "success"
});
} else {
common_vendor.index.showToast({
title: "反馈失败",
icon: "none"
});
}
};
return (_ctx, _cache) => {
return common_vendor.e({
a: common_vendor.f(types.value, (type, index, i0) => {
return {
a: common_vendor.t(type),
b: index,
c: selectedType.value === index ? 1 : "",
d: common_vendor.o(($event) => selectType(index), index)
};
}),
b: description.value,
c: common_vendor.o(($event) => description.value = $event.detail.value),
d: common_vendor.t(description.value.length),
e: common_vendor.f(images.value, (img, index, i0) => {
return {
a: img,
b: common_vendor.o(($event) => deleteImage(index), index),
c: index
};
}),
f: images.value.length < 3
}, images.value.length < 3 ? {
g: common_vendor.o(chooseImage)
} : {}, {
h: contact.value,
i: common_vendor.o(($event) => contact.value = $event.detail.value),
j: common_vendor.o(submitFeedback)
});
}
};
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: common_vendor.f($data.types, (type, index, i0) => {
return {
a: common_vendor.t(type),
b: index,
c: $data.selectedType === index ? 1 : "",
d: common_vendor.o(($event) => $options.selectType(index), index)
};
}),
b: $data.description,
c: common_vendor.o(($event) => $data.description = $event.detail.value),
d: common_vendor.t($data.description.length),
e: common_vendor.f($data.images, (img, index, i0) => {
return {
a: img,
b: common_vendor.o(($event) => $options.deleteImage(index), index),
c: index
};
}),
f: $data.images.length < 3
}, $data.images.length < 3 ? {
g: common_vendor.o((...args) => $options.chooseImage && $options.chooseImage(...args))
} : {}, {
h: $data.contact,
i: common_vendor.o(($event) => $data.contact = $event.detail.value),
j: common_vendor.o((...args) => $options.submitFeedback && $options.submitFeedback(...args))
});
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-2aa7bac2"]]);
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-2aa7bac2"]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/feedback/index.js.map
+2 -2
View File
@@ -25,7 +25,7 @@ const _sfc_main = {
return;
}
const res = await util_index.getUserInfo();
common_vendor.index.__f__("log", "at pages/my/index.vue:146", "User info response:", res);
common_vendor.index.__f__("log", "at pages/my/index.vue:157", "User info response:", res);
if (res.code == 200) {
if (res.data.openId) {
openId.value = res.data.openId;
@@ -41,7 +41,7 @@ const _sfc_main = {
deposit.value = res.data.balanceAmount || "0.00";
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/my/index.vue:167", "获取用户信息失败:", error);
common_vendor.index.__f__("error", "at pages/my/index.vue:178", "获取用户信息失败:", error);
common_vendor.index.showToast({
title: "获取用户信息失败",
icon: "none"
-120
View File
@@ -1,120 +0,0 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const common_assets = require("../../common/assets.js");
const config_user = require("../../config/user.js");
const _sfc_main = {
__name: "details",
setup(__props) {
const orderId = common_vendor.ref("");
const orderInfo = common_vendor.ref({});
const orderStatusText = common_vendor.computed(() => {
const status = orderInfo.value.orderStatus;
switch (status) {
case "waiting_for_payment":
return "待支付";
case "in_used":
return "使用中";
case "used_done":
return "已完成";
case "order_cancelled":
return "已取消";
default:
return "使用中";
}
});
common_vendor.onLoad(async (options) => {
if (options && options.orderId) {
orderId.value = options.orderId;
await loadOrderDetails();
} else {
common_vendor.index.showToast({
title: "订单信息不存在",
icon: "none"
});
setTimeout(() => {
common_vendor.index.navigateBack();
}, 1500);
}
});
const loadOrderDetails = async () => {
try {
common_vendor.index.showLoading({ title: "加载中" });
const res = await config_user.queryById(orderId.value);
if (res.code === 200 && res.data) {
orderInfo.value = res.data;
if (orderInfo.value.createTime) {
orderInfo.value.createTime = formatDateTime(new Date(orderInfo.value.createTime));
}
if (orderInfo.value.startTime) {
orderInfo.value.startTime = formatDateTime(new Date(orderInfo.value.startTime));
}
if (orderInfo.value.endTime) {
orderInfo.value.endTime = formatDateTime(new Date(orderInfo.value.endTime));
}
} else {
throw new Error("获取订单详情失败");
}
common_vendor.index.hideLoading();
} catch (error) {
common_vendor.index.hideLoading();
common_vendor.index.showToast({
title: error.message || "获取订单详情失败",
icon: "none"
});
}
};
const formatDateTime = (date) => {
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, "0");
const day = date.getDate().toString().padStart(2, "0");
const hour = date.getHours().toString().padStart(2, "0");
const minute = date.getMinutes().toString().padStart(2, "0");
return `${year}-${month}-${day} ${hour}:${minute}`;
};
const formatTime = (minutes) => {
if (!minutes)
return "";
const mins = parseInt(minutes);
if (mins < 60) {
return `${mins}分钟`;
} else {
const hours = Math.floor(mins / 60);
const remainingMins = mins % 60;
return remainingMins > 0 ? `${hours}小时${remainingMins}分钟` : `${hours}小时`;
}
};
return (_ctx, _cache) => {
return common_vendor.e({
a: common_vendor.t(orderStatusText.value),
b: common_vendor.t(orderInfo.value.orderNo || "-"),
c: common_vendor.t(orderInfo.value.deviceNo || "-"),
d: orderInfo.value.payWay === "wx_score_pay"
}, orderInfo.value.payWay === "wx_score_pay" ? {
e: common_assets._imports_0$3
} : {}, {
f: common_vendor.t(orderInfo.value.startTime || "-"),
g: orderInfo.value.endTime
}, orderInfo.value.endTime ? {
h: common_vendor.t(orderInfo.value.endTime)
} : {}, {
i: orderInfo.value.phone
}, orderInfo.value.phone ? {
j: common_vendor.t(orderInfo.value.phone)
} : {}, {
k: orderInfo.value.depositAmount
}, orderInfo.value.depositAmount ? {
l: common_vendor.t(orderInfo.value.depositAmount)
} : {}, {
m: orderInfo.value.packageTime && orderInfo.value.packagePrice
}, orderInfo.value.packageTime && orderInfo.value.packagePrice ? {
n: common_vendor.t(orderInfo.value.packagePrice),
o: common_vendor.t(formatTime(orderInfo.value.packageTime))
} : {}, {
p: common_vendor.t(orderInfo.value.payAmount || 0)
});
};
}
};
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-2b5cbeae"]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/order/details.js.map
-6
View File
@@ -1,6 +0,0 @@
{
"navigationBarTitleText": "订单详情",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"usingComponents": {}
}
-1
View File
@@ -1 +0,0 @@
<view class="return-container data-v-2b5cbeae"><view class="order-card data-v-2b5cbeae"><view class="order-header data-v-2b5cbeae"><text class="title data-v-2b5cbeae">{{a}}</text><text class="order-no data-v-2b5cbeae">订单号:{{b}}</text></view><view class="device-info data-v-2b5cbeae"><view class="device-left data-v-2b5cbeae"><view class="device-name data-v-2b5cbeae">共享风扇</view><view class="device-id data-v-2b5cbeae">设备号:{{c}}</view></view><view class="device-right data-v-2b5cbeae"><view wx:if="{{d}}" class="payment-badge wx-score data-v-2b5cbeae"><image src="{{e}}" mode="aspectFit" class="badge-icon data-v-2b5cbeae"></image><view class="badge-text data-v-2b5cbeae"><text class="data-v-2b5cbeae">微信支付分</text><text class="divider data-v-2b5cbeae">|</text><text class="highlight data-v-2b5cbeae">免押租借</text></view></view><view wx:else class="payment-badge deposit data-v-2b5cbeae"><text class="badge-text data-v-2b5cbeae">押金租借</text></view></view></view><view class="time-info data-v-2b5cbeae"><view class="time-item data-v-2b5cbeae"><text class="label data-v-2b5cbeae">开始时间</text><text class="value data-v-2b5cbeae">{{f}}</text></view><view wx:if="{{g}}" class="time-item data-v-2b5cbeae"><text class="label data-v-2b5cbeae">结束时间</text><text class="value data-v-2b5cbeae">{{h}}</text></view><view wx:if="{{i}}" class="time-item data-v-2b5cbeae"><text class="label data-v-2b5cbeae">联系电话</text><text class="value data-v-2b5cbeae">{{j}}</text></view></view></view><view class="notice-card data-v-2b5cbeae"><view class="notice-title data-v-2b5cbeae">费用信息</view><view class="notice-list data-v-2b5cbeae"><view wx:if="{{k}}" class="notice-item data-v-2b5cbeae"><view class="dot data-v-2b5cbeae"></view><text class="data-v-2b5cbeae">押金:¥{{l}}</text></view><view wx:if="{{m}}" class="notice-item data-v-2b5cbeae"><view class="dot data-v-2b5cbeae"></view><text class="data-v-2b5cbeae">套餐:¥{{n}}元 / {{o}}</text></view><view class="notice-item data-v-2b5cbeae"><view class="dot data-v-2b5cbeae"></view><text class="data-v-2b5cbeae">合计:¥{{p}}</text></view></view></view></view>
-211
View File
@@ -1,211 +0,0 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.return-container.data-v-2b5cbeae {
min-height: 100vh;
background: #f7f8fa;
padding: 30rpx;
padding-bottom: 180rpx;
box-sizing: border-box;
}
.return-container .order-card.data-v-2b5cbeae {
background: #fff;
border-radius: 20rpx;
padding: 30rpx;
margin-bottom: 30rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
}
.return-container .order-card .order-header.data-v-2b5cbeae {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20rpx;
padding-bottom: 16rpx;
border-bottom: 1rpx solid #f0f0f0;
}
.return-container .order-card .order-header .title.data-v-2b5cbeae {
font-size: 30rpx;
font-weight: bold;
color: #333;
}
.return-container .order-card .order-header .order-no.data-v-2b5cbeae {
font-size: 24rpx;
color: #999;
}
.return-container .order-card .device-info.data-v-2b5cbeae {
margin-bottom: 24rpx;
display: flex;
justify-content: space-between;
align-items: flex-start;
}
.return-container .order-card .device-info .device-left.data-v-2b5cbeae {
flex: 1;
margin-right: 20rpx;
}
.return-container .order-card .device-info .device-left .device-name.data-v-2b5cbeae {
font-size: 32rpx;
font-weight: 500;
color: #333;
margin-bottom: 8rpx;
}
.return-container .order-card .device-info .device-left .device-id.data-v-2b5cbeae {
font-size: 26rpx;
color: #999;
margin-bottom: 0;
}
.return-container .order-card .device-info .device-right .payment-badge.data-v-2b5cbeae {
display: inline-flex;
align-items: center;
padding: 6rpx 12rpx;
border-radius: 8rpx;
white-space: nowrap;
}
.return-container .order-card .device-info .device-right .payment-badge.wx-score.data-v-2b5cbeae {
background: rgba(7, 193, 96, 0.08);
}
.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-icon.data-v-2b5cbeae {
width: 32rpx;
height: 26rpx;
margin-right: 8rpx;
}
.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-text.data-v-2b5cbeae {
font-size: 22rpx;
color: #07c160;
display: flex;
align-items: center;
}
.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-text .divider.data-v-2b5cbeae {
margin: 0 6rpx;
}
.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-text .highlight.data-v-2b5cbeae {
font-weight: 500;
}
.return-container .order-card .device-info .device-right .payment-badge.deposit.data-v-2b5cbeae {
background: #f5f5f5;
}
.return-container .order-card .device-info .device-right .payment-badge.deposit .badge-text.data-v-2b5cbeae {
font-size: 22rpx;
color: #666;
font-weight: 500;
}
.return-container .order-card .time-info.data-v-2b5cbeae {
background: #f9f9f9;
border-radius: 16rpx;
padding: 20rpx;
}
.return-container .order-card .time-info .time-item.data-v-2b5cbeae {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 16rpx;
}
.return-container .order-card .time-info .time-item.data-v-2b5cbeae:last-child {
margin-bottom: 0;
}
.return-container .order-card .time-info .time-item .label.data-v-2b5cbeae {
font-size: 26rpx;
color: #666;
}
.return-container .order-card .time-info .time-item .value.data-v-2b5cbeae {
font-size: 26rpx;
color: #333;
}
.return-container .order-card .time-info .time-item .value.highlight.data-v-2b5cbeae {
color: #ff6b6b;
font-weight: bold;
}
.return-container .notice-card.data-v-2b5cbeae {
background: #fff;
border-radius: 20rpx;
padding: 30rpx;
margin-bottom: 30rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
}
.return-container .notice-card .notice-title.data-v-2b5cbeae {
font-size: 30rpx;
font-weight: bold;
color: #333;
margin-bottom: 20rpx;
}
.return-container .notice-card .notice-list .notice-item.data-v-2b5cbeae {
display: flex;
align-items: flex-start;
margin-bottom: 16rpx;
}
.return-container .notice-card .notice-list .notice-item.data-v-2b5cbeae:last-child {
margin-bottom: 0;
}
.return-container .notice-card .notice-list .notice-item .dot.data-v-2b5cbeae {
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-2b5cbeae {
font-size: 26rpx;
color: #666;
line-height: 1.5;
}
.return-container .bottom-bar.data-v-2b5cbeae {
position: fixed;
left: 0;
right: 0;
bottom: 0;
padding: 20rpx 30rpx;
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
background: #fff;
box-shadow: 0 -4rpx 16rpx rgba(0, 0, 0, 0.04);
z-index: 10;
display: flex;
justify-content: space-between;
gap: 20rpx;
}
.return-container .bottom-bar .action-item.data-v-2b5cbeae {
height: 88rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 30rpx;
border-radius: 44rpx;
flex: 1;
}
.return-container .bottom-bar .action-item.primary.data-v-2b5cbeae {
background: #07c160;
color: #fff;
}
.return-container .bottom-bar .action-item.primary.data-v-2b5cbeae:active {
opacity: 0.8;
}
.return-container .bottom-bar .action-item.secondary.data-v-2b5cbeae {
background: #f5f5f5;
color: #333;
border: 1rpx solid #e0e0e0;
}
.return-container .bottom-bar .action-item.secondary.data-v-2b5cbeae:active {
opacity: 0.8;
}
+21 -19
View File
@@ -89,7 +89,7 @@ const _sfc_main = {
}
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/order/index.vue:226", "获取订单详情失败:", error);
common_vendor.index.__f__("error", "at pages/order/index.vue:230", "获取订单详情失败:", error);
}
}
await loadOrderList();
@@ -123,7 +123,7 @@ const _sfc_main = {
});
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/order/index.vue:270", "获取订单列表失败:", error);
common_vendor.index.__f__("error", "at pages/order/index.vue:274", "获取订单列表失败:", error);
common_vendor.index.showToast({
title: "获取订单列表失败",
icon: "none"
@@ -131,14 +131,14 @@ const _sfc_main = {
}
};
const navigateToReturn = (deviceId, orderId) => {
common_vendor.index.__f__("log", "at pages/order/index.vue:299", orderId);
common_vendor.index.__f__("log", "at pages/order/index.vue:303", orderId);
common_vendor.index.navigateTo({
url: `/pages/return/index?deviceId=${deviceId}&orderId=${orderId}`
});
};
const navigateToDetails = (order) => {
common_vendor.index.navigateTo({
url: `/pages/order/details?orderId=${order.orderId || order.orderNo}`
url: `/pages/return/index?orderId=${order.orderId || order.orderNo}&deviceId=${order.deviceId}`
});
};
const handlePayment = async (order) => {
@@ -166,12 +166,12 @@ const _sfc_main = {
try {
await config_user.updateUserBalance(order.orderId || order.orderNo);
} catch (error) {
common_vendor.index.__f__("warn", "at pages/order/index.vue:345", "更新用户余额失败:", error);
common_vendor.index.__f__("warn", "at pages/order/index.vue:349", "更新用户余额失败:", error);
}
await loadOrderList(orderStatusTabs[currentTab.value].status);
},
fail: (err) => {
common_vendor.index.__f__("error", "at pages/order/index.vue:352", "支付失败:", err);
common_vendor.index.__f__("error", "at pages/order/index.vue:356", "支付失败:", err);
throw new Error("支付失败,请重试");
}
});
@@ -243,24 +243,26 @@ const _sfc_main = {
e: order.payWay == "wx_score_pay"
}, order.payWay == "wx_score_pay" ? {
f: common_assets._imports_0$3
} : {}, {
g: common_vendor.t(order.startTime),
h: common_vendor.t(order.endTime || "-"),
i: common_vendor.t(order.amount),
j: order.status === "waiting_for_payment" || order.orderStatus === "waiting_for_payment"
}, order.status === "waiting_for_payment" || order.orderStatus === "waiting_for_payment" ? {
k: common_vendor.o(($event) => handlePayment(order), index)
} : {}, {
} : order.payWay == "wx_member_pay" ? {} : order.payWay == "wx_pay" ? {} : {}, {
g: order.payWay == "wx_member_pay",
h: order.payWay == "wx_pay",
i: common_vendor.t(order.startTime),
j: common_vendor.t(order.endTime || "-"),
k: common_vendor.t(order.amount),
l: order.status === "waiting_for_payment" || order.orderStatus === "waiting_for_payment"
}, order.status === "waiting_for_payment" || order.orderStatus === "waiting_for_payment" ? {
m: common_vendor.o(($event) => handleCancelOrder(order), index)
m: common_vendor.o(($event) => handlePayment(order), index)
} : {}, {
n: order.status == "in_used" || order.orderStatus == "in_used"
n: order.status === "waiting_for_payment" || order.orderStatus === "waiting_for_payment"
}, order.status === "waiting_for_payment" || order.orderStatus === "waiting_for_payment" ? {
o: common_vendor.o(($event) => handleCancelOrder(order), index)
} : {}, {
p: order.status == "in_used" || order.orderStatus == "in_used"
}, order.status == "in_used" || order.orderStatus == "in_used" ? {
o: common_vendor.o(($event) => navigateToReturn(order.deviceId, order.orderId), index)
q: common_vendor.o(($event) => navigateToReturn(order.deviceId, order.orderId), index)
} : {}, {
p: common_vendor.o(($event) => navigateToDetails(order), index),
q: index
r: common_vendor.o(($event) => navigateToDetails(order), index),
s: index
});
})
});
+1 -1
View File
@@ -1 +1 @@
<view class="order-container data-v-17a44f9d"><view class="status-tabs data-v-17a44f9d"><view wx:for="{{a}}" wx:for-item="tab" wx:key="b" class="{{['tab-item', 'data-v-17a44f9d', tab.c && 'active']}}" bindtap="{{tab.d}}">{{tab.a}}</view></view><view class="order-list data-v-17a44f9d"><view wx:if="{{b}}" class="empty-state data-v-17a44f9d"><view class="empty-icon data-v-17a44f9d"></view><text class="empty-text data-v-17a44f9d">暂无订单记录</text></view><view wx:for="{{c}}" wx:for-item="order" wx:key="q" class="order-item data-v-17a44f9d"><view class="order-header data-v-17a44f9d"><view class="order-id data-v-17a44f9d"><text class="data-v-17a44f9d">订单号:{{order.a}}</text></view><view class="{{['order-status', 'data-v-17a44f9d', order.c]}}">{{order.b}}</view></view><view class="order-body data-v-17a44f9d"><view class="device-info data-v-17a44f9d"><view class="device-left data-v-17a44f9d"><view class="device-name data-v-17a44f9d">共享风扇</view><view class="device-id data-v-17a44f9d">设备号:{{order.d}}</view></view><view class="device-right data-v-17a44f9d"><view wx:if="{{order.e}}" class="payment-badge wx-score data-v-17a44f9d"><image src="{{order.f}}" mode="aspectFit" class="badge-icon data-v-17a44f9d"></image><view class="badge-text data-v-17a44f9d"><text class="data-v-17a44f9d">微信支付分</text><text class="divider data-v-17a44f9d">|</text><text class="highlight data-v-17a44f9d">免押租借</text></view></view><view wx:else class="payment-badge deposit data-v-17a44f9d"><text class="badge-text data-v-17a44f9d">押金租借</text></view></view></view><view class="order-times data-v-17a44f9d"><view class="time-row data-v-17a44f9d"><text class="time-label data-v-17a44f9d">开始时间:</text><text class="time-value data-v-17a44f9d">{{order.g}}</text></view><view class="time-row data-v-17a44f9d"><text class="time-label data-v-17a44f9d">结束时间:</text><text class="time-value data-v-17a44f9d">{{order.h}}</text></view></view></view><view class="order-footer data-v-17a44f9d"><view class="price data-v-17a44f9d">¥{{order.i}}</view><view class="actions data-v-17a44f9d"><view wx:if="{{order.j}}" class="action-item primary data-v-17a44f9d" bindtap="{{order.k}}"> 立即支付 </view><view wx:if="{{order.l}}" class="action-item secondary data-v-17a44f9d" bindtap="{{order.m}}"> 取消订单 </view><view wx:if="{{order.n}}" class="action-item primary data-v-17a44f9d" bindtap="{{order.o}}"> 归还设备 </view><view class="action-item secondary data-v-17a44f9d" bindtap="{{order.p}}"> 查看详情 </view></view></view></view></view></view>
<view class="order-container data-v-17a44f9d"><view class="status-tabs data-v-17a44f9d"><view wx:for="{{a}}" wx:for-item="tab" wx:key="b" class="{{['tab-item', 'data-v-17a44f9d', tab.c && 'active']}}" bindtap="{{tab.d}}">{{tab.a}}</view></view><view class="order-list data-v-17a44f9d"><view wx:if="{{b}}" class="empty-state data-v-17a44f9d"><view class="empty-icon data-v-17a44f9d"></view><text class="empty-text data-v-17a44f9d">暂无订单记录</text></view><view wx:for="{{c}}" wx:for-item="order" wx:key="s" class="order-item data-v-17a44f9d"><view class="order-header data-v-17a44f9d"><view class="order-id data-v-17a44f9d"><text class="data-v-17a44f9d">订单号:{{order.a}}</text></view><view class="{{['order-status', 'data-v-17a44f9d', order.c]}}">{{order.b}}</view></view><view class="order-body data-v-17a44f9d"><view class="device-info data-v-17a44f9d"><view class="device-left data-v-17a44f9d"><view class="device-name data-v-17a44f9d">共享风扇</view><view class="device-id data-v-17a44f9d">设备号:{{order.d}}</view></view><view class="device-right data-v-17a44f9d"><view wx:if="{{order.e}}" class="payment-badge wx-score data-v-17a44f9d"><image src="{{order.f}}" mode="aspectFit" class="badge-icon data-v-17a44f9d"></image><view class="badge-text data-v-17a44f9d"><text class="data-v-17a44f9d">微信支付分</text><text class="divider data-v-17a44f9d">|</text><text class="highlight data-v-17a44f9d">免押租借</text></view></view><view wx:elif="{{order.g}}" class="payment-badge member data-v-17a44f9d"><text class="badge-text data-v-17a44f9d">会员订单</text></view><view wx:elif="{{order.h}}" class="payment-badge deposit data-v-17a44f9d"><text class="badge-text data-v-17a44f9d">押金租借</text></view></view></view><view class="order-times data-v-17a44f9d"><view class="time-row data-v-17a44f9d"><text class="time-label data-v-17a44f9d">开始时间:</text><text class="time-value data-v-17a44f9d">{{order.i}}</text></view><view class="time-row data-v-17a44f9d"><text class="time-label data-v-17a44f9d">结束时间:</text><text class="time-value data-v-17a44f9d">{{order.j}}</text></view></view></view><view class="order-footer data-v-17a44f9d"><view class="price data-v-17a44f9d">¥{{order.k}}</view><view class="actions data-v-17a44f9d"><view wx:if="{{order.l}}" class="action-item primary data-v-17a44f9d" bindtap="{{order.m}}"> 立即支付 </view><view wx:if="{{order.n}}" class="action-item secondary data-v-17a44f9d" bindtap="{{order.o}}"> 取消订单 </view><view wx:if="{{order.p}}" class="action-item primary data-v-17a44f9d" bindtap="{{order.q}}"> 归还设备 </view><view class="action-item secondary data-v-17a44f9d" bindtap="{{order.r}}"> 查看详情 </view></view></view></view></view></view>
+8
View File
@@ -151,6 +151,14 @@
.order-container .order-list .order-item .order-body .device-info .device-right .payment-badge.wx-score .badge-text .highlight.data-v-17a44f9d {
font-weight: 500;
}
.order-container .order-list .order-item .order-body .device-info .device-right .payment-badge.member.data-v-17a44f9d {
background: rgba(25, 118, 210, 0.08);
}
.order-container .order-list .order-item .order-body .device-info .device-right .payment-badge.member .badge-text.data-v-17a44f9d {
font-size: 22rpx;
color: #1976D2;
font-weight: 500;
}
.order-container .order-list .order-item .order-body .device-info .device-right .payment-badge.deposit.data-v-17a44f9d {
background: #f5f5f5;
}
@@ -1 +1 @@
<view class="success-container data-v-eb1f1ee2"><view class="status-card data-v-eb1f1ee2"><view class="status-icon success data-v-eb1f1ee2"></view><view class="status-text data-v-eb1f1ee2">归还成功</view><view class="status-desc data-v-eb1f1ee2">您的风扇已归还,费用已从押金中扣除</view></view><view class="order-card data-v-eb1f1ee2"><view class="card-title data-v-eb1f1ee2">订单信息</view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">订单号</text><text class="value data-v-eb1f1ee2">{{a}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">设备号</text><text class="value data-v-eb1f1ee2">{{b}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">使用时长</text><text class="value data-v-eb1f1ee2">{{c}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">套餐时长</text><text class="value data-v-eb1f1ee2">{{d}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">超出时长</text><text class="value data-v-eb1f1ee2">{{e}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">归还时间</text><text class="value data-v-eb1f1ee2">{{f}}</text></view></view><view class="refund-card data-v-eb1f1ee2"><view class="card-title data-v-eb1f1ee2">费用信息</view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">套餐费用</text><text class="value data-v-eb1f1ee2">¥{{g}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">超时费用</text><text class="value data-v-eb1f1ee2">¥{{h}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">总费用</text><text class="value data-v-eb1f1ee2">¥{{i}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">押金</text><text class="value data-v-eb1f1ee2">¥{{j}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">退还金额</text><text class="value highlight data-v-eb1f1ee2">¥{{k}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">退还状态</text><text class="{{['value', 'data-v-eb1f1ee2', m]}}">{{l}}</text></view></view><view class="notice-card data-v-eb1f1ee2"><view class="card-title data-v-eb1f1ee2">退款说明</view><view class="notice-content data-v-eb1f1ee2"><text class="data-v-eb1f1ee2">1. 押金剩余金额需要您手动申请提现</text><text class="data-v-eb1f1ee2">2. 提现申请提交后将在1-3个工作日内退还到原支付账户</text><text class="data-v-eb1f1ee2">3. 如有疑问,请联系客服</text></view></view><view class="button-group data-v-eb1f1ee2"><button wx:if="{{n}}" class="primary-btn data-v-eb1f1ee2" bindtap="{{o}}">申请退款</button><button class="primary-btn data-v-eb1f1ee2" bindtap="{{p}}">返回首页</button></view></view>
<view class="success-container data-v-eb1f1ee2"><view class="status-card data-v-eb1f1ee2"><view class="status-icon success data-v-eb1f1ee2"></view><view class="status-text data-v-eb1f1ee2">归还成功</view><view class="status-desc data-v-eb1f1ee2">您的风扇已归还,费用已从押金中扣除</view></view><view class="order-card data-v-eb1f1ee2"><view class="card-title data-v-eb1f1ee2">订单信息</view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">订单号</text><text class="value data-v-eb1f1ee2">{{a}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">设备号</text><text class="value data-v-eb1f1ee2">{{b}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">使用时长</text><text class="value data-v-eb1f1ee2">{{c}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">套餐时长</text><text class="value data-v-eb1f1ee2">{{d}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">超出时长</text><text class="value data-v-eb1f1ee2">{{e}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">归还时间</text><text class="value data-v-eb1f1ee2">{{f}}</text></view></view><view class="refund-card data-v-eb1f1ee2"><view class="card-title data-v-eb1f1ee2">费用信息</view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">套餐费用</text><text class="value data-v-eb1f1ee2">¥{{g}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">超时费用</text><text class="value data-v-eb1f1ee2">¥{{h}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">总费用</text><text class="value data-v-eb1f1ee2">¥{{i}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">押金</text><text class="value data-v-eb1f1ee2">¥{{j}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">退还金额</text><text class="value highlight data-v-eb1f1ee2">¥{{k}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">退还状态</text><text class="{{['value', 'data-v-eb1f1ee2', m]}}">{{l}}</text></view></view><view class="notice-card data-v-eb1f1ee2"><view class="card-title data-v-eb1f1ee2">退款说明</view><view class="notice-content data-v-eb1f1ee2"><view class="data-v-eb1f1ee2">1. 押金剩余金额需要您手动申请提现</view><view class="data-v-eb1f1ee2">2. 提现申请提交后将在1-3个工作日内退还到原支付账户</view><view class="data-v-eb1f1ee2">3. 如有疑问,请联系客服</view></view></view><view class="button-group data-v-eb1f1ee2"><button wx:if="{{n}}" class="primary-btn data-v-eb1f1ee2" bindtap="{{o}}">申请退款</button><button class="primary-btn data-v-eb1f1ee2" bindtap="{{p}}">返回首页</button></view></view>
-1
View File
@@ -130,7 +130,6 @@
.button-group.data-v-2795c576 {
margin-top: 30px;
display: flex;
flex-direction: column;
gap: 16px;
}
.button-group .primary-btn.data-v-2795c576 {
+216 -61
View File
@@ -18,7 +18,14 @@ const _sfc_main = {
// 默认状态为使用中
payWay: "",
// 新增支付方式字段
orderNo: ""
orderNo: "",
// 新增费用相关字段
depositAmount: "",
packageTime: "",
packagePrice: "",
payAmount: "0.00",
endTime: "",
phone: ""
},
timer: null,
statusCheckTimer: null,
@@ -32,33 +39,15 @@ const _sfc_main = {
};
},
onLoad(options) {
common_vendor.index.__f__("log", "at pages/return/index.vue:120", "Return page loaded with options:", JSON.stringify(options));
common_vendor.index.__f__("log", "at pages/return/index.vue:177", "Return page loaded with options:", JSON.stringify(options));
this.isPageActive = true;
this.orderInfo.orderId = options.orderId || "";
this.deviceId = options.deviceNo || options.deviceId || "";
common_vendor.index.__f__("log", "at pages/return/index.vue:130", `初始化参数: orderId=${this.orderInfo.orderId}, deviceId=${this.deviceId}`);
common_vendor.index.__f__("log", "at pages/return/index.vue:187", `初始化参数: orderId=${this.orderInfo.orderId}, deviceId=${this.deviceId}`);
if (!this.orderInfo.orderId && this.deviceId) {
this.getOrderByDevice();
} else if (this.orderInfo.orderId) {
this.getOrderDetails();
this.startTimer();
this.startStatusCheckTimer();
common_vendor.index.setStorageSync("activeOrderId", this.orderInfo.orderId);
try {
if (this.$orderMonitor) {
this.$orderMonitor.removeOrder({
orderId: this.orderInfo.orderId
});
this.$orderMonitor.addOrder({
orderId: this.orderInfo.orderId
}, "return");
common_vendor.index.__f__("log", "at pages/return/index.vue:157", "订单已添加到监控队列:", this.orderInfo.orderId);
} else {
common_vendor.index.__f__("warn", "at pages/return/index.vue:159", "$orderMonitor 未定义,无法添加订单到监控队列");
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/return/index.vue:162", "添加订单到监控队列失败:", error);
}
} else {
common_vendor.index.showToast({
title: "缺少订单信息",
@@ -72,14 +61,14 @@ const _sfc_main = {
},
// 添加onHide生命周期,处理页面隐藏时的清理工作
onHide() {
common_vendor.index.__f__("log", "at pages/return/index.vue:182", "归还页面隐藏,清理计时器资源和监控服务");
common_vendor.index.__f__("log", "at pages/return/index.vue:213", "归还页面隐藏,清理计时器资源和监控服务");
this.isPageActive = false;
this.clearTimer();
this.clearStatusCheckTimer();
this.removeFromOrderMonitor();
},
onUnload() {
common_vendor.index.__f__("log", "at pages/return/index.vue:194", "归还页面卸载,清理所有资源");
common_vendor.index.__f__("log", "at pages/return/index.vue:225", "归还页面卸载,清理所有资源");
this.isPageActive = false;
this.clearTimer();
this.clearStatusCheckTimer();
@@ -94,15 +83,15 @@ const _sfc_main = {
this.$orderMonitor.removeOrder({
orderId: this.orderInfo.orderId
});
common_vendor.index.__f__("log", "at pages/return/index.vue:216", "订单已从监控队列移除:", this.orderInfo.orderId);
common_vendor.index.__f__("log", "at pages/return/index.vue:247", "订单已从监控队列移除:", this.orderInfo.orderId);
} catch (error) {
common_vendor.index.__f__("error", "at pages/return/index.vue:218", "从监控队列移除订单失败:", error);
common_vendor.index.__f__("error", "at pages/return/index.vue:249", "从监控队列移除订单失败:", error);
}
}
},
// 处理订单完成事件(可由任何地方触发)
handleOrderCompleted(orderData) {
common_vendor.index.__f__("log", "at pages/return/index.vue:224", "收到订单完成事件:", orderData);
common_vendor.index.__f__("log", "at pages/return/index.vue:255", "收到订单完成事件:", orderData);
if (orderData.orderId === this.orderInfo.orderId || orderData.orderNo === this.orderInfo.orderNo) {
this.showReturnSuccessModal(orderData);
}
@@ -136,16 +125,16 @@ const _sfc_main = {
"payment_successful": "支付成功",
"in_used": "使用中",
"payment_failed": "支付失败",
"order_cancelled": "订单取消",
"used_done": "订单完成",
"used_down": "订单完成"
"order_cancelled": "取消",
"used_done": "完成",
"used_down": "完成"
};
return statusMap[this.orderInfo.orderStatus] || "使用中";
},
// 获取订单详情
async getOrderDetails() {
if (!this.isPageActive) {
common_vendor.index.__f__("log", "at pages/return/index.vue:280", "页面已不活跃,跳过订单详情请求");
common_vendor.index.__f__("log", "at pages/return/index.vue:311", "页面已不活跃,跳过订单详情请求");
return;
}
try {
@@ -155,8 +144,8 @@ const _sfc_main = {
const result = await config_user.queryById(this.orderInfo.orderId);
if (result.code === 200 && result.data) {
const orderData = result.data;
common_vendor.index.__f__("log", "at pages/return/index.vue:295", "订单原始数据:", orderData);
common_vendor.index.__f__("log", "at pages/return/index.vue:296", "开始时间字段:", orderData.startTime, typeof orderData.startTime);
common_vendor.index.__f__("log", "at pages/return/index.vue:326", "订单原始数据:", orderData);
common_vendor.index.__f__("log", "at pages/return/index.vue:327", "开始时间字段:", orderData.startTime, typeof orderData.startTime);
if (orderData.orderStatus) {
this.orderInfo.orderStatus = orderData.orderStatus;
}
@@ -169,12 +158,32 @@ const _sfc_main = {
return;
}
this.updateOrderInfo(orderData);
common_vendor.index.__f__("log", "at pages/return/index.vue:323", "更新后的开始时间:", this.orderInfo.startTime);
common_vendor.index.__f__("log", "at pages/return/index.vue:354", "更新后的开始时间:", this.orderInfo.startTime);
if (this.orderInfo.orderStatus === "in_used") {
this.startTimer();
this.startStatusCheckTimer();
common_vendor.index.setStorageSync("activeOrderId", this.orderInfo.orderId);
try {
if (this.$orderMonitor) {
this.$orderMonitor.removeOrder({
orderId: this.orderInfo.orderId
});
this.$orderMonitor.addOrder({
orderId: this.orderInfo.orderId
}, "return");
common_vendor.index.__f__("log", "at pages/return/index.vue:377", "订单已添加到监控队列:", this.orderInfo.orderId);
} else {
common_vendor.index.__f__("warn", "at pages/return/index.vue:379", "$orderMonitor 未定义,无法添加订单到监控队列");
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/return/index.vue:382", "添加订单到监控队列失败:", error);
}
}
} else {
throw new Error(result.msg || "获取订单详情失败");
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/return/index.vue:328", "获取订单详情错误:", error);
common_vendor.index.__f__("error", "at pages/return/index.vue:389", "获取订单详情错误:", error);
common_vendor.index.showToast({
title: error.message || "获取订单信息失败",
icon: "none"
@@ -208,21 +217,39 @@ const _sfc_main = {
this.orderInfo._rawStartTime = orderData.startTime;
if (orderData.startTime) {
try {
common_vendor.index.__f__("log", "at pages/return/index.vue:379", "API返回的开始时间:", orderData.startTime);
common_vendor.index.__f__("log", "at pages/return/index.vue:440", "API返回的开始时间:", orderData.startTime);
this.orderInfo.startTime = orderData.startTime;
} catch (e) {
common_vendor.index.__f__("error", "at pages/return/index.vue:383", "更新开始时间错误:", e);
common_vendor.index.__f__("error", "at pages/return/index.vue:444", "更新开始时间错误:", e);
this.orderInfo.startTime = "未知";
}
} else {
common_vendor.index.__f__("warn", "at pages/return/index.vue:387", "API返回的订单数据中没有startTime字段");
common_vendor.index.__f__("warn", "at pages/return/index.vue:448", "API返回的订单数据中没有startTime字段");
if (orderData.createTime) {
common_vendor.index.__f__("log", "at pages/return/index.vue:390", "使用createTime作为备选:", orderData.createTime);
common_vendor.index.__f__("log", "at pages/return/index.vue:451", "使用createTime作为备选:", orderData.createTime);
this.orderInfo.startTime = orderData.createTime;
} else {
this.orderInfo.startTime = "未知";
}
}
if (orderData.depositAmount) {
this.orderInfo.depositAmount = orderData.depositAmount;
}
if (orderData.packageTime) {
this.orderInfo.packageTime = orderData.packageTime;
}
if (orderData.packagePrice) {
this.orderInfo.packagePrice = orderData.packagePrice;
}
if (orderData.payAmount) {
this.orderInfo.payAmount = orderData.payAmount;
}
if (orderData.endTime) {
this.orderInfo.endTime = orderData.endTime;
}
if (orderData.phone) {
this.orderInfo.phone = orderData.phone;
}
if (orderData.orderNo) {
this.orderInfo.orderNo = orderData.orderNo;
}
@@ -235,21 +262,21 @@ const _sfc_main = {
this.clearTimer();
this.timer = setInterval(() => {
if (this.isPageActive) {
common_vendor.index.__f__("log", "at pages/return/index.vue:415", "执行定时更新订单信息");
common_vendor.index.__f__("log", "at pages/return/index.vue:497", "执行定时更新订单信息");
this.getOrderDetails();
} else {
common_vendor.index.__f__("log", "at pages/return/index.vue:418", "页面已不活跃,停止计时器");
common_vendor.index.__f__("log", "at pages/return/index.vue:500", "页面已不活跃,停止计时器");
this.clearTimer();
}
}, 6e4);
common_vendor.index.__f__("log", "at pages/return/index.vue:423", "已启动使用时长更新计时器");
common_vendor.index.__f__("log", "at pages/return/index.vue:505", "已启动使用时长更新计时器");
},
// 清除定时器
clearTimer() {
if (this.timer) {
clearInterval(this.timer);
this.timer = null;
common_vendor.index.__f__("log", "at pages/return/index.vue:431", "已清除使用时长更新计时器");
common_vendor.index.__f__("log", "at pages/return/index.vue:513", "已清除使用时长更新计时器");
}
},
// 清除状态检查定时器
@@ -257,7 +284,7 @@ const _sfc_main = {
if (this.statusCheckTimer) {
clearInterval(this.statusCheckTimer);
this.statusCheckTimer = null;
common_vendor.index.__f__("log", "at pages/return/index.vue:440", "已清除归还状态检查计时器");
common_vendor.index.__f__("log", "at pages/return/index.vue:522", "已清除归还状态检查计时器");
}
},
// 开始状态检查定时器
@@ -267,7 +294,7 @@ const _sfc_main = {
this.statusCheckTimer = setInterval(() => {
if (this.isPageActive) {
this.currentStatusChecks++;
common_vendor.index.__f__("log", "at pages/return/index.vue:454", `执行归还状态检查 (${this.currentStatusChecks}/${this.maxStatusChecks})`);
common_vendor.index.__f__("log", "at pages/return/index.vue:536", `执行归还状态检查 (${this.currentStatusChecks}/${this.maxStatusChecks})`);
this.checkReturnStatus();
if (this.currentStatusChecks >= this.maxStatusChecks) {
this.clearStatusCheckTimer();
@@ -278,11 +305,11 @@ const _sfc_main = {
});
}
} else {
common_vendor.index.__f__("log", "at pages/return/index.vue:469", "页面已不活跃,停止状态检查计时器");
common_vendor.index.__f__("log", "at pages/return/index.vue:551", "页面已不活跃,停止状态检查计时器");
this.clearStatusCheckTimer();
}
}, this.statusCheckInterval);
common_vendor.index.__f__("log", "at pages/return/index.vue:474", "已启动归还状态检查计时器");
common_vendor.index.__f__("log", "at pages/return/index.vue:556", "已启动归还状态检查计时器");
},
// 通过设备号查询使用中的订单
async getOrderByDevice() {
@@ -298,10 +325,10 @@ const _sfc_main = {
"Clientid": common_vendor.index.getStorageSync("client_id")
}
});
common_vendor.index.__f__("log", "at pages/return/index.vue:496", "通过设备号查询订单结果:", JSON.stringify(inUseRes));
common_vendor.index.__f__("log", "at pages/return/index.vue:578", "通过设备号查询订单结果:", JSON.stringify(inUseRes));
if (inUseRes.statusCode === 200 && inUseRes.data.code === 200 && inUseRes.data.data) {
const inUseOrder = inUseRes.data.data;
common_vendor.index.__f__("log", "at pages/return/index.vue:500", "使用中的订单:", inUseOrder);
common_vendor.index.__f__("log", "at pages/return/index.vue:582", "使用中的订单:", inUseOrder);
this.orderInfo.orderId = inUseOrder.orderId;
if (inUseOrder.orderStatus) {
this.orderInfo.orderStatus = inUseOrder.orderStatus;
@@ -310,17 +337,15 @@ const _sfc_main = {
this.orderInfo.payWay = inUseOrder.payWay;
}
if (inUseOrder.startTime) {
common_vendor.index.__f__("log", "at pages/return/index.vue:517", "inUse API返回的开始时间:", inUseOrder.startTime);
common_vendor.index.__f__("log", "at pages/return/index.vue:599", "inUse API返回的开始时间:", inUseOrder.startTime);
this.orderInfo.startTime = inUseOrder.startTime;
}
this.getOrderDetails();
this.startTimer();
this.startStatusCheckTimer();
} else {
throw new Error("未找到使用中的订单");
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/return/index.vue:531", "通过设备号查询订单失败:", error);
common_vendor.index.__f__("error", "at pages/return/index.vue:609", "通过设备号查询订单失败:", error);
common_vendor.index.showToast({
title: error.message || "获取订单信息失败",
icon: "none"
@@ -339,7 +364,7 @@ const _sfc_main = {
await this.getOrderDetails();
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/return/index.vue:554", "检查归还状态失败:", error);
common_vendor.index.__f__("error", "at pages/return/index.vue:632", "检查归还状态失败:", error);
}
},
// 返回首页
@@ -347,25 +372,155 @@ const _sfc_main = {
common_vendor.index.reLaunch({
url: "/pages/index/index"
});
},
// 查看订单详情
viewOrderDetails() {
common_vendor.index.navigateTo({
url: `/pages/order/return-success?orderId=${this.orderInfo.orderId}`
});
},
expressRetrunOrder() {
common_vendor.index.showLoading();
setTimeout(() => {
common_vendor.index.hideLoading();
common_vendor.index.showModal({
title: "提示",
content: "计费暂停,是否前往填写归还信息",
confirmText: "立即前往",
cancelText: "稍后填写",
success: (res) => {
if (res.confirm) {
common_vendor.index.navigateTo({
url: `/pages/expressReturn/addExpressReturn?orderId=${this.orderInfo.orderId}`
});
}
}
});
}, 3e3);
},
// 取消订单
handleCancelOrder() {
common_vendor.index.showModal({
title: "确认取消",
content: "确定要取消此订单吗?",
success: async (res) => {
if (res.confirm) {
try {
common_vendor.index.showLoading({
title: "处理中"
});
const result = await config_user.cancelOrder({
orderId: this.orderInfo.orderId
});
if (result.code === 200) {
common_vendor.index.hideLoading();
common_vendor.index.showToast({
title: "订单已取消",
icon: "success"
});
await this.getOrderDetails();
} else {
throw new Error(result.msg || "取消订单失败");
}
} catch (error) {
common_vendor.index.hideLoading();
common_vendor.index.showToast({
title: error.message || "取消订单失败",
icon: "none"
});
}
}
}
});
},
// 立即支付
handlePayment() {
common_vendor.index.navigateTo({
url: `/pages/order/payment?orderId=${this.orderInfo.orderId}`
});
},
// 格式化时间
formatTime(minutes) {
if (!minutes)
return "";
const mins = parseInt(minutes);
if (mins < 60) {
return `${mins}分钟`;
} else {
const hours = Math.floor(mins / 60);
const remainingMins = mins % 60;
return remainingMins > 0 ? `${hours}小时${remainingMins}分钟` : `${hours}小时`;
}
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: common_vendor.t($options.getOrderStatusText()),
b: common_vendor.t($data.orderInfo.orderNo),
b: common_vendor.t($data.orderInfo.orderNo || "-"),
c: common_vendor.t($data.deviceId),
d: $data.orderInfo.payWay == "wx_score_pay"
}, $data.orderInfo.payWay == "wx_score_pay" ? {
e: common_assets._imports_0$3
} : $data.orderInfo.payWay == "wx_member_pay" ? {} : $data.orderInfo.payWay == "wx_pay" ? {} : {}, {
f: $data.orderInfo.payWay == "wx_member_pay",
g: $data.orderInfo.payWay == "wx_pay",
h: common_vendor.t($data.orderInfo.startTime),
i: $data.orderInfo.endTime
}, $data.orderInfo.endTime ? {
j: common_vendor.t($data.orderInfo.endTime)
} : {}, {
f: common_vendor.t($data.orderInfo.startTime),
g: common_vendor.t($data.orderInfo.usedTime),
h: common_vendor.t($data.orderInfo.currentFee)
}, {}, {
l: common_vendor.o((...args) => $options.checkReturnStatus && $options.checkReturnStatus(...args)),
m: common_vendor.o((...args) => $options.goToHome && $options.goToHome(...args))
});
k: $data.orderInfo.orderStatus === "in_used"
}, $data.orderInfo.orderStatus === "in_used" ? {
l: common_vendor.t($data.orderInfo.usedTime)
} : {}, {
m: $data.orderInfo.orderStatus === "in_used"
}, $data.orderInfo.orderStatus === "in_used" ? {
n: common_vendor.t($data.orderInfo.currentFee)
} : {}, {
o: $data.orderInfo.phone
}, $data.orderInfo.phone ? {
p: common_vendor.t($data.orderInfo.phone)
} : {}, {}, {
t: $data.orderInfo.depositAmount || $data.orderInfo.packageTime
}, $data.orderInfo.depositAmount || $data.orderInfo.packageTime ? common_vendor.e({
v: $data.orderInfo.depositAmount
}, $data.orderInfo.depositAmount ? {
w: common_vendor.t($data.orderInfo.depositAmount)
} : {}, {
x: $data.orderInfo.packageTime && $data.orderInfo.packagePrice
}, $data.orderInfo.packageTime && $data.orderInfo.packagePrice ? {
y: common_vendor.t($data.orderInfo.packagePrice),
z: common_vendor.t($options.formatTime($data.orderInfo.packageTime))
} : {}, {
A: common_vendor.t($data.orderInfo.payAmount || 0)
}) : {}, {
B: $data.orderInfo.orderStatus === "in_used"
}, $data.orderInfo.orderStatus === "in_used" ? {} : {}, {
C: $data.orderInfo.orderStatus === "in_used"
}, $data.orderInfo.orderStatus === "in_used" ? {
D: common_vendor.o((...args) => $options.checkReturnStatus && $options.checkReturnStatus(...args))
} : {}, {
E: $data.orderInfo.orderStatus === "in_used"
}, $data.orderInfo.orderStatus === "in_used" ? {
F: common_vendor.o((...args) => $options.goToHome && $options.goToHome(...args))
} : {}, {
G: $data.orderInfo.orderStatus === "used_done" || $data.orderInfo.orderStatus === "used_down"
}, $data.orderInfo.orderStatus === "used_done" || $data.orderInfo.orderStatus === "used_down" ? {
H: common_vendor.o((...args) => $options.goToHome && $options.goToHome(...args))
} : {}, {
I: $data.orderInfo.orderStatus === "used_done" || $data.orderInfo.orderStatus === "used_down"
}, $data.orderInfo.orderStatus === "used_done" || $data.orderInfo.orderStatus === "used_down" ? {
J: common_vendor.o((...args) => $options.viewOrderDetails && $options.viewOrderDetails(...args))
} : {}, {
K: $data.orderInfo.orderStatus === "waiting_for_payment"
}, $data.orderInfo.orderStatus === "waiting_for_payment" ? {
L: common_vendor.o((...args) => $options.handleCancelOrder && $options.handleCancelOrder(...args))
} : {}, {
M: $data.orderInfo.orderStatus === "waiting_for_payment"
}, $data.orderInfo.orderStatus === "waiting_for_payment" ? {
N: common_vendor.o((...args) => $options.handlePayment && $options.handlePayment(...args))
} : {});
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-6d22bdf8"]]);
wx.createPage(MiniProgramPage);
+1 -1
View File
@@ -1 +1 @@
<view class="return-container data-v-6d22bdf8"><view class="order-card data-v-6d22bdf8"><view class="order-header data-v-6d22bdf8"><text class="title data-v-6d22bdf8">{{a}}</text><text class="order-no data-v-6d22bdf8">订单号:{{b}}</text></view><view class="device-info data-v-6d22bdf8"><view class="device-left data-v-6d22bdf8"><view class="device-name data-v-6d22bdf8">共享风扇</view><view class="device-id data-v-6d22bdf8">设备号:{{c}}</view></view><view class="device-right data-v-6d22bdf8"><view wx:if="{{d}}" class="payment-badge wx-score data-v-6d22bdf8"><image src="{{e}}" mode="aspectFit" class="badge-icon data-v-6d22bdf8"></image><view class="badge-text data-v-6d22bdf8"><text class="data-v-6d22bdf8">微信支付分</text><text class="divider data-v-6d22bdf8">|</text><text class="highlight data-v-6d22bdf8">免押租借</text></view></view><view wx:else class="payment-badge deposit data-v-6d22bdf8"><text class="badge-text data-v-6d22bdf8">押金租借</text></view></view></view><view class="time-info data-v-6d22bdf8"><view class="time-item data-v-6d22bdf8"><text class="label data-v-6d22bdf8">开始时间</text><text class="value data-v-6d22bdf8">{{f}}</text></view><view class="time-item data-v-6d22bdf8"><text class="label data-v-6d22bdf8">已使用时长</text><text class="value highlight data-v-6d22bdf8">{{g}}</text></view><view class="time-item data-v-6d22bdf8"><text class="label data-v-6d22bdf8">当前费用</text><text class="value data-v-6d22bdf8">¥{{h}}</text></view></view><view wx:if="{{false}}" class="debug-info data-v-6d22bdf8"><view class="debug-title data-v-6d22bdf8">调试信息</view><view class="debug-item data-v-6d22bdf8">原始开始时间: {{i}}</view><view class="debug-item data-v-6d22bdf8">处理后开始时间: {{j}}</view><view class="debug-item data-v-6d22bdf8">订单状态: {{k}}</view></view></view><view class="notice-card data-v-6d22bdf8"><view class="notice-title data-v-6d22bdf8">归还说明</view><view class="notice-list data-v-6d22bdf8"><view class="notice-item data-v-6d22bdf8"><view class="dot data-v-6d22bdf8"></view><text class="data-v-6d22bdf8">请确保设备完好无损</text></view><view class="notice-item data-v-6d22bdf8"><view class="dot data-v-6d22bdf8"></view><text class="data-v-6d22bdf8">将风扇插入原位置或空闲插口</text></view><view class="notice-item data-v-6d22bdf8"><view class="dot data-v-6d22bdf8"></view><text class="data-v-6d22bdf8">系统将自动检测归还并处理退款</text></view><view class="notice-item data-v-6d22bdf8"><view class="dot data-v-6d22bdf8"></view><text class="data-v-6d22bdf8">归还成功后将自动跳转到成功页面</text></view></view></view><view class="bottom-bar data-v-6d22bdf8"><view class="action-item secondary data-v-6d22bdf8" bindtap="{{l}}">刷新状态</view><view class="action-item primary data-v-6d22bdf8" bindtap="{{m}}">返回首页</view></view></view>
<view class="return-container data-v-6d22bdf8"><view class="order-card data-v-6d22bdf8"><view class="order-header data-v-6d22bdf8"><text class="title data-v-6d22bdf8">{{a}}</text><text class="order-no data-v-6d22bdf8">订单号:{{b}}</text></view><view class="device-info data-v-6d22bdf8"><view class="device-left data-v-6d22bdf8"><view class="device-name data-v-6d22bdf8">共享风扇</view><view class="device-id data-v-6d22bdf8">设备号:{{c}}</view></view><view class="device-right data-v-6d22bdf8"><view wx:if="{{d}}" class="payment-badge wx-score data-v-6d22bdf8"><image src="{{e}}" mode="aspectFit" class="badge-icon data-v-6d22bdf8"></image><view class="badge-text data-v-6d22bdf8"><text class="data-v-6d22bdf8">微信支付分</text><text class="divider data-v-6d22bdf8">|</text><text class="highlight data-v-6d22bdf8">免押租借</text></view></view><view wx:elif="{{f}}" class="payment-badge member data-v-6d22bdf8"><text class="badge-text data-v-6d22bdf8">会员订单</text></view><view wx:elif="{{g}}" class="payment-badge deposit data-v-6d22bdf8"><text class="badge-text data-v-6d22bdf8">押金租借</text></view></view></view><view class="time-info data-v-6d22bdf8"><view class="time-item data-v-6d22bdf8"><text class="label data-v-6d22bdf8">开始时间</text><text class="value data-v-6d22bdf8">{{h}}</text></view><view wx:if="{{i}}" class="time-item data-v-6d22bdf8"><text class="label data-v-6d22bdf8">结束时间</text><text class="value data-v-6d22bdf8">{{j}}</text></view><view wx:if="{{k}}" class="time-item data-v-6d22bdf8"><text class="label data-v-6d22bdf8">已使用时长</text><text class="value highlight data-v-6d22bdf8">{{l}}</text></view><view wx:if="{{m}}" class="time-item data-v-6d22bdf8"><text class="label data-v-6d22bdf8">当前费用</text><text class="value data-v-6d22bdf8">¥{{n}}</text></view><view wx:if="{{o}}" class="time-item data-v-6d22bdf8"><text class="label data-v-6d22bdf8">联系电话</text><text class="value data-v-6d22bdf8">{{p}}</text></view></view><view wx:if="{{false}}" class="debug-info data-v-6d22bdf8"><view class="debug-title data-v-6d22bdf8">调试信息</view><view class="debug-item data-v-6d22bdf8">原始开始时间: {{q}}</view><view class="debug-item data-v-6d22bdf8">处理后开始时间: {{r}}</view><view class="debug-item data-v-6d22bdf8">订单状态: {{s}}</view></view></view><view wx:if="{{t}}" class="notice-card data-v-6d22bdf8"><view class="notice-title data-v-6d22bdf8">费用信息</view><view class="notice-list data-v-6d22bdf8"><view wx:if="{{v}}" class="notice-item data-v-6d22bdf8"><view class="dot data-v-6d22bdf8"></view><text class="data-v-6d22bdf8">押金:¥{{w}}</text></view><view wx:if="{{x}}" class="notice-item data-v-6d22bdf8"><view class="dot data-v-6d22bdf8"></view><text class="data-v-6d22bdf8">套餐:¥{{y}}元 / {{z}}</text></view><view class="notice-item data-v-6d22bdf8"><view class="dot data-v-6d22bdf8"></view><text class="data-v-6d22bdf8">合计:¥{{A}}</text></view></view></view><view wx:if="{{B}}" class="notice-card data-v-6d22bdf8"><view class="notice-title data-v-6d22bdf8">归还说明</view><view class="notice-list data-v-6d22bdf8"><view class="notice-item data-v-6d22bdf8"><view class="dot data-v-6d22bdf8"></view><text class="data-v-6d22bdf8">请确保设备完好无损</text></view><view class="notice-item data-v-6d22bdf8"><view class="dot data-v-6d22bdf8"></view><text class="data-v-6d22bdf8">将风扇插入原位置或空闲插口</text></view><view class="notice-item data-v-6d22bdf8"><view class="dot data-v-6d22bdf8"></view><text class="data-v-6d22bdf8">系统将自动检测归还并处理退款</text></view><view class="notice-item data-v-6d22bdf8"><view class="dot data-v-6d22bdf8"></view><text class="data-v-6d22bdf8">归还成功后将自动跳转到成功页面</text></view></view></view><view class="bottom-bar data-v-6d22bdf8"><view wx:if="{{C}}" class="action-item secondary data-v-6d22bdf8" bindtap="{{D}}"> 刷新状态</view><view wx:if="{{E}}" class="action-item primary data-v-6d22bdf8" bindtap="{{F}}">返回首页</view><view wx:if="{{G}}" class="action-item secondary data-v-6d22bdf8" bindtap="{{H}}">返回首页</view><view wx:if="{{I}}" class="action-item primary data-v-6d22bdf8" bindtap="{{J}}">查看详情</view><view wx:if="{{K}}" class="action-item secondary data-v-6d22bdf8" bindtap="{{L}}">取消订单</view><view wx:if="{{M}}" class="action-item primary data-v-6d22bdf8" bindtap="{{N}}">立即支付</view></view></view>
+8
View File
@@ -102,6 +102,14 @@
.return-container .order-card .device-info .device-right .payment-badge.wx-score .badge-text .highlight.data-v-6d22bdf8 {
font-weight: 500;
}
.return-container .order-card .device-info .device-right .payment-badge.member.data-v-6d22bdf8 {
background: rgba(25, 118, 210, 0.08);
}
.return-container .order-card .device-info .device-right .payment-badge.member .badge-text.data-v-6d22bdf8 {
font-size: 22rpx;
color: #1976D2;
font-weight: 500;
}
.return-container .order-card .device-info .device-right .payment-badge.deposit.data-v-6d22bdf8 {
background: #f5f5f5;
}
@@ -3,5 +3,18 @@
"projectname": "fs",
"setting": {
"compileHotReLoad": true
},
"condition": {
"miniprogram": {
"list": [
{
"name": "pages/order/success",
"pathName": "pages/order/success",
"query": "",
"scene": null,
"launchMode": "default"
}
]
}
}
}
+36 -27
View File
@@ -109,7 +109,8 @@ class OrderMonitor {
*/
async checkOrderStatus(orderId) {
try {
common_vendor.index.__f__("log", "at utils/orderMonitor.js:137", `检查订单 ${orderId} 的状态`);
const currentTime = /* @__PURE__ */ new Date();
common_vendor.index.__f__("log", "at utils/orderMonitor.js:138", `检查订单 ${orderId} 的状态`);
const result = await config_user.queryById(orderId);
if (result.code === 200 && result.data) {
const orderData = result.data;
@@ -120,35 +121,43 @@ class OrderMonitor {
pageName
});
if (orderData.orderStatus === "used_done" || orderData.orderStatus === "used_down") {
common_vendor.index.__f__("log", "at utils/orderMonitor.js:153", `订单 ${orderId} 已完成!`);
common_vendor.index.$emit("orderCompleted", orderData);
common_vendor.index.showToast({
title: "风扇归还成功",
icon: "success",
duration: 2e3
});
const innerAudioContext = common_vendor.index.createInnerAudioContext();
innerAudioContext.src = "/static/audio/return_success.mp3";
innerAudioContext.play();
this.removeOrder({ orderId });
setTimeout(() => {
common_vendor.index.showModal({
title: "归还成功",
content: "风扇已归还成功,剩余押金将退还到您的账户",
confirmText: "查看详情",
success: (res) => {
if (res.confirm) {
common_vendor.index.redirectTo({
url: `/pages/order/return-success?orderId=${orderId}`
});
}
}
common_vendor.index.__f__("log", "at utils/orderMonitor.js:154", `订单 ${orderId} 已完成!`);
let shouldNotify = true;
if (orderData.endTime) {
const endTime = new Date(orderData.endTime);
const timeDiff = Math.abs(currentTime - endTime) / (1e3 * 60);
if (timeDiff > 3) {
common_vendor.index.__f__("log", "at utils/orderMonitor.js:165", `订单 ${orderId} 完成时间与当前时间相差${timeDiff.toFixed(2)}分钟,超过3分钟,不进行提醒`);
shouldNotify = false;
}
}
if (shouldNotify) {
common_vendor.index.$emit("orderCompleted", orderData);
common_vendor.index.showToast({
title: "风扇归还成功",
icon: "success",
duration: 2e3
});
}, 500);
setTimeout(() => {
common_vendor.index.showModal({
title: "归还成功",
content: "风扇已归还成功,剩余押金将退还到您的账户",
confirmText: "查看详情",
success: (res) => {
if (res.confirm) {
common_vendor.index.redirectTo({
url: `/pages/order/return-success?orderId=${orderId}`
});
}
}
});
}, 500);
}
this.removeOrder({ orderId });
}
}
} catch (error) {
common_vendor.index.__f__("error", "at utils/orderMonitor.js:192", `检查订单 ${orderId} 状态出错:`, error);
common_vendor.index.__f__("error", "at utils/orderMonitor.js:209", `检查订单 ${orderId} 状态出错:`, error);
}
}
}
@@ -158,7 +167,7 @@ common_vendor.index.onAppRoute((route) => {
const pageSegments = pagePath.split("/");
const pageName = pageSegments[pageSegments.length - 1];
orderMonitor.setActivePage(pageName || null);
common_vendor.index.__f__("log", "at utils/orderMonitor.js:209", "页面切换:", pagePath, "当前活跃页面:", pageName);
common_vendor.index.__f__("log", "at utils/orderMonitor.js:226", "页面切换:", pagePath, "当前活跃页面:", pageName);
});
const initOrderMonitor = () => {
const lastActiveOrderId = common_vendor.index.getStorageSync("activeOrderId");