feat:新增地图视图效果,接口待对接
This commit is contained in:
+6
@@ -42,7 +42,13 @@
|
||||
"permission": {
|
||||
"scope.getPhoneNumber": {
|
||||
"desc": "您的手机号将用于登录和订单服务"
|
||||
},
|
||||
"scope.userLocation": {
|
||||
"desc": "您的位置信息将用于获取附近的设备"
|
||||
}
|
||||
},
|
||||
"requiredPrivateInfos": [
|
||||
"getLocation"
|
||||
],
|
||||
"usingComponents": {}
|
||||
}
|
||||
+1
-1
@@ -1 +1 @@
|
||||
"use strict";exports._imports_0="/static/logo.png",exports._imports_0$1="/static/user-active.png",exports._imports_0$2="/static/images/wxpayflag.png",exports._imports_0$3="/static/images/location-map.svg",exports._imports_1="/static/scan-icon.png",exports._imports_1$1="/static/jl.png",exports._imports_1$2="/static/images/Electricity.svg",exports._imports_2="/static/complaint.png",exports._imports_3="/static/hlep.png";
|
||||
"use strict";exports._imports_0="/static/scan-icon.png",exports._imports_0$1="/static/user-active.png",exports._imports_0$2="/static/images/wxpayflag.png",exports._imports_0$3="/static/images/location-map.svg",exports._imports_1="/static/jl.png",exports._imports_2="/static/complaint.png",exports._imports_3="/static/hlep.png";
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
"use strict";const e=require("../common/vendor.js"),t=require("../common/assets.js"),i={__name:"MapComponent",props:{userLocation:{type:Object,default:null},positionList:{type:Array,default:()=>[]},filteredPositions:{type:Array,default:()=>[]},searchKeyword:{type:String,default:""}},emits:["relocate","scan","showList","markerTap","mapCenterChange"],setup(i,{expose:o,emit:a}){const n=i,l=a,u=e.ref(0),d=e.ref(16),r=e.ref({longitude:116.397128,latitude:39.916527}),s=e.ref(null),c=e.ref(!1),p=()=>{l("relocate")},f=()=>{l("scan")},m=()=>{l("showList")},g=t=>{if(!t.detail||void 0===t.detail.markerId)return;const i=t.detail.markerId;if(9999===i)return void e.index.showToast({title:"这是您的位置",icon:"none"});const o=n.filteredPositions[i];o&&l("markerTap",o)},v=e=>{if("end"===e.detail.type){const{center:t}=e.detail;if(!t||void 0===t.longitude||void 0===t.latitude)return;r.value={longitude:t.longitude,latitude:t.latitude},d.value=16,s.value&&clearTimeout(s.value),s.value=setTimeout((()=>{l("mapCenterChange",r.value)}),500)}},h=e.computed((()=>{const e=[];return n.filteredPositions.forEach(((t,i)=>{t.longitude&&t.latitude&&e.push({id:i,longitude:parseFloat(t.longitude),latitude:parseFloat(t.latitude),title:t.name,iconPath:"/static/scan-icon.png",width:30,height:30,callout:{content:t.name,fontSize:14,borderRadius:8,bgColor:"#ffffff",padding:10,display:"BYCLICK"}})})),n.userLocation&&e.push({id:9999,longitude:n.userLocation.longitude,latitude:n.userLocation.latitude,title:"我的位置",iconPath:"/static/scan-icon.png",width:32,height:32,callout:{content:"我的位置",fontSize:14,borderRadius:8,bgColor:"#2196F3",color:"#ffffff",padding:10,display:"BYCLICK"}}),e}));return e.watch((()=>n.userLocation),(t=>{var i,o;t&&t.longitude&&t.latitude&&!c.value&&(i=t.longitude,o=t.latitude,r.value.longitude===i&&r.value.latitude===o||(r.value={longitude:i,latitude:o},d.value=16,e.nextTick$1((()=>{setTimeout((()=>{const t=e.index.createMapContext("mainMap");t&&t.setCenterOffset({longitude:i,latitude:o,success:()=>{},fail:()=>{t.includePoints({points:[{longitude:i,latitude:o}],padding:[0,0,0,0]})}})}),200)}))),c.value=!0)}),{immediate:!0,deep:!0}),e.onMounted((()=>{})),e.onUnmounted((()=>{s.value&&clearTimeout(s.value)})),o({mapCenter:e.computed((()=>r.value))}),(i,o)=>e.e({a:u.value,b:r.value.longitude,c:r.value.latitude,d:d.value,e:h.value,f:e.o(g),g:e.o(v),h:!r.value.longitude},(r.value.longitude,{}),{i:t._imports_0,j:e.o(p),k:t._imports_0,l:e.o(f),m:t._imports_0,n:e.o(m)})}},o=e._export_sfc(i,[["__scopeId","data-v-65e2cece"]]);wx.createComponent(o);
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<view class="map-container data-v-65e2cece"><map id="mainMap" class="map data-v-65e2cece" key="{{a}}" longitude="{{b}}" latitude="{{c}}" scale="{{d}}" markers="{{e}}" show-location="{{false}}" enable-scroll="{{true}}" enable-zoom="{{true}}" enable-rotate="{{false}}" show-compass="{{false}}" bindmarkertap="{{f}}" bindregionchange="{{g}}"></map><view wx:if="{{h}}" class="map-loading data-v-65e2cece"><view class="loading-content data-v-65e2cece"><view class="loading-spinner data-v-65e2cece"></view><text class="data-v-65e2cece">地图加载中...</text></view></view><view class="map-controls data-v-65e2cece"><view class="control-btn location-control data-v-65e2cece" bindtap="{{j}}"><image class="control-icon data-v-65e2cece" src="{{i}}" mode="aspectFit"/><text class="data-v-65e2cece">我的位置</text></view><view class="control-btn scan-control main-btn data-v-65e2cece" bindtap="{{l}}"><image class="control-icon data-v-65e2cece" src="{{k}}" mode="aspectFit"/><text class="data-v-65e2cece">扫码使用</text></view><view class="control-btn list-control data-v-65e2cece" bindtap="{{n}}"><image class="control-icon data-v-65e2cece" src="{{m}}" mode="aspectFit"/><text class="data-v-65e2cece">附近场地</text></view></view></view>
|
||||
@@ -0,0 +1 @@
|
||||
.map-container.data-v-65e2cece{flex:1;position:relative;height:100vh;width:100%}.map-container .map.data-v-65e2cece{width:100%;height:100%}.map-container .map-loading.data-v-65e2cece{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255,255,255,.8);display:flex;justify-content:center;align-items:center;z-index:10}.map-container .map-loading .loading-content.data-v-65e2cece{display:flex;flex-direction:column;align-items:center;justify-content:center}.map-container .map-loading .loading-content .loading-spinner.data-v-65e2cece{width:60rpx;height:60rpx;border:8rpx solid #f3f3f3;border-top:8rpx solid #3498db;border-radius:50%;animation:spin-65e2cece 1s linear infinite;margin-bottom:20rpx}.map-container .map-loading .loading-content text.data-v-65e2cece{font-size:32rpx;color:#333;font-weight:500}.map-container .map-controls.data-v-65e2cece{position:absolute;right:30rpx;bottom:20rpx;left:30rpx;display:flex;justify-content:center;align-items:center;gap:30rpx}.map-container .map-controls .control-btn.data-v-65e2cece{min-width:140rpx;height:80rpx;background:#fff;border-radius:40rpx;display:flex;flex-direction:row;align-items:center;justify-content:center;box-shadow:0 4rpx 12rpx rgba(0,0,0,.1);transition:all .2s ease;padding:0 20rpx}.map-container .map-controls .control-btn.data-v-65e2cece:active{transform:scale(.95)}.map-container .map-controls .control-btn .control-icon.data-v-65e2cece{width:32rpx;height:32rpx;margin-right:12rpx}.map-container .map-controls .control-btn text.data-v-65e2cece{font-size:26rpx;color:#333;white-space:nowrap;font-weight:500}.map-container .map-controls .control-btn.main-btn.data-v-65e2cece{min-width:160rpx;height:90rpx;box-shadow:0 6rpx 20rpx rgba(33,150,243,.4);transform:translateY(-5rpx)}.map-container .map-controls .control-btn.main-btn .control-icon.data-v-65e2cece{width:36rpx;height:36rpx;margin-right:16rpx}.map-container .map-controls .control-btn.main-btn text.data-v-65e2cece{font-size:28rpx;font-weight:600}.map-container .map-controls .control-btn.main-btn.data-v-65e2cece:active{transform:translateY(-5rpx) scale(.95)}.map-container .map-controls .scan-control.data-v-65e2cece{background:#2196f3}.map-container .map-controls .scan-control .control-icon.data-v-65e2cece{filter:brightness(0) invert(1)}.map-container .map-controls .scan-control text.data-v-65e2cece{color:#fff}.map-container .map-controls .list-control.data-v-65e2cece{background:#4caf50}.map-container .map-controls .list-control .control-icon.data-v-65e2cece{filter:brightness(0) invert(1)}.map-container .map-controls .list-control text.data-v-65e2cece{color:#fff}.map-container .map-controls .location-control.data-v-65e2cece{background:#fff;border:2rpx solid #e0e0e0}.map-container .map-controls .location-control .control-icon.data-v-65e2cece{filter:none}.map-container .map-controls .location-control text.data-v-65e2cece{color:#333}@keyframes spin-65e2cece{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
|
||||
+1
-1
@@ -1 +1 @@
|
||||
"use strict";exports.HELP_CONTENT={FAQ_LIST:[{question:"如何租借风扇?",answer:'点击首页"扫码租借"按钮,使用微信扫描设备上的二维码,按提示完成支付即可使用。'},{question:"收费标准是怎样的?",answer:"使用费用为2元/小时,不足1小时按1小时计算。押金99元,归还后自动退还。"},{question:"如何归还风扇?",answer:'将风扇带到任意归还点,点击首页"扫码归还"按钮,扫描归还点二维码即可完成归还。'},{question:"押金多久能退还?",answer:"归还设备后押金将自动发起退款,预计0-7个工作日到账。"},{question:"设备无法正常使用怎么办?",answer:'您可以通过"我的-投诉与建议"提交故障反馈,或直接拨打客服电话处理。'}],CONTACT:{TITLE:"联系客服",PHONE:{LABEL:"客服电话",VALUE:"400-888-8888"},SERVICE_TIME:{LABEL:"服务时间",VALUE:"周一至周日 09:00-22:00"}}};
|
||||
"use strict";exports.HELP_CONTENT={FAQ_LIST:[{question:"如何租借风扇?",answer:'点击首页"扫码租借"按钮,使用微信扫描设备上的二维码,按提示完成支付即可使用。'},{question:"收费标准是怎样的?",answer:"本产品租界风扇采用免押金租借形式,无需支付押金,具体计费方式以场地机柜扫码提示为准。"},{question:"如何归还风扇?",answer:'将风扇带到任意归还点,点击首页"扫码归还"按钮,扫描归还点二维码即可完成归还。'},{question:"押金多久能退还?",answer:"归还设备后押金将自动发起退款,预计0-7个工作日到账。"},{question:"设备无法正常使用怎么办?",answer:'您可以通过"我的-投诉与建议"提交故障反馈,或直接拨打客服电话处理。'}],CONTACT:{TITLE:"联系客服",PHONE:{LABEL:"客服电话",VALUE:"400-077-6018"},SERVICE_TIME:{LABEL:"服务时间",VALUE:"周一至周日 09:00-22:00"}}};
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
<view class="container data-v-f7bf7b27"><view class="device-header data-v-f7bf7b27"><view class="{{['device-status-card', 'data-v-f7bf7b27', b]}}"><view class="status-indicator data-v-f7bf7b27"></view><text class="status-text data-v-f7bf7b27">{{a}}</text></view><view class="device-title data-v-f7bf7b27"><text class="name data-v-f7bf7b27">共享风扇</text><view class="device-meta data-v-f7bf7b27"><text class="id-label data-v-f7bf7b27">设备号:</text><text class="id-value data-v-f7bf7b27">{{c}}</text></view></view></view><view class="card device-info-card data-v-f7bf7b27"><view class="card-row data-v-f7bf7b27"><view class="card-item data-v-f7bf7b27"><view class="item-icon location-icon data-v-f7bf7b27"><image class="data-v-f7bf7b27" src="{{d}}" mode="aspectFill" style="width:45rpx;height:45rpx"></image></view><view class="item-content data-v-f7bf7b27"><text class="item-label data-v-f7bf7b27">当前位置</text><text class="item-value data-v-f7bf7b27">{{e}}</text></view></view><view class="card-item data-v-f7bf7b27"><view class="{{['item-icon', 'battery-icon', 'data-v-f7bf7b27', g && 'battery-low']}}"><image class="data-v-f7bf7b27" src="{{f}}" mode="aspectFill" style="width:45rpx;height:45rpx"></image></view><view class="item-content data-v-f7bf7b27"><text class="item-label data-v-f7bf7b27">电池电量</text><text class="item-value data-v-f7bf7b27">{{h}}%</text></view></view></view></view><view class="card pricing-card data-v-f7bf7b27"><view class="card-header data-v-f7bf7b27"><text class="card-title data-v-f7bf7b27">计费规则</text></view><view class="pricing-banner data-v-f7bf7b27"><view class="pricing-main data-v-f7bf7b27"><text class="price data-v-f7bf7b27">¥{{i}}</text><text class="unit data-v-f7bf7b27">/小时</text></view><text class="cap-price data-v-f7bf7b27">封顶 ¥{{j}}</text></view><view class="pricing-rules data-v-f7bf7b27"><view class="rule-item data-v-f7bf7b27"><view class="rule-dot data-v-f7bf7b27"></view><text class="rule-text data-v-f7bf7b27">不足60分钟按60分钟计费</text></view><view class="rule-item data-v-f7bf7b27"><view class="rule-dot data-v-f7bf7b27"></view><text class="rule-text data-v-f7bf7b27">持续计费至99元视为买断</text></view></view></view><view class="card notice-card data-v-f7bf7b27"><view class="card-header data-v-f7bf7b27"><text class="card-title data-v-f7bf7b27">使用须知</text></view><view class="notice-items data-v-f7bf7b27"><view class="notice-item data-v-f7bf7b27"><view class="notice-dot data-v-f7bf7b27"></view><text class="notice-text data-v-f7bf7b27">请在使用前检查设备是否完好</text></view><view class="notice-item data-v-f7bf7b27"><view class="notice-dot data-v-f7bf7b27"></view><text class="notice-text data-v-f7bf7b27">请在指定区域内使用设备</text></view><view class="notice-item data-v-f7bf7b27"><view class="notice-dot data-v-f7bf7b27"></view><text class="notice-text data-v-f7bf7b27">归还时请确保设备完好,避免损坏</text></view></view></view><view class="footer data-v-f7bf7b27"><button class="{{['rent-button', 'data-v-f7bf7b27', l && 'return-button']}}" bindtap="{{m}}"><text class="data-v-f7bf7b27">{{k}}</text></button><view class="wechat-credit data-v-f7bf7b27"><image src="{{n}}" mode="aspectFit" class="wx-icon data-v-f7bf7b27"></image><view class="credit-text data-v-f7bf7b27"><text class="data-v-f7bf7b27">微信支付分</text><text class="credit-divider data-v-f7bf7b27">|</text><text class="credit-score data-v-f7bf7b27">550分及以上优享</text></view></view></view><view wx:if="{{o}}" class="phone-auth-popup data-v-f7bf7b27"><view class="popup-mask data-v-f7bf7b27" catchtap="{{p}}"></view><view class="popup-content data-v-f7bf7b27"><view class="popup-header data-v-f7bf7b27"><text class="popup-title data-v-f7bf7b27">授权获取手机号</text></view><view class="popup-body data-v-f7bf7b27"><view class="auth-desc data-v-f7bf7b27"><text class="data-v-f7bf7b27">为了提供更好的服务,需要授权获取您的手机号</text></view><button class="auth-btn data-v-f7bf7b27" open-type="getPhoneNumber" bindgetphonenumber="{{q}}"> 一键获取手机号 </button><view class="auth-cancel data-v-f7bf7b27" bindtap="{{r}}"><text class="data-v-f7bf7b27">暂不授权</text></view></view></view></view></view>
|
||||
<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>
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+4
-2
@@ -1,4 +1,6 @@
|
||||
{
|
||||
"navigationBarTitleText": "共享风扇",
|
||||
"usingComponents": {}
|
||||
"navigationBarTitleText": "附近场地",
|
||||
"usingComponents": {
|
||||
"map-component": "../../components/MapComponent"
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1 +1 @@
|
||||
<view class="container data-v-cb03dff0"><view class="header data-v-cb03dff0"><view class="header-bg data-v-cb03dff0"><view class="circle-decoration circle-1 data-v-cb03dff0"></view><view class="circle-decoration circle-2 data-v-cb03dff0"></view><view class="wave-decoration data-v-cb03dff0"></view></view><view class="header-content data-v-cb03dff0"><view class="brand-area data-v-cb03dff0"><image class="brand-logo data-v-cb03dff0" src="{{a}}" mode="aspectFit"></image><view class="brand-text data-v-cb03dff0"><text class="title data-v-cb03dff0">共享风扇</text><text class="subtitle data-v-cb03dff0">随时随地,享受清凉</text></view></view><view class="header-info data-v-cb03dff0"><view class="service-tag data-v-cb03dff0"><text class="data-v-cb03dff0">便捷租赁</text><text class="dot data-v-cb03dff0">·</text><text class="data-v-cb03dff0">品质保障</text></view></view></view></view><view class="scan-section data-v-cb03dff0"><view class="scan-card data-v-cb03dff0"><view class="scan-btn data-v-cb03dff0" bindtap="{{c}}"><image class="scan-icon data-v-cb03dff0" src="{{b}}" mode="aspectFit"/><text class="scan-text data-v-cb03dff0">扫码使用</text></view><view class="scan-desc data-v-cb03dff0"><text class="data-v-cb03dff0">扫描设备二维码即可使用或归还</text></view></view></view><view class="price-card data-v-cb03dff0"><view class="card-header data-v-cb03dff0"><text class="card-title data-v-cb03dff0">收费规则</text></view><view class="price-rules data-v-cb03dff0"><view class="price-item data-v-cb03dff0"><view class="price-tag data-v-cb03dff0">5.0<text class="unit data-v-cb03dff0">元/小时</text></view></view><view class="divider data-v-cb03dff0"></view><view class="rule-list data-v-cb03dff0"><view class="rule-item data-v-cb03dff0"><view class="rule-dot data-v-cb03dff0"></view><text class="data-v-cb03dff0">不足1小时按1小时计费</text></view><view class="rule-item data-v-cb03dff0"><view class="rule-dot data-v-cb03dff0"></view><text class="data-v-cb03dff0">封顶99元,计费达99元视为买断</text></view></view></view></view><view class="usage-steps data-v-cb03dff0"><view class="steps-header data-v-cb03dff0"><text class="steps-title data-v-cb03dff0">使用流程</text></view><view class="steps-container data-v-cb03dff0"><view class="step-item data-v-cb03dff0"><view class="step-icon data-v-cb03dff0"><text class="step-number data-v-cb03dff0">1</text></view><text class="step-text data-v-cb03dff0">扫码弹出</text></view><view class="step-arrow data-v-cb03dff0"></view><view class="step-item data-v-cb03dff0"><view class="step-icon data-v-cb03dff0"><text class="step-number data-v-cb03dff0">2</text></view><text class="step-text data-v-cb03dff0">使用风扇</text></view><view class="step-arrow data-v-cb03dff0"></view><view class="step-item data-v-cb03dff0"><view class="step-icon data-v-cb03dff0"><text class="step-number data-v-cb03dff0">3</text></view><text class="step-text data-v-cb03dff0">插入归还</text></view><view class="step-arrow data-v-cb03dff0"></view><view class="step-item data-v-cb03dff0"><view class="step-icon data-v-cb03dff0"><text class="step-number data-v-cb03dff0">4</text></view><text class="step-text data-v-cb03dff0">结束订单</text></view></view></view><view wx:if="{{d}}" class="phone-auth-popup data-v-cb03dff0"><view class="popup-mask data-v-cb03dff0" catchtap="{{e}}"></view><view class="popup-content data-v-cb03dff0"><view class="popup-header data-v-cb03dff0"><text class="popup-title data-v-cb03dff0">授权获取手机号</text></view><view class="popup-body data-v-cb03dff0"><view class="auth-desc data-v-cb03dff0"><text class="data-v-cb03dff0">为了提供更好的服务和紧急联系,需要授权获取您的手机号</text></view><button class="auth-btn data-v-cb03dff0" open-type="getPhoneNumber" bindgetphonenumber="{{f}}"><text class="data-v-cb03dff0">一键获取手机号</text></button><view class="auth-cancel data-v-cb03dff0" bindtap="{{g}}"><text class="data-v-cb03dff0">暂不授权</text></view></view></view></view></view>
|
||||
<view class="container data-v-ef66b09a"><map-component wx:if="{{a}}" class="r data-v-ef66b09a" u-r="mapRef" bindrelocate="{{c}}" bindscan="{{d}}" bindshowList="{{e}}" bindmarkerTap="{{f}}" bindmapCenterChange="{{g}}" u-i="ef66b09a-0" bind:__l="__l" u-p="{{h}}"/><view wx:if="{{i}}" class="map-loading-placeholder data-v-ef66b09a"><view class="loading-content data-v-ef66b09a"><view class="loading-spinner data-v-ef66b09a"></view><text class="data-v-ef66b09a">正在获取位置信息...</text></view></view><view wx:if="{{j}}" class="location-popup data-v-ef66b09a"><view class="popup-mask data-v-ef66b09a" bindtap="{{k}}"></view><view class="{{['location-sheet', 'data-v-ef66b09a', t && 'expanded']}}"><view class="sheet-handle data-v-ef66b09a" bindtap="{{l}}"><view class="handle-bar data-v-ef66b09a"></view></view><view class="sheet-header data-v-ef66b09a"><text class="sheet-title data-v-ef66b09a">附近场地 ({{m}})</text><view class="close-btn data-v-ef66b09a" bindtap="{{o}}"><image class="close-icon data-v-ef66b09a" src="{{n}}" mode="aspectFit"/></view></view><scroll-view class="sheet-content data-v-ef66b09a" scroll-y="true"><view wx:for="{{p}}" wx:for-item="item" wx:key="k" class="position-item data-v-ef66b09a" bindtap="{{item.l}}"><view class="position-info data-v-ef66b09a"><view class="position-name data-v-ef66b09a">{{item.a}}</view><view class="position-desc data-v-ef66b09a">{{item.b}}</view><view class="position-location data-v-ef66b09a"><image class="location-icon-small data-v-ef66b09a" src="{{q}}" mode="aspectFit"/><text class="data-v-ef66b09a">{{item.c}}</text></view><view wx:if="{{item.d}}" class="position-time data-v-ef66b09a"><text class="data-v-ef66b09a">营业时间:{{item.e}}</text></view></view><view class="position-actions data-v-ef66b09a"><view wx:if="{{item.f}}" class="distance-info data-v-ef66b09a"><text class="data-v-ef66b09a">{{item.g}}km</text></view><view class="{{['status-tag', 'data-v-ef66b09a', item.i]}}"><text class="data-v-ef66b09a">{{item.h}}</text></view><view class="nav-btn data-v-ef66b09a" catchtap="{{item.j}}"><text class="data-v-ef66b09a">导航</text></view></view></view><view wx:if="{{r}}" class="empty-state data-v-ef66b09a"><image class="empty-icon data-v-ef66b09a" src="{{s}}" mode="aspectFit"/><text class="empty-text data-v-ef66b09a">暂无附近场地</text></view></scroll-view></view></view><view wx:if="{{v}}" class="loading-overlay data-v-ef66b09a"><view class="loading-content data-v-ef66b09a"><view class="loading-spinner data-v-ef66b09a"></view><text class="data-v-ef66b09a">正在获取场地信息...</text></view></view><view wx:if="{{w}}" class="phone-auth-popup data-v-ef66b09a"><view class="popup-mask data-v-ef66b09a" catchtap="{{x}}"></view><view class="popup-content data-v-ef66b09a"><view class="popup-header data-v-ef66b09a"><text class="popup-title data-v-ef66b09a">授权获取手机号</text></view><view class="popup-body data-v-ef66b09a"><view class="auth-desc data-v-ef66b09a"><text class="data-v-ef66b09a">为了提供更好的服务和紧急联系,需要授权获取您的手机号</text></view><button class="auth-btn data-v-ef66b09a" open-type="getPhoneNumber" bindgetphonenumber="{{y}}"><text class="data-v-ef66b09a">一键获取手机号</text></button><view class="auth-cancel data-v-ef66b09a" bindtap="{{z}}"><text class="data-v-ef66b09a">暂不授权</text></view></view></view></view></view>
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -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$1},{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$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$1},{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);
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
"use strict";const t=require("../common/vendor.js");const e=new class{constructor(){this.key="4c513a688938fd89b88b296e867f66ec"}async regeocode(e,s){try{const a=await t.index.request({url:"https://restapi.amap.com/v3/geocode/regeo",method:"GET",data:{key:this.key,location:`${e},${s}`,poitype:"",radius:1e3,extensions:"base",batch:!1,roadlevel:0}});return 200===a.statusCode&&"1"===a.data.status?{success:!0,data:a.data.regeocode}:{success:!1,message:a.data.info||"逆地理编码失败"}}catch(a){return console.error("逆地理编码异常:",a),{success:!1,message:"网络异常"}}}async geocode(e,s=""){try{const a=await t.index.request({url:"https://restapi.amap.com/v3/geocode/geo",method:"GET",data:{key:this.key,address:e,city:s}});return 200===a.statusCode&&"1"===a.data.status&&a.data.geocodes.length>0?{success:!0,data:a.data.geocodes[0]}:{success:!1,message:a.data.info||"地理编码失败"}}catch(a){return console.error("地理编码异常:",a),{success:!1,message:"网络异常"}}}async searchPOI(e,s="",a=3e3,c=""){try{const o=await t.index.request({url:"https://restapi.amap.com/v3/place/text",method:"GET",data:{key:this.key,keywords:e,location:s,radius:a,city:c,citylimit:!0}});return 200===o.statusCode&&"1"===o.data.status?{success:!0,data:o.data.pois||[]}:{success:!1,message:o.data.info||"搜索失败"}}catch(o){return console.error("POI搜索异常:",o),{success:!1,message:"网络异常"}}}async getRoute(e,s,a=0){try{const c=await t.index.request({url:"https://restapi.amap.com/v3/direction/driving",method:"GET",data:{key:this.key,origin:e,destination:s,strategy:a,extensions:"base"}});return 200===c.statusCode&&"1"===c.data.status?{success:!0,data:c.data.route}:{success:!1,message:c.data.info||"路径规划失败"}}catch(c){return console.error("路径规划异常:",c),{success:!1,message:"网络异常"}}}calculateDistance(t,e,s,a){const c=t*Math.PI/180,o=s*Math.PI/180,r=c-o,n=e*Math.PI/180-a*Math.PI/180;let d=2*Math.asin(Math.sqrt(Math.pow(Math.sin(r/2),2)+Math.cos(c)*Math.cos(o)*Math.pow(Math.sin(n/2),2)));return d*=6378.137,d=Math.round(1e4*d)/1e4,d}};exports.AmapUtil=e;
|
||||
Reference in New Issue
Block a user