diff --git a/config/url.js b/config/url.js index 64212cb..6bbc572 100644 --- a/config/url.js +++ b/config/url.js @@ -1,5 +1,5 @@ // export const URL = "https://my.gxfs123.com/api" //正式服务器 export const URL = "https://unifans.gxfs123.com/api" //测试服务器 -// export const URL = "http://192.168.10.70:8080" //本地调试 +// export const URL = "http://192.168.10.3:8080" //本地调试 export const appid = "wx2165f0be356ae7a9" //小程序appid \ No newline at end of file diff --git a/manifest.json b/manifest.json index 9173d92..3b03061 100644 --- a/manifest.json +++ b/manifest.json @@ -54,7 +54,13 @@ "setting" : { "urlCheck" : false }, - "usingComponents" : true + "usingComponents" : true, + // "requiredPrivateInfos" : [ "getPhoneNumber" ], + "permission" : { + "scope.getPhoneNumber" : { + "desc" : "您的手机号将用于登录和订单服务" + } + } }, "mp-alipay" : { "usingComponents" : true diff --git a/pages/device/detail.vue b/pages/device/detail.vue index 8da0bb4..b62955c 100644 --- a/pages/device/detail.vue +++ b/pages/device/detail.vue @@ -126,6 +126,27 @@ @click="handleRent('wx-pay')"> 无法免押点这里> + + + + + + + 授权获取手机号 + + + + 为了提供更好的服务,需要授权获取您的手机号 + + + + 暂不授权 + + + + @@ -151,7 +172,9 @@ URL } from "@/config/url.js" import { - initiateWeChatScorePayment + initiateWeChatScorePayment, + getUserInfo, + getUserPhoneNumber } from '@/util/index.js' // 响应式状态 @@ -166,7 +189,8 @@ }) const isLoggedIn = ref(true) const phoneNumber = ref('') - + const showPhoneAuthPopup = ref(false) + // 生命周期 onLoad 钩子 onLoad((options) => { deviceId.value = options.deviceNo @@ -174,6 +198,116 @@ console.log(options.deviceNo) fetchDeviceInfo() }) + + onMounted(()=>{ + checkUserPhone() + }) + + const checkUserPhone = async () => { + try { + const userInfoRes = await getUserInfo() + console.log(userInfoRes.data.phone, 'getUserInfoPhone') + + if (userInfoRes.code == 200 && userInfoRes.data && userInfoRes.data.phone) { + phoneNumber.value = userInfoRes.data.phone + } else { + // 如果没有手机号,显示授权弹窗 + showPhoneAuthPopup.value = true + } + } catch (error) { + console.error('获取用户信息失败:', error) + } + } + + // 处理获取手机号 + const onGetPhoneNumber = (e) => { + console.log('getPhoneNumber event:', e.detail) + + // 用户拒绝授权的情况 + if (e.detail.errMsg && e.detail.errMsg.includes('deny')) { + uni.showToast({ + title: '需要授权手机号才能使用设备', + icon: 'none' + }) + return + } + + // 获取到授权code + if (e.detail.code) { + uni.showLoading({ + title: '获取中...' + }) + + console.log('获取到的授权code:', e.detail.code) + + // 添加 try-catch 以捕获任何 Promise 外部的错误 + try { + getUserPhoneNumber(e.detail.code) + .then(res => { + console.log('获取手机号API响应原始数据:', JSON.stringify(res)) + uni.hideLoading() + + // 不立即抛出错误,而是记录问题并继续处理 + if (!res) { + console.error('API返回数据为空') + uni.showModal({ + title: '数据异常', + content: 'API返回为空', + showCancel: false + }) + return + } + + // 检查响应格式 + console.log('响应code:', res.code, '响应类型:', typeof res.code) + console.log('是否有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 + + uni.showToast({ + title: '手机号获取成功', + icon: 'success' + }) + } else { + // 记录详细信息,不抛出错误 + console.warn('获取手机号响应异常:', res.msg || '未知错误') + uni.showModal({ + title: '获取手机号异常', + content: `状态码: ${res.code}, 消息: ${res.msg || '无'}`, + showCancel: false + }) + } + }) + .catch(err => { + uni.hideLoading() + console.error('获取手机号码失败(catch):', err) + + // 显示更详细的错误信息 + let errMsg = err.message || err.toString() + uni.showModal({ + title: '获取手机号失败', + content: '错误信息: ' + errMsg, + showCancel: false + }) + }) + } catch (outerError) { + uni.hideLoading() + console.error('获取手机号外部错误:', outerError) + uni.showModal({ + title: '意外错误', + content: '处理过程发生异常: ' + (outerError.message || outerError), + showCancel: false + }) + } + } else { + uni.showToast({ + title: '获取授权码失败', + icon: 'none' + }) + } + } // 检查登录状态和订单 const fetchDeviceInfo = async () => { @@ -253,9 +387,15 @@ showLoginTip() return } + + // 检查是否有手机号,如果没有则提示授权 + if (!phoneNumber.value) { + showPhoneAuthPopup.value = true + return + } - // 直接提交订单,不显示确认对话框 - submitRentOrder(payWay); + // 提交订单 + submitRentOrder(payWay) } const selectedPkg = reactive({ @@ -761,4 +901,106 @@ } } } + + /* 手机号授权弹窗样式 */ + .phone-auth-popup { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 1000; + display: flex; + align-items: center; + justify-content: center; + background-color: rgba(0, 0, 0, 0.5); + } + + .popup-mask { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + } + + .popup-content { + background-color: #fff; + border-radius: 24rpx; + box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.15); + width: 90%; + max-width: 500rpx; + padding: 40rpx 30rpx; + position: relative; + z-index: 1001; + display: flex; + flex-direction: column; + align-items: center; + } + + .popup-header { + margin-bottom: 30rpx; + text-align: center; + } + + .popup-title { + font-size: 36rpx; + font-weight: bold; + color: #333; + } + + .popup-body { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + margin-bottom: 30rpx; + } + + .auth-desc { + font-size: 28rpx; + color: #666; + text-align: center; + margin-bottom: 30rpx; + line-height: 1.6; + } + + .auth-btn { + width: 100%; + height: 92rpx; + border-radius: 46rpx; + background: linear-gradient(135deg, #07c160, #10d673); + color: #fff; + font-size: 32rpx; + font-weight: 600; + display: flex; + align-items: center; + justify-content: center; + border: none; + margin-bottom: 20rpx; + + &:active { + transform: scale(0.98); + opacity: 0.9; + } + } + + .auth-cancel { + width: 100%; + height: 92rpx; + border-radius: 46rpx; + background-color: #f5f7fa; + color: #333; + font-size: 32rpx; + font-weight: 600; + display: flex; + align-items: center; + justify-content: center; + border: none; + + &:active { + transform: scale(0.98); + opacity: 0.9; + } + } \ No newline at end of file diff --git a/pages/index/index.vue b/pages/index/index.vue index 1e5a9b0..a65d749 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -104,6 +104,27 @@ + + + + + + + 授权获取手机号 + + + + 为了提供更好的服务和紧急联系,需要授权获取您的手机号 + + + + 暂不授权 + + + + @@ -131,8 +152,6 @@ console.log(scanResult.path); let deviceNo = getQueryString(scanResult.path, 'deviceNo') - console.log('扫码路径:', scanResult.path) - console.log('解析到的设备号:', deviceNo) if (!deviceNo) { uni.showToast({ @@ -144,7 +163,7 @@ // 直接在当前页面查询是否有使用中的订单,避免跳转到中间页面 if (!uni.getStorageSync('token')) { - await wxLogin() + await wxLogin() } // 检查是否有使用中的订单 @@ -157,13 +176,10 @@ } }) - console.log('使用中订单检查结果:', JSON.stringify(inUseRes)) - if (inUseRes.statusCode == 200 && inUseRes.data.code == 200 && inUseRes.data.data) { // 存在使用中的订单,跳转到归还页面 const inUseOrder = inUseRes.data.data - console.log('检测到使用中订单,准备跳转:', inUseOrder) - + // 直接使用reLaunch而不是navigateTo以确保页面跳转 uni.reLaunch({ url: `/pages/return/index?orderId=${inUseOrder.orderId}&deviceId=${deviceNo || inUseOrder.deviceNo}` @@ -187,14 +203,10 @@ if (orderRes.statusCode == 200 && orderRes.data.code == 200 && orderRes.data.data) { // 存在待支付订单,跳转到支付页面 const unpaidOrder = orderRes.data.data - console.log('检测到待支付订单,准备跳转:', unpaidOrder) uni.navigateTo({ url: `/pages/order/payment?orderId=${unpaidOrder.orderId}` }) } else { - // 修改:直接获取设备信息,而不是跳转到详情页面 - console.log('无待支付订单,获取设备信息, deviceNo:', deviceNo) - try { // 获取设备信息 const deviceInfoRes = await getDeviceInfo(deviceNo) diff --git a/unpackage/dist/build/mp-weixin/app.json b/unpackage/dist/build/mp-weixin/app.json index 9888174..a54a622 100644 --- a/unpackage/dist/build/mp-weixin/app.json +++ b/unpackage/dist/build/mp-weixin/app.json @@ -39,5 +39,10 @@ } ] }, + "permission": { + "scope.getPhoneNumber": { + "desc": "您的手机号将用于登录和订单服务" + } + }, "usingComponents": {} } \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/pages/device/detail.js b/unpackage/dist/build/mp-weixin/pages/device/detail.js index 6272934..11c27c9 100644 --- a/unpackage/dist/build/mp-weixin/pages/device/detail.js +++ b/unpackage/dist/build/mp-weixin/pages/device/detail.js @@ -1 +1 @@ -"use strict";const e=require("../../common/vendor.js"),a=require("../../common/assets.js"),t=require("../../config/user.js"),o=require("../../util/index.js"),i={__name:"detail",setup(i){const r=e.ref({}),n=e.ref(""),d=e.ref("一号教学楼大厅"),s=e.ref(95),c=e.ref(!1),l=e.reactive({text:"可使用",class:"available"}),u=e.ref(!0),v=e.ref("");e.onLoad((e=>{n.value=e.deviceNo,g(),console.log(e.deviceNo),p()}));const p=async()=>{const e=await t.getDeviceInfo(n.value);200==e.code&&(r.value=e.data.device||{},r.value.deviceLocation?d.value=r.value.deviceLocation:e.data.position&&e.data.position.name&&(d.value=e.data.position.name),r.value.status&&("online"===r.value.status?(l.text="可使用",l.class="available"):"offline"===r.value.status&&(l.text="离线",l.class="offline")))},g=async()=>{try{const a=await e.index.$api.checkActiveOrder();if(a.hasOrder){const t=a.order;"waiting_for_payment"===t.status?e.index.redirectTo({url:`/pages/order/payment?orderId=${t.orderId}&deviceId=${n.value}`}):"in_used"===t.status&&e.index.redirectTo({url:`/pages/device/return?deviceId=${n.value}`})}}catch(a){e.index.showToast({title:"订单状态查询失败",icon:"none"})}},m=a=>{u.value?w(a):e.index.showModal({title:"提示",content:"请先登录后再操作",confirmText:"去登录",success:a=>{a.confirm&&e.index.navigateTo({url:"/pages/login/index"})}})},x=e.reactive({time:"1小时",price:"5.00"}),f=e.ref("99.00"),w=async a=>{try{e.index.showLoading({title:"处理中"});const s=await t.rentPowerBank(n.value,v.value);if(200!==s.code)throw new Error(s.msg||"设备租借失败");const c=s.data;if("wx-pay"==a){e.index.hideLoading();const a=await t.getOrderByOrderNo(c.orderNo);console.log(a);try{let e=0;e=x.time.includes("小时")?60*parseInt(x.time):x.time.includes("分钟")?parseInt(x.time):60*parseInt(x.time);const a=await t.updateOrderPackage({orderId:c.orderId,packageTime:e,packagePrice:parseFloat(x.price)});200!==a.code?console.warn("更新订单套餐信息失败:",a.msg):console.log("订单套餐信息已提前更新")}catch(i){console.error("更新订单套餐信息时出错:",i)}const o=parseFloat(r.value.depositAmount),n=(o+parseFloat(x.price)).toFixed(2);e.index.hideLoading(),e.index.redirectTo({url:`/pages/order/payment?orderId=${c.orderId}&packageTimeHours=${x.time.replace("小时","")}&packagePrice=${x.price}&totalAmount=${n}&depositAmount=${f.value}${r.value&&r.value.feeConfig?"&feeConfig="+encodeURIComponent(r.value.feeConfig):""}`})}else if("wx-score-pay"==a){e.index.hideLoading();const a=await t.getOrderByOrderNoScore(c.orderNo);if(e.index.hideLoading(),a&&200===a.code)try{if("0"==(await o.initiateWeChatScorePayment(a)).errCode){const a=await t.getOrderByOrderNoScorePayStatus(c.orderNo);console.log(a.data.orderStatus),"in_used"==a.data.orderStatus?(e.index.showToast({title:"设备租借成功",icon:"success"}),setTimeout((()=>{e.index.redirectTo({url:"/pages/order/index"})}),1500)):"waiting_for_payment"==a.data.orderStatus&&(e.index.showToast({title:"设备租借失败,订单已取消",icon:"error"}),await t.cancelOrder({orderId:c.orderNo}),setTimeout((()=>{e.index.switchTab({url:"/pages/index/index"})}),1500))}}catch(d){e.index.showToast({title:"支付分调用失败,请重试",icon:"none"})}else e.index.showToast({title:(null==a?void 0:a.msg)||"获取支付参数失败",icon:"none"})}}catch(s){e.index.hideLoading(),e.index.showToast({title:s.message||"租借失败,请重试",icon:"none"})}};return(t,o)=>({a:e.t(l.text),b:e.n(l.class),c:e.t(n.value),d:a._imports_0$3,e:e.t(d.value),f:a._imports_1$2,g:s.value<20?1:"",h:e.t(s.value),i:a._imports_0$2,j:e.t(c.value?"归还设备":"免押金租借"),k:c.value?1:"",l:e.o((e=>m("wx-score-pay"))),m:e.o((e=>m("wx-pay")))})}},r=e._export_sfc(i,[["__scopeId","data-v-2faa63bb"]]);wx.createPage(r); +"use strict";const e=require("../../common/vendor.js"),o=require("../../common/assets.js"),t=require("../../config/user.js"),a=require("../../util/index.js"),n={__name:"detail",setup(n){const i=e.ref({}),r=e.ref(""),d=e.ref("一号教学楼大厅"),s=e.ref(95),c=e.ref(!1),l=e.reactive({text:"可使用",class:"available"}),u=e.ref(!0),g=e.ref(""),v=e.ref(!1);e.onLoad((e=>{r.value=e.deviceNo,m(),console.log(e.deviceNo),x()})),e.onMounted((()=>{h()}));const h=async()=>{try{const e=await a.getUserInfo();console.log(e.data.phone,"getUserInfoPhone"),200==e.code&&e.data&&e.data.phone?g.value=e.data.phone:v.value=!0}catch(e){console.error("获取用户信息失败:",e)}},p=o=>{if(console.log("getPhoneNumber event:",o.detail),o.detail.errMsg&&o.detail.errMsg.includes("deny"))e.index.showToast({title:"需要授权手机号才能使用设备",icon:"none"});else if(o.detail.code){e.index.showLoading({title:"获取中..."}),console.log("获取到的授权code:",o.detail.code);try{a.getUserPhoneNumber(o.detail.code).then((o=>{if(console.log("获取手机号API响应原始数据:",JSON.stringify(o)),e.index.hideLoading(),!o)return console.error("API返回数据为空"),void e.index.showModal({title:"数据异常",content:"API返回为空",showCancel:!1});console.log("响应code:",o.code,"响应类型:",typeof o.code),console.log("是否有data:",!!o.data,"是否有phone:",o.data&&!!o.data.phone),200==o.code&&o.data&&o.data.phoneNumber?(g.value=o.data.phoneNumber,v.value=!1,e.index.showToast({title:"手机号获取成功",icon:"success"})):(console.warn("获取手机号响应异常:",o.msg||"未知错误"),e.index.showModal({title:"获取手机号异常",content:`状态码: ${o.code}, 消息: ${o.msg||"无"}`,showCancel:!1}))})).catch((o=>{e.index.hideLoading(),console.error("获取手机号码失败(catch):",o);let t=o.message||o.toString();e.index.showModal({title:"获取手机号失败",content:"错误信息: "+t,showCancel:!1})}))}catch(t){e.index.hideLoading(),console.error("获取手机号外部错误:",t),e.index.showModal({title:"意外错误",content:"处理过程发生异常: "+(t.message||t),showCancel:!1})}}else e.index.showToast({title:"获取授权码失败",icon:"none"})},x=async()=>{const e=await t.getDeviceInfo(r.value);200==e.code&&(i.value=e.data.device||{},i.value.deviceLocation?d.value=i.value.deviceLocation:e.data.position&&e.data.position.name&&(d.value=e.data.position.name),i.value.status&&("online"===i.value.status?(l.text="可使用",l.class="available"):"offline"===i.value.status&&(l.text="离线",l.class="offline")))},m=async()=>{try{const o=await e.index.$api.checkActiveOrder();if(o.hasOrder){const t=o.order;"waiting_for_payment"===t.status?e.index.redirectTo({url:`/pages/order/payment?orderId=${t.orderId}&deviceId=${r.value}`}):"in_used"===t.status&&e.index.redirectTo({url:`/pages/device/return?deviceId=${r.value}`})}}catch(o){e.index.showToast({title:"订单状态查询失败",icon:"none"})}},w=o=>{u.value?g.value?I(o):v.value=!0:e.index.showModal({title:"提示",content:"请先登录后再操作",confirmText:"去登录",success:o=>{o.confirm&&e.index.navigateTo({url:"/pages/login/index"})}})},f=e.reactive({time:"1小时",price:"5.00"}),y=e.ref("99.00"),I=async o=>{try{e.index.showLoading({title:"处理中"});const s=await t.rentPowerBank(r.value,g.value);if(200!==s.code)throw new Error(s.msg||"设备租借失败");const c=s.data;if("wx-pay"==o){e.index.hideLoading();const o=await t.getOrderByOrderNo(c.orderNo);console.log(o);try{let e=0;e=f.time.includes("小时")?60*parseInt(f.time):f.time.includes("分钟")?parseInt(f.time):60*parseInt(f.time);const o=await t.updateOrderPackage({orderId:c.orderId,packageTime:e,packagePrice:parseFloat(f.price)});200!==o.code?console.warn("更新订单套餐信息失败:",o.msg):console.log("订单套餐信息已提前更新")}catch(n){console.error("更新订单套餐信息时出错:",n)}const a=parseFloat(i.value.depositAmount),r=(a+parseFloat(f.price)).toFixed(2);e.index.hideLoading(),e.index.redirectTo({url:`/pages/order/payment?orderId=${c.orderId}&packageTimeHours=${f.time.replace("小时","")}&packagePrice=${f.price}&totalAmount=${r}&depositAmount=${y.value}${i.value&&i.value.feeConfig?"&feeConfig="+encodeURIComponent(i.value.feeConfig):""}`})}else if("wx-score-pay"==o){e.index.hideLoading();const o=await t.getOrderByOrderNoScore(c.orderNo);if(e.index.hideLoading(),o&&200===o.code)try{if("0"==(await a.initiateWeChatScorePayment(o)).errCode){const o=await t.getOrderByOrderNoScorePayStatus(c.orderNo);console.log(o.data.orderStatus),"in_used"==o.data.orderStatus?(e.index.showToast({title:"设备租借成功",icon:"success"}),setTimeout((()=>{e.index.redirectTo({url:"/pages/order/index"})}),1500)):"waiting_for_payment"==o.data.orderStatus&&(e.index.showToast({title:"设备租借失败,订单已取消",icon:"error"}),await t.cancelOrder({orderId:c.orderNo}),setTimeout((()=>{e.index.switchTab({url:"/pages/index/index"})}),1500))}}catch(d){e.index.showToast({title:"支付分调用失败,请重试",icon:"none"})}else e.index.showToast({title:(null==o?void 0:o.msg)||"获取支付参数失败",icon:"none"})}}catch(s){e.index.hideLoading(),e.index.showToast({title:s.message||"租借失败,请重试",icon:"none"})}};return(t,a)=>e.e({a:e.t(l.text),b:e.n(l.class),c:e.t(r.value),d:o._imports_0$3,e:e.t(d.value),f:o._imports_1$2,g:s.value<20?1:"",h:e.t(s.value),i:o._imports_0$2,j:e.t(c.value?"归还设备":"免押金租借"),k:c.value?1:"",l:e.o((e=>w("wx-score-pay"))),m:e.o((e=>w("wx-pay"))),n:v.value},v.value?{o:e.o((()=>{})),p:e.o(p),q:e.o((e=>v.value=!1))}:{})}},i=e._export_sfc(n,[["__scopeId","data-v-981f4200"]]);wx.createPage(i); diff --git a/unpackage/dist/build/mp-weixin/pages/device/detail.wxml b/unpackage/dist/build/mp-weixin/pages/device/detail.wxml index 4e189f7..bdaf5eb 100644 --- a/unpackage/dist/build/mp-weixin/pages/device/detail.wxml +++ b/unpackage/dist/build/mp-weixin/pages/device/detail.wxml @@ -1 +1 @@ -{{a}}共享风扇设备号:{{c}}当前位置{{e}}电池电量{{h}}%计费规则¥5.00/小时封顶 ¥99前15分钟内归还免费不足60分钟按60分钟计费持续计费至99元视为买断使用须知请在使用前检查设备是否完好请在指定区域内使用设备归还时请确保设备完好,避免损坏微信支付分|支付分200分及以上优享 无法免押点这里> \ No newline at end of file +{{a}}共享风扇设备号:{{c}}当前位置{{e}}电池电量{{h}}%计费规则¥5.00/小时封顶 ¥99前15分钟内归还免费不足60分钟按60分钟计费持续计费至99元视为买断使用须知请在使用前检查设备是否完好请在指定区域内使用设备归还时请确保设备完好,避免损坏微信支付分|支付分200分及以上优享 无法免押点这里>授权获取手机号为了提供更好的服务,需要授权获取您的手机号暂不授权 \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/pages/device/detail.wxss b/unpackage/dist/build/mp-weixin/pages/device/detail.wxss index f503517..5b286f1 100644 --- a/unpackage/dist/build/mp-weixin/pages/device/detail.wxss +++ b/unpackage/dist/build/mp-weixin/pages/device/detail.wxss @@ -1 +1 @@ -.container.data-v-2faa63bb{min-height:100vh;background-color:#f5f7fa;padding:30rpx 30rpx 300rpx;box-sizing:border-box}.device-header.data-v-2faa63bb{display:flex;flex-direction:column;margin-bottom:30rpx}.device-header .device-status-card.data-v-2faa63bb{display:flex;align-items:center;margin-bottom:20rpx}.device-header .device-status-card .status-indicator.data-v-2faa63bb{width:20rpx;height:20rpx;border-radius:50%;margin-right:10rpx}.device-header .device-status-card.available .status-indicator.data-v-2faa63bb{background-color:#10c469;box-shadow:0 0 10rpx rgba(16,196,105,.5)}.device-header .device-status-card.available .status-text.data-v-2faa63bb{color:#10c469}.device-header .device-status-card.offline .status-indicator.data-v-2faa63bb{background-color:#9a9a9a}.device-header .device-status-card.offline .status-text.data-v-2faa63bb{color:#9a9a9a}.device-header .device-status-card .status-text.data-v-2faa63bb{font-size:28rpx;font-weight:500}.device-header .device-title .name.data-v-2faa63bb{font-size:48rpx;font-weight:700;color:#333}.device-header .device-title .device-meta.data-v-2faa63bb{margin-top:10rpx;display:flex;align-items:center}.device-header .device-title .device-meta .id-label.data-v-2faa63bb{font-size:26rpx;color:#999}.device-header .device-title .device-meta .id-value.data-v-2faa63bb{font-size:26rpx;color:#666}.card.data-v-2faa63bb{background-color:#fff;border-radius:24rpx;box-shadow:0 4rpx 24rpx rgba(0,0,0,.03);padding:30rpx;margin-bottom:30rpx}.card .card-header.data-v-2faa63bb{display:flex;align-items:center;justify-content:space-between;margin-bottom:24rpx}.card .card-header .card-title.data-v-2faa63bb{font-size:32rpx;font-weight:600;color:#333}.device-info-card .card-row.data-v-2faa63bb{display:flex;justify-content:space-between}.device-info-card .card-item.data-v-2faa63bb{display:flex;align-items:center;flex:1}.device-info-card .card-item .item-icon.data-v-2faa63bb{width:60rpx;height:60rpx;border-radius:12rpx;margin-right:20rpx;display:flex;align-items:center;justify-content:center;font-size:30rpx;color:#fff}.device-info-card .card-item .item-icon.location-icon.data-v-2faa63bb{background:linear-gradient(135deg,#40c9ff,#32a5ff)}.device-info-card .card-item .item-icon.battery-icon.data-v-2faa63bb{background:linear-gradient(135deg,#33db92,#10c469)}.device-info-card .card-item .item-icon.battery-icon.battery-low.data-v-2faa63bb{background:linear-gradient(135deg,#ff7676,#f54f4f)}.device-info-card .card-item .item-content.data-v-2faa63bb{display:flex;flex-direction:column}.device-info-card .card-item .item-content .item-label.data-v-2faa63bb{font-size:26rpx;color:#999;margin-bottom:4rpx}.device-info-card .card-item .item-content .item-value.data-v-2faa63bb{font-size:30rpx;color:#333;font-weight:500}.pricing-card .pricing-banner.data-v-2faa63bb{background:linear-gradient(to right,#f8f9ff,#e8f0ff);border-radius:16rpx;padding:30rpx;margin-bottom:30rpx;display:flex;flex-direction:column;align-items:center}.pricing-card .pricing-banner .pricing-main.data-v-2faa63bb{display:flex;align-items:flex-end}.pricing-card .pricing-banner .pricing-main .price.data-v-2faa63bb{font-size:60rpx;font-weight:700;color:#ff6b6b}.pricing-card .pricing-banner .pricing-main .unit.data-v-2faa63bb{font-size:28rpx;color:#999;margin-left:4rpx;margin-bottom:10rpx}.pricing-card .pricing-banner .cap-price.data-v-2faa63bb{margin-top:10rpx;font-size:26rpx;color:#666;background-color:rgba(255,107,107,.1);padding:6rpx 20rpx;border-radius:20rpx}.pricing-card .pricing-rules .rule-item.data-v-2faa63bb{display:flex;align-items:center;margin-bottom:16rpx}.pricing-card .pricing-rules .rule-item.data-v-2faa63bb:last-child{margin-bottom:0}.pricing-card .pricing-rules .rule-item .rule-dot.data-v-2faa63bb{width:10rpx;height:10rpx;border-radius:50%;background-color:#ff6b6b;margin-right:16rpx}.pricing-card .pricing-rules .rule-item .rule-text.data-v-2faa63bb{font-size:28rpx;color:#666}.pricing-card .pricing-rules .rule-item .rule-text .highlight.data-v-2faa63bb{color:#ff6b6b;font-weight:700}.phone-card .phone-input-container .input-wrapper.data-v-2faa63bb{display:flex;align-items:center;height:88rpx;background-color:#f5f7fa;border-radius:16rpx;padding:0 24rpx}.phone-card .phone-input-container .input-wrapper .prefix.data-v-2faa63bb{font-size:28rpx;color:#666;margin-right:16rpx;padding-right:16rpx;border-right:1px solid #e0e0e0}.phone-card .phone-input-container .input-wrapper .phone-input.data-v-2faa63bb{flex:1;height:88rpx;font-size:28rpx;color:#333;padding-left:10rpx}.phone-card .phone-input-container .phone-tip.data-v-2faa63bb{font-size:24rpx;color:#999;margin-top:16rpx;display:block}.notice-card .notice-items .notice-item.data-v-2faa63bb{display:flex;align-items:flex-start;margin-bottom:20rpx}.notice-card .notice-items .notice-item.data-v-2faa63bb:last-child{margin-bottom:0}.notice-card .notice-items .notice-item .notice-dot.data-v-2faa63bb{width:10rpx;height:10rpx;border-radius:50%;background-color:#32a5ff;margin-right:16rpx;margin-top:12rpx}.notice-card .notice-items .notice-item .notice-text.data-v-2faa63bb{font-size:28rpx;color:#666;line-height:1.6}.footer.data-v-2faa63bb{position:fixed;bottom:0;left:0;right:0;background-color:#fff;padding:20rpx 30rpx;padding-bottom:calc(20rpx + env(safe-area-inset-bottom));box-shadow:0 -2rpx 20rpx rgba(0,0,0,.05);z-index:100;display:flex;flex-direction:column;--footer-height: 180rpx}.footer .wechat-credit.data-v-2faa63bb{display:flex;align-items:center;justify-content:center;margin-bottom:20rpx}.footer .wechat-credit .wx-icon.data-v-2faa63bb{width:50rpx;height:40rpx;margin-right:10rpx}.footer .wechat-credit .credit-text.data-v-2faa63bb{font-size:24rpx;color:#07c160;display:flex;align-items:center}.footer .wechat-credit .credit-text .credit-divider.data-v-2faa63bb{margin:0 10rpx}.footer .wechat-credit .credit-text .credit-score.data-v-2faa63bb{font-weight:500}.footer .rent-button.data-v-2faa63bb{height:92rpx;border-radius:46rpx;background:linear-gradient(135deg,#07c160,#10d673);color:#fff;font-size:32rpx;font-weight:600;display:flex;align-items:center;justify-content:center;border:none;width:90%}.footer .rent-button.return-button.data-v-2faa63bb{background:linear-gradient(135deg,#ff9800,#ffb74d)}.footer .rent-button.data-v-2faa63bb:active{transform:scale(.98);opacity:.9} +.container.data-v-981f4200{min-height:100vh;background-color:#f5f7fa;padding:30rpx 30rpx 300rpx;box-sizing:border-box}.device-header.data-v-981f4200{display:flex;flex-direction:column;margin-bottom:30rpx}.device-header .device-status-card.data-v-981f4200{display:flex;align-items:center;margin-bottom:20rpx}.device-header .device-status-card .status-indicator.data-v-981f4200{width:20rpx;height:20rpx;border-radius:50%;margin-right:10rpx}.device-header .device-status-card.available .status-indicator.data-v-981f4200{background-color:#10c469;box-shadow:0 0 10rpx rgba(16,196,105,.5)}.device-header .device-status-card.available .status-text.data-v-981f4200{color:#10c469}.device-header .device-status-card.offline .status-indicator.data-v-981f4200{background-color:#9a9a9a}.device-header .device-status-card.offline .status-text.data-v-981f4200{color:#9a9a9a}.device-header .device-status-card .status-text.data-v-981f4200{font-size:28rpx;font-weight:500}.device-header .device-title .name.data-v-981f4200{font-size:48rpx;font-weight:700;color:#333}.device-header .device-title .device-meta.data-v-981f4200{margin-top:10rpx;display:flex;align-items:center}.device-header .device-title .device-meta .id-label.data-v-981f4200{font-size:26rpx;color:#999}.device-header .device-title .device-meta .id-value.data-v-981f4200{font-size:26rpx;color:#666}.card.data-v-981f4200{background-color:#fff;border-radius:24rpx;box-shadow:0 4rpx 24rpx rgba(0,0,0,.03);padding:30rpx;margin-bottom:30rpx}.card .card-header.data-v-981f4200{display:flex;align-items:center;justify-content:space-between;margin-bottom:24rpx}.card .card-header .card-title.data-v-981f4200{font-size:32rpx;font-weight:600;color:#333}.device-info-card .card-row.data-v-981f4200{display:flex;justify-content:space-between}.device-info-card .card-item.data-v-981f4200{display:flex;align-items:center;flex:1}.device-info-card .card-item .item-icon.data-v-981f4200{width:60rpx;height:60rpx;border-radius:12rpx;margin-right:20rpx;display:flex;align-items:center;justify-content:center;font-size:30rpx;color:#fff}.device-info-card .card-item .item-icon.location-icon.data-v-981f4200{background:linear-gradient(135deg,#40c9ff,#32a5ff)}.device-info-card .card-item .item-icon.battery-icon.data-v-981f4200{background:linear-gradient(135deg,#33db92,#10c469)}.device-info-card .card-item .item-icon.battery-icon.battery-low.data-v-981f4200{background:linear-gradient(135deg,#ff7676,#f54f4f)}.device-info-card .card-item .item-content.data-v-981f4200{display:flex;flex-direction:column}.device-info-card .card-item .item-content .item-label.data-v-981f4200{font-size:26rpx;color:#999;margin-bottom:4rpx}.device-info-card .card-item .item-content .item-value.data-v-981f4200{font-size:30rpx;color:#333;font-weight:500}.pricing-card .pricing-banner.data-v-981f4200{background:linear-gradient(to right,#f8f9ff,#e8f0ff);border-radius:16rpx;padding:30rpx;margin-bottom:30rpx;display:flex;flex-direction:column;align-items:center}.pricing-card .pricing-banner .pricing-main.data-v-981f4200{display:flex;align-items:flex-end}.pricing-card .pricing-banner .pricing-main .price.data-v-981f4200{font-size:60rpx;font-weight:700;color:#ff6b6b}.pricing-card .pricing-banner .pricing-main .unit.data-v-981f4200{font-size:28rpx;color:#999;margin-left:4rpx;margin-bottom:10rpx}.pricing-card .pricing-banner .cap-price.data-v-981f4200{margin-top:10rpx;font-size:26rpx;color:#666;background-color:rgba(255,107,107,.1);padding:6rpx 20rpx;border-radius:20rpx}.pricing-card .pricing-rules .rule-item.data-v-981f4200{display:flex;align-items:center;margin-bottom:16rpx}.pricing-card .pricing-rules .rule-item.data-v-981f4200:last-child{margin-bottom:0}.pricing-card .pricing-rules .rule-item .rule-dot.data-v-981f4200{width:10rpx;height:10rpx;border-radius:50%;background-color:#ff6b6b;margin-right:16rpx}.pricing-card .pricing-rules .rule-item .rule-text.data-v-981f4200{font-size:28rpx;color:#666}.pricing-card .pricing-rules .rule-item .rule-text .highlight.data-v-981f4200{color:#ff6b6b;font-weight:700}.phone-card .phone-input-container .input-wrapper.data-v-981f4200{display:flex;align-items:center;height:88rpx;background-color:#f5f7fa;border-radius:16rpx;padding:0 24rpx}.phone-card .phone-input-container .input-wrapper .prefix.data-v-981f4200{font-size:28rpx;color:#666;margin-right:16rpx;padding-right:16rpx;border-right:1px solid #e0e0e0}.phone-card .phone-input-container .input-wrapper .phone-input.data-v-981f4200{flex:1;height:88rpx;font-size:28rpx;color:#333;padding-left:10rpx}.phone-card .phone-input-container .phone-tip.data-v-981f4200{font-size:24rpx;color:#999;margin-top:16rpx;display:block}.notice-card .notice-items .notice-item.data-v-981f4200{display:flex;align-items:flex-start;margin-bottom:20rpx}.notice-card .notice-items .notice-item.data-v-981f4200:last-child{margin-bottom:0}.notice-card .notice-items .notice-item .notice-dot.data-v-981f4200{width:10rpx;height:10rpx;border-radius:50%;background-color:#32a5ff;margin-right:16rpx;margin-top:12rpx}.notice-card .notice-items .notice-item .notice-text.data-v-981f4200{font-size:28rpx;color:#666;line-height:1.6}.footer.data-v-981f4200{position:fixed;bottom:0;left:0;right:0;background-color:#fff;padding:20rpx 30rpx;padding-bottom:calc(20rpx + env(safe-area-inset-bottom));box-shadow:0 -2rpx 20rpx rgba(0,0,0,.05);z-index:100;display:flex;flex-direction:column;--footer-height: 180rpx}.footer .wechat-credit.data-v-981f4200{display:flex;align-items:center;justify-content:center;margin-bottom:20rpx}.footer .wechat-credit .wx-icon.data-v-981f4200{width:50rpx;height:40rpx;margin-right:10rpx}.footer .wechat-credit .credit-text.data-v-981f4200{font-size:24rpx;color:#07c160;display:flex;align-items:center}.footer .wechat-credit .credit-text .credit-divider.data-v-981f4200{margin:0 10rpx}.footer .wechat-credit .credit-text .credit-score.data-v-981f4200{font-weight:500}.footer .rent-button.data-v-981f4200{height:92rpx;border-radius:46rpx;background:linear-gradient(135deg,#07c160,#10d673);color:#fff;font-size:32rpx;font-weight:600;display:flex;align-items:center;justify-content:center;border:none;width:90%}.footer .rent-button.return-button.data-v-981f4200{background:linear-gradient(135deg,#ff9800,#ffb74d)}.footer .rent-button.data-v-981f4200:active{transform:scale(.98);opacity:.9}.phone-auth-popup.data-v-981f4200{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;display:flex;align-items:center;justify-content:center;background-color:rgba(0,0,0,.5)}.popup-mask.data-v-981f4200{position:absolute;top:0;left:0;right:0;bottom:0}.popup-content.data-v-981f4200{background-color:#fff;border-radius:24rpx;box-shadow:0 8rpx 32rpx rgba(0,0,0,.15);width:90%;max-width:500rpx;padding:40rpx 30rpx;position:relative;z-index:1001;display:flex;flex-direction:column;align-items:center}.popup-header.data-v-981f4200{margin-bottom:30rpx;text-align:center}.popup-title.data-v-981f4200{font-size:36rpx;font-weight:700;color:#333}.popup-body.data-v-981f4200{width:100%;display:flex;flex-direction:column;align-items:center;margin-bottom:30rpx}.auth-desc.data-v-981f4200{font-size:28rpx;color:#666;text-align:center;margin-bottom:30rpx;line-height:1.6}.auth-btn.data-v-981f4200{width:100%;height:92rpx;border-radius:46rpx;background:linear-gradient(135deg,#07c160,#10d673);color:#fff;font-size:32rpx;font-weight:600;display:flex;align-items:center;justify-content:center;border:none;margin-bottom:20rpx}.auth-btn.data-v-981f4200:active{transform:scale(.98);opacity:.9}.auth-cancel.data-v-981f4200{width:100%;height:92rpx;border-radius:46rpx;background-color:#f5f7fa;color:#333;font-size:32rpx;font-weight:600;display:flex;align-items:center;justify-content:center;border:none}.auth-cancel.data-v-981f4200:active{transform:scale(.98);opacity:.9} diff --git a/unpackage/dist/build/mp-weixin/pages/index/index.js b/unpackage/dist/build/mp-weixin/pages/index/index.js index adf92ab..2469922 100644 --- a/unpackage/dist/build/mp-weixin/pages/index/index.js +++ b/unpackage/dist/build/mp-weixin/pages/index/index.js @@ -1 +1 @@ -"use strict";const e=require("../../common/vendor.js"),o=require("../../util/index.js"),n=require("../../config/url.js"),t=require("../../config/user.js"),i=require("../../common/assets.js"),a={methods:{async handleScan(){try{const d=await new Promise(((o,n)=>{e.index.scanCode({success:o,fail:n})}));console.log(d.path);let r=o.getQueryString(d.path,"deviceNo");if(console.log("扫码路径:",d.path),console.log("解析到的设备号:",r),!r)return void e.index.showToast({title:"无效的设备二维码",icon:"none"});e.index.getStorageSync("token")||await o.wxLogin();const c=await e.index.request({url:`${n.URL||"http://127.0.0.1:8080"}/app/order/inUse`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(console.log("使用中订单检查结果:",JSON.stringify(c)),200==c.statusCode&&200==c.data.code&&c.data.data){const o=c.data.data;return console.log("检测到使用中订单,准备跳转:",o),e.index.reLaunch({url:`/pages/return/index?orderId=${o.orderId}&deviceId=${r||o.deviceNo}`}),void console.log("已发起页面跳转")}const s=await e.index.request({url:`${n.URL||"http://127.0.0.1:8080"}/app/order/unpaid`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(console.log("待支付订单检查结果:",JSON.stringify(s)),200==s.statusCode&&200==s.data.code&&s.data.data){const o=s.data.data;console.log("检测到待支付订单,准备跳转:",o),e.index.navigateTo({url:`/pages/order/payment?orderId=${o.orderId}`})}else{console.log("无待支付订单,获取设备信息, deviceNo:",r);try{const o=await t.getDeviceInfo(r);if(200==o.code&&o.data&&o.data.device){const n=o.data.device;if(n.feeConfig){console.log("获取到设备feeConfig信息:",n.feeConfig);try{JSON.parse(n.feeConfig);e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}&feeConfig=${encodeURIComponent(n.feeConfig)}`})}catch(i){console.error("解析feeConfig失败:",i),e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}}else e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}else console.error("获取设备信息失败:",o.msg||"未知错误"),e.index.showToast({title:"获取设备信息失败",icon:"none"}),e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}catch(a){console.error("获取设备信息异常:",a),e.index.showToast({title:"获取设备信息失败",icon:"none"}),e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}}}catch(a){console.error("扫码处理失败:",a),e.index.showToast({title:"扫码失败",icon:"none"})}}}};const d=e._export_sfc(a,[["render",function(o,n,t,a,d,r){return{a:i._imports_0,b:i._imports_1,c:e.o(((...e)=>r.handleScan&&r.handleScan(...e)))}}],["__scopeId","data-v-764894e1"]]);wx.createPage(d); +"use strict";const e=require("../../common/vendor.js"),o=require("../../util/index.js"),t=require("../../config/url.js"),n=require("../../config/user.js"),i=require("../../common/assets.js"),a={methods:{async handleScan(){try{const d=await new Promise(((o,t)=>{e.index.scanCode({success:o,fail:t})}));console.log(d.path);let r=o.getQueryString(d.path,"deviceNo");if(!r)return void e.index.showToast({title:"无效的设备二维码",icon:"none"});e.index.getStorageSync("token")||await o.wxLogin();const c=await e.index.request({url:`${t.URL||"http://127.0.0.1:8080"}/app/order/inUse`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200==c.statusCode&&200==c.data.code&&c.data.data){const o=c.data.data;return e.index.reLaunch({url:`/pages/return/index?orderId=${o.orderId}&deviceId=${r||o.deviceNo}`}),void console.log("已发起页面跳转")}const s=await e.index.request({url:`${t.URL||"http://127.0.0.1:8080"}/app/order/unpaid`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(console.log("待支付订单检查结果:",JSON.stringify(s)),200==s.statusCode&&200==s.data.code&&s.data.data){const o=s.data.data;e.index.navigateTo({url:`/pages/order/payment?orderId=${o.orderId}`})}else try{const o=await n.getDeviceInfo(r);if(200==o.code&&o.data&&o.data.device){const t=o.data.device;if(t.feeConfig){console.log("获取到设备feeConfig信息:",t.feeConfig);try{JSON.parse(t.feeConfig);e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}&feeConfig=${encodeURIComponent(t.feeConfig)}`})}catch(i){console.error("解析feeConfig失败:",i),e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}}else e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}else console.error("获取设备信息失败:",o.msg||"未知错误"),e.index.showToast({title:"获取设备信息失败",icon:"none"}),e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}catch(a){console.error("获取设备信息异常:",a),e.index.showToast({title:"获取设备信息失败",icon:"none"}),e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}}catch(a){console.error("扫码处理失败:",a),e.index.showToast({title:"扫码失败",icon:"none"})}}}};const d=e._export_sfc(a,[["render",function(o,t,n,a,d,r){return e.e({a:i._imports_0,b:i._imports_1,c:e.o(((...e)=>r.handleScan&&r.handleScan(...e))),d:o.showPhoneAuthPopup},o.showPhoneAuthPopup?{e:e.o((e=>o.showPhoneAuthPopup=!1)),f:e.o(((...e)=>o.onGetPhoneNumber&&o.onGetPhoneNumber(...e))),g:e.o((e=>o.showPhoneAuthPopup=!1))}:{})}],["__scopeId","data-v-527ff3b8"]]);wx.createPage(d); diff --git a/unpackage/dist/build/mp-weixin/pages/index/index.wxml b/unpackage/dist/build/mp-weixin/pages/index/index.wxml index 0b28732..572bc11 100644 --- a/unpackage/dist/build/mp-weixin/pages/index/index.wxml +++ b/unpackage/dist/build/mp-weixin/pages/index/index.wxml @@ -1 +1 @@ -共享风扇随时随地,享受清凉便捷租赁·品质保障扫码使用扫描设备二维码即可使用或归还收费规则5.0元/小时15分钟内归还免费不足1小时按1小时计费封顶99元,计费达99元视为买断使用流程1扫码弹出2使用风扇3插入归还4结束订单 \ No newline at end of file +共享风扇随时随地,享受清凉便捷租赁·品质保障扫码使用扫描设备二维码即可使用或归还收费规则5.0元/小时15分钟内归还免费不足1小时按1小时计费封顶99元,计费达99元视为买断使用流程1扫码弹出2使用风扇3插入归还4结束订单授权获取手机号为了提供更好的服务和紧急联系,需要授权获取您的手机号暂不授权 \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/pages/index/index.wxss b/unpackage/dist/build/mp-weixin/pages/index/index.wxss index 548fde0..e6df4b8 100644 --- a/unpackage/dist/build/mp-weixin/pages/index/index.wxss +++ b/unpackage/dist/build/mp-weixin/pages/index/index.wxss @@ -1 +1 @@ -.container.data-v-764894e1{min-height:100vh;background-color:#f6f7fb;padding-bottom:40rpx}.header.data-v-764894e1{height:300rpx;background:linear-gradient(135deg,#1e88e5,#29b6f6);position:relative;overflow:hidden}.header .header-bg.data-v-764894e1{position:absolute;left:0;top:0;width:100%;height:100%;z-index:1}.header .header-bg .circle-decoration.data-v-764894e1{position:absolute;border-radius:50%;background:rgba(255,255,255,.1)}.header .header-bg .circle-1.data-v-764894e1{width:240rpx;height:240rpx;right:-60rpx;top:-90rpx}.header .header-bg .circle-2.data-v-764894e1{width:160rpx;height:160rpx;left:-40rpx;bottom:30rpx;background:rgba(255,255,255,.08)}.header .header-bg .wave-decoration.data-v-764894e1{position:absolute;left:0;bottom:0;width:100%;height:40rpx;background-size:auto 100%;opacity:.6}.header .header-content.data-v-764894e1{position:relative;z-index:2;padding:40rpx 40rpx 0;height:100%;display:flex;flex-direction:column;justify-content:space-between}.header .header-content .brand-area.data-v-764894e1{display:flex;align-items:center}.header .header-content .brand-area .brand-logo.data-v-764894e1{width:90rpx;height:90rpx;margin-right:20rpx}.header .header-content .brand-area .brand-text.data-v-764894e1{display:flex;flex-direction:column}.header .header-content .brand-area .brand-text .title.data-v-764894e1{font-size:48rpx;color:#fff;font-weight:700;line-height:1.2;text-shadow:0 2rpx 4rpx rgba(0,0,0,.1)}.header .header-content .brand-area .brand-text .subtitle.data-v-764894e1{font-size:28rpx;color:rgba(255,255,255,.9)}.header .header-content .header-info.data-v-764894e1{display:flex;flex-wrap:wrap;gap:20rpx;margin-bottom:30rpx}.header .header-content .header-info .service-tag.data-v-764894e1{display:flex;align-items:center;background:rgba(255,255,255,.2);border-radius:40rpx;padding:10rpx 20rpx}.header .header-content .header-info .service-tag text.data-v-764894e1{font-size:24rpx;color:#fff}.header .header-content .header-info .service-tag .dot.data-v-764894e1{margin:0 8rpx;font-weight:700}.scan-section.data-v-764894e1{padding:0 30rpx}.scan-section .scan-card.data-v-764894e1{background:#fff;border-radius:16rpx;box-shadow:0 10rpx 30rpx rgba(0,0,0,.05);padding:36rpx 0;display:flex;flex-direction:column;align-items:center}.scan-section .scan-card .scan-btn.data-v-764894e1{width:220rpx;height:220rpx;background:linear-gradient(135deg,#00b0ff,#0091ea);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;margin-bottom:24rpx;box-shadow:0 10rpx 20rpx rgba(0,176,255,.2);position:relative;transition:all .2s ease}.scan-section .scan-card .scan-btn.data-v-764894e1:active{transform:scale(.96)}.scan-section .scan-card .scan-btn .scan-icon.data-v-764894e1{width:80rpx;height:80rpx;margin-bottom:12rpx}.scan-section .scan-card .scan-btn .scan-text.data-v-764894e1{font-size:36rpx;color:#fff;font-weight:500}.scan-section .scan-card .scan-desc.data-v-764894e1{font-size:28rpx;color:#666}.price-card.data-v-764894e1{margin:30rpx;background:#fff;border-radius:16rpx;overflow:hidden;box-shadow:0 6rpx 20rpx rgba(0,0,0,.04)}.price-card .card-header.data-v-764894e1{padding:24rpx 30rpx;background:linear-gradient(to right,#f5f9ff,#fff);border-bottom:2rpx solid #f0f0f0}.price-card .card-header .card-title.data-v-764894e1{font-size:32rpx;font-weight:600;color:#333;position:relative;padding-left:20rpx}.price-card .card-header .card-title.data-v-764894e1:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:6rpx;height:28rpx;background:#2196f3;border-radius:3rpx}.price-card .deposit-free.data-v-764894e1{margin:20rpx 30rpx 0;padding:12rpx 16rpx;background:#f0f9ff;border-radius:8rpx;border-left:4rpx solid #03A9F4;display:flex;align-items:center}.price-card .deposit-free .deposit-icon.data-v-764894e1{width:40rpx;height:40rpx;margin-right:16rpx}.price-card .deposit-free .deposit-text.data-v-764894e1{font-size:26rpx;color:#03a9f4;font-weight:500}.price-card .price-rules.data-v-764894e1{padding:20rpx 30rpx 30rpx}.price-card .price-rules .price-item.data-v-764894e1{display:flex;flex-direction:column;align-items:center;margin-bottom:20rpx}.price-card .price-rules .price-item .price-tag.data-v-764894e1{font-size:60rpx;color:#ff6e00;font-weight:700;line-height:1}.price-card .price-rules .price-item .price-tag .unit.data-v-764894e1{font-size:32rpx;font-weight:400;margin-left:4rpx}.price-card .price-rules .price-item .price-desc.data-v-764894e1{font-size:28rpx;color:#666;margin-top:10rpx}.price-card .price-rules .divider.data-v-764894e1{height:2rpx;background-color:#f0f0f0;margin:20rpx 0 30rpx}.price-card .price-rules .rule-list .rule-item.data-v-764894e1{display:flex;align-items:flex-start;margin-bottom:20rpx}.price-card .price-rules .rule-list .rule-item.data-v-764894e1:last-child{margin-bottom:0}.price-card .price-rules .rule-list .rule-item .rule-dot.data-v-764894e1{width:12rpx;height:12rpx;background:#2196f3;border-radius:50%;margin:12rpx 16rpx 0 0;flex-shrink:0}.price-card .price-rules .rule-list .rule-item text.data-v-764894e1{font-size:28rpx;color:#666;line-height:1.5}.usage-steps.data-v-764894e1{margin:0 30rpx;background:#fff;border-radius:16rpx;box-shadow:0 6rpx 20rpx rgba(0,0,0,.04);overflow:hidden}.usage-steps .steps-header.data-v-764894e1{padding:24rpx 30rpx;background:linear-gradient(to right,#f5f9ff,#fff);border-bottom:2rpx solid #f0f0f0}.usage-steps .steps-header .steps-title.data-v-764894e1{font-size:32rpx;font-weight:600;color:#333;position:relative;padding-left:20rpx}.usage-steps .steps-header .steps-title.data-v-764894e1:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:6rpx;height:28rpx;background:#2196f3;border-radius:3rpx}.usage-steps .steps-container.data-v-764894e1{padding:40rpx 30rpx;display:flex;align-items:center;justify-content:space-between}.usage-steps .steps-container .step-item.data-v-764894e1{display:flex;flex-direction:column;align-items:center;flex:1}.usage-steps .steps-container .step-item .step-icon.data-v-764894e1{width:80rpx;height:80rpx;background:#f0f9ff;border:2rpx solid #e1f5fe;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-bottom:16rpx}.usage-steps .steps-container .step-item .step-icon .step-number.data-v-764894e1{font-size:36rpx;color:#2196f3;font-weight:600}.usage-steps .steps-container .step-item .step-text.data-v-764894e1{font-size:26rpx;color:#666}.usage-steps .steps-container .step-arrow.data-v-764894e1{width:40rpx;height:4rpx;background:#e1f5fe;position:relative}.usage-steps .steps-container .step-arrow.data-v-764894e1:after{content:"";position:absolute;right:0;top:50%;margin-top:-8rpx;border-left:12rpx solid #e1f5fe;border-top:8rpx solid transparent;border-bottom:8rpx solid transparent} +.container.data-v-527ff3b8{min-height:100vh;background-color:#f6f7fb;padding-bottom:40rpx}.header.data-v-527ff3b8{height:300rpx;background:linear-gradient(135deg,#1e88e5,#29b6f6);position:relative;overflow:hidden}.header .header-bg.data-v-527ff3b8{position:absolute;left:0;top:0;width:100%;height:100%;z-index:1}.header .header-bg .circle-decoration.data-v-527ff3b8{position:absolute;border-radius:50%;background:rgba(255,255,255,.1)}.header .header-bg .circle-1.data-v-527ff3b8{width:240rpx;height:240rpx;right:-60rpx;top:-90rpx}.header .header-bg .circle-2.data-v-527ff3b8{width:160rpx;height:160rpx;left:-40rpx;bottom:30rpx;background:rgba(255,255,255,.08)}.header .header-bg .wave-decoration.data-v-527ff3b8{position:absolute;left:0;bottom:0;width:100%;height:40rpx;background-size:auto 100%;opacity:.6}.header .header-content.data-v-527ff3b8{position:relative;z-index:2;padding:40rpx 40rpx 0;height:100%;display:flex;flex-direction:column;justify-content:space-between}.header .header-content .brand-area.data-v-527ff3b8{display:flex;align-items:center}.header .header-content .brand-area .brand-logo.data-v-527ff3b8{width:90rpx;height:90rpx;margin-right:20rpx}.header .header-content .brand-area .brand-text.data-v-527ff3b8{display:flex;flex-direction:column}.header .header-content .brand-area .brand-text .title.data-v-527ff3b8{font-size:48rpx;color:#fff;font-weight:700;line-height:1.2;text-shadow:0 2rpx 4rpx rgba(0,0,0,.1)}.header .header-content .brand-area .brand-text .subtitle.data-v-527ff3b8{font-size:28rpx;color:rgba(255,255,255,.9)}.header .header-content .header-info.data-v-527ff3b8{display:flex;flex-wrap:wrap;gap:20rpx;margin-bottom:30rpx}.header .header-content .header-info .service-tag.data-v-527ff3b8{display:flex;align-items:center;background:rgba(255,255,255,.2);border-radius:40rpx;padding:10rpx 20rpx}.header .header-content .header-info .service-tag text.data-v-527ff3b8{font-size:24rpx;color:#fff}.header .header-content .header-info .service-tag .dot.data-v-527ff3b8{margin:0 8rpx;font-weight:700}.scan-section.data-v-527ff3b8{padding:0 30rpx}.scan-section .scan-card.data-v-527ff3b8{background:#fff;border-radius:16rpx;box-shadow:0 10rpx 30rpx rgba(0,0,0,.05);padding:36rpx 0;display:flex;flex-direction:column;align-items:center}.scan-section .scan-card .scan-btn.data-v-527ff3b8{width:220rpx;height:220rpx;background:linear-gradient(135deg,#00b0ff,#0091ea);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;margin-bottom:24rpx;box-shadow:0 10rpx 20rpx rgba(0,176,255,.2);position:relative;transition:all .2s ease}.scan-section .scan-card .scan-btn.data-v-527ff3b8:active{transform:scale(.96)}.scan-section .scan-card .scan-btn .scan-icon.data-v-527ff3b8{width:80rpx;height:80rpx;margin-bottom:12rpx}.scan-section .scan-card .scan-btn .scan-text.data-v-527ff3b8{font-size:36rpx;color:#fff;font-weight:500}.scan-section .scan-card .scan-desc.data-v-527ff3b8{font-size:28rpx;color:#666}.price-card.data-v-527ff3b8{margin:30rpx;background:#fff;border-radius:16rpx;overflow:hidden;box-shadow:0 6rpx 20rpx rgba(0,0,0,.04)}.price-card .card-header.data-v-527ff3b8{padding:24rpx 30rpx;background:linear-gradient(to right,#f5f9ff,#fff);border-bottom:2rpx solid #f0f0f0}.price-card .card-header .card-title.data-v-527ff3b8{font-size:32rpx;font-weight:600;color:#333;position:relative;padding-left:20rpx}.price-card .card-header .card-title.data-v-527ff3b8:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:6rpx;height:28rpx;background:#2196f3;border-radius:3rpx}.price-card .deposit-free.data-v-527ff3b8{margin:20rpx 30rpx 0;padding:12rpx 16rpx;background:#f0f9ff;border-radius:8rpx;border-left:4rpx solid #03A9F4;display:flex;align-items:center}.price-card .deposit-free .deposit-icon.data-v-527ff3b8{width:40rpx;height:40rpx;margin-right:16rpx}.price-card .deposit-free .deposit-text.data-v-527ff3b8{font-size:26rpx;color:#03a9f4;font-weight:500}.price-card .price-rules.data-v-527ff3b8{padding:20rpx 30rpx 30rpx}.price-card .price-rules .price-item.data-v-527ff3b8{display:flex;flex-direction:column;align-items:center;margin-bottom:20rpx}.price-card .price-rules .price-item .price-tag.data-v-527ff3b8{font-size:60rpx;color:#ff6e00;font-weight:700;line-height:1}.price-card .price-rules .price-item .price-tag .unit.data-v-527ff3b8{font-size:32rpx;font-weight:400;margin-left:4rpx}.price-card .price-rules .price-item .price-desc.data-v-527ff3b8{font-size:28rpx;color:#666;margin-top:10rpx}.price-card .price-rules .divider.data-v-527ff3b8{height:2rpx;background-color:#f0f0f0;margin:20rpx 0 30rpx}.price-card .price-rules .rule-list .rule-item.data-v-527ff3b8{display:flex;align-items:flex-start;margin-bottom:20rpx}.price-card .price-rules .rule-list .rule-item.data-v-527ff3b8:last-child{margin-bottom:0}.price-card .price-rules .rule-list .rule-item .rule-dot.data-v-527ff3b8{width:12rpx;height:12rpx;background:#2196f3;border-radius:50%;margin:12rpx 16rpx 0 0;flex-shrink:0}.price-card .price-rules .rule-list .rule-item text.data-v-527ff3b8{font-size:28rpx;color:#666;line-height:1.5}.usage-steps.data-v-527ff3b8{margin:0 30rpx;background:#fff;border-radius:16rpx;box-shadow:0 6rpx 20rpx rgba(0,0,0,.04);overflow:hidden}.usage-steps .steps-header.data-v-527ff3b8{padding:24rpx 30rpx;background:linear-gradient(to right,#f5f9ff,#fff);border-bottom:2rpx solid #f0f0f0}.usage-steps .steps-header .steps-title.data-v-527ff3b8{font-size:32rpx;font-weight:600;color:#333;position:relative;padding-left:20rpx}.usage-steps .steps-header .steps-title.data-v-527ff3b8:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:6rpx;height:28rpx;background:#2196f3;border-radius:3rpx}.usage-steps .steps-container.data-v-527ff3b8{padding:40rpx 30rpx;display:flex;align-items:center;justify-content:space-between}.usage-steps .steps-container .step-item.data-v-527ff3b8{display:flex;flex-direction:column;align-items:center;flex:1}.usage-steps .steps-container .step-item .step-icon.data-v-527ff3b8{width:80rpx;height:80rpx;background:#f0f9ff;border:2rpx solid #e1f5fe;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-bottom:16rpx}.usage-steps .steps-container .step-item .step-icon .step-number.data-v-527ff3b8{font-size:36rpx;color:#2196f3;font-weight:600}.usage-steps .steps-container .step-item .step-text.data-v-527ff3b8{font-size:26rpx;color:#666}.usage-steps .steps-container .step-arrow.data-v-527ff3b8{width:40rpx;height:4rpx;background:#e1f5fe;position:relative}.usage-steps .steps-container .step-arrow.data-v-527ff3b8:after{content:"";position:absolute;right:0;top:50%;margin-top:-8rpx;border-left:12rpx solid #e1f5fe;border-top:8rpx solid transparent;border-bottom:8rpx solid transparent} diff --git a/unpackage/dist/build/mp-weixin/util/index.js b/unpackage/dist/build/mp-weixin/util/index.js index b8e519d..d4a6c6b 100644 --- a/unpackage/dist/build/mp-weixin/util/index.js +++ b/unpackage/dist/build/mp-weixin/util/index.js @@ -1 +1 @@ -"use strict";const e=require("../common/vendor.js"),n=require("../config/user.js");exports.getQueryString=function(e,n){var o=new RegExp("(^|&|/?)"+n+"=([^&|/?]*)(&|/?|$)","i"),i=e.substr(1).match(o);return null!=i?i[2]:null},exports.getUserInfo=()=>new Promise((async(e,o)=>{e(await n.getMyIndexInfo({isHide:!1}))})),exports.initiateWeChatScorePayment=n=>new Promise(((o,i)=>{n&&n.data&&n.data.package?e.wx$1.openBusinessView({businessType:"wxpayScoreUse",extraData:{mch_id:n.data.mch_id,package:n.data.package},success:e=>{"openBusinessView:ok"===e.errMsg?o(e):i(new Error("支付流程未完成"))},fail:n=>{console.error("微信支付分小程序调用失败",n),e.index.showToast({title:n.errMsg||"支付分接口调用失败",icon:"none"}),i(n)}}):i(new Error("支付参数不完整"))})),exports.wxLogin=()=>new Promise(((o,i)=>{e.index.login({provider:"weixin",success:async s=>{try{if(!s.code)throw new Error("获取微信登录凭证失败");{const i=await n.login({code:s.code,appid:"wx2165f0be356ae7a9"});if(200!==i.code)throw new Error(i.message||"登录失败");e.index.setStorageSync("token",i.data.LoginWxVo.access_token),e.index.setStorageSync("client_id",i.data.LoginWxVo.client_id),o(i.data)}}catch(t){e.index.showToast({title:t.message||"登录失败",icon:"none"}),i(t)}},fail:n=>{e.index.showToast({title:"微信登录失败",icon:"none"}),i(n)}})})); +"use strict";const e=require("../common/vendor.js"),r=require("../config/user.js"),o=require("../config/url.js");exports.getQueryString=function(e,r){var o=new RegExp("(^|&|/?)"+r+"=([^&|/?]*)(&|/?|$)","i"),n=e.substr(1).match(o);return null!=n?n[2]:null},exports.getUserInfo=()=>new Promise((async(e,o)=>{e(await r.getMyIndexInfo({isHide:!1}))})),exports.getUserPhoneNumber=r=>new Promise((async(n,t)=>{try{const s=e.index.getStorageSync("token");if(!s)return void t(new Error("用户未登录"));console.log("开始请求获取手机号,code=",r,"请求地址=",o.URL+"/app/user/getPhoneNumber"),e.index.request({url:o.URL+"/app/user/getPhoneNumber",method:"POST",header:{Authorization:"Bearer "+s,clientId:e.index.getStorageSync("client_id"),"Content-Type":"application/json"},data:{code:r,appid:o.appid},success:e=>{console.log("请求获取手机号接口成功,原始响应:",JSON.stringify(e)),200===e.statusCode?e.data?n(e.data):t(new Error("服务器返回空数据")):t(new Error(`HTTP错误: ${e.statusCode}`))},fail:e=>{console.error("请求获取手机号接口网络错误:",e),t(new Error("请求获取手机号接口失败: "+(e.errMsg||JSON.stringify(e))))}})}catch(s){console.error("获取手机号过程中出现异常:",s),t(new Error("获取手机号异常: "+(s.message||JSON.stringify(s))))}})),exports.initiateWeChatScorePayment=r=>new Promise(((o,n)=>{r&&r.data&&r.data.package?e.wx$1.openBusinessView({businessType:"wxpayScoreUse",extraData:{mch_id:r.data.mch_id,package:r.data.package},success:e=>{"openBusinessView:ok"===e.errMsg?o(e):n(new Error("支付流程未完成"))},fail:r=>{console.error("微信支付分小程序调用失败",r),e.index.showToast({title:r.errMsg||"支付分接口调用失败",icon:"none"}),n(r)}}):n(new Error("支付参数不完整"))})),exports.wxLogin=()=>new Promise(((o,n)=>{e.index.login({provider:"weixin",success:async t=>{try{if(!t.code)throw new Error("获取微信登录凭证失败");{const n=await r.login({code:t.code,appid:"wx2165f0be356ae7a9"});if(200!==n.code)throw new Error(n.message||"登录失败");e.index.setStorageSync("token",n.data.LoginWxVo.access_token),e.index.setStorageSync("client_id",n.data.LoginWxVo.client_id),o(n.data)}}catch(s){e.index.showToast({title:s.message||"登录失败",icon:"none"}),n(s)}},fail:r=>{e.index.showToast({title:"微信登录失败",icon:"none"}),n(r)}})})); diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/config/url.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/config/url.js.map index b15fffa..4b21571 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/config/url.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/config/url.js.map @@ -1 +1 @@ -{"version":3,"file":"url.js","sources":["config/url.js"],"sourcesContent":["// export const URL = \"https://my.gxfs123.com/api\" //正式服务器\r\nexport const URL = \"https://unifans.gxfs123.com/api\" //测试服务器\r\n// export const URL = \"http://192.168.10.70:8080\" \t\t//本地调试\r\n\r\nexport const appid = \"wx2165f0be356ae7a9\" //小程序appid"],"names":[],"mappings":";AACY,MAAC,MAAM;AAGP,MAAC,QAAQ;;;"} \ No newline at end of file +{"version":3,"file":"url.js","sources":["config/url.js"],"sourcesContent":["// export const URL = \"https://my.gxfs123.com/api\" //正式服务器\r\nexport const URL = \"https://unifans.gxfs123.com/api\" //测试服务器\r\n// export const URL = \"http://192.168.10.3:8080\" \t\t//本地调试\r\n\r\nexport const appid = \"wx2165f0be356ae7a9\" //小程序appid"],"names":[],"mappings":";AACY,MAAC,MAAM;AAGP,MAAC,QAAQ;;;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/device/detail.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/device/detail.js.map index 132dce2..afa96d8 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/device/detail.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/device/detail.js.map @@ -1 +1 @@ -{"version":3,"file":"detail.js","sources":["pages/device/detail.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvZGV2aWNlL2RldGFpbC52dWU"],"sourcesContent":["\r\n\r\n\r\n\r\n","import MiniProgramPage from 'D:/uni-fans-score/pages/device/detail.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","reactive","onLoad","uni","getDeviceInfo","rentPowerBank","getOrderByOrderNo","updateOrderPackage","getOrderByOrderNoScore","initiateWeChatScorePayment","res","getOrderByOrderNoScorePayStatus","cancelOrder"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"detail.js","sources":["pages/device/detail.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvZGV2aWNlL2RldGFpbC52dWU"],"sourcesContent":["\r\n\r\n\r\n\r\n","import MiniProgramPage from 'D:/uni-fans-score/pages/device/detail.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","reactive","onLoad","uni","onMounted","getUserInfo","getUserPhoneNumber","getDeviceInfo","rentPowerBank","getOrderByOrderNo","updateOrderPackage","getOrderByOrderNoScore","initiateWeChatScorePayment","res","getOrderByOrderNoScorePayStatus","cancelOrder"],"mappings":"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"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map index 1669345..b93383a 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["pages/index/index.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["\r\n\r\n\r\n\r\n","import MiniProgramPage from 'D:/uni-fans-score/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["uni","getQueryString","wxLogin","URL","getDeviceInfo"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["pages/index/index.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["\r\n\r\n\r\n\r\n","import MiniProgramPage from 'D:/uni-fans-score/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["uni","getQueryString","wxLogin","URL","getDeviceInfo"],"mappings":"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"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/util/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/util/index.js.map index f90c75c..7068d51 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/util/index.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/util/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["util/index.js"],"sourcesContent":["import {\r\n\tlogin,\r\n\tgetMyIndexInfo\r\n} from \"../config/user\"\r\n\r\n// 微信登录方法\r\nexport const wxLogin = () => {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t// 1. 获取微信登录凭证\r\n\t\tuni.login({\r\n\t\t\tprovider: 'weixin',\r\n\t\t\tsuccess: async (loginRes) => {\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (loginRes.code) {\r\n\t\t\t\t\t\t// 2. 发送 code 到后端换取 token\r\n\t\t\t\t\t\tconst result = await login({\r\n\t\t\t\t\t\t\tcode: loginRes.code,\r\n\t\t\t\t\t\t\tappid: \"wx2165f0be356ae7a9\"\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tif (result.code === 200) {\r\n\t\t\t\t\t\t\t// 3. 保存token和用户信息\r\n\r\n\t\t\t\t\t\t\tuni.setStorageSync('token', result.data.LoginWxVo.access_token)\r\n\t\t\t\t\t\t\tuni.setStorageSync('client_id', result.data.LoginWxVo.client_id)\r\n\r\n\t\t\t\t\t\t\tresolve(result.data)\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrow new Error(result.message || '登录失败')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow new Error('获取微信登录凭证失败')\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (error) {\r\n\r\n\t\t\t\t\tuni.showToast({\r\n\t\t\t\t\t\ttitle: error.message || '登录失败',\r\n\t\t\t\t\t\ticon: 'none'\r\n\t\t\t\t\t})\r\n\t\t\t\t\treject(error)\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tfail: (error) => {\r\n\t\t\t\tuni.showToast({\r\n\t\t\t\t\ttitle: '微信登录失败',\r\n\t\t\t\t\ticon: 'none'\r\n\t\t\t\t})\r\n\t\t\t\treject(error)\r\n\t\t\t}\r\n\t\t})\r\n\t})\r\n}\r\n\r\n// 检查登录状态\r\n// export const checkLogin = () => {\r\n// const token = uni.getStorageSync('token')\r\n// return !!token\r\n// }\r\n\r\n// 获取用户信息\r\nexport const getUserInfo = () => {\r\n\r\n\r\n\r\n\treturn new Promise(async (res, rej) => {\r\n\r\n\t\tconst result = await getMyIndexInfo({\r\n\t\t\tisHide: false,\r\n\t\t})\r\n\t\tres(result)\r\n\t})\r\n}\r\n\r\n// 调用微信支付分接口\r\nexport const initiateWeChatScorePayment = (paymentData) => {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t// 确保paymentData包含所需数据\r\n\t\tif (!paymentData || !paymentData.data || !paymentData.data.package) {\r\n\t\t\treject(new Error('支付参数不完整'));\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\t// 使用wx.openBusinessView打开微信支付分小程序\r\n\t\twx.openBusinessView({\r\n\t\t\tbusinessType: 'wxpayScoreUse',\r\n\t\t\textraData: {\r\n\t\t\t\tmch_id: paymentData.data.mch_id,\r\n\t\t\t\tpackage: paymentData.data.package\r\n\t\t\t},\r\n\t\t\tsuccess: (businessRes) => {\r\n\t\t\t\t// 根据返回结果判断是否完成支付\r\n\t\t\t\tif (businessRes.errMsg === 'openBusinessView:ok') {\r\n\t\t\t\t\tresolve(businessRes);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treject(new Error('支付流程未完成'));\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tfail: (error) => {\r\n\t\t\t\tconsole.error('微信支付分小程序调用失败', error);\r\n\t\t\t\tuni.showToast({\r\n\t\t\t\t\ttitle: error.errMsg || '支付分接口调用失败',\r\n\t\t\t\t\ticon: 'none'\r\n\t\t\t\t});\r\n\t\t\t\treject(error);\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\nexport const getQueryString = function (url, name) {\r\n var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i')\r\n var r = url.substr(1).match(reg)\r\n if (r != null) {\r\n return r[2]\r\n }\r\n return null;\r\n}"],"names":["uni","login","getMyIndexInfo","wx"],"mappings":";;;AAMY,MAAC,UAAU,MAAM;AAC5B,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEvCA,kBAAAA,MAAI,MAAM;AAAA,MACT,UAAU;AAAA,MACV,SAAS,OAAO,aAAa;AAE5B,YAAI;AACH,cAAI,SAAS,MAAM;AAElB,kBAAM,SAAS,MAAMC,kBAAM;AAAA,cAC1B,MAAM,SAAS;AAAA,cACf,OAAO;AAAA,YACd,CAAO;AAED,gBAAI,OAAO,SAAS,KAAK;AAGxBD,4BAAG,MAAC,eAAe,SAAS,OAAO,KAAK,UAAU,YAAY;AAC9DA,4BAAG,MAAC,eAAe,aAAa,OAAO,KAAK,UAAU,SAAS;AAE/D,sBAAQ,OAAO,IAAI;AAAA,YAC1B,OAAa;AACN,oBAAM,IAAI,MAAM,OAAO,WAAW,MAAM;AAAA,YACxC;AAAA,UACP,OAAY;AACN,kBAAM,IAAI,MAAM,YAAY;AAAA,UAC5B;AAAA,QACD,SAAQ,OAAO;AAEfA,wBAAAA,MAAI,UAAU;AAAA,YACb,OAAO,MAAM,WAAW;AAAA,YACxB,MAAM;AAAA,UACZ,CAAM;AACD,iBAAO,KAAK;AAAA,QACZ;AAAA,MACD;AAAA,MACD,MAAM,CAAC,UAAU;AAChBA,sBAAAA,MAAI,UAAU;AAAA,UACb,OAAO;AAAA,UACP,MAAM;AAAA,QACX,CAAK;AACD,eAAO,KAAK;AAAA,MACZ;AAAA,IACJ,CAAG;AAAA,EACH,CAAE;AACF;AASY,MAAC,cAAc,MAAM;AAIhC,SAAO,IAAI,QAAQ,OAAO,KAAK,QAAQ;AAEtC,UAAM,SAAS,MAAME,2BAAe;AAAA,MACnC,QAAQ;AAAA,IACX,CAAG;AACD,QAAI,MAAM;AAAA,EACZ,CAAE;AACF;AAGY,MAAC,6BAA6B,CAAC,gBAAgB;AAC1D,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEvC,QAAI,CAAC,eAAe,CAAC,YAAY,QAAQ,CAAC,YAAY,KAAK,SAAS;AACnE,aAAO,IAAI,MAAM,SAAS,CAAC;AAC3B;AAAA,IACA;AAGDC,kBAAAA,KAAG,iBAAiB;AAAA,MACnB,cAAc;AAAA,MACd,WAAW;AAAA,QACV,QAAQ,YAAY,KAAK;AAAA,QACzB,SAAS,YAAY,KAAK;AAAA,MAC1B;AAAA,MACD,SAAS,CAAC,gBAAgB;AAEzB,YAAI,YAAY,WAAW,uBAAuB;AACjD,kBAAQ,WAAW;AAAA,QACxB,OAAW;AACN,iBAAO,IAAI,MAAM,SAAS,CAAC;AAAA,QAC3B;AAAA,MACD;AAAA,MACD,MAAM,CAAC,UAAU;AAChBH,sBAAc,MAAA,MAAA,SAAA,wBAAA,gBAAgB,KAAK;AACnCA,sBAAAA,MAAI,UAAU;AAAA,UACb,OAAO,MAAM,UAAU;AAAA,UACvB,MAAM;AAAA,QACX,CAAK;AACD,eAAO,KAAK;AAAA,MACZ;AAAA,IACJ,CAAG;AAAA,EACH,CAAE;AACF;AAEY,MAAC,iBAAiB,SAAU,KAAK,MAAM;AAC/C,MAAI,MAAM,IAAI,OAAO,aAAa,OAAO,uBAAuB,GAAG;AACnE,MAAI,IAAI,IAAI,OAAO,CAAC,EAAE,MAAM,GAAG;AAC/B,MAAI,KAAK,MAAM;AACX,WAAO,EAAE,CAAC;AAAA,EACb;AACD,SAAO;AACX;;;;;"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["util/index.js"],"sourcesContent":["import {\r\n\tlogin,\r\n\tgetMyIndexInfo\r\n} from \"../config/user\"\r\nimport {\r\n\tURL,\r\n\tappid\r\n} from \"@/config/url.js\"\r\n// import { GET_PHONE_NUMBER_URL } from \"../config/url\"\r\n\r\n// 微信登录方法\r\nexport const wxLogin = () => {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t// 1. 获取微信登录凭证\r\n\t\tuni.login({\r\n\t\t\tprovider: 'weixin',\r\n\t\t\tsuccess: async (loginRes) => {\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (loginRes.code) {\r\n\t\t\t\t\t\t// 2. 发送 code 到后端换取 token\r\n\t\t\t\t\t\tconst result = await login({\r\n\t\t\t\t\t\t\tcode: loginRes.code,\r\n\t\t\t\t\t\t\tappid: \"wx2165f0be356ae7a9\"\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tif (result.code === 200) {\r\n\t\t\t\t\t\t\t// 3. 保存token和用户信息\r\n\r\n\t\t\t\t\t\t\tuni.setStorageSync('token', result.data.LoginWxVo.access_token)\r\n\t\t\t\t\t\t\tuni.setStorageSync('client_id', result.data.LoginWxVo.client_id)\r\n\r\n\t\t\t\t\t\t\tresolve(result.data)\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrow new Error(result.message || '登录失败')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow new Error('获取微信登录凭证失败')\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (error) {\r\n\r\n\t\t\t\t\tuni.showToast({\r\n\t\t\t\t\t\ttitle: error.message || '登录失败',\r\n\t\t\t\t\t\ticon: 'none'\r\n\t\t\t\t\t})\r\n\t\t\t\t\treject(error)\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tfail: (error) => {\r\n\t\t\t\tuni.showToast({\r\n\t\t\t\t\ttitle: '微信登录失败',\r\n\t\t\t\t\ticon: 'none'\r\n\t\t\t\t})\r\n\t\t\t\treject(error)\r\n\t\t\t}\r\n\t\t})\r\n\t})\r\n}\r\n\r\n// 检查登录状态\r\n// export const checkLogin = () => {\r\n// const token = uni.getStorageSync('token')\r\n// return !!token\r\n// }\r\n\r\n// 获取用户信息\r\nexport const getUserInfo = () => {\r\n\treturn new Promise(async (res, rej) => {\r\n\t\tconst result = await getMyIndexInfo({\r\n\t\t\tisHide: false,\r\n\t\t})\r\n\t\tres(result)\r\n\t})\r\n}\r\n\r\n// 获取用户手机号\r\nexport const getUserPhoneNumber = (code) => {\r\n\treturn new Promise(async (resolve, reject) => {\r\n\t\ttry {\r\n\t\t\t// 获取登录态信息\r\n\t\t\tconst token = uni.getStorageSync('token')\r\n\t\t\t\r\n\t\t\tif (!token) {\r\n\t\t\t\treject(new Error('用户未登录'))\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tconsole.log('开始请求获取手机号,code=', code, '请求地址=', URL + '/app/user/getPhoneNumber')\r\n\t\t\t\r\n\t\t\t// 发送请求到后端获取手机号\r\n\t\t\tuni.request({\r\n\t\t\t\turl: URL + '/app/user/getPhoneNumber',\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theader: {\r\n\t\t\t\t\t'Authorization': 'Bearer ' + token,\r\n\t\t\t\t\t'clientId': uni.getStorageSync('client_id'),\r\n\t\t\t\t\t'Content-Type': 'application/json'\r\n\t\t\t\t},\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tcode: code, // 微信获取手机号授权后的临时code\r\n\t\t\t\t\tappid: appid\r\n\t\t\t\t},\r\n\t\t\t\tsuccess: (res) => {\r\n\t\t\t\t\tconsole.log('请求获取手机号接口成功,原始响应:', JSON.stringify(res))\r\n\t\t\t\t\t\r\n\t\t\t\t\t// 检查HTTP状态码\r\n\t\t\t\t\tif (res.statusCode !== 200) {\r\n\t\t\t\t\t\treject(new Error(`HTTP错误: ${res.statusCode}`))\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\tif (!res.data) {\r\n\t\t\t\t\t\treject(new Error('服务器返回空数据'))\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},\r\n\t\t\t\tfail: (err) => {\r\n\t\t\t\t\tconsole.error('请求获取手机号接口网络错误:', err)\r\n\t\t\t\t\treject(new Error('请求获取手机号接口失败: ' + (err.errMsg || JSON.stringify(err))))\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error('获取手机号过程中出现异常:', error)\r\n\t\t\treject(new Error('获取手机号异常: ' + (error.message || JSON.stringify(error))))\r\n\t\t}\r\n\t})\r\n}\r\n\r\n// 调用微信支付分接口\r\nexport const initiateWeChatScorePayment = (paymentData) => {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t// 确保paymentData包含所需数据\r\n\t\tif (!paymentData || !paymentData.data || !paymentData.data.package) {\r\n\t\t\treject(new Error('支付参数不完整'));\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// 使用wx.openBusinessView打开微信支付分小程序\r\n\t\twx.openBusinessView({\r\n\t\t\tbusinessType: 'wxpayScoreUse',\r\n\t\t\textraData: {\r\n\t\t\t\tmch_id: paymentData.data.mch_id,\r\n\t\t\t\tpackage: paymentData.data.package\r\n\t\t\t},\r\n\t\t\tsuccess: (businessRes) => {\r\n\t\t\t\t// 根据返回结果判断是否完成支付\r\n\t\t\t\tif (businessRes.errMsg === 'openBusinessView:ok') {\r\n\t\t\t\t\tresolve(businessRes);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treject(new Error('支付流程未完成'));\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tfail: (error) => {\r\n\t\t\t\tconsole.error('微信支付分小程序调用失败', error);\r\n\t\t\t\tuni.showToast({\r\n\t\t\t\t\ttitle: error.errMsg || '支付分接口调用失败',\r\n\t\t\t\t\ticon: 'none'\r\n\t\t\t\t});\r\n\t\t\t\treject(error);\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\nexport const getQueryString = function(url, name) {\r\n\tvar reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i')\r\n\tvar r = url.substr(1).match(reg)\r\n\tif (r != null) {\r\n\t\treturn r[2]\r\n\t}\r\n\treturn null;\r\n}"],"names":["uni","login","getMyIndexInfo","URL","appid","wx"],"mappings":"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"} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/common/vendor.js b/unpackage/dist/dev/mp-weixin/common/vendor.js index 446430a..f100e6f 100644 --- a/unpackage/dist/dev/mp-weixin/common/vendor.js +++ b/unpackage/dist/dev/mp-weixin/common/vendor.js @@ -6990,7 +6990,7 @@ function isConsoleWritable() { function initRuntimeSocketService() { const hosts = "192.168.10.59,127.0.0.1"; const port = "8090"; - const id = "mp-weixin_f_V2rb"; + const id = "mp-weixin_1_bom0"; const lazy = typeof swan !== "undefined"; let restoreError = lazy ? () => { } : initOnError(); diff --git a/unpackage/dist/dev/mp-weixin/pages/device/detail.js b/unpackage/dist/dev/mp-weixin/pages/device/detail.js index 8a2e222..38ffe12 100644 --- a/unpackage/dist/dev/mp-weixin/pages/device/detail.js +++ b/unpackage/dist/dev/mp-weixin/pages/device/detail.js @@ -17,12 +17,99 @@ const _sfc_main = { }); const isLoggedIn = common_vendor.ref(true); const phoneNumber = common_vendor.ref(""); + const showPhoneAuthPopup = common_vendor.ref(false); common_vendor.onLoad((options) => { deviceId.value = options.deviceNo; checkOrderStatus(); - common_vendor.index.__f__("log", "at pages/device/detail.vue:174", options.deviceNo); + common_vendor.index.__f__("log", "at pages/device/detail.vue:198", options.deviceNo); fetchDeviceInfo(); }); + common_vendor.onMounted(() => { + checkUserPhone(); + }); + const checkUserPhone = async () => { + try { + const userInfoRes = await util_index.getUserInfo(); + common_vendor.index.__f__("log", "at pages/device/detail.vue:209", 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:218", "获取用户信息失败:", error); + } + }; + const onGetPhoneNumber = (e) => { + common_vendor.index.__f__("log", "at pages/device/detail.vue:224", "getPhoneNumber event:", e.detail); + if (e.detail.errMsg && e.detail.errMsg.includes("deny")) { + common_vendor.index.showToast({ + title: "需要授权手机号才能使用设备", + icon: "none" + }); + return; + } + if (e.detail.code) { + common_vendor.index.showLoading({ + title: "获取中..." + }); + common_vendor.index.__f__("log", "at pages/device/detail.vue:241", "获取到的授权code:", e.detail.code); + try { + util_index.getUserPhoneNumber(e.detail.code).then((res) => { + common_vendor.index.__f__("log", "at pages/device/detail.vue:247", "获取手机号API响应原始数据:", JSON.stringify(res)); + common_vendor.index.hideLoading(); + if (!res) { + common_vendor.index.__f__("error", "at pages/device/detail.vue:252", "API返回数据为空"); + common_vendor.index.showModal({ + title: "数据异常", + content: "API返回为空", + showCancel: false + }); + return; + } + common_vendor.index.__f__("log", "at pages/device/detail.vue:262", "响应code:", res.code, "响应类型:", typeof res.code); + common_vendor.index.__f__("log", "at pages/device/detail.vue:263", "是否有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; + common_vendor.index.showToast({ + title: "手机号获取成功", + icon: "success" + }); + } else { + common_vendor.index.__f__("warn", "at pages/device/detail.vue:275", "获取手机号响应异常:", res.msg || "未知错误"); + common_vendor.index.showModal({ + title: "获取手机号异常", + content: `状态码: ${res.code}, 消息: ${res.msg || "无"}`, + showCancel: false + }); + } + }).catch((err) => { + common_vendor.index.hideLoading(); + common_vendor.index.__f__("error", "at pages/device/detail.vue:285", "获取手机号码失败(catch):", err); + let errMsg = err.message || err.toString(); + common_vendor.index.showModal({ + title: "获取手机号失败", + content: "错误信息: " + errMsg, + showCancel: false + }); + }); + } catch (outerError) { + common_vendor.index.hideLoading(); + common_vendor.index.__f__("error", "at pages/device/detail.vue:297", "获取手机号外部错误:", outerError); + common_vendor.index.showModal({ + title: "意外错误", + content: "处理过程发生异常: " + (outerError.message || outerError), + showCancel: false + }); + } + } else { + common_vendor.index.showToast({ + title: "获取授权码失败", + icon: "none" + }); + } + }; const fetchDeviceInfo = async () => { const res = await config_user.getDeviceInfo(deviceId.value); if (res.code == 200) { @@ -84,6 +171,10 @@ const _sfc_main = { showLoginTip(); return; } + if (!phoneNumber.value) { + showPhoneAuthPopup.value = true; + return; + } submitRentOrder(payWay); }; const selectedPkg = common_vendor.reactive({ @@ -104,7 +195,7 @@ const _sfc_main = { 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:287", res); + common_vendor.index.__f__("log", "at pages/device/detail.vue:427", res); try { let packageTimeMinutes = 0; if (selectedPkg.time.includes("小时")) { @@ -120,12 +211,12 @@ const _sfc_main = { packagePrice: parseFloat(selectedPkg.price) }); if (updateRes.code !== 200) { - common_vendor.index.__f__("warn", "at pages/device/detail.vue:304", "更新订单套餐信息失败:", updateRes.msg); + common_vendor.index.__f__("warn", "at pages/device/detail.vue:444", "更新订单套餐信息失败:", updateRes.msg); } else { - common_vendor.index.__f__("log", "at pages/device/detail.vue:307", "订单套餐信息已提前更新"); + common_vendor.index.__f__("log", "at pages/device/detail.vue:447", "订单套餐信息已提前更新"); } } catch (updateError) { - common_vendor.index.__f__("error", "at pages/device/detail.vue:310", "更新订单套餐信息时出错:", updateError); + common_vendor.index.__f__("error", "at pages/device/detail.vue:450", "更新订单套餐信息时出错:", updateError); } const deposit = parseFloat(deviceInfo.value.depositAmount); const packagePrice = parseFloat(selectedPkg.price); @@ -143,7 +234,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:340", res2.data.orderStatus); + common_vendor.index.__f__("log", "at pages/device/detail.vue:480", res2.data.orderStatus); if (res2.data.orderStatus == "in_used") { common_vendor.index.showToast({ title: "设备租借成功", @@ -191,7 +282,7 @@ const _sfc_main = { } }; return (_ctx, _cache) => { - return { + return common_vendor.e({ a: common_vendor.t(deviceStatus.text), b: common_vendor.n(deviceStatus.class), c: common_vendor.t(deviceId.value), @@ -204,8 +295,14 @@ const _sfc_main = { j: common_vendor.t(hasActiveOrder.value ? "归还设备" : "免押金租借"), k: hasActiveOrder.value ? 1 : "", l: common_vendor.o(($event) => handleRent("wx-score-pay")), - m: common_vendor.o(($event) => handleRent("wx-pay")) - }; + m: common_vendor.o(($event) => handleRent("wx-pay")), + n: showPhoneAuthPopup.value + }, showPhoneAuthPopup.value ? { + o: common_vendor.o(() => { + }), + p: common_vendor.o(onGetPhoneNumber), + q: common_vendor.o(($event) => showPhoneAuthPopup.value = false) + } : {}); }; } }; diff --git a/unpackage/dist/dev/mp-weixin/pages/device/detail.wxml b/unpackage/dist/dev/mp-weixin/pages/device/detail.wxml index c688faa..59c3e9c 100644 --- a/unpackage/dist/dev/mp-weixin/pages/device/detail.wxml +++ b/unpackage/dist/dev/mp-weixin/pages/device/detail.wxml @@ -1 +1 @@ -{{a}}共享风扇设备号:{{c}}当前位置{{e}}电池电量{{h}}%计费规则¥5.00/小时封顶 ¥99前15分钟内归还免费不足60分钟按60分钟计费持续计费至99元视为买断使用须知请在使用前检查设备是否完好请在指定区域内使用设备归还时请确保设备完好,避免损坏微信支付分|支付分200分及以上优享 无法免押点这里> \ No newline at end of file +{{a}}共享风扇设备号:{{c}}当前位置{{e}}电池电量{{h}}%计费规则¥5.00/小时封顶 ¥99前15分钟内归还免费不足60分钟按60分钟计费持续计费至99元视为买断使用须知请在使用前检查设备是否完好请在指定区域内使用设备归还时请确保设备完好,避免损坏微信支付分|支付分200分及以上优享 无法免押点这里>授权获取手机号为了提供更好的服务,需要授权获取您的手机号暂不授权 \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/device/detail.wxss b/unpackage/dist/dev/mp-weixin/pages/device/detail.wxss index cd4ea48..cf48784 100644 --- a/unpackage/dist/dev/mp-weixin/pages/device/detail.wxss +++ b/unpackage/dist/dev/mp-weixin/pages/device/detail.wxss @@ -301,4 +301,96 @@ .footer .rent-button.data-v-d65de3a7:active { transform: scale(0.98); opacity: 0.9; +} + +/* 手机号授权弹窗样式 */ +.phone-auth-popup.data-v-d65de3a7 { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 1000; + display: flex; + align-items: center; + justify-content: center; + background-color: rgba(0, 0, 0, 0.5); +} +.popup-mask.data-v-d65de3a7 { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} +.popup-content.data-v-d65de3a7 { + background-color: #fff; + border-radius: 24rpx; + box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.15); + width: 90%; + max-width: 500rpx; + padding: 40rpx 30rpx; + position: relative; + z-index: 1001; + display: flex; + flex-direction: column; + align-items: center; +} +.popup-header.data-v-d65de3a7 { + margin-bottom: 30rpx; + text-align: center; +} +.popup-title.data-v-d65de3a7 { + font-size: 36rpx; + font-weight: bold; + color: #333; +} +.popup-body.data-v-d65de3a7 { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + margin-bottom: 30rpx; +} +.auth-desc.data-v-d65de3a7 { + font-size: 28rpx; + color: #666; + text-align: center; + margin-bottom: 30rpx; + line-height: 1.6; +} +.auth-btn.data-v-d65de3a7 { + width: 100%; + height: 92rpx; + border-radius: 46rpx; + background: linear-gradient(135deg, #07c160, #10d673); + color: #fff; + font-size: 32rpx; + font-weight: 600; + display: flex; + align-items: center; + justify-content: center; + border: none; + margin-bottom: 20rpx; +} +.auth-btn.data-v-d65de3a7:active { + transform: scale(0.98); + opacity: 0.9; +} +.auth-cancel.data-v-d65de3a7 { + width: 100%; + height: 92rpx; + border-radius: 46rpx; + background-color: #f5f7fa; + color: #333; + font-size: 32rpx; + font-weight: 600; + display: flex; + align-items: center; + justify-content: center; + border: none; +} +.auth-cancel.data-v-d65de3a7:active { + transform: scale(0.98); + opacity: 0.9; } \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index.js b/unpackage/dist/dev/mp-weixin/pages/index/index.js index d1fffd3..9672966 100644 --- a/unpackage/dist/dev/mp-weixin/pages/index/index.js +++ b/unpackage/dist/dev/mp-weixin/pages/index/index.js @@ -14,10 +14,8 @@ const _sfc_main = { fail: reject }); }); - common_vendor.index.__f__("log", "at pages/index/index.vue:131", scanResult.path); + common_vendor.index.__f__("log", "at pages/index/index.vue:152", scanResult.path); let deviceNo = util_index.getQueryString(scanResult.path, "deviceNo"); - common_vendor.index.__f__("log", "at pages/index/index.vue:134", "扫码路径:", scanResult.path); - common_vendor.index.__f__("log", "at pages/index/index.vue:135", "解析到的设备号:", deviceNo); if (!deviceNo) { common_vendor.index.showToast({ title: "无效的设备二维码", @@ -36,14 +34,12 @@ const _sfc_main = { "Clientid": common_vendor.index.getStorageSync("client_id") } }); - common_vendor.index.__f__("log", "at pages/index/index.vue:160", "使用中订单检查结果:", 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/index/index.vue:165", "检测到使用中订单,准备跳转:", inUseOrder); common_vendor.index.reLaunch({ url: `/pages/return/index?orderId=${inUseOrder.orderId}&deviceId=${deviceNo || inUseOrder.deviceNo}` }); - common_vendor.index.__f__("log", "at pages/index/index.vue:171", "已发起页面跳转"); + common_vendor.index.__f__("log", "at pages/index/index.vue:187", "已发起页面跳转"); return; } const orderRes = await common_vendor.index.request({ @@ -54,28 +50,26 @@ const _sfc_main = { "Clientid": common_vendor.index.getStorageSync("client_id") } }); - common_vendor.index.__f__("log", "at pages/index/index.vue:185", "待支付订单检查结果:", JSON.stringify(orderRes)); + common_vendor.index.__f__("log", "at pages/index/index.vue:201", "待支付订单检查结果:", JSON.stringify(orderRes)); if (orderRes.statusCode == 200 && orderRes.data.code == 200 && orderRes.data.data) { const unpaidOrder = orderRes.data.data; - common_vendor.index.__f__("log", "at pages/index/index.vue:190", "检测到待支付订单,准备跳转:", unpaidOrder); common_vendor.index.navigateTo({ url: `/pages/order/payment?orderId=${unpaidOrder.orderId}` }); } else { - common_vendor.index.__f__("log", "at pages/index/index.vue:196", "无待支付订单,获取设备信息, deviceNo:", deviceNo); try { const deviceInfoRes = await config_user.getDeviceInfo(deviceNo); if (deviceInfoRes.code == 200 && deviceInfoRes.data && deviceInfoRes.data.device) { const deviceInfo = deviceInfoRes.data.device; if (deviceInfo.feeConfig) { - common_vendor.index.__f__("log", "at pages/index/index.vue:207", "获取到设备feeConfig信息:", deviceInfo.feeConfig); + common_vendor.index.__f__("log", "at pages/index/index.vue:219", "获取到设备feeConfig信息:", deviceInfo.feeConfig); try { const feeConfig = JSON.parse(deviceInfo.feeConfig); common_vendor.index.navigateTo({ url: `/pages/device/detail?deviceNo=${deviceNo}&feeConfig=${encodeURIComponent(deviceInfo.feeConfig)}` }); } catch (e) { - common_vendor.index.__f__("error", "at pages/index/index.vue:218", "解析feeConfig失败:", e); + common_vendor.index.__f__("error", "at pages/index/index.vue:230", "解析feeConfig失败:", e); common_vendor.index.navigateTo({ url: `/pages/device/detail?deviceNo=${deviceNo}` }); @@ -86,7 +80,7 @@ const _sfc_main = { }); } } else { - common_vendor.index.__f__("error", "at pages/index/index.vue:232", "获取设备信息失败:", deviceInfoRes.msg || "未知错误"); + common_vendor.index.__f__("error", "at pages/index/index.vue:244", "获取设备信息失败:", deviceInfoRes.msg || "未知错误"); common_vendor.index.showToast({ title: "获取设备信息失败", icon: "none" @@ -96,7 +90,7 @@ const _sfc_main = { }); } } catch (error) { - common_vendor.index.__f__("error", "at pages/index/index.vue:244", "获取设备信息异常:", error); + common_vendor.index.__f__("error", "at pages/index/index.vue:256", "获取设备信息异常:", error); common_vendor.index.showToast({ title: "获取设备信息失败", icon: "none" @@ -107,7 +101,7 @@ const _sfc_main = { } } } catch (error) { - common_vendor.index.__f__("error", "at pages/index/index.vue:257", "扫码处理失败:", error); + common_vendor.index.__f__("error", "at pages/index/index.vue:269", "扫码处理失败:", error); common_vendor.index.showToast({ title: "扫码失败", icon: "none" @@ -117,11 +111,16 @@ const _sfc_main = { } }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { - return { + return common_vendor.e({ a: common_assets._imports_0, b: common_assets._imports_1, - c: common_vendor.o((...args) => $options.handleScan && $options.handleScan(...args)) - }; + c: common_vendor.o((...args) => $options.handleScan && $options.handleScan(...args)), + d: _ctx.showPhoneAuthPopup + }, _ctx.showPhoneAuthPopup ? { + e: common_vendor.o(($event) => _ctx.showPhoneAuthPopup = false), + f: common_vendor.o((...args) => _ctx.onGetPhoneNumber && _ctx.onGetPhoneNumber(...args)), + g: common_vendor.o(($event) => _ctx.showPhoneAuthPopup = false) + } : {}); } const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-1cf27b2a"]]); wx.createPage(MiniProgramPage); diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index.wxml b/unpackage/dist/dev/mp-weixin/pages/index/index.wxml index d2b9c9c..f8dea52 100644 --- a/unpackage/dist/dev/mp-weixin/pages/index/index.wxml +++ b/unpackage/dist/dev/mp-weixin/pages/index/index.wxml @@ -1 +1 @@ -共享风扇随时随地,享受清凉便捷租赁·品质保障扫码使用扫描设备二维码即可使用或归还收费规则5.0元/小时15分钟内归还免费不足1小时按1小时计费封顶99元,计费达99元视为买断使用流程1扫码弹出2使用风扇3插入归还4结束订单 \ No newline at end of file +共享风扇随时随地,享受清凉便捷租赁·品质保障扫码使用扫描设备二维码即可使用或归还收费规则5.0元/小时15分钟内归还免费不足1小时按1小时计费封顶99元,计费达99元视为买断使用流程1扫码弹出2使用风扇3插入归还4结束订单授权获取手机号为了提供更好的服务和紧急联系,需要授权获取您的手机号暂不授权 \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/util/index.js b/unpackage/dist/dev/mp-weixin/util/index.js index 0fbe1b6..d8d53e8 100644 --- a/unpackage/dist/dev/mp-weixin/util/index.js +++ b/unpackage/dist/dev/mp-weixin/util/index.js @@ -1,6 +1,7 @@ "use strict"; const common_vendor = require("../common/vendor.js"); const config_user = require("../config/user.js"); +const config_url = require("../config/url.js"); const wxLogin = () => { return new Promise((resolve, reject) => { common_vendor.index.login({ @@ -48,6 +49,51 @@ const getUserInfo = () => { res(result); }); }; +const getUserPhoneNumber = (code) => { + return new Promise(async (resolve, reject) => { + try { + const token = common_vendor.index.getStorageSync("token"); + if (!token) { + reject(new Error("用户未登录")); + return; + } + common_vendor.index.__f__("log", "at util/index.js:88", "开始请求获取手机号,code=", code, "请求地址=", config_url.URL + "/app/user/getPhoneNumber"); + common_vendor.index.request({ + url: config_url.URL + "/app/user/getPhoneNumber", + method: "POST", + header: { + "Authorization": "Bearer " + token, + "clientId": common_vendor.index.getStorageSync("client_id"), + "Content-Type": "application/json" + }, + data: { + code, + // 微信获取手机号授权后的临时code + appid: config_url.appid + }, + success: (res) => { + common_vendor.index.__f__("log", "at util/index.js:104", "请求获取手机号接口成功,原始响应:", JSON.stringify(res)); + if (res.statusCode !== 200) { + reject(new Error(`HTTP错误: ${res.statusCode}`)); + return; + } + if (!res.data) { + reject(new Error("服务器返回空数据")); + return; + } + resolve(res.data); + }, + fail: (err) => { + common_vendor.index.__f__("error", "at util/index.js:122", "请求获取手机号接口网络错误:", err); + reject(new Error("请求获取手机号接口失败: " + (err.errMsg || JSON.stringify(err)))); + } + }); + } catch (error) { + common_vendor.index.__f__("error", "at util/index.js:127", "获取手机号过程中出现异常:", error); + reject(new Error("获取手机号异常: " + (error.message || JSON.stringify(error)))); + } + }); +}; const initiateWeChatScorePayment = (paymentData) => { return new Promise((resolve, reject) => { if (!paymentData || !paymentData.data || !paymentData.data.package) { @@ -68,7 +114,7 @@ const initiateWeChatScorePayment = (paymentData) => { } }, fail: (error) => { - common_vendor.index.__f__("error", "at util/index.js:100", "微信支付分小程序调用失败", error); + common_vendor.index.__f__("error", "at util/index.js:158", "微信支付分小程序调用失败", error); common_vendor.index.showToast({ title: error.errMsg || "支付分接口调用失败", icon: "none" @@ -88,6 +134,7 @@ const getQueryString = function(url, name) { }; exports.getQueryString = getQueryString; exports.getUserInfo = getUserInfo; +exports.getUserPhoneNumber = getUserPhoneNumber; exports.initiateWeChatScorePayment = initiateWeChatScorePayment; exports.wxLogin = wxLogin; //# sourceMappingURL=../../.sourcemap/mp-weixin/util/index.js.map diff --git a/util/index.js b/util/index.js index 02b7e64..50715c3 100644 --- a/util/index.js +++ b/util/index.js @@ -2,6 +2,11 @@ import { login, getMyIndexInfo } from "../config/user" +import { + URL, + appid +} from "@/config/url.js" +// import { GET_PHONE_NUMBER_URL } from "../config/url" // 微信登录方法 export const wxLogin = () => { @@ -60,11 +65,7 @@ export const wxLogin = () => { // 获取用户信息 export const getUserInfo = () => { - - - return new Promise(async (res, rej) => { - const result = await getMyIndexInfo({ isHide: false, }) @@ -72,6 +73,63 @@ export const getUserInfo = () => { }) } +// 获取用户手机号 +export const getUserPhoneNumber = (code) => { + return new Promise(async (resolve, reject) => { + try { + // 获取登录态信息 + const token = uni.getStorageSync('token') + + if (!token) { + reject(new Error('用户未登录')) + return + } + + console.log('开始请求获取手机号,code=', code, '请求地址=', URL + '/app/user/getPhoneNumber') + + // 发送请求到后端获取手机号 + uni.request({ + url: URL + '/app/user/getPhoneNumber', + method: 'POST', + header: { + 'Authorization': 'Bearer ' + token, + 'clientId': uni.getStorageSync('client_id'), + 'Content-Type': 'application/json' + }, + data: { + code: code, // 微信获取手机号授权后的临时code + appid: appid + }, + success: (res) => { + console.log('请求获取手机号接口成功,原始响应:', JSON.stringify(res)) + + // 检查HTTP状态码 + if (res.statusCode !== 200) { + reject(new Error(`HTTP错误: ${res.statusCode}`)) + return + } + + // 确保响应体存在 + if (!res.data) { + reject(new Error('服务器返回空数据')) + return + } + + // 正常返回响应数据,不做额外判断,由调用方处理业务状态码 + resolve(res.data) + }, + fail: (err) => { + console.error('请求获取手机号接口网络错误:', err) + reject(new Error('请求获取手机号接口失败: ' + (err.errMsg || JSON.stringify(err)))) + } + }) + } catch (error) { + console.error('获取手机号过程中出现异常:', error) + reject(new Error('获取手机号异常: ' + (error.message || JSON.stringify(error)))) + } + }) +} + // 调用微信支付分接口 export const initiateWeChatScorePayment = (paymentData) => { return new Promise((resolve, reject) => { @@ -80,7 +138,7 @@ export const initiateWeChatScorePayment = (paymentData) => { reject(new Error('支付参数不完整')); return; } - + // 使用wx.openBusinessView打开微信支付分小程序 wx.openBusinessView({ businessType: 'wxpayScoreUse', @@ -108,11 +166,11 @@ export const initiateWeChatScorePayment = (paymentData) => { }); } -export const getQueryString = function (url, name) { - var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i') - var r = url.substr(1).match(reg) - if (r != null) { - return r[2] - } - return null; +export const getQueryString = function(url, name) { + var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i') + var r = url.substr(1).match(reg) + if (r != null) { + return r[2] + } + return null; } \ No newline at end of file