first:修正上传地址,优化界面,尝试对接微信支付分免押(50%)
@@ -0,0 +1,6 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="AlibabaUseRightCaseForDateFormat" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
</profile>
|
||||
</component>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/uni-fans.iml" filepath="$PROJECT_DIR$/.idea/uni-fans.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PropertiesComponent">{}</component>
|
||||
</project>
|
||||
@@ -1,4 +1,4 @@
|
||||
// export const URL = "https://unifans.gxfs123.com"
|
||||
export const URL = "http://127.0.0.1:8080"
|
||||
export const URL = "https://my.gxfs123.com/api"
|
||||
// export const URL = "http://192.168.10.30:8080"
|
||||
|
||||
export const appid = "wxe752f45e7f7aa271"
|
||||
export const appid = "wx2165f0be356ae7a9"
|
||||
@@ -146,13 +146,21 @@ export const forcefOpenEmptyGrid = (deviceNo) => {
|
||||
|
||||
// 通过订单号获取订单信息
|
||||
export const getOrderByOrderNo = (orderNo) => {
|
||||
console.log('通过订单号获取订单信息:', orderNo)
|
||||
return request({
|
||||
url: `/app/order/byOrderNo/${orderNo}`,
|
||||
method: 'get',
|
||||
hideLoading: true
|
||||
})
|
||||
}
|
||||
// 通过订单号获取支付分订单信息
|
||||
export const getOrderByOrderNoScore = (orderNo) => {
|
||||
console.log('通过订单号获取支付分订单信息',orderNo);
|
||||
return request({
|
||||
url: `/app/wx-payment/score/create/${orderNo}`,
|
||||
method: 'get',
|
||||
hideLoading: true
|
||||
})
|
||||
}
|
||||
|
||||
// 更新订单套餐信息
|
||||
export const updateOrderPackage = (data) => {
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
"quickapp" : {},
|
||||
/* 小程序特有相关 */
|
||||
"mp-weixin" : {
|
||||
"appid" : "wxe752f45e7f7aa271",
|
||||
"appid" : "wx2165f0be356ae7a9",
|
||||
"setting" : {
|
||||
"urlCheck" : false
|
||||
},
|
||||
|
||||
@@ -1,46 +1,100 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<!-- 宣传图片区域 -->
|
||||
<view class="banner">
|
||||
<view class="temp-banner">
|
||||
<text class="banner-text">共享风扇</text>
|
||||
<text class="banner-subtitle">让清凉随身携带</text>
|
||||
<view class="banner-bg"></view>
|
||||
<!-- 顶部区域 -->
|
||||
<view class="header">
|
||||
<view class="header-bg">
|
||||
<view class="circle-decoration circle-1"></view>
|
||||
<view class="circle-decoration circle-2"></view>
|
||||
<view class="wave-decoration"></view>
|
||||
</view>
|
||||
<view class="header-content">
|
||||
<view class="brand-area">
|
||||
<image class="brand-logo" src="@/static/logo.png" mode="aspectFit"></image>
|
||||
<view class="brand-text">
|
||||
<text class="title">共享风扇</text>
|
||||
<text class="subtitle">随时随地,享受清凉</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="header-info">
|
||||
<view class="service-tag">
|
||||
<text>便捷租赁</text>
|
||||
<text class="dot">·</text>
|
||||
<text>品质保障</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 扫码按钮区域 -->
|
||||
<view class="scan-area">
|
||||
<view class="scan-btn" @click="handleScan">
|
||||
<view class="btn-content">
|
||||
<image class="btn-icon" src="../../static/scan-icon.png" mode="aspectFit" />
|
||||
<text class="btn-text">扫一扫</text>
|
||||
<!-- 主扫码区域 -->
|
||||
<view class="scan-section">
|
||||
<view class="scan-card">
|
||||
<view class="scan-btn" @click="handleScan">
|
||||
<image class="scan-icon" src="@/static/scan-icon.png" mode="aspectFit" />
|
||||
<text class="scan-text">扫码使用</text>
|
||||
</view>
|
||||
<view class="scan-desc">
|
||||
<text>扫描设备二维码即可使用或归还</text>
|
||||
</view>
|
||||
<text class="btn-desc">扫描设备二维码使用或归还</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 使用提示区域 -->
|
||||
<view class="tips-section">
|
||||
<view class="tips-header">
|
||||
<view class="tips-title">使用小贴士</view>
|
||||
<!-- 收费规则卡片 -->
|
||||
<view class="price-card">
|
||||
<view class="card-header">
|
||||
<text class="card-title">收费规则</text>
|
||||
</view>
|
||||
<view class="tips-list">
|
||||
<view class="tip-item">
|
||||
<view class="tip-dot"></view>
|
||||
<text>租借时间:每次最长可租借12小时</text>
|
||||
<!-- 微信免押金标识 -->
|
||||
<!-- <view class="deposit-free">
|
||||
<image class="deposit-icon" src="@/static/images/wxpayflag.png" mode="aspectFit" />
|
||||
<text class="deposit-text">微信支付分免押金</text>
|
||||
</view> -->
|
||||
<view class="price-rules">
|
||||
<view class="price-item">
|
||||
<view class="price-tag">5.0<text class="unit">元/小时</text></view>
|
||||
</view>
|
||||
<view class="tip-item">
|
||||
<view class="tip-dot"></view>
|
||||
<text>押金说明:租借需支付99元押金,归还后自动退还</text>
|
||||
<view class="divider"></view>
|
||||
<view class="rule-list">
|
||||
<view class="rule-item">
|
||||
<view class="rule-dot"></view>
|
||||
<text>15分钟内归还免费</text>
|
||||
</view>
|
||||
<view class="rule-item">
|
||||
<view class="rule-dot"></view>
|
||||
<text>不足1小时按1小时计费</text>
|
||||
</view>
|
||||
<view class="rule-item">
|
||||
<view class="rule-dot"></view>
|
||||
<text>封顶99元,计费达99元视为买断</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="tip-item">
|
||||
<view class="tip-dot"></view>
|
||||
<text>收费标准:2元/小时,不足1小时按1小时计算</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 使用流程 -->
|
||||
<view class="usage-steps">
|
||||
<view class="steps-header">
|
||||
<text class="steps-title">使用流程</text>
|
||||
</view>
|
||||
<view class="steps-container">
|
||||
<view class="step-item">
|
||||
<view class="step-icon">
|
||||
<text class="step-number">1</text>
|
||||
</view>
|
||||
<text class="step-text">扫码开锁</text>
|
||||
</view>
|
||||
<view class="tip-item">
|
||||
<view class="tip-dot"></view>
|
||||
<text>爱护提示:请勿将设备带离指定区域,保持设备清洁</text>
|
||||
<view class="step-arrow"></view>
|
||||
<view class="step-item">
|
||||
<view class="step-icon">
|
||||
<text class="step-number">2</text>
|
||||
</view>
|
||||
<text class="step-text">使用风扇</text>
|
||||
</view>
|
||||
<view class="step-arrow"></view>
|
||||
<view class="step-item">
|
||||
<view class="step-icon">
|
||||
<text class="step-number">3</text>
|
||||
</view>
|
||||
<text class="step-text">归还结算</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -48,11 +102,16 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {getQueryString, wxLogin }from '@/util/index.js'
|
||||
import {
|
||||
getQueryString,
|
||||
wxLogin
|
||||
} from '@/util/index.js'
|
||||
import {
|
||||
URL
|
||||
}from"@/config/url.js"
|
||||
import { getDeviceInfo } from '@/config/user.js'
|
||||
} from "@/config/url.js"
|
||||
import {
|
||||
getDeviceInfo
|
||||
} from '@/config/user.js'
|
||||
export default {
|
||||
methods: {
|
||||
async handleScan() {
|
||||
@@ -63,6 +122,7 @@
|
||||
fail: reject
|
||||
})
|
||||
})
|
||||
console.log(scanResult.path);
|
||||
|
||||
let deviceNo = getQueryString(scanResult.path, 'deviceNo')
|
||||
console.log('扫码路径:', scanResult.path)
|
||||
@@ -151,7 +211,7 @@
|
||||
} catch (e) {
|
||||
console.error('解析feeConfig失败:', e)
|
||||
|
||||
// 解析失败时仍然跳转到详情页面,由详情页面处理
|
||||
// 解析失败时仍然跳转到详情页面
|
||||
uni.navigateTo({
|
||||
url: `/pages/device/detail?deviceNo=${deviceNo}`
|
||||
})
|
||||
@@ -201,195 +261,384 @@
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.container {
|
||||
height: 87.5vh;
|
||||
background: #f8f8f8;
|
||||
min-height: 100vh;
|
||||
background-color: #f6f7fb;
|
||||
padding-bottom: 40rpx;
|
||||
}
|
||||
|
||||
.banner {
|
||||
padding: 30rpx;
|
||||
/* 顶部区域 */
|
||||
.header {
|
||||
height: 300rpx;
|
||||
background: linear-gradient(135deg, #1E88E5, #29B6F6);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
.temp-banner {
|
||||
height: 300rpx;
|
||||
background: linear-gradient(135deg, #1976D2, #42A5F5);
|
||||
border-radius: 30rpx;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #fff;
|
||||
box-shadow: 0 8rpx 32rpx rgba(25, 118, 210, 0.2);
|
||||
.header-bg {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1;
|
||||
|
||||
.banner-text {
|
||||
font-size: 56rpx;
|
||||
font-weight: bold;
|
||||
margin-bottom: 20rpx;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0,0,0,0.1);
|
||||
}
|
||||
.circle-decoration {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.banner-subtitle {
|
||||
font-size: 32rpx;
|
||||
opacity: 0.95;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0,0,0,0.1);
|
||||
}
|
||||
.circle-1 {
|
||||
width: 240rpx;
|
||||
height: 240rpx;
|
||||
right: -60rpx;
|
||||
top: -90rpx;
|
||||
}
|
||||
|
||||
.banner-bg {
|
||||
position: absolute;
|
||||
right: -60rpx;
|
||||
bottom: -60rpx;
|
||||
width: 300rpx;
|
||||
height: 300rpx;
|
||||
background: rgba(255,255,255,0.1);
|
||||
border-radius: 50%;
|
||||
transform: rotate(-15deg);
|
||||
}
|
||||
.circle-2 {
|
||||
width: 160rpx;
|
||||
height: 160rpx;
|
||||
left: -40rpx;
|
||||
bottom: 30rpx;
|
||||
background: rgba(255, 255, 255, 0.08);
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: -80rpx;
|
||||
top: -80rpx;
|
||||
width: 240rpx;
|
||||
height: 240rpx;
|
||||
background: rgba(255,255,255,0.08);
|
||||
border-radius: 50%;
|
||||
}
|
||||
.wave-decoration {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 40rpx;
|
||||
// background: url('@/static/images/wave.png') repeat-x;
|
||||
background-size: auto 100%;
|
||||
opacity: 0.6;
|
||||
}
|
||||
}
|
||||
|
||||
.scan-area {
|
||||
padding: 20rpx 30rpx 40rpx;
|
||||
.header-content {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
padding: 40rpx 40rpx 0;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
|
||||
.scan-btn {
|
||||
width: 460rpx;
|
||||
height: 200rpx;
|
||||
.brand-area {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: linear-gradient(135deg, #00C853, #69F0AE);
|
||||
border-radius: 30rpx;
|
||||
box-shadow: 0 8rpx 32rpx rgba(0, 200, 83, 0.2);
|
||||
transition: all 0.3s ease;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
&:active {
|
||||
transform: scale(0.98);
|
||||
box-shadow: 0 4rpx 16rpx rgba(0, 200, 83, 0.15);
|
||||
.brand-logo {
|
||||
width: 90rpx;
|
||||
height: 90rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: linear-gradient(rgba(255,255,255,0.1), transparent);
|
||||
}
|
||||
|
||||
.btn-content {
|
||||
.brand-text {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 12rpx;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
flex-direction: column;
|
||||
|
||||
.btn-icon {
|
||||
width: 48rpx;
|
||||
height: 48rpx;
|
||||
margin-right: 16rpx;
|
||||
.title {
|
||||
font-size: 48rpx;
|
||||
color: #ffffff;
|
||||
font-weight: bold;
|
||||
line-height: 1.2;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.btn-text {
|
||||
font-size: 42rpx;
|
||||
font-weight: 600;
|
||||
color: #fff;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0,0,0,0.1);
|
||||
}
|
||||
}
|
||||
|
||||
.btn-desc {
|
||||
font-size: 26rpx;
|
||||
color: rgba(255, 255, 255, 0.95);
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tips-section {
|
||||
margin: 0 30rpx;
|
||||
background: #fff;
|
||||
border-radius: 24rpx;
|
||||
box-shadow: 0 8rpx 32rpx rgba(0,0,0,0.05);
|
||||
overflow: hidden;
|
||||
|
||||
.tips-header {
|
||||
padding: 30rpx;
|
||||
background: linear-gradient(to right, #F5F9FF, #fff);
|
||||
border-bottom: 2rpx solid #f0f0f0;
|
||||
|
||||
.tips-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
position: relative;
|
||||
padding-left: 24rpx;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 8rpx;
|
||||
height: 32rpx;
|
||||
background: #1976D2;
|
||||
border-radius: 4rpx;
|
||||
.subtitle {
|
||||
font-size: 28rpx;
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tips-list {
|
||||
padding: 20rpx 30rpx;
|
||||
.header-info {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 20rpx;
|
||||
margin-bottom: 30rpx;
|
||||
|
||||
.tip-item {
|
||||
.service-tag {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 24rpx;
|
||||
padding: 0 10rpx;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.tip-dot {
|
||||
width: 12rpx;
|
||||
height: 12rpx;
|
||||
background: #1976D2;
|
||||
border-radius: 50%;
|
||||
margin-right: 16rpx;
|
||||
flex-shrink: 0;
|
||||
box-shadow: 0 2rpx 6rpx rgba(25,118,210,0.2);
|
||||
}
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-radius: 40rpx;
|
||||
padding: 10rpx 20rpx;
|
||||
|
||||
text {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
line-height: 1.6;
|
||||
font-size: 24rpx;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.dot {
|
||||
margin: 0 8rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 扫码区域 */
|
||||
.scan-section {
|
||||
padding: 0 30rpx;
|
||||
margin-top: -60rpx;
|
||||
|
||||
.scan-card {
|
||||
background: #ffffff;
|
||||
border-radius: 16rpx;
|
||||
box-shadow: 0 10rpx 30rpx rgba(0, 0, 0, 0.05);
|
||||
padding: 36rpx 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
.scan-btn {
|
||||
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, 0.2);
|
||||
position: relative;
|
||||
transition: all 0.2s ease;
|
||||
|
||||
&:active {
|
||||
transform: scale(0.96);
|
||||
}
|
||||
|
||||
.scan-icon {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
margin-bottom: 12rpx;
|
||||
}
|
||||
|
||||
.scan-text {
|
||||
font-size: 36rpx;
|
||||
color: #ffffff;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
.scan-desc {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 收费规则卡片 */
|
||||
.price-card {
|
||||
margin: 30rpx;
|
||||
background: #ffffff;
|
||||
border-radius: 16rpx;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.04);
|
||||
|
||||
.card-header {
|
||||
padding: 24rpx 30rpx;
|
||||
background: linear-gradient(to right, #f5f9ff, #ffffff);
|
||||
border-bottom: 2rpx solid #f0f0f0;
|
||||
|
||||
.card-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
position: relative;
|
||||
padding-left: 20rpx;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 6rpx;
|
||||
height: 28rpx;
|
||||
background: #2196F3;
|
||||
border-radius: 3rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 微信免押金区域 */
|
||||
.deposit-free {
|
||||
margin: 20rpx 30rpx 0;
|
||||
padding: 12rpx 16rpx;
|
||||
background: #f0f9ff;
|
||||
border-radius: 8rpx;
|
||||
border-left: 4rpx solid #03A9F4;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.deposit-icon {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin-right: 16rpx;
|
||||
}
|
||||
|
||||
.deposit-text {
|
||||
font-size: 26rpx;
|
||||
color: #03A9F4;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
.price-rules {
|
||||
padding: 20rpx 30rpx 30rpx;
|
||||
|
||||
.price-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
.price-tag {
|
||||
font-size: 60rpx;
|
||||
color: #FF6E00;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
|
||||
.unit {
|
||||
font-size: 32rpx;
|
||||
font-weight: normal;
|
||||
margin-left: 4rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.price-desc {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.divider {
|
||||
height: 2rpx;
|
||||
background-color: #f0f0f0;
|
||||
margin: 20rpx 0 30rpx;
|
||||
}
|
||||
|
||||
.rule-list {
|
||||
.rule-item {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.rule-dot {
|
||||
width: 12rpx;
|
||||
height: 12rpx;
|
||||
background: #2196F3;
|
||||
border-radius: 50%;
|
||||
margin: 12rpx 16rpx 0 0;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
text {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
line-height: 1.5;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 使用流程 */
|
||||
.usage-steps {
|
||||
margin: 0 30rpx;
|
||||
background: #ffffff;
|
||||
border-radius: 16rpx;
|
||||
box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.04);
|
||||
overflow: hidden;
|
||||
|
||||
.steps-header {
|
||||
padding: 24rpx 30rpx;
|
||||
background: linear-gradient(to right, #f5f9ff, #ffffff);
|
||||
border-bottom: 2rpx solid #f0f0f0;
|
||||
|
||||
.steps-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
position: relative;
|
||||
padding-left: 20rpx;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 6rpx;
|
||||
height: 28rpx;
|
||||
background: #2196F3;
|
||||
border-radius: 3rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.steps-container {
|
||||
padding: 40rpx 30rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
.step-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
flex: 1;
|
||||
|
||||
.step-icon {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
background: #f0f9ff;
|
||||
border: 2rpx solid #e1f5fe;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 16rpx;
|
||||
|
||||
.step-number {
|
||||
font-size: 36rpx;
|
||||
color: #2196F3;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
|
||||
.step-text {
|
||||
font-size: 26rpx;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
|
||||
.step-arrow {
|
||||
width: 40rpx;
|
||||
height: 4rpx;
|
||||
background: #e1f5fe;
|
||||
position: relative;
|
||||
|
||||
&::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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -31,7 +31,7 @@
|
||||
<!-- 费用信息 -->
|
||||
<view class="price-card">
|
||||
<view class="card-title">费用信息</view>
|
||||
<view class="pric 为了回馈他家新近三月公共努力公司决定五一假期22月1号减少,你喜欢这种什么嘿Siri换一个换一个App吃幼儿园那他那e-item">
|
||||
<view class="price-item">
|
||||
<text class="label">押金</text>
|
||||
<text class="value">¥{{ orderInfo.deposit || '99.00' }}</text>
|
||||
</view>
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1751009018822" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7460" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M779.073919 133.586954H667.784787V66.793477C667.784787 29.997071 637.887706 0 600.991309 0H423.008691c-36.796407 0-66.793477 29.997071-66.793478 66.793477v66.793477H244.926081c-36.796407 0-66.793477 29.997071-66.793477 66.793478v756.826091c0 36.796407 29.997071 66.793477 66.793477 66.793477h534.247828c36.796407 0 66.793477-29.997071 66.793477-66.793477v-756.926082c-0.09999-36.796407-29.997071-66.693487-66.893467-66.693487zM400.710868 66.793477c0-12.298799 9.999024-22.297822 22.297823-22.297822h177.982618c12.298799 0 22.297822 9.999024 22.297823 22.297822v64.593692H400.710868V66.793477z m400.660873 890.313056c0 12.298799-9.999024 22.297822-22.297822 22.297822H244.926081c-12.298799 0-22.297822-9.999024-22.297822-22.297822V200.280441c0-12.298799 9.999024-22.297822 22.297822-22.297822h534.247828c12.298799 0 22.297822 9.999024 22.297822 22.297822v756.826092z" fill="#ffffff" p-id="7461"></path><path d="M645.586954 489.652182H378.413046c-12.198809 0-22.297822 9.999024-22.297823 22.297823 0 12.198809 9.999024 22.297822 22.297823 22.297822h267.073918c12.198809 0 22.297822-9.999024 22.297823-22.297822 0-12.198809-9.999024-22.297822-22.197833-22.297823zM645.586954 667.734792H378.413046c-12.198809 0-22.297822 9.999024-22.297823 22.297822s9.999024 22.297822 22.297823 22.297822h267.073918c12.198809 0 22.297822-9.999024 22.297823-22.297822s-9.999024-22.297822-22.197833-22.297822zM645.586954 845.817401H378.413046c-12.198809 0-22.297822 9.999024-22.297823 22.297822s9.999024 22.297822 22.297823 22.297823h267.073918c12.198809 0 22.297822-9.999024 22.297823-22.297823s-9.999024-22.297822-22.197833-22.297822zM645.586954 311.669564H378.413046c-12.198809 0-22.297822 9.999024-22.297823 22.297822 0 12.198809 9.999024 22.297822 22.297823 22.297822h267.073918c12.198809 0 22.297822-9.999024 22.297823-22.297822s-9.999024-22.297822-22.197833-22.297822z" fill="#ffffff" p-id="7462"></path></svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1751008766607" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5409" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 427.023m-90 0a90 90 0 1 0 180 0 90 90 0 1 0-180 0Z" fill="#ffffff" p-id="5410"></path><path d="M512 910.402c-19.14 0-37.482-5.854-53.042-16.929-14.063-10.01-24.926-23.596-31.589-39.46L255.043 585.177l-0.154-0.25C225.522 537.209 210 482.605 210 427.021c0-80.667 31.414-156.506 88.454-213.546S431.333 125.021 512 125.021s156.506 31.414 213.546 88.454C782.587 270.515 814 346.354 814 427.021c0 55.849-15.655 110.671-45.274 158.539l-0.264 0.419-172.081 268.716c-6.755 15.726-17.66 29.176-31.704 39.055-15.485 10.895-33.7 16.652-52.677 16.652zM309.246 551.141l175.494 273.78 1.194 3.197c4.149 11.107 14.381 18.284 26.066 18.284 11.584 0 21.791-7.071 26.004-18.015l1.165-3.028L714.43 551.678C737.701 513.983 750 470.884 750 427.021c0-63.572-24.756-123.339-69.709-168.292-44.952-44.951-104.719-69.708-168.291-69.708s-123.339 24.756-168.292 69.708S274 363.449 274 427.021c0 43.64 12.186 86.552 35.246 124.12z" fill="#ffffff" p-id="5411"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 5.2 KiB |
@@ -1 +1 @@
|
||||
{"version":3,"file":"app.js","sources":["App.vue"],"sourcesContent":["<script>\r\n\timport {\r\n\t\twxLogin,\r\n\t\tgetUserInfo\r\n\t} from './util/index'\r\n\r\n\r\n\texport default {\r\n\t\tonLaunch: function() {\r\n\t\t\tconsole.log('App Launch')\r\n\t\t\t\r\n\t\t},\r\n\t\tonShow: async function() {\r\n\t\t\tconsole.log('App Show')\r\n\t\t\tawait this.autoLogin()\r\n\r\n\t\t},\r\n\t\tonHide: function() {\r\n\t\t\tconsole.log('App Hide')\r\n\t\t},\r\n\r\n\r\n\r\n\t\tmethods: {\r\n\t\t\tasync autoLogin() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst loginResult = await wxLogin()\r\n\t\t\t\t\tconsole.log('自动登录成功:', loginResult)\r\n\t\t\t\t\t// await getUserInfo()\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tconsole.error('自动登录失败:', error)\r\n\t\t\t\t\t// 登录失败的处理可以在 wxLogin 中统一处理\r\n\t\t\t\t\t// 这里可以添加特殊的错误处理逻辑\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n\t@import \"uview-ui/index.scss\"\r\n\r\n\t/*每个页面公共css */\r\n</style>"],"names":["uni","wxLogin"],"mappings":";;;;;;;;;;;;;;;;;;;AAOC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,iBAAY,YAAY;AAAA,EAExB;AAAA,EACD,QAAQ,iBAAiB;AACxBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AACtB,UAAM,KAAK,UAAU;AAAA,EAErB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACtB;AAAA,EAID,SAAS;AAAA,IACR,MAAM,YAAY;AACjB,UAAI;AACH,cAAM,cAAc,MAAMC,mBAAQ;AAClCD,sBAAAA,MAAY,MAAA,OAAA,iBAAA,WAAW,WAAW;AAAA,MAEjC,SAAO,OAAO;AACfA,sBAAAA,sCAAc,WAAW,KAAK;AAAA,MAG/B;AAAA,IACD;AAAA,EACD;AACD;;;;;;;;;;"}
|
||||
{"version":3,"file":"app.js","sources":["App.vue","main.js"],"sourcesContent":["<script>\r\n\timport {\r\n\t\twxLogin,\r\n\t\tgetUserInfo\r\n\t} from './util/index'\r\n\r\n\r\n\texport default {\r\n\t\tonLaunch: function() {\r\n\t\t\tconsole.log('App Launch')\r\n\t\t\t\r\n\t\t},\r\n\t\tonShow: async function() {\r\n\t\t\tconsole.log('App Show')\r\n\t\t\tawait this.autoLogin()\r\n\r\n\t\t},\r\n\t\tonHide: function() {\r\n\t\t\tconsole.log('App Hide')\r\n\t\t},\r\n\r\n\r\n\r\n\t\tmethods: {\r\n\t\t\tasync autoLogin() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst loginResult = await wxLogin()\r\n\t\t\t\t\tconsole.log('自动登录成功:', loginResult)\r\n\t\t\t\t\t// await getUserInfo()\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tconsole.error('自动登录失败:', error)\r\n\t\t\t\t\t// 登录失败的处理可以在 wxLogin 中统一处理\r\n\t\t\t\t\t// 这里可以添加特殊的错误处理逻辑\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n\t@import \"uview-ui/index.scss\"\r\n\r\n\t/*每个页面公共css */\r\n</style>","import App from './App'\r\nimport { orderMonitor } from './utils/orderMonitor.js'\r\n\r\nimport uView from \"uview-ui\";\r\n\r\n\r\n// #ifndef VUE3\r\nimport Vue from 'vue'\r\nimport './uni.promisify.adaptor'\r\nVue.config.productionTip = false\r\n\r\n// 注册全局订单监控服务\r\nVue.prototype.$orderMonitor = orderMonitor\r\n\r\nApp.mpType = 'app'\r\nVue.use(uView)\r\nconst app = new Vue({\r\n ...App\r\n})\r\napp.$mount()\r\n// #endif\r\n\r\n// #ifdef VUE3\r\nimport { createSSRApp } from 'vue'\r\nexport function createApp() {\r\n const app = createSSRApp(App)\r\n \r\n // 注册全局订单监控服务到VUE3\r\n app.config.globalProperties.$orderMonitor = orderMonitor\r\n \r\n return {\r\n app\r\n }\r\n}\r\n// #endif"],"names":["uni","wxLogin","createSSRApp","App","orderMonitor"],"mappings":";;;;;;;;;;;;;;;;;;;AAOC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,iBAAY,YAAY;AAAA,EAExB;AAAA,EACD,QAAQ,iBAAiB;AACxBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AACtB,UAAM,KAAK,UAAU;AAAA,EAErB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACtB;AAAA,EAID,SAAS;AAAA,IACR,MAAM,YAAY;AACjB,UAAI;AACH,cAAM,cAAc,MAAMC,mBAAQ;AAClCD,sBAAAA,MAAY,MAAA,OAAA,iBAAA,WAAW,WAAW;AAAA,MAEjC,SAAO,OAAO;AACfA,sBAAAA,sCAAc,WAAW,KAAK;AAAA,MAG/B;AAAA,IACD;AAAA,EACD;AACD;ACZM,SAAS,YAAY;AAC1B,QAAM,MAAME,cAAY,aAACC,SAAG;AAG5B,MAAI,OAAO,iBAAiB,gBAAgBC,mBAAY;AAExD,SAAO;AAAA,IACL;AAAA,EACD;AACH;;;"}
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"assets.js","sources":["static/scan-icon.png","static/jl.png","static/complaint.png","static/hlep.png"],"sourcesContent":["export default \"__VITE_ASSET__b9d91c1a__\"","export default \"__VITE_ASSET__44ff4dfa__\"","export default \"__VITE_ASSET__d1c6bbb6__\"","export default \"__VITE_ASSET__f0ed8f64__\""],"names":[],"mappings":";AAAA,MAAe,eAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;;;;;"}
|
||||
{"version":3,"file":"assets.js","sources":["static/logo.png","static/scan-icon.png","static/jl.png","static/complaint.png","static/hlep.png","static/images/location-map.svg","static/images/Electricity.svg","static/images/wxpayflag.png"],"sourcesContent":["export default \"__VITE_ASSET__fcf1191c__\"","export default \"__VITE_ASSET__b9d91c1a__\"","export default \"__VITE_ASSET__44ff4dfa__\"","export default \"__VITE_ASSET__d1c6bbb6__\"","export default \"__VITE_ASSET__f0ed8f64__\"","export default \"__VITE_ASSET__52e4836e__\"","export default \"__VITE_ASSET__f8b20b4b__\"","export default \"__VITE_ASSET__9081434a__\""],"names":[],"mappings":";AAAA,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;;;;;;;;;"}
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"url.js","sources":["config/url.js"],"sourcesContent":["// export const URL = \"https://unifans.gxfs123.com\"\r\nexport const URL = \"http://127.0.0.1:8080\"\r\n\r\nexport const appid = \"wxe752f45e7f7aa271\" "],"names":[],"mappings":";AACY,MAAC,MAAM;AAEP,MAAC,QAAQ;;;"}
|
||||
{"version":3,"file":"url.js","sources":["config/url.js"],"sourcesContent":["export const URL = \"https://my.gxfs123.com/api\"\r\n// export const URL = \"http://192.168.10.30:8080\"\r\n\r\nexport const appid = \"wx2165f0be356ae7a9\" "],"names":[],"mappings":";AAAY,MAAC,MAAM;AAGP,MAAC,QAAQ;;;"}
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"index.js","sources":["pages/help/index.vue?type=page"],"sourcesContent":["import MiniProgramPage from '/Users/apple/Documents/subject/locker-fans/uni-fans/pages/help/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"}
|
||||
{"version":3,"file":"index.js","sources":["pages/help/index.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaGVscC9pbmRleC52dWU"],"sourcesContent":["<template>\r\n <view class=\"help-container\">\r\n <!-- 常见问题 -->\r\n <view class=\"faq-list\">\r\n <view \r\n class=\"faq-item\"\r\n v-for=\"(item, index) in faqList\"\r\n :key=\"index\"\r\n @click=\"toggleFaq(index)\"\r\n >\r\n <view class=\"faq-header\">\r\n <text class=\"question\">{{ item.question }}</text>\r\n <view class=\"arrow\" :class=\"{ open: item.isOpen }\"></view>\r\n </view>\r\n <view class=\"answer\" v-show=\"item.isOpen\">\r\n {{ item.answer }}\r\n </view>\r\n </view>\r\n </view>\r\n\r\n <!-- 联系客服 -->\r\n <view class=\"contact-card\">\r\n <view class=\"contact-title\">{{ HELP_CONTENT.CONTACT.TITLE }}</view>\r\n <view class=\"contact-content\">\r\n <view class=\"contact-item\">\r\n <text class=\"label\">{{ HELP_CONTENT.CONTACT.PHONE.LABEL }}</text>\r\n <text class=\"value\" @click=\"makePhoneCall\">{{ HELP_CONTENT.CONTACT.PHONE.VALUE }}</text>\r\n </view>\r\n <view class=\"contact-item\">\r\n <text class=\"label\">{{ HELP_CONTENT.CONTACT.SERVICE_TIME.LABEL }}</text>\r\n <text class=\"value\">{{ HELP_CONTENT.CONTACT.SERVICE_TIME.VALUE }}</text>\r\n </view>\r\n </view>\r\n </view>\r\n </view>\r\n</template>\r\n\r\n<script>\r\nimport { HELP_CONTENT } from '@/constants/help'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n HELP_CONTENT,\r\n faqList: HELP_CONTENT.FAQ_LIST.map(item => ({\r\n ...item,\r\n isOpen: false\r\n }))\r\n }\r\n },\r\n methods: {\r\n toggleFaq(index) {\r\n this.faqList[index].isOpen = !this.faqList[index].isOpen\r\n },\r\n makePhoneCall() {\r\n uni.makePhoneCall({\r\n phoneNumber: HELP_CONTENT.CONTACT.PHONE.VALUE\r\n })\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.help-container {\r\n min-height: 100vh;\r\n background: #f8f8f8;\r\n padding: 30rpx;\r\n\r\n .faq-list {\r\n background: #fff;\r\n border-radius: 20rpx;\r\n padding: 20rpx;\r\n margin-bottom: 30rpx;\r\n box-shadow: 0 4rpx 16rpx rgba(0,0,0,0.04);\r\n\r\n .faq-item {\r\n border-bottom: 1rpx solid #f5f5f5;\r\n \r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n\r\n .faq-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 30rpx 20rpx;\r\n\r\n .question {\r\n font-size: 30rpx;\r\n color: #333;\r\n flex: 1;\r\n padding-right: 20rpx;\r\n }\r\n\r\n .arrow {\r\n width: 16rpx;\r\n height: 16rpx;\r\n border-right: 4rpx solid #999;\r\n border-bottom: 4rpx solid #999;\r\n transform: rotate(45deg);\r\n transition: all 0.3s;\r\n\r\n &.open {\r\n transform: rotate(-135deg);\r\n }\r\n }\r\n }\r\n\r\n .answer {\r\n font-size: 28rpx;\r\n color: #666;\r\n line-height: 1.6;\r\n padding: 0 20rpx 30rpx;\r\n background: #f9f9f9;\r\n border-radius: 10rpx;\r\n margin: 0 20rpx 20rpx;\r\n }\r\n }\r\n }\r\n\r\n .contact-card {\r\n background: #fff;\r\n border-radius: 20rpx;\r\n padding: 30rpx;\r\n box-shadow: 0 4rpx 16rpx rgba(0,0,0,0.04);\r\n\r\n .contact-title {\r\n font-size: 32rpx;\r\n color: #333;\r\n font-weight: 500;\r\n margin-bottom: 20rpx;\r\n border-left: 8rpx solid #1976D2;\r\n padding-left: 20rpx;\r\n }\r\n\r\n .contact-content {\r\n .contact-item {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 20rpx 0;\r\n \r\n .label {\r\n font-size: 28rpx;\r\n color: #666;\r\n }\r\n\r\n .value {\r\n font-size: 28rpx;\r\n color: #333;\r\n font-weight: 500;\r\n\r\n &:active {\r\n opacity: 0.7;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n</style> ","import MiniProgramPage from 'D:/uni-fans/pages/help/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["HELP_CONTENT","uni"],"mappings":";;;AAwCA,MAAK,YAAU;AAAA,EACb,OAAO;AACL,WAAO;AAAA,oBACLA,eAAY;AAAA,MACZ,SAASA,eAAY,aAAC,SAAS,IAAI,WAAS;AAAA,QAC1C,GAAG;AAAA,QACH,QAAQ;AAAA,MACV,EAAE;AAAA,IACJ;AAAA,EACD;AAAA,EACD,SAAS;AAAA,IACP,UAAU,OAAO;AACf,WAAK,QAAQ,KAAK,EAAE,SAAS,CAAC,KAAK,QAAQ,KAAK,EAAE;AAAA,IACnD;AAAA,IACD,gBAAgB;AACdC,oBAAAA,MAAI,cAAc;AAAA,QAChB,aAAaD,eAAY,aAAC,QAAQ,MAAM;AAAA,OACzC;AAAA,IACH;AAAA,EACF;AACF;;;;;;;;;;;;;;;;;;;;;;AC3DA,GAAG,WAAW,eAAe;"}
|
||||
@@ -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: \"wxe752f45e7f7aa271\"\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\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"],"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;AAIY,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;;;;"}
|
||||
{"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\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"],"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;AAIY,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;;;;"}
|
||||
@@ -1,10 +1,18 @@
|
||||
"use strict";
|
||||
const _imports_0$1 = "/static/scan-icon.png";
|
||||
const _imports_0 = "/static/jl.png";
|
||||
const _imports_1 = "/static/complaint.png";
|
||||
const _imports_2 = "/static/hlep.png";
|
||||
exports._imports_0 = _imports_0$1;
|
||||
exports._imports_0$1 = _imports_0;
|
||||
exports._imports_1 = _imports_1;
|
||||
exports._imports_2 = _imports_2;
|
||||
const _imports_0$2 = "/static/logo.png";
|
||||
const _imports_1$2 = "/static/scan-icon.png";
|
||||
const _imports_0$1 = "/static/jl.png";
|
||||
const _imports_1$1 = "/static/complaint.png";
|
||||
const _imports_2$1 = "/static/hlep.png";
|
||||
const _imports_0 = "/static/images/location-map.svg";
|
||||
const _imports_1 = "/static/images/Electricity.svg";
|
||||
const _imports_2 = "/static/images/wxpayflag.png";
|
||||
exports._imports_0 = _imports_0$2;
|
||||
exports._imports_0$1 = _imports_0$1;
|
||||
exports._imports_0$2 = _imports_0;
|
||||
exports._imports_1 = _imports_1$2;
|
||||
exports._imports_1$1 = _imports_1$1;
|
||||
exports._imports_1$2 = _imports_1;
|
||||
exports._imports_2 = _imports_2$1;
|
||||
exports._imports_2$1 = _imports_2;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/common/assets.js.map
|
||||
|
||||
@@ -2570,21 +2570,21 @@ function injectHook(type, hook, target = currentInstance, prepend = false) {
|
||||
);
|
||||
}
|
||||
}
|
||||
const createHook = (lifecycle) => (hook, target = currentInstance) => (
|
||||
const createHook$1 = (lifecycle) => (hook, target = currentInstance) => (
|
||||
// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)
|
||||
(!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target)
|
||||
);
|
||||
const onBeforeMount = createHook("bm");
|
||||
const onMounted = createHook("m");
|
||||
const onBeforeUpdate = createHook("bu");
|
||||
const onUpdated = createHook("u");
|
||||
const onBeforeUnmount = createHook("bum");
|
||||
const onUnmounted = createHook("um");
|
||||
const onServerPrefetch = createHook("sp");
|
||||
const onRenderTriggered = createHook(
|
||||
const onBeforeMount = createHook$1("bm");
|
||||
const onMounted = createHook$1("m");
|
||||
const onBeforeUpdate = createHook$1("bu");
|
||||
const onUpdated = createHook$1("u");
|
||||
const onBeforeUnmount = createHook$1("bum");
|
||||
const onUnmounted = createHook$1("um");
|
||||
const onServerPrefetch = createHook$1("sp");
|
||||
const onRenderTriggered = createHook$1(
|
||||
"rtg"
|
||||
);
|
||||
const onRenderTracked = createHook(
|
||||
const onRenderTracked = createHook$1(
|
||||
"rtc"
|
||||
);
|
||||
function onErrorCaptured(hook, target = currentInstance) {
|
||||
@@ -5119,9 +5119,10 @@ function createApp$1(rootComponent, rootProps = null) {
|
||||
}
|
||||
const createSSRApp = createApp$1;
|
||||
function getLocaleLanguage$1() {
|
||||
var _a;
|
||||
let localeLanguage = "";
|
||||
{
|
||||
const appBaseInfo = wx.getAppBaseInfo();
|
||||
const appBaseInfo = ((_a = wx.getAppBaseInfo) === null || _a === void 0 ? void 0 : _a.call(wx)) || wx.getSystemInfoSync();
|
||||
const language = appBaseInfo && appBaseInfo.language ? appBaseInfo.language : LOCALE_EN;
|
||||
localeLanguage = normalizeLocale(language) || LOCALE_EN;
|
||||
}
|
||||
@@ -5532,9 +5533,15 @@ let isIOS = false;
|
||||
let deviceWidth = 0;
|
||||
let deviceDPR = 0;
|
||||
function checkDeviceWidth() {
|
||||
const { windowWidth, pixelRatio, platform } = Object.assign({}, wx.getWindowInfo(), {
|
||||
platform: wx.getDeviceInfo().platform
|
||||
});
|
||||
var _a, _b;
|
||||
let windowWidth, pixelRatio, platform;
|
||||
{
|
||||
const windowInfo = ((_a = wx.getWindowInfo) === null || _a === void 0 ? void 0 : _a.call(wx)) || wx.getSystemInfoSync();
|
||||
const deviceInfo = ((_b = wx.getDeviceInfo) === null || _b === void 0 ? void 0 : _b.call(wx)) || wx.getSystemInfoSync();
|
||||
windowWidth = windowInfo.windowWidth;
|
||||
pixelRatio = windowInfo.pixelRatio;
|
||||
platform = deviceInfo.platform;
|
||||
}
|
||||
deviceWidth = windowWidth;
|
||||
deviceDPR = pixelRatio;
|
||||
isIOS = platform === "ios";
|
||||
@@ -5989,11 +5996,29 @@ function getOSInfo(system, platform) {
|
||||
osName = platform;
|
||||
osVersion = system;
|
||||
} else {
|
||||
osName = system.split(" ")[0] || "";
|
||||
osName = system.split(" ")[0] || platform;
|
||||
osVersion = system.split(" ")[1] || "";
|
||||
}
|
||||
osName = osName.toLocaleLowerCase();
|
||||
switch (osName) {
|
||||
case "harmony":
|
||||
case "ohos":
|
||||
case "openharmony":
|
||||
osName = "harmonyos";
|
||||
break;
|
||||
case "iphone os":
|
||||
osName = "ios";
|
||||
break;
|
||||
case "mac":
|
||||
case "darwin":
|
||||
osName = "macos";
|
||||
break;
|
||||
case "windows_nt":
|
||||
osName = "windows";
|
||||
break;
|
||||
}
|
||||
return {
|
||||
osName: osName.toLocaleLowerCase(),
|
||||
osName,
|
||||
osVersion
|
||||
};
|
||||
}
|
||||
@@ -6014,9 +6039,9 @@ function populateParameters(fromRes, toRes) {
|
||||
appVersion: "1.0.0",
|
||||
appVersionCode: "100",
|
||||
appLanguage: getAppLanguage(hostLanguage),
|
||||
uniCompileVersion: "4.57",
|
||||
uniCompilerVersion: "4.57",
|
||||
uniRuntimeVersion: "4.57",
|
||||
uniCompileVersion: "4.66",
|
||||
uniCompilerVersion: "4.66",
|
||||
uniRuntimeVersion: "4.66",
|
||||
uniPlatform: "mp-weixin",
|
||||
deviceBrand,
|
||||
deviceModel: model,
|
||||
@@ -6165,9 +6190,9 @@ const getAppBaseInfo = {
|
||||
appLanguage: getAppLanguage(hostLanguage),
|
||||
isUniAppX: false,
|
||||
uniPlatform: "mp-weixin",
|
||||
uniCompileVersion: "4.57",
|
||||
uniCompilerVersion: "4.57",
|
||||
uniRuntimeVersion: "4.57"
|
||||
uniCompileVersion: "4.66",
|
||||
uniCompilerVersion: "4.66",
|
||||
uniRuntimeVersion: "4.66"
|
||||
};
|
||||
extend(toRes, parameters);
|
||||
}
|
||||
@@ -6448,6 +6473,91 @@ function tryConnectSocket(host2, port, id) {
|
||||
});
|
||||
});
|
||||
}
|
||||
const CONSOLE_TYPES = ["log", "warn", "error", "info", "debug"];
|
||||
const originalConsole = /* @__PURE__ */ CONSOLE_TYPES.reduce((methods, type) => {
|
||||
methods[type] = console[type].bind(console);
|
||||
return methods;
|
||||
}, {});
|
||||
let sendError = null;
|
||||
const errorQueue = /* @__PURE__ */ new Set();
|
||||
const errorExtra = {};
|
||||
function sendErrorMessages(errors) {
|
||||
if (sendError == null) {
|
||||
errors.forEach((error) => {
|
||||
errorQueue.add(error);
|
||||
});
|
||||
return;
|
||||
}
|
||||
const data = errors.map((err) => {
|
||||
if (typeof err === "string") {
|
||||
return err;
|
||||
}
|
||||
const isPromiseRejection = err && "promise" in err && "reason" in err;
|
||||
const prefix = isPromiseRejection ? "UnhandledPromiseRejection: " : "";
|
||||
if (isPromiseRejection) {
|
||||
err = err.reason;
|
||||
}
|
||||
if (err instanceof Error && err.stack) {
|
||||
if (err.message && !err.stack.includes(err.message)) {
|
||||
return `${prefix}${err.message}
|
||||
${err.stack}`;
|
||||
}
|
||||
return `${prefix}${err.stack}`;
|
||||
}
|
||||
if (typeof err === "object" && err !== null) {
|
||||
try {
|
||||
return prefix + JSON.stringify(err);
|
||||
} catch (err2) {
|
||||
return prefix + String(err2);
|
||||
}
|
||||
}
|
||||
return prefix + String(err);
|
||||
}).filter(Boolean);
|
||||
if (data.length > 0) {
|
||||
sendError(JSON.stringify(Object.assign({
|
||||
type: "error",
|
||||
data
|
||||
}, errorExtra)));
|
||||
}
|
||||
}
|
||||
function setSendError(value, extra = {}) {
|
||||
sendError = value;
|
||||
Object.assign(errorExtra, extra);
|
||||
if (value != null && errorQueue.size > 0) {
|
||||
const errors = Array.from(errorQueue);
|
||||
errorQueue.clear();
|
||||
sendErrorMessages(errors);
|
||||
}
|
||||
}
|
||||
function initOnError() {
|
||||
function onError2(error) {
|
||||
try {
|
||||
if (typeof PromiseRejectionEvent !== "undefined" && error instanceof PromiseRejectionEvent && error.reason instanceof Error && error.reason.message && error.reason.message.includes(`Cannot create property 'errMsg' on string 'taskId`)) {
|
||||
return;
|
||||
}
|
||||
if (true) {
|
||||
originalConsole.error(error);
|
||||
}
|
||||
sendErrorMessages([error]);
|
||||
} catch (err) {
|
||||
originalConsole.error(err);
|
||||
}
|
||||
}
|
||||
if (typeof index.onError === "function") {
|
||||
index.onError(onError2);
|
||||
}
|
||||
if (typeof index.onUnhandledRejection === "function") {
|
||||
index.onUnhandledRejection(onError2);
|
||||
}
|
||||
return function offError2() {
|
||||
if (typeof index.offError === "function") {
|
||||
index.offError(onError2);
|
||||
}
|
||||
if (typeof index.offUnhandledRejection === "function") {
|
||||
index.offUnhandledRejection(onError2);
|
||||
}
|
||||
};
|
||||
}
|
||||
function formatMessage(type, args) {
|
||||
try {
|
||||
return {
|
||||
@@ -6480,7 +6590,16 @@ function formatArg(arg, depth = 0) {
|
||||
case "boolean":
|
||||
return formatBoolean(arg);
|
||||
case "object":
|
||||
return formatObject(arg, depth);
|
||||
try {
|
||||
return formatObject(arg, depth);
|
||||
} catch (e2) {
|
||||
return {
|
||||
type: "object",
|
||||
value: {
|
||||
properties: []
|
||||
}
|
||||
};
|
||||
}
|
||||
case "undefined":
|
||||
return formatUndefined();
|
||||
case "function":
|
||||
@@ -6626,14 +6745,21 @@ function formatObject(value, depth) {
|
||||
}
|
||||
}
|
||||
}
|
||||
let entries = Object.entries(value);
|
||||
if (isHarmonyBuilderParams(value)) {
|
||||
entries = entries.filter(([key]) => key !== "modifier" && key !== "nodeContent");
|
||||
}
|
||||
return {
|
||||
type: "object",
|
||||
className,
|
||||
value: {
|
||||
properties: Object.entries(value).map((entry) => formatObjectProperty(entry[0], entry[1], depth + 1))
|
||||
properties: entries.map((entry) => formatObjectProperty(entry[0], entry[1], depth + 1))
|
||||
}
|
||||
};
|
||||
}
|
||||
function isHarmonyBuilderParams(value) {
|
||||
return value.modifier && value.modifier._attribute && value.nodeContent;
|
||||
}
|
||||
function isComponentPublicInstance(value) {
|
||||
return value.$ && isComponentInternalInstance(value.$);
|
||||
}
|
||||
@@ -6711,10 +6837,11 @@ function formatMapEntry(value, depth) {
|
||||
value: formatArg(value[1], depth)
|
||||
};
|
||||
}
|
||||
const CONSOLE_TYPES = ["log", "warn", "error", "info", "debug"];
|
||||
let sendConsole = null;
|
||||
const messageQueue = [];
|
||||
const messageExtra = {};
|
||||
const EXCEPTION_BEGIN_MARK = "---BEGIN:EXCEPTION---";
|
||||
const EXCEPTION_END_MARK = "---END:EXCEPTION---";
|
||||
function sendConsoleMessages(messages) {
|
||||
if (sendConsole == null) {
|
||||
messageQueue.push(...messages);
|
||||
@@ -6734,10 +6861,6 @@ function setSendConsole(value, extra = {}) {
|
||||
sendConsoleMessages(messages);
|
||||
}
|
||||
}
|
||||
const originalConsole = /* @__PURE__ */ CONSOLE_TYPES.reduce((methods, type) => {
|
||||
methods[type] = console[type].bind(console);
|
||||
return methods;
|
||||
}, {});
|
||||
const atFileRegex = /^\s*at\s+[\w/./-]+:\d+$/;
|
||||
function rewriteConsole() {
|
||||
function wrapConsole(type) {
|
||||
@@ -6752,6 +6875,18 @@ function rewriteConsole() {
|
||||
{
|
||||
originalConsole[type](...originalArgs);
|
||||
}
|
||||
if (type === "error" && args.length === 1) {
|
||||
const arg = args[0];
|
||||
if (typeof arg === "string" && arg.startsWith(EXCEPTION_BEGIN_MARK)) {
|
||||
const startIndex = EXCEPTION_BEGIN_MARK.length;
|
||||
const endIndex = arg.length - EXCEPTION_END_MARK.length;
|
||||
sendErrorMessages([arg.slice(startIndex, endIndex)]);
|
||||
return;
|
||||
} else if (arg instanceof Error) {
|
||||
sendErrorMessages([arg]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
sendConsoleMessages([formatMessage(type, args)]);
|
||||
};
|
||||
}
|
||||
@@ -6796,87 +6931,10 @@ function isConsoleWritable() {
|
||||
console.log = value;
|
||||
return isWritable;
|
||||
}
|
||||
let sendError = null;
|
||||
const errorQueue = /* @__PURE__ */ new Set();
|
||||
const errorExtra = {};
|
||||
function sendErrorMessages(errors) {
|
||||
if (sendError == null) {
|
||||
errors.forEach((error) => {
|
||||
errorQueue.add(error);
|
||||
});
|
||||
return;
|
||||
}
|
||||
const data = errors.map((err) => {
|
||||
const isPromiseRejection = err && "promise" in err && "reason" in err;
|
||||
const prefix = isPromiseRejection ? "UnhandledPromiseRejection: " : "";
|
||||
if (isPromiseRejection) {
|
||||
err = err.reason;
|
||||
}
|
||||
if (err instanceof Error && err.stack) {
|
||||
if (err.message && !err.stack.includes(err.message)) {
|
||||
return `${prefix}${err.message}
|
||||
${err.stack}`;
|
||||
}
|
||||
return `${prefix}${err.stack}`;
|
||||
}
|
||||
if (typeof err === "object" && err !== null) {
|
||||
try {
|
||||
return prefix + JSON.stringify(err);
|
||||
} catch (err2) {
|
||||
return prefix + String(err2);
|
||||
}
|
||||
}
|
||||
return prefix + String(err);
|
||||
}).filter(Boolean);
|
||||
if (data.length > 0) {
|
||||
sendError(JSON.stringify(Object.assign({
|
||||
type: "error",
|
||||
data
|
||||
}, errorExtra)));
|
||||
}
|
||||
}
|
||||
function setSendError(value, extra = {}) {
|
||||
sendError = value;
|
||||
Object.assign(errorExtra, extra);
|
||||
if (value != null && errorQueue.size > 0) {
|
||||
const errors = Array.from(errorQueue);
|
||||
errorQueue.clear();
|
||||
sendErrorMessages(errors);
|
||||
}
|
||||
}
|
||||
function initOnError() {
|
||||
function onError2(error) {
|
||||
try {
|
||||
if (typeof PromiseRejectionEvent !== "undefined" && error instanceof PromiseRejectionEvent && error.reason instanceof Error && error.reason.message && error.reason.message.includes(`Cannot create property 'errMsg' on string 'taskId`)) {
|
||||
return;
|
||||
}
|
||||
if (true) {
|
||||
originalConsole.error(error);
|
||||
}
|
||||
sendErrorMessages([error]);
|
||||
} catch (err) {
|
||||
originalConsole.error(err);
|
||||
}
|
||||
}
|
||||
if (typeof index.onError === "function") {
|
||||
index.onError(onError2);
|
||||
}
|
||||
if (typeof index.onUnhandledRejection === "function") {
|
||||
index.onUnhandledRejection(onError2);
|
||||
}
|
||||
return function offError2() {
|
||||
if (typeof index.offError === "function") {
|
||||
index.offError(onError2);
|
||||
}
|
||||
if (typeof index.offUnhandledRejection === "function") {
|
||||
index.offUnhandledRejection(onError2);
|
||||
}
|
||||
};
|
||||
}
|
||||
function initRuntimeSocketService() {
|
||||
const hosts = "127.0.0.1,192.168.10.9";
|
||||
const hosts = "192.168.10.21,127.0.0.1";
|
||||
const port = "8090";
|
||||
const id = "mp-weixin_uN9NT1";
|
||||
const id = "mp-weixin_ZQiCij";
|
||||
const lazy = typeof swan !== "undefined";
|
||||
let restoreError = lazy ? () => {
|
||||
} : initOnError();
|
||||
@@ -6892,13 +6950,19 @@ function initRuntimeSocketService() {
|
||||
restoreError();
|
||||
restoreConsole();
|
||||
originalConsole.error(wrapError("开发模式下日志通道建立 socket 连接失败。"));
|
||||
originalConsole.error(wrapError("如果是小程序平台,请勾选不校验合法域名配置。"));
|
||||
{
|
||||
originalConsole.error(wrapError("小程序平台,请勾选不校验合法域名配置。"));
|
||||
}
|
||||
originalConsole.error(wrapError("如果是运行到真机,请确认手机与电脑处于同一网络。"));
|
||||
return false;
|
||||
}
|
||||
initMiniProgramGlobalFlag();
|
||||
{
|
||||
initMiniProgramGlobalFlag();
|
||||
}
|
||||
socket.onClose(() => {
|
||||
originalConsole.error(wrapError("开发模式下日志通道 socket 连接关闭,请在 HBuilderX 中重新运行。"));
|
||||
{
|
||||
originalConsole.error(wrapError("开发模式下日志通道 socket 连接关闭,请在 HBuilderX 中重新运行。"));
|
||||
}
|
||||
restoreError();
|
||||
restoreConsole();
|
||||
});
|
||||
@@ -7039,9 +7103,10 @@ function findVmByVueId(instance, vuePid) {
|
||||
}
|
||||
}
|
||||
function getLocaleLanguage() {
|
||||
var _a;
|
||||
let localeLanguage = "";
|
||||
{
|
||||
const appBaseInfo = wx.getAppBaseInfo();
|
||||
const appBaseInfo = ((_a = wx.getAppBaseInfo) === null || _a === void 0 ? void 0 : _a.call(wx)) || wx.getSystemInfoSync();
|
||||
const language = appBaseInfo && appBaseInfo.language ? appBaseInfo.language : LOCALE_EN;
|
||||
localeLanguage = normalizeLocale(language) || LOCALE_EN;
|
||||
}
|
||||
@@ -8747,6 +8812,10 @@ const $u = {
|
||||
throttle
|
||||
};
|
||||
index.$u = $u;
|
||||
const createHook = (lifecycle) => (hook, target = getCurrentInstance()) => {
|
||||
!isInSSRComponentSetup && injectHook(lifecycle, hook, target);
|
||||
};
|
||||
const onLoad = /* @__PURE__ */ createHook(ON_LOAD);
|
||||
exports._export_sfc = _export_sfc;
|
||||
exports.createSSRApp = createSSRApp;
|
||||
exports.e = e;
|
||||
@@ -8754,5 +8823,8 @@ exports.f = f;
|
||||
exports.index = index;
|
||||
exports.n = n;
|
||||
exports.o = o;
|
||||
exports.onLoad = onLoad;
|
||||
exports.reactive = reactive;
|
||||
exports.ref = ref;
|
||||
exports.t = t;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/common/vendor.js.map
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"use strict";
|
||||
const URL = "http://127.0.0.1:8080";
|
||||
const appid = "wxe752f45e7f7aa271";
|
||||
const URL = "https://my.gxfs123.com/api";
|
||||
const appid = "wx2165f0be356ae7a9";
|
||||
exports.URL = URL;
|
||||
exports.appid = appid;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/config/url.js.map
|
||||
|
||||
@@ -70,12 +70,12 @@ const confirmPaymentAndRent = (orderId) => {
|
||||
method: "post"
|
||||
});
|
||||
};
|
||||
const updateOrderPackage = (data) => {
|
||||
common_vendor.index.__f__("log", "at config/user.js:159", "更新订单套餐信息:", data);
|
||||
const getOrderByOrderNoScore = (orderNo) => {
|
||||
common_vendor.index.__f__("log", "at config/user.js:157", "通过订单号获取支付分订单信息", orderNo);
|
||||
return config_http.request({
|
||||
url: "/app/device/updateOrderPackage",
|
||||
method: "post",
|
||||
data
|
||||
url: `/app/wx-payment/score/create/${orderNo}`,
|
||||
method: "get",
|
||||
hideLoading: true
|
||||
});
|
||||
};
|
||||
const updateUserBalance = (orderId) => {
|
||||
@@ -89,11 +89,11 @@ exports.checkOrdersByStatus = checkOrdersByStatus;
|
||||
exports.confirmPaymentAndRent = confirmPaymentAndRent;
|
||||
exports.getDeviceInfo = getDeviceInfo;
|
||||
exports.getMyIndexInfo = getMyIndexInfo;
|
||||
exports.getOrderByOrderNoScore = getOrderByOrderNoScore;
|
||||
exports.getOrderList = getOrderList;
|
||||
exports.login = login;
|
||||
exports.queryById = queryById;
|
||||
exports.rentPowerBank = rentPowerBank;
|
||||
exports.updateOrderPackage = updateOrderPackage;
|
||||
exports.updateUserBalance = updateUserBalance;
|
||||
exports.withdrawDeposit = withdrawDeposit;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/config/user.js.map
|
||||
|
||||
@@ -1,77 +1,48 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../common/vendor.js");
|
||||
const common_assets = require("../../common/assets.js");
|
||||
const config_user = require("../../config/user.js");
|
||||
const _sfc_main = {
|
||||
data() {
|
||||
return {
|
||||
deviceInfo: {},
|
||||
deviceId: "",
|
||||
deviceLocation: "一号教学楼大厅",
|
||||
batteryLevel: 95,
|
||||
hasActiveOrder: false,
|
||||
deviceStatus: {
|
||||
text: "可使用",
|
||||
class: "available"
|
||||
},
|
||||
selectedPackage: 1,
|
||||
packages: [],
|
||||
depositAmount: "99.00",
|
||||
// 默认押金金额
|
||||
isLoggedIn: true,
|
||||
phoneNumber: ""
|
||||
};
|
||||
},
|
||||
onLoad(options) {
|
||||
this.deviceId = options.deviceNo;
|
||||
if (options.feeConfig) {
|
||||
try {
|
||||
common_vendor.index.__f__("log", "at pages/device/detail.vue:117", "从URL获取到feeConfig:", options.feeConfig);
|
||||
const feeConfigStr = decodeURIComponent(options.feeConfig);
|
||||
this.deviceInfo = { ...this.deviceInfo, feeConfig: feeConfigStr };
|
||||
this.parseFeeConfig();
|
||||
} catch (e) {
|
||||
common_vendor.index.__f__("error", "at pages/device/detail.vue:124", "解析URL中的feeConfig失败:", e);
|
||||
this.checkOrderStatus();
|
||||
this.getDeviceInfo();
|
||||
}
|
||||
} else {
|
||||
this.checkOrderStatus();
|
||||
common_vendor.index.__f__("log", "at pages/device/detail.vue:132", options.deviceNo);
|
||||
this.getDeviceInfo();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 检查登录状态和订单
|
||||
async getDeviceInfo() {
|
||||
const res = await config_user.getDeviceInfo(this.deviceId);
|
||||
__name: "detail",
|
||||
setup(__props) {
|
||||
const deviceInfo = common_vendor.ref({});
|
||||
const deviceId = common_vendor.ref("");
|
||||
const deviceLocation = common_vendor.ref("一号教学楼大厅");
|
||||
const batteryLevel = common_vendor.ref(95);
|
||||
const hasActiveOrder = common_vendor.ref(false);
|
||||
const deviceStatus = common_vendor.reactive({
|
||||
text: "可使用",
|
||||
class: "available"
|
||||
});
|
||||
const isLoggedIn = common_vendor.ref(true);
|
||||
const phoneNumber = common_vendor.ref("");
|
||||
common_vendor.onLoad((options) => {
|
||||
deviceId.value = options.deviceNo;
|
||||
checkOrderStatus();
|
||||
common_vendor.index.__f__("log", "at pages/device/detail.vue:161", options.deviceNo);
|
||||
fetchDeviceInfo();
|
||||
});
|
||||
const fetchDeviceInfo = async () => {
|
||||
const res = await config_user.getDeviceInfo(deviceId.value);
|
||||
if (res.code == 200) {
|
||||
this.deviceInfo = res.data.device || {};
|
||||
if (this.deviceInfo.deviceLocation) {
|
||||
this.deviceLocation = this.deviceInfo.deviceLocation;
|
||||
deviceInfo.value = res.data.device || {};
|
||||
if (deviceInfo.value.deviceLocation) {
|
||||
deviceLocation.value = deviceInfo.value.deviceLocation;
|
||||
} else if (res.data.position && res.data.position.name) {
|
||||
this.deviceLocation = res.data.position.name;
|
||||
deviceLocation.value = res.data.position.name;
|
||||
}
|
||||
if (this.deviceInfo.depositAmount) {
|
||||
this.depositAmount = this.deviceInfo.depositAmount;
|
||||
}
|
||||
if (this.deviceInfo.status) {
|
||||
if (this.deviceInfo.status === "online") {
|
||||
this.deviceStatus = {
|
||||
text: "可使用",
|
||||
class: "available"
|
||||
};
|
||||
} else if (this.deviceInfo.status === "offline") {
|
||||
this.deviceStatus = {
|
||||
text: "离线",
|
||||
class: "offline"
|
||||
};
|
||||
if (deviceInfo.value.status) {
|
||||
if (deviceInfo.value.status === "online") {
|
||||
deviceStatus.text = "可使用";
|
||||
deviceStatus.class = "available";
|
||||
} else if (deviceInfo.value.status === "offline") {
|
||||
deviceStatus.text = "离线";
|
||||
deviceStatus.class = "offline";
|
||||
}
|
||||
}
|
||||
this.parseFeeConfig();
|
||||
}
|
||||
},
|
||||
// 显示登录提示
|
||||
showLoginTip() {
|
||||
};
|
||||
const showLoginTip = () => {
|
||||
common_vendor.index.showModal({
|
||||
title: "提示",
|
||||
content: "请先登录后再操作",
|
||||
@@ -84,23 +55,19 @@ const _sfc_main = {
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
selectPackage(index) {
|
||||
this.selectedPackage = index;
|
||||
},
|
||||
// 检查订单状态
|
||||
async checkOrderStatus() {
|
||||
};
|
||||
const checkOrderStatus = async () => {
|
||||
try {
|
||||
const result = await this.$api.checkActiveOrder();
|
||||
const result = await common_vendor.index.$api.checkActiveOrder();
|
||||
if (result.hasOrder) {
|
||||
const order = result.order;
|
||||
if (order.status === "waiting_for_payment") {
|
||||
common_vendor.index.redirectTo({
|
||||
url: `/pages/order/payment?orderId=${order.orderId}&deviceId=${this.deviceId}`
|
||||
url: `/pages/order/payment?orderId=${order.orderId}&deviceId=${deviceId.value}`
|
||||
});
|
||||
} else if (order.status === "in_used") {
|
||||
common_vendor.index.redirectTo({
|
||||
url: `/pages/device/return?deviceId=${this.deviceId}`
|
||||
url: `/pages/device/return?deviceId=${deviceId.value}`
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -110,70 +77,42 @@ const _sfc_main = {
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
},
|
||||
// 处理租借操作
|
||||
handleRent() {
|
||||
if (!this.isLoggedIn) {
|
||||
this.showLoginTip();
|
||||
};
|
||||
const handleRent = () => {
|
||||
if (!isLoggedIn.value) {
|
||||
showLoginTip();
|
||||
return;
|
||||
}
|
||||
if (!this.phoneNumber) {
|
||||
if (!phoneNumber.value) {
|
||||
common_vendor.index.showToast({
|
||||
title: "请输入手机号码",
|
||||
icon: "none"
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!/^1[3-9]\d{9}$/.test(this.phoneNumber)) {
|
||||
if (!/^1[3-9]\d{9}$/.test(phoneNumber.value)) {
|
||||
common_vendor.index.showToast({
|
||||
title: "请输入正确的手机号码",
|
||||
icon: "none"
|
||||
});
|
||||
return;
|
||||
}
|
||||
this.submitRentOrder();
|
||||
},
|
||||
// 提交租借订单
|
||||
async submitRentOrder() {
|
||||
submitRentOrder();
|
||||
};
|
||||
const submitRentOrder = async () => {
|
||||
try {
|
||||
common_vendor.index.showLoading({
|
||||
title: "处理中"
|
||||
});
|
||||
const selectedPkg = this.packages[this.selectedPackage];
|
||||
const rentResult = await config_user.rentPowerBank(this.deviceId, this.phoneNumber);
|
||||
const rentResult = await config_user.rentPowerBank(deviceId.value, phoneNumber.value);
|
||||
if (rentResult.code !== 200) {
|
||||
throw new Error(rentResult.msg || "设备租借失败");
|
||||
}
|
||||
const order = rentResult.data;
|
||||
try {
|
||||
let packageTimeMinutes = 0;
|
||||
if (selectedPkg.time.includes("小时")) {
|
||||
packageTimeMinutes = parseInt(selectedPkg.time) * 60;
|
||||
} else if (selectedPkg.time.includes("分钟")) {
|
||||
packageTimeMinutes = parseInt(selectedPkg.time);
|
||||
} else {
|
||||
packageTimeMinutes = parseInt(selectedPkg.time) * 60;
|
||||
}
|
||||
const updateRes = await config_user.updateOrderPackage({
|
||||
orderId: order.orderId,
|
||||
packageTime: packageTimeMinutes,
|
||||
packagePrice: parseFloat(selectedPkg.price)
|
||||
});
|
||||
if (updateRes.code !== 200) {
|
||||
common_vendor.index.__f__("warn", "at pages/device/detail.vue:292", "更新订单套餐信息失败:", updateRes.msg);
|
||||
} else {
|
||||
common_vendor.index.__f__("log", "at pages/device/detail.vue:295", "订单套餐信息已提前更新");
|
||||
}
|
||||
} catch (updateError) {
|
||||
common_vendor.index.__f__("error", "at pages/device/detail.vue:298", "更新订单套餐信息时出错:", updateError);
|
||||
}
|
||||
const deposit = parseFloat(this.depositAmount);
|
||||
const packagePrice = parseFloat(selectedPkg.price);
|
||||
const totalAmount = (deposit + packagePrice).toFixed(2);
|
||||
const res = await config_user.getOrderByOrderNoScore(order.orderNo);
|
||||
common_vendor.index.__f__("log", "at pages/device/detail.vue:282", res);
|
||||
common_vendor.index.hideLoading();
|
||||
common_vendor.index.redirectTo({
|
||||
url: `/pages/order/payment?orderId=${order.orderId}&packageTimeHours=${selectedPkg.time.replace("小时", "")}&packagePrice=${selectedPkg.price}&totalAmount=${totalAmount}&depositAmount=${this.depositAmount}${this.deviceInfo && this.deviceInfo.feeConfig ? "&feeConfig=" + encodeURIComponent(this.deviceInfo.feeConfig) : ""}`
|
||||
});
|
||||
common_vendor.index.__f__("log", "at pages/device/detail.vue:291", order);
|
||||
} catch (error) {
|
||||
common_vendor.index.hideLoading();
|
||||
common_vendor.index.showToast({
|
||||
@@ -181,170 +120,30 @@ const _sfc_main = {
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
},
|
||||
// 单独抽取解析feeConfig的逻辑
|
||||
parseFeeConfig() {
|
||||
if (this.deviceInfo.feeConfig) {
|
||||
try {
|
||||
const feeConfig = JSON.parse(this.deviceInfo.feeConfig);
|
||||
if (feeConfig.length > 0 && "hour" in feeConfig[0] && "timesPrice" in feeConfig[0]) {
|
||||
this.packages = feeConfig.map((pkg) => {
|
||||
const hour = pkg.hour;
|
||||
const price = pkg.timesPrice;
|
||||
const unitPrice = (price / hour).toFixed(2);
|
||||
return {
|
||||
time: `${hour}小时`,
|
||||
price: price.toFixed(2),
|
||||
unitPrice,
|
||||
hour
|
||||
// 添加小时信息,用于后续处理
|
||||
};
|
||||
});
|
||||
this.packages.sort((a, b) => a.hour - b.hour);
|
||||
} else {
|
||||
const commonConfig = feeConfig.find((item) => item.specCode === "common") || feeConfig[0];
|
||||
if (commonConfig) {
|
||||
if (this.deviceInfo.feeType === "hour") {
|
||||
const hourPrice = commonConfig.hourPrice > 0 ? commonConfig.hourPrice : commonConfig.timesPrice / 6;
|
||||
this.packages = [
|
||||
{
|
||||
time: "1小时",
|
||||
price: hourPrice.toFixed(2),
|
||||
unitPrice: hourPrice.toFixed(2),
|
||||
hour: 1
|
||||
},
|
||||
{
|
||||
time: "6小时",
|
||||
price: (hourPrice * 6).toFixed(2),
|
||||
unitPrice: hourPrice.toFixed(2),
|
||||
hour: 6
|
||||
},
|
||||
{
|
||||
time: "12小时",
|
||||
price: (hourPrice * 12).toFixed(2),
|
||||
unitPrice: hourPrice.toFixed(2),
|
||||
hour: 12
|
||||
}
|
||||
];
|
||||
} else if (this.deviceInfo.feeType === "times") {
|
||||
const timesPrice = commonConfig.timesPrice;
|
||||
this.packages = [
|
||||
{
|
||||
time: "1次",
|
||||
price: timesPrice.toFixed(2),
|
||||
unitPrice: timesPrice.toFixed(2),
|
||||
hour: 1
|
||||
}
|
||||
];
|
||||
} else {
|
||||
this.packages = [
|
||||
{
|
||||
time: "1小时",
|
||||
price: "2.00",
|
||||
unitPrice: "2.00",
|
||||
hour: 1
|
||||
},
|
||||
{
|
||||
time: "6小时",
|
||||
price: "10.00",
|
||||
unitPrice: "1.67",
|
||||
hour: 6
|
||||
},
|
||||
{
|
||||
time: "12小时",
|
||||
price: "15.00",
|
||||
unitPrice: "1.25",
|
||||
hour: 12
|
||||
}
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
this.selectedPackage = Math.min(1, this.packages.length - 1);
|
||||
} catch (e) {
|
||||
common_vendor.index.__f__("error", "at pages/device/detail.vue:419", "解析设备费用配置失败:", e);
|
||||
this.packages = [
|
||||
{
|
||||
time: "1小时",
|
||||
price: "2.00",
|
||||
unitPrice: "2.00",
|
||||
hour: 1
|
||||
},
|
||||
{
|
||||
time: "6小时",
|
||||
price: "10.00",
|
||||
unitPrice: "1.67",
|
||||
hour: 6
|
||||
},
|
||||
{
|
||||
time: "12小时",
|
||||
price: "15.00",
|
||||
unitPrice: "1.25",
|
||||
hour: 12
|
||||
}
|
||||
];
|
||||
this.selectedPackage = 1;
|
||||
}
|
||||
} else {
|
||||
this.packages = [
|
||||
{
|
||||
time: "1小时",
|
||||
price: "2.00",
|
||||
unitPrice: "2.00",
|
||||
hour: 1
|
||||
},
|
||||
{
|
||||
time: "6小时",
|
||||
price: "10.00",
|
||||
unitPrice: "1.67",
|
||||
hour: 6
|
||||
},
|
||||
{
|
||||
time: "12小时",
|
||||
price: "15.00",
|
||||
unitPrice: "1.25",
|
||||
hour: 12
|
||||
}
|
||||
];
|
||||
this.selectedPackage = 1;
|
||||
}
|
||||
}
|
||||
};
|
||||
return (_ctx, _cache) => {
|
||||
return common_vendor.e({
|
||||
a: common_vendor.t(deviceStatus.text),
|
||||
b: common_vendor.n(deviceStatus.class),
|
||||
c: common_vendor.t(deviceId.value),
|
||||
d: common_assets._imports_0$2,
|
||||
e: common_vendor.t(deviceLocation.value),
|
||||
f: common_assets._imports_1$2,
|
||||
g: batteryLevel.value < 20 ? 1 : "",
|
||||
h: common_vendor.t(batteryLevel.value),
|
||||
i: !hasActiveOrder.value
|
||||
}, !hasActiveOrder.value ? {
|
||||
j: phoneNumber.value,
|
||||
k: common_vendor.o(($event) => phoneNumber.value = $event.detail.value)
|
||||
} : {}, {
|
||||
l: common_assets._imports_2$1,
|
||||
m: common_vendor.t(hasActiveOrder.value ? "归还设备" : "免押金租借"),
|
||||
n: hasActiveOrder.value ? 1 : "",
|
||||
o: common_vendor.o(handleRent)
|
||||
});
|
||||
};
|
||||
}
|
||||
};
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return common_vendor.e({
|
||||
a: common_vendor.t($data.deviceId),
|
||||
b: common_vendor.t($data.deviceStatus.text),
|
||||
c: common_vendor.n($data.deviceStatus.class),
|
||||
d: common_vendor.t($data.deviceLocation),
|
||||
e: common_vendor.t($data.batteryLevel),
|
||||
f: !$data.hasActiveOrder
|
||||
}, !$data.hasActiveOrder ? {
|
||||
g: common_vendor.f($data.packages, (pkg, index, i0) => {
|
||||
return {
|
||||
a: common_vendor.t(pkg.time),
|
||||
b: common_vendor.t(pkg.price),
|
||||
c: common_vendor.t(pkg.unitPrice),
|
||||
d: index,
|
||||
e: $data.selectedPackage === index ? 1 : "",
|
||||
f: common_vendor.o(($event) => $options.selectPackage(index), index)
|
||||
};
|
||||
})
|
||||
} : {}, {
|
||||
h: !$data.hasActiveOrder
|
||||
}, !$data.hasActiveOrder ? {
|
||||
i: $data.phoneNumber,
|
||||
j: common_vendor.o(($event) => $data.phoneNumber = $event.detail.value)
|
||||
} : {}, {
|
||||
k: !$data.hasActiveOrder
|
||||
}, !$data.hasActiveOrder ? {
|
||||
l: common_vendor.t($data.depositAmount)
|
||||
} : {}, {
|
||||
m: common_vendor.t($data.hasActiveOrder ? "归还设备" : "立即租借"),
|
||||
n: common_vendor.n($data.hasActiveOrder ? "return" : "rent"),
|
||||
o: common_vendor.o((...args) => $options.handleRent && $options.handleRent(...args))
|
||||
});
|
||||
}
|
||||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-d65de3a7"]]);
|
||||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-d65de3a7"]]);
|
||||
wx.createPage(MiniProgramPage);
|
||||
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/device/detail.js.map
|
||||
|
||||
@@ -1 +1 @@
|
||||
<view class="detail-container data-v-d65de3a7"><view class="device-card data-v-d65de3a7"><view class="device-header data-v-d65de3a7"><view class="device-title data-v-d65de3a7"><text class="name data-v-d65de3a7">共享风扇</text><text class="id data-v-d65de3a7">设备号:{{a}}</text></view><view class="{{['status', 'data-v-d65de3a7', c]}}">{{b}}</view></view><view class="device-info data-v-d65de3a7"><view class="info-item data-v-d65de3a7"><text class="label data-v-d65de3a7">设备位置</text><text class="value data-v-d65de3a7">{{d}}</text></view><view class="info-item data-v-d65de3a7"><text class="label data-v-d65de3a7">电池电量</text><text class="value data-v-d65de3a7">{{e}}%</text></view></view></view><view wx:if="{{f}}" class="package-section data-v-d65de3a7"><view class="section-title data-v-d65de3a7">选择套餐</view><view class="package-list data-v-d65de3a7"><view wx:for="{{g}}" wx:for-item="pkg" wx:key="d" class="{{['package-item', 'data-v-d65de3a7', pkg.e && 'active']}}" bindtap="{{pkg.f}}"><view class="package-content data-v-d65de3a7"><text class="time data-v-d65de3a7">{{pkg.a}}</text><text class="price data-v-d65de3a7">¥{{pkg.b}}</text></view><text class="unit-price data-v-d65de3a7">约{{pkg.c}}元/小时</text></view></view></view><view wx:if="{{h}}" class="phone-section data-v-d65de3a7"><view class="section-title data-v-d65de3a7">联系方式</view><view class="phone-input-wrap data-v-d65de3a7"><input type="number" class="phone-input data-v-d65de3a7" maxlength="11" placeholder="请输入手机号码" value="{{i}}" bindinput="{{j}}"/></view></view><view class="notice-section data-v-d65de3a7"><view class="section-title data-v-d65de3a7">使用说明</view><view class="notice-list data-v-d65de3a7"><view class="notice-item data-v-d65de3a7"><view class="dot data-v-d65de3a7"></view><text class="data-v-d65de3a7">请在使用前检查设备是否完好</text></view><view class="notice-item data-v-d65de3a7"><view class="dot data-v-d65de3a7"></view><text class="data-v-d65de3a7">超出使用时间将自动按小时计费</text></view><view class="notice-item data-v-d65de3a7"><view class="dot data-v-d65de3a7"></view><text class="data-v-d65de3a7">请在指定区域内使用设备</text></view></view></view><view class="bottom-bar data-v-d65de3a7"><view wx:if="{{k}}" class="price-info data-v-d65de3a7"><text class="deposit-text data-v-d65de3a7">押金:</text><text class="deposit-amount data-v-d65de3a7">¥{{l}}</text></view><button class="{{['action-btn', 'data-v-d65de3a7', n]}}" bindtap="{{o}}">{{m}}</button></view></view>
|
||||
<view class="container data-v-d65de3a7"><view class="device-header data-v-d65de3a7"><view class="{{['device-status-card', 'data-v-d65de3a7', b]}}"><view class="status-indicator data-v-d65de3a7"></view><text class="status-text data-v-d65de3a7">{{a}}</text></view><view class="device-title data-v-d65de3a7"><text class="name data-v-d65de3a7">共享风扇</text><view class="device-meta data-v-d65de3a7"><text class="id-label data-v-d65de3a7">设备号:</text><text class="id-value data-v-d65de3a7">{{c}}</text></view></view></view><view class="card device-info-card data-v-d65de3a7"><view class="card-row data-v-d65de3a7"><view class="card-item data-v-d65de3a7"><view class="item-icon location-icon data-v-d65de3a7"><image class="data-v-d65de3a7" src="{{d}}" mode="aspectFill" style="width:45rpx;height:45rpx"></image></view><view class="item-content data-v-d65de3a7"><text class="item-label data-v-d65de3a7">当前位置</text><text class="item-value data-v-d65de3a7">{{e}}</text></view></view><view class="card-item data-v-d65de3a7"><view class="{{['item-icon', 'battery-icon', 'data-v-d65de3a7', g && 'battery-low']}}"><image class="data-v-d65de3a7" src="{{f}}" mode="aspectFill" style="width:45rpx;height:45rpx"></image></view><view class="item-content data-v-d65de3a7"><text class="item-label data-v-d65de3a7">电池电量</text><text class="item-value data-v-d65de3a7">{{h}}%</text></view></view></view></view><view class="card pricing-card data-v-d65de3a7"><view class="card-header data-v-d65de3a7"><text class="card-title data-v-d65de3a7">计费规则</text></view><view class="pricing-banner data-v-d65de3a7"><view class="pricing-main data-v-d65de3a7"><text class="price data-v-d65de3a7">¥5.00</text><text class="unit data-v-d65de3a7">/小时</text></view><text class="cap-price data-v-d65de3a7">封顶 ¥99</text></view><view class="pricing-rules data-v-d65de3a7"><view class="rule-item data-v-d65de3a7"><view class="rule-dot data-v-d65de3a7"></view><text class="rule-text data-v-d65de3a7">前15分钟内归还<text class="highlight data-v-d65de3a7">免费</text></text></view><view class="rule-item data-v-d65de3a7"><view class="rule-dot data-v-d65de3a7"></view><text class="rule-text data-v-d65de3a7">不足60分钟按60分钟计费</text></view><view class="rule-item data-v-d65de3a7"><view class="rule-dot data-v-d65de3a7"></view><text class="rule-text data-v-d65de3a7">持续计费至99元视为买断</text></view></view></view><view wx:if="{{i}}" class="card phone-card data-v-d65de3a7"><view class="card-header data-v-d65de3a7"><text class="card-title data-v-d65de3a7">联系方式</text></view><view class="phone-input-container data-v-d65de3a7"><view class="input-wrapper data-v-d65de3a7"><text class="prefix data-v-d65de3a7">+86</text><input type="number" class="phone-input data-v-d65de3a7" maxlength="11" placeholder="请输入手机号码" value="{{j}}" bindinput="{{k}}"/></view></view></view><view class="card notice-card data-v-d65de3a7"><view class="card-header data-v-d65de3a7"><text class="card-title data-v-d65de3a7">使用须知</text></view><view class="notice-items data-v-d65de3a7"><view class="notice-item data-v-d65de3a7"><view class="notice-dot data-v-d65de3a7"></view><text class="notice-text data-v-d65de3a7">请在使用前检查设备是否完好</text></view><view class="notice-item data-v-d65de3a7"><view class="notice-dot data-v-d65de3a7"></view><text class="notice-text data-v-d65de3a7">请在指定区域内使用设备</text></view><view class="notice-item data-v-d65de3a7"><view class="notice-dot data-v-d65de3a7"></view><text class="notice-text data-v-d65de3a7">归还时请确保设备完好,避免损坏</text></view></view></view><view class="footer data-v-d65de3a7"><view class="wechat-credit data-v-d65de3a7"><image src="{{l}}" mode="aspectFit" class="wx-icon data-v-d65de3a7"></image><view class="credit-text data-v-d65de3a7"><text class="data-v-d65de3a7">微信支付分</text><text class="credit-divider data-v-d65de3a7">|</text><text class="credit-score data-v-d65de3a7">支付分200分及以上优享</text></view></view><button class="{{['rent-button', 'data-v-d65de3a7', n && 'return-button']}}" bindtap="{{o}}"><text class="data-v-d65de3a7">{{m}}</text></button></view></view>
|
||||
@@ -23,225 +23,282 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
.detail-container.data-v-d65de3a7 {
|
||||
.container.data-v-d65de3a7 {
|
||||
min-height: 100vh;
|
||||
background: #f8f8f8;
|
||||
padding: 30rpx;
|
||||
padding-bottom: 180rpx;
|
||||
background-color: #f5f7fa;
|
||||
padding: 30rpx 30rpx 240rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.detail-container .device-card.data-v-d65de3a7 {
|
||||
background: #fff;
|
||||
border-radius: 24rpx;
|
||||
padding: 30rpx;
|
||||
margin-bottom: 30rpx;
|
||||
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
.detail-container .device-card .device-header.data-v-d65de3a7 {
|
||||
.device-header.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
.detail-container .device-card .device-header .device-title .name.data-v-d65de3a7 {
|
||||
font-size: 36rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-right: 20rpx;
|
||||
.device-header .device-status-card.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.detail-container .device-card .device-header .device-title .id.data-v-d65de3a7 {
|
||||
font-size: 24rpx;
|
||||
.device-header .device-status-card .status-indicator.data-v-d65de3a7 {
|
||||
width: 20rpx;
|
||||
height: 20rpx;
|
||||
border-radius: 50%;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
.device-header .device-status-card.available .status-indicator.data-v-d65de3a7 {
|
||||
background-color: #10c469;
|
||||
box-shadow: 0 0 10rpx rgba(16, 196, 105, 0.5);
|
||||
}
|
||||
.device-header .device-status-card.available .status-text.data-v-d65de3a7 {
|
||||
color: #10c469;
|
||||
}
|
||||
.device-header .device-status-card.offline .status-indicator.data-v-d65de3a7 {
|
||||
background-color: #9a9a9a;
|
||||
}
|
||||
.device-header .device-status-card.offline .status-text.data-v-d65de3a7 {
|
||||
color: #9a9a9a;
|
||||
}
|
||||
.device-header .device-status-card .status-text.data-v-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
font-weight: 500;
|
||||
}
|
||||
.device-header .device-title .name.data-v-d65de3a7 {
|
||||
font-size: 48rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
.device-header .device-title .device-meta.data-v-d65de3a7 {
|
||||
margin-top: 10rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.device-header .device-title .device-meta .id-label.data-v-d65de3a7 {
|
||||
font-size: 26rpx;
|
||||
color: #999;
|
||||
}
|
||||
.detail-container .device-card .device-header .status.data-v-d65de3a7 {
|
||||
padding: 8rpx 24rpx;
|
||||
border-radius: 24rpx;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
.detail-container .device-card .device-header .status.available.data-v-d65de3a7 {
|
||||
background: #E8F5E9;
|
||||
color: #4CAF50;
|
||||
}
|
||||
.detail-container .device-card .device-header .status.in-use.data-v-d65de3a7 {
|
||||
background: #E3F2FD;
|
||||
color: #1976D2;
|
||||
}
|
||||
.detail-container .device-card .device-info .info-item.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
.detail-container .device-card .device-info .info-item.data-v-d65de3a7:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.detail-container .device-card .device-info .info-item .label.data-v-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
.device-header .device-title .device-meta .id-value.data-v-d65de3a7 {
|
||||
font-size: 26rpx;
|
||||
color: #666;
|
||||
}
|
||||
.detail-container .device-card .device-info .info-item .value.data-v-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
}
|
||||
.detail-container .package-section.data-v-d65de3a7 {
|
||||
background: #fff;
|
||||
.card.data-v-d65de3a7 {
|
||||
background-color: #fff;
|
||||
border-radius: 24rpx;
|
||||
box-shadow: 0 4rpx 24rpx rgba(0, 0, 0, 0.03);
|
||||
padding: 30rpx;
|
||||
margin-bottom: 30rpx;
|
||||
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
.detail-container .package-section .section-title.data-v-d65de3a7 {
|
||||
.card .card-header.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.card .card-header .card-title.data-v-d65de3a7 {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.detail-container .package-section .package-list.data-v-d65de3a7 {
|
||||
.device-info-card .card-row.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item.data-v-d65de3a7 {
|
||||
flex: 1;
|
||||
margin: 0 10rpx;
|
||||
padding: 24rpx;
|
||||
background: #F5F5F5;
|
||||
border-radius: 16rpx;
|
||||
text-align: center;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item.data-v-d65de3a7:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item.data-v-d65de3a7:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item.active.data-v-d65de3a7 {
|
||||
background: #E3F2FD;
|
||||
border: 2rpx solid #1976D2;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item.active .package-content .time.data-v-d65de3a7,
|
||||
.detail-container .package-section .package-list .package-item.active .package-content .price.data-v-d65de3a7 {
|
||||
color: #1976D2;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item .package-content.data-v-d65de3a7 {
|
||||
margin-bottom: 8rpx;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item .package-content .time.data-v-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
margin-bottom: 8rpx;
|
||||
display: block;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item .package-content .price.data-v-d65de3a7 {
|
||||
font-size: 36rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item .unit-price.data-v-d65de3a7 {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
}
|
||||
.detail-container .phone-section.data-v-d65de3a7 {
|
||||
background: #fff;
|
||||
border-radius: 24rpx;
|
||||
padding: 30rpx;
|
||||
margin-bottom: 30rpx;
|
||||
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
.detail-container .phone-section .section-title.data-v-d65de3a7 {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.detail-container .phone-section .phone-input-wrap .phone-input.data-v-d65de3a7 {
|
||||
width: 100%;
|
||||
height: 88rpx;
|
||||
background: #F5F5F5;
|
||||
border-radius: 16rpx;
|
||||
padding: 0 30rpx;
|
||||
font-size: 28rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.detail-container .phone-section .phone-input-wrap .phone-input.data-v-d65de3a7::-webkit-input-placeholder {
|
||||
color: #999;
|
||||
}
|
||||
.detail-container .phone-section .phone-input-wrap .phone-input.data-v-d65de3a7::placeholder {
|
||||
color: #999;
|
||||
}
|
||||
.detail-container .notice-section.data-v-d65de3a7 {
|
||||
background: #fff;
|
||||
border-radius: 24rpx;
|
||||
padding: 30rpx;
|
||||
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
.detail-container .notice-section .section-title.data-v-d65de3a7 {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.detail-container .notice-section .notice-list .notice-item.data-v-d65de3a7 {
|
||||
.device-info-card .card-item.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 16rpx;
|
||||
flex: 1;
|
||||
}
|
||||
.detail-container .notice-section .notice-list .notice-item.data-v-d65de3a7:last-child {
|
||||
.device-info-card .card-item .item-icon.data-v-d65de3a7 {
|
||||
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-d65de3a7 {
|
||||
background: linear-gradient(135deg, #40c9ff, #32a5ff);
|
||||
}
|
||||
.device-info-card .card-item .item-icon.battery-icon.data-v-d65de3a7 {
|
||||
background: linear-gradient(135deg, #33db92, #10c469);
|
||||
}
|
||||
.device-info-card .card-item .item-icon.battery-icon.battery-low.data-v-d65de3a7 {
|
||||
background: linear-gradient(135deg, #ff7676, #f54f4f);
|
||||
}
|
||||
.device-info-card .card-item .item-content.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.device-info-card .card-item .item-content .item-label.data-v-d65de3a7 {
|
||||
font-size: 26rpx;
|
||||
color: #999;
|
||||
margin-bottom: 4rpx;
|
||||
}
|
||||
.device-info-card .card-item .item-content .item-value.data-v-d65de3a7 {
|
||||
font-size: 30rpx;
|
||||
color: #333;
|
||||
font-weight: 500;
|
||||
}
|
||||
.pricing-card .pricing-banner.data-v-d65de3a7 {
|
||||
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-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
}
|
||||
.pricing-card .pricing-banner .pricing-main .price.data-v-d65de3a7 {
|
||||
font-size: 60rpx;
|
||||
font-weight: bold;
|
||||
color: #ff6b6b;
|
||||
}
|
||||
.pricing-card .pricing-banner .pricing-main .unit.data-v-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
color: #999;
|
||||
margin-left: 4rpx;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
.pricing-card .pricing-banner .cap-price.data-v-d65de3a7 {
|
||||
margin-top: 10rpx;
|
||||
font-size: 26rpx;
|
||||
color: #666;
|
||||
background-color: rgba(255, 107, 107, 0.1);
|
||||
padding: 6rpx 20rpx;
|
||||
border-radius: 20rpx;
|
||||
}
|
||||
.pricing-card .pricing-rules .rule-item.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.pricing-card .pricing-rules .rule-item.data-v-d65de3a7:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.detail-container .notice-section .notice-list .notice-item .dot.data-v-d65de3a7 {
|
||||
width: 12rpx;
|
||||
height: 12rpx;
|
||||
background: #1976D2;
|
||||
.pricing-card .pricing-rules .rule-item .rule-dot.data-v-d65de3a7 {
|
||||
width: 10rpx;
|
||||
height: 10rpx;
|
||||
border-radius: 50%;
|
||||
background-color: #ff6b6b;
|
||||
margin-right: 16rpx;
|
||||
}
|
||||
.detail-container .notice-section .notice-list .notice-item text.data-v-d65de3a7 {
|
||||
.pricing-card .pricing-rules .rule-item .rule-text.data-v-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.detail-container .bottom-bar.data-v-d65de3a7 {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: #fff;
|
||||
padding: 20rpx 30rpx;
|
||||
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
|
||||
.pricing-card .pricing-rules .rule-item .rule-text .highlight.data-v-d65de3a7 {
|
||||
color: #ff6b6b;
|
||||
font-weight: bold;
|
||||
}
|
||||
.phone-card .phone-input-container .input-wrapper.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
box-shadow: 0 -4rpx 16rpx rgba(0, 0, 0, 0.04);
|
||||
height: 88rpx;
|
||||
background-color: #f5f7fa;
|
||||
border-radius: 16rpx;
|
||||
padding: 0 24rpx;
|
||||
}
|
||||
.detail-container .bottom-bar .price-info .deposit-text.data-v-d65de3a7 {
|
||||
.phone-card .phone-input-container .input-wrapper .prefix.data-v-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
margin-right: 16rpx;
|
||||
padding-right: 16rpx;
|
||||
border-right: 1px solid #e0e0e0;
|
||||
}
|
||||
.detail-container .bottom-bar .price-info .deposit-amount.data-v-d65de3a7 {
|
||||
font-size: 36rpx;
|
||||
font-weight: 600;
|
||||
color: #FF9800;
|
||||
}
|
||||
.detail-container .bottom-bar .action-btn.data-v-d65de3a7 {
|
||||
.phone-card .phone-input-container .input-wrapper .phone-input.data-v-d65de3a7 {
|
||||
flex: 1;
|
||||
margin-left: 30rpx;
|
||||
height: 88rpx;
|
||||
border-radius: 44rpx;
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
padding-left: 10rpx;
|
||||
}
|
||||
.phone-card .phone-input-container .phone-tip.data-v-d65de3a7 {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
margin-top: 16rpx;
|
||||
display: block;
|
||||
}
|
||||
.notice-card .notice-items .notice-item.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
.notice-card .notice-items .notice-item.data-v-d65de3a7:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.notice-card .notice-items .notice-item .notice-dot.data-v-d65de3a7 {
|
||||
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-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.footer.data-v-d65de3a7 {
|
||||
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, 0.05);
|
||||
z-index: 100;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
--footer-height: 180rpx;
|
||||
}
|
||||
.footer .wechat-credit.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.footer .wechat-credit .wx-icon.data-v-d65de3a7 {
|
||||
width: 50rpx;
|
||||
height: 40rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
.footer .wechat-credit .credit-text.data-v-d65de3a7 {
|
||||
font-size: 24rpx;
|
||||
color: #07c160;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.footer .wechat-credit .credit-text .credit-divider.data-v-d65de3a7 {
|
||||
margin: 0 10rpx;
|
||||
}
|
||||
.footer .wechat-credit .credit-text .credit-score.data-v-d65de3a7 {
|
||||
font-weight: 500;
|
||||
}
|
||||
.footer .rent-button.data-v-d65de3a7 {
|
||||
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%;
|
||||
}
|
||||
.detail-container .bottom-bar .action-btn.rent.data-v-d65de3a7 {
|
||||
background: linear-gradient(135deg, #1976D2, #42A5F5);
|
||||
color: #fff;
|
||||
}
|
||||
.detail-container .bottom-bar .action-btn.return.data-v-d65de3a7 {
|
||||
.footer .rent-button.return-button.data-v-d65de3a7 {
|
||||
background: linear-gradient(135deg, #FF9800, #FFB74D);
|
||||
color: #fff;
|
||||
}
|
||||
.detail-container .bottom-bar .action-btn.data-v-d65de3a7:active {
|
||||
.footer .rent-button.data-v-d65de3a7:active {
|
||||
transform: scale(0.98);
|
||||
opacity: 0.9;
|
||||
}
|
||||
@@ -14,9 +14,10 @@ const _sfc_main = {
|
||||
fail: reject
|
||||
});
|
||||
});
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:125", scanResult.path);
|
||||
let deviceNo = util_index.getQueryString(scanResult.path, "deviceNo");
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:68", "扫码路径:", scanResult.path);
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:69", "解析到的设备号:", deviceNo);
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:128", "扫码路径:", scanResult.path);
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:129", "解析到的设备号:", deviceNo);
|
||||
if (!deviceNo) {
|
||||
common_vendor.index.showToast({
|
||||
title: "无效的设备二维码",
|
||||
@@ -35,14 +36,14 @@ const _sfc_main = {
|
||||
"Clientid": common_vendor.index.getStorageSync("client_id")
|
||||
}
|
||||
});
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:94", "使用中订单检查结果:", JSON.stringify(inUseRes));
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:154", "使用中订单检查结果:", 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:99", "检测到使用中订单,准备跳转:", inUseOrder);
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:159", "检测到使用中订单,准备跳转:", 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:105", "已发起页面跳转");
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:165", "已发起页面跳转");
|
||||
return;
|
||||
}
|
||||
const orderRes = await common_vendor.index.request({
|
||||
@@ -53,28 +54,28 @@ const _sfc_main = {
|
||||
"Clientid": common_vendor.index.getStorageSync("client_id")
|
||||
}
|
||||
});
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:119", "待支付订单检查结果:", JSON.stringify(orderRes));
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:179", "待支付订单检查结果:", 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:124", "检测到待支付订单,准备跳转:", unpaidOrder);
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:184", "检测到待支付订单,准备跳转:", unpaidOrder);
|
||||
common_vendor.index.navigateTo({
|
||||
url: `/pages/order/payment?orderId=${unpaidOrder.orderId}`
|
||||
});
|
||||
} else {
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:130", "无待支付订单,获取设备信息, deviceNo:", deviceNo);
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:190", "无待支付订单,获取设备信息, 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:141", "获取到设备feeConfig信息:", deviceInfo.feeConfig);
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:201", "获取到设备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:152", "解析feeConfig失败:", e);
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:212", "解析feeConfig失败:", e);
|
||||
common_vendor.index.navigateTo({
|
||||
url: `/pages/device/detail?deviceNo=${deviceNo}`
|
||||
});
|
||||
@@ -85,7 +86,7 @@ const _sfc_main = {
|
||||
});
|
||||
}
|
||||
} else {
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:166", "获取设备信息失败:", deviceInfoRes.msg || "未知错误");
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:226", "获取设备信息失败:", deviceInfoRes.msg || "未知错误");
|
||||
common_vendor.index.showToast({
|
||||
title: "获取设备信息失败",
|
||||
icon: "none"
|
||||
@@ -95,7 +96,7 @@ const _sfc_main = {
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:178", "获取设备信息异常:", error);
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:238", "获取设备信息异常:", error);
|
||||
common_vendor.index.showToast({
|
||||
title: "获取设备信息失败",
|
||||
icon: "none"
|
||||
@@ -106,7 +107,7 @@ const _sfc_main = {
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:191", "扫码处理失败:", error);
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:251", "扫码处理失败:", error);
|
||||
common_vendor.index.showToast({
|
||||
title: "扫码失败",
|
||||
icon: "none"
|
||||
@@ -118,7 +119,8 @@ const _sfc_main = {
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return {
|
||||
a: common_assets._imports_0,
|
||||
b: common_vendor.o((...args) => $options.handleScan && $options.handleScan(...args))
|
||||
b: common_assets._imports_1,
|
||||
c: common_vendor.o((...args) => $options.handleScan && $options.handleScan(...args))
|
||||
};
|
||||
}
|
||||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-1cf27b2a"]]);
|
||||
|
||||
@@ -1 +1 @@
|
||||
<view class="container data-v-1cf27b2a"><view class="banner data-v-1cf27b2a"><view class="temp-banner data-v-1cf27b2a"><text class="banner-text data-v-1cf27b2a">共享风扇</text><text class="banner-subtitle data-v-1cf27b2a">让清凉随身携带</text><view class="banner-bg data-v-1cf27b2a"></view></view></view><view class="scan-area data-v-1cf27b2a"><view class="scan-btn data-v-1cf27b2a" bindtap="{{b}}"><view class="btn-content data-v-1cf27b2a"><image class="btn-icon data-v-1cf27b2a" src="{{a}}" mode="aspectFit"/><text class="btn-text data-v-1cf27b2a">扫一扫</text></view><text class="btn-desc data-v-1cf27b2a">扫描设备二维码使用或归还</text></view></view><view class="tips-section data-v-1cf27b2a"><view class="tips-header data-v-1cf27b2a"><view class="tips-title data-v-1cf27b2a">使用小贴士</view></view><view class="tips-list data-v-1cf27b2a"><view class="tip-item data-v-1cf27b2a"><view class="tip-dot data-v-1cf27b2a"></view><text class="data-v-1cf27b2a">租借时间:每次最长可租借12小时</text></view><view class="tip-item data-v-1cf27b2a"><view class="tip-dot data-v-1cf27b2a"></view><text class="data-v-1cf27b2a">押金说明:租借需支付99元押金,归还后自动退还</text></view><view class="tip-item data-v-1cf27b2a"><view class="tip-dot data-v-1cf27b2a"></view><text class="data-v-1cf27b2a">收费标准:2元/小时,不足1小时按1小时计算</text></view><view class="tip-item data-v-1cf27b2a"><view class="tip-dot data-v-1cf27b2a"></view><text class="data-v-1cf27b2a">爱护提示:请勿将设备带离指定区域,保持设备清洁</text></view></view></view></view>
|
||||
<view class="container data-v-1cf27b2a"><view class="header data-v-1cf27b2a"><view class="header-bg data-v-1cf27b2a"><view class="circle-decoration circle-1 data-v-1cf27b2a"></view><view class="circle-decoration circle-2 data-v-1cf27b2a"></view><view class="wave-decoration data-v-1cf27b2a"></view></view><view class="header-content data-v-1cf27b2a"><view class="brand-area data-v-1cf27b2a"><image class="brand-logo data-v-1cf27b2a" src="{{a}}" mode="aspectFit"></image><view class="brand-text data-v-1cf27b2a"><text class="title data-v-1cf27b2a">共享风扇</text><text class="subtitle data-v-1cf27b2a">随时随地,享受清凉</text></view></view><view class="header-info data-v-1cf27b2a"><view class="service-tag data-v-1cf27b2a"><text class="data-v-1cf27b2a">便捷租赁</text><text class="dot data-v-1cf27b2a">·</text><text class="data-v-1cf27b2a">品质保障</text></view></view></view></view><view class="scan-section data-v-1cf27b2a"><view class="scan-card data-v-1cf27b2a"><view class="scan-btn data-v-1cf27b2a" bindtap="{{c}}"><image class="scan-icon data-v-1cf27b2a" src="{{b}}" mode="aspectFit"/><text class="scan-text data-v-1cf27b2a">扫码使用</text></view><view class="scan-desc data-v-1cf27b2a"><text class="data-v-1cf27b2a">扫描设备二维码即可使用或归还</text></view></view></view><view class="price-card data-v-1cf27b2a"><view class="card-header data-v-1cf27b2a"><text class="card-title data-v-1cf27b2a">收费规则</text></view><view class="price-rules data-v-1cf27b2a"><view class="price-item data-v-1cf27b2a"><view class="price-tag data-v-1cf27b2a">5.0<text class="unit data-v-1cf27b2a">元/小时</text></view></view><view class="divider data-v-1cf27b2a"></view><view class="rule-list data-v-1cf27b2a"><view class="rule-item data-v-1cf27b2a"><view class="rule-dot data-v-1cf27b2a"></view><text class="data-v-1cf27b2a">15分钟内归还免费</text></view><view class="rule-item data-v-1cf27b2a"><view class="rule-dot data-v-1cf27b2a"></view><text class="data-v-1cf27b2a">不足1小时按1小时计费</text></view><view class="rule-item data-v-1cf27b2a"><view class="rule-dot data-v-1cf27b2a"></view><text class="data-v-1cf27b2a">封顶99元,计费达99元视为买断</text></view></view></view></view><view class="usage-steps data-v-1cf27b2a"><view class="steps-header data-v-1cf27b2a"><text class="steps-title data-v-1cf27b2a">使用流程</text></view><view class="steps-container data-v-1cf27b2a"><view class="step-item data-v-1cf27b2a"><view class="step-icon data-v-1cf27b2a"><text class="step-number data-v-1cf27b2a">1</text></view><text class="step-text data-v-1cf27b2a">扫码开锁</text></view><view class="step-arrow data-v-1cf27b2a"></view><view class="step-item data-v-1cf27b2a"><view class="step-icon data-v-1cf27b2a"><text class="step-number data-v-1cf27b2a">2</text></view><text class="step-text data-v-1cf27b2a">使用风扇</text></view><view class="step-arrow data-v-1cf27b2a"></view><view class="step-item data-v-1cf27b2a"><view class="step-icon data-v-1cf27b2a"><text class="step-number data-v-1cf27b2a">3</text></view><text class="step-text data-v-1cf27b2a">归还结算</text></view></view></view></view>
|
||||
@@ -24,171 +24,333 @@
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
.container.data-v-1cf27b2a {
|
||||
height: 87.5vh;
|
||||
background: #f8f8f8;
|
||||
min-height: 100vh;
|
||||
background-color: #f6f7fb;
|
||||
padding-bottom: 40rpx;
|
||||
}
|
||||
.container .banner.data-v-1cf27b2a {
|
||||
padding: 30rpx;
|
||||
}
|
||||
.container .banner .temp-banner.data-v-1cf27b2a {
|
||||
|
||||
/* 顶部区域 */
|
||||
.header.data-v-1cf27b2a {
|
||||
height: 300rpx;
|
||||
background: linear-gradient(135deg, #1976D2, #42A5F5);
|
||||
border-radius: 30rpx;
|
||||
background: linear-gradient(135deg, #1E88E5, #29B6F6);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #fff;
|
||||
box-shadow: 0 8rpx 32rpx rgba(25, 118, 210, 0.2);
|
||||
}
|
||||
.container .banner .temp-banner .banner-text.data-v-1cf27b2a {
|
||||
font-size: 56rpx;
|
||||
font-weight: bold;
|
||||
margin-bottom: 20rpx;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.container .banner .temp-banner .banner-subtitle.data-v-1cf27b2a {
|
||||
font-size: 32rpx;
|
||||
opacity: 0.95;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.container .banner .temp-banner .banner-bg.data-v-1cf27b2a {
|
||||
.header .header-bg.data-v-1cf27b2a {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1;
|
||||
}
|
||||
.header .header-bg .circle-decoration.data-v-1cf27b2a {
|
||||
position: absolute;
|
||||
right: -60rpx;
|
||||
bottom: -60rpx;
|
||||
width: 300rpx;
|
||||
height: 300rpx;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
border-radius: 50%;
|
||||
transform: rotate(-15deg);
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.container .banner .temp-banner.data-v-1cf27b2a::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: -80rpx;
|
||||
top: -80rpx;
|
||||
.header .header-bg .circle-1.data-v-1cf27b2a {
|
||||
width: 240rpx;
|
||||
height: 240rpx;
|
||||
right: -60rpx;
|
||||
top: -90rpx;
|
||||
}
|
||||
.header .header-bg .circle-2.data-v-1cf27b2a {
|
||||
width: 160rpx;
|
||||
height: 160rpx;
|
||||
left: -40rpx;
|
||||
bottom: 30rpx;
|
||||
background: rgba(255, 255, 255, 0.08);
|
||||
border-radius: 50%;
|
||||
}
|
||||
.container .scan-area.data-v-1cf27b2a {
|
||||
padding: 20rpx 30rpx 40rpx;
|
||||
.header .header-bg .wave-decoration.data-v-1cf27b2a {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 40rpx;
|
||||
background-size: auto 100%;
|
||||
opacity: 0.6;
|
||||
}
|
||||
.header .header-content.data-v-1cf27b2a {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
padding: 40rpx 40rpx 0;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.container .scan-area .scan-btn.data-v-1cf27b2a {
|
||||
width: 460rpx;
|
||||
height: 200rpx;
|
||||
.header .header-content .brand-area.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.header .header-content .brand-area .brand-logo.data-v-1cf27b2a {
|
||||
width: 90rpx;
|
||||
height: 90rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
.header .header-content .brand-area .brand-text.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.header .header-content .brand-area .brand-text .title.data-v-1cf27b2a {
|
||||
font-size: 48rpx;
|
||||
color: #ffffff;
|
||||
font-weight: bold;
|
||||
line-height: 1.2;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.header .header-content .brand-area .brand-text .subtitle.data-v-1cf27b2a {
|
||||
font-size: 28rpx;
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
}
|
||||
.header .header-content .header-info.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 20rpx;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
.header .header-content .header-info .service-tag.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-radius: 40rpx;
|
||||
padding: 10rpx 20rpx;
|
||||
}
|
||||
.header .header-content .header-info .service-tag text.data-v-1cf27b2a {
|
||||
font-size: 24rpx;
|
||||
color: #ffffff;
|
||||
}
|
||||
.header .header-content .header-info .service-tag .dot.data-v-1cf27b2a {
|
||||
margin: 0 8rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* 扫码区域 */
|
||||
.scan-section.data-v-1cf27b2a {
|
||||
padding: 0 30rpx;
|
||||
margin-top: -60rpx;
|
||||
}
|
||||
.scan-section .scan-card.data-v-1cf27b2a {
|
||||
background: #ffffff;
|
||||
border-radius: 16rpx;
|
||||
box-shadow: 0 10rpx 30rpx rgba(0, 0, 0, 0.05);
|
||||
padding: 36rpx 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
.scan-section .scan-card .scan-btn.data-v-1cf27b2a {
|
||||
width: 220rpx;
|
||||
height: 220rpx;
|
||||
background: linear-gradient(135deg, #00B0FF, #0091EA);
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: linear-gradient(135deg, #00C853, #69F0AE);
|
||||
border-radius: 30rpx;
|
||||
box-shadow: 0 8rpx 32rpx rgba(0, 200, 83, 0.2);
|
||||
transition: all 0.3s ease;
|
||||
margin-bottom: 24rpx;
|
||||
box-shadow: 0 10rpx 20rpx rgba(0, 176, 255, 0.2);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
.container .scan-area .scan-btn.data-v-1cf27b2a:active {
|
||||
transform: scale(0.98);
|
||||
box-shadow: 0 4rpx 16rpx rgba(0, 200, 83, 0.15);
|
||||
.scan-section .scan-card .scan-btn.data-v-1cf27b2a:active {
|
||||
transform: scale(0.96);
|
||||
}
|
||||
.container .scan-area .scan-btn.data-v-1cf27b2a::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: linear-gradient(rgba(255, 255, 255, 0.1), transparent);
|
||||
}
|
||||
.container .scan-area .scan-btn .btn-content.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
.scan-section .scan-card .scan-btn .scan-icon.data-v-1cf27b2a {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
margin-bottom: 12rpx;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.container .scan-area .scan-btn .btn-content .btn-icon.data-v-1cf27b2a {
|
||||
width: 48rpx;
|
||||
height: 48rpx;
|
||||
margin-right: 16rpx;
|
||||
.scan-section .scan-card .scan-btn .scan-text.data-v-1cf27b2a {
|
||||
font-size: 36rpx;
|
||||
color: #ffffff;
|
||||
font-weight: 500;
|
||||
}
|
||||
.container .scan-area .scan-btn .btn-content .btn-text.data-v-1cf27b2a {
|
||||
font-size: 42rpx;
|
||||
font-weight: 600;
|
||||
color: #fff;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
|
||||
.scan-section .scan-card .scan-desc.data-v-1cf27b2a {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
}
|
||||
.container .scan-area .scan-btn .btn-desc.data-v-1cf27b2a {
|
||||
font-size: 26rpx;
|
||||
color: rgba(255, 255, 255, 0.95);
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.container .tips-section.data-v-1cf27b2a {
|
||||
margin: 0 30rpx;
|
||||
background: #fff;
|
||||
border-radius: 24rpx;
|
||||
box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.05);
|
||||
|
||||
/* 收费规则卡片 */
|
||||
.price-card.data-v-1cf27b2a {
|
||||
margin: 30rpx;
|
||||
background: #ffffff;
|
||||
border-radius: 16rpx;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.04);
|
||||
/* 微信免押金区域 */
|
||||
}
|
||||
.container .tips-section .tips-header.data-v-1cf27b2a {
|
||||
padding: 30rpx;
|
||||
background: linear-gradient(to right, #F5F9FF, #fff);
|
||||
.price-card .card-header.data-v-1cf27b2a {
|
||||
padding: 24rpx 30rpx;
|
||||
background: linear-gradient(to right, #f5f9ff, #ffffff);
|
||||
border-bottom: 2rpx solid #f0f0f0;
|
||||
}
|
||||
.container .tips-section .tips-header .tips-title.data-v-1cf27b2a {
|
||||
.price-card .card-header .card-title.data-v-1cf27b2a {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
position: relative;
|
||||
padding-left: 24rpx;
|
||||
padding-left: 20rpx;
|
||||
}
|
||||
.container .tips-section .tips-header .tips-title.data-v-1cf27b2a::before {
|
||||
.price-card .card-header .card-title.data-v-1cf27b2a::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 8rpx;
|
||||
height: 32rpx;
|
||||
background: #1976D2;
|
||||
border-radius: 4rpx;
|
||||
width: 6rpx;
|
||||
height: 28rpx;
|
||||
background: #2196F3;
|
||||
border-radius: 3rpx;
|
||||
}
|
||||
.container .tips-section .tips-list.data-v-1cf27b2a {
|
||||
padding: 20rpx 30rpx;
|
||||
}
|
||||
.container .tips-section .tips-list .tip-item.data-v-1cf27b2a {
|
||||
.price-card .deposit-free.data-v-1cf27b2a {
|
||||
margin: 20rpx 30rpx 0;
|
||||
padding: 12rpx 16rpx;
|
||||
background: #f0f9ff;
|
||||
border-radius: 8rpx;
|
||||
border-left: 4rpx solid #03A9F4;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 24rpx;
|
||||
padding: 0 10rpx;
|
||||
}
|
||||
.container .tips-section .tips-list .tip-item.data-v-1cf27b2a:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.container .tips-section .tips-list .tip-item .tip-dot.data-v-1cf27b2a {
|
||||
width: 12rpx;
|
||||
height: 12rpx;
|
||||
background: #1976D2;
|
||||
border-radius: 50%;
|
||||
.price-card .deposit-free .deposit-icon.data-v-1cf27b2a {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin-right: 16rpx;
|
||||
flex-shrink: 0;
|
||||
box-shadow: 0 2rpx 6rpx rgba(25, 118, 210, 0.2);
|
||||
}
|
||||
.container .tips-section .tips-list .tip-item text.data-v-1cf27b2a {
|
||||
.price-card .deposit-free .deposit-text.data-v-1cf27b2a {
|
||||
font-size: 26rpx;
|
||||
color: #03A9F4;
|
||||
font-weight: 500;
|
||||
}
|
||||
.price-card .price-rules.data-v-1cf27b2a {
|
||||
padding: 20rpx 30rpx 30rpx;
|
||||
}
|
||||
.price-card .price-rules .price-item.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.price-card .price-rules .price-item .price-tag.data-v-1cf27b2a {
|
||||
font-size: 60rpx;
|
||||
color: #FF6E00;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
}
|
||||
.price-card .price-rules .price-item .price-tag .unit.data-v-1cf27b2a {
|
||||
font-size: 32rpx;
|
||||
font-weight: normal;
|
||||
margin-left: 4rpx;
|
||||
}
|
||||
.price-card .price-rules .price-item .price-desc.data-v-1cf27b2a {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
line-height: 1.6;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
.price-card .price-rules .divider.data-v-1cf27b2a {
|
||||
height: 2rpx;
|
||||
background-color: #f0f0f0;
|
||||
margin: 20rpx 0 30rpx;
|
||||
}
|
||||
.price-card .price-rules .rule-list .rule-item.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.price-card .price-rules .rule-list .rule-item.data-v-1cf27b2a:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.price-card .price-rules .rule-list .rule-item .rule-dot.data-v-1cf27b2a {
|
||||
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-1cf27b2a {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* 使用流程 */
|
||||
.usage-steps.data-v-1cf27b2a {
|
||||
margin: 0 30rpx;
|
||||
background: #ffffff;
|
||||
border-radius: 16rpx;
|
||||
box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.04);
|
||||
overflow: hidden;
|
||||
}
|
||||
.usage-steps .steps-header.data-v-1cf27b2a {
|
||||
padding: 24rpx 30rpx;
|
||||
background: linear-gradient(to right, #f5f9ff, #ffffff);
|
||||
border-bottom: 2rpx solid #f0f0f0;
|
||||
}
|
||||
.usage-steps .steps-header .steps-title.data-v-1cf27b2a {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
position: relative;
|
||||
padding-left: 20rpx;
|
||||
}
|
||||
.usage-steps .steps-header .steps-title.data-v-1cf27b2a::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-1cf27b2a {
|
||||
padding: 40rpx 30rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.usage-steps .steps-container .step-item.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
flex: 1;
|
||||
}
|
||||
.usage-steps .steps-container .step-item .step-icon.data-v-1cf27b2a {
|
||||
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-1cf27b2a {
|
||||
font-size: 36rpx;
|
||||
color: #2196F3;
|
||||
font-weight: 600;
|
||||
}
|
||||
.usage-steps .steps-container .step-item .step-text.data-v-1cf27b2a {
|
||||
font-size: 26rpx;
|
||||
color: #666;
|
||||
}
|
||||
.usage-steps .steps-container .step-arrow.data-v-1cf27b2a {
|
||||
width: 40rpx;
|
||||
height: 4rpx;
|
||||
background: #e1f5fe;
|
||||
position: relative;
|
||||
}
|
||||
.usage-steps .steps-container .step-arrow.data-v-1cf27b2a::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;
|
||||
}
|
||||
@@ -65,7 +65,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
g: common_vendor.o(($event) => $options.navigateTo("/pages/deposit/index")),
|
||||
h: common_assets._imports_0$1,
|
||||
i: common_vendor.o(($event) => $options.navigateTo("/pages/order/index")),
|
||||
j: common_assets._imports_1,
|
||||
j: common_assets._imports_1$1,
|
||||
k: common_vendor.o(($event) => $options.navigateTo("/pages/feedback/index")),
|
||||
l: common_assets._imports_2,
|
||||
m: common_vendor.o(($event) => $options.navigateTo("/pages/help/index"))
|
||||
|
||||
@@ -1 +1 @@
|
||||
<view class="payment-container data-v-13c3fb22"><view class="status-card data-v-13c3fb22"><view class="{{['status-icon', 'data-v-13c3fb22', a]}}"></view><view class="status-text data-v-13c3fb22">{{b}}</view><view class="status-desc data-v-13c3fb22">{{c}}</view></view><view class="order-card data-v-13c3fb22"><view class="card-title data-v-13c3fb22">订单信息</view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">订单号</text><text class="value data-v-13c3fb22">{{d}}</text></view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">设备号</text><text class="value data-v-13c3fb22">{{e}}</text></view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">创建时间</text><text class="value data-v-13c3fb22">{{f}}</text></view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">联系电话</text><text class="value data-v-13c3fb22">{{g}}</text></view></view><view class="price-card data-v-13c3fb22"><view class="card-title data-v-13c3fb22">费用信息</view><view class="pric 为了回馈他家新近三月公共努力公司决定五一假期22月1号减少,你喜欢这种什么嘿Siri换一个换一个App吃幼儿园那他那e-item data-v-13c3fb22"><text class="label data-v-13c3fb22">押金</text><text class="value data-v-13c3fb22">¥{{h}}</text></view><view class="price-item data-v-13c3fb22"><text class="label data-v-13c3fb22">套餐</text><text class="value data-v-13c3fb22">{{i}}元/{{j}}小时</text></view><view class="price-item total data-v-13c3fb22"><text class="label data-v-13c3fb22">合计</text><text class="value data-v-13c3fb22">¥{{k}}</text></view></view><view class="bottom-bar data-v-13c3fb22"><view class="total-amount data-v-13c3fb22"><text class="data-v-13c3fb22">合计:</text><text class="amount data-v-13c3fb22">¥{{l}}</text></view><button class="pay-btn data-v-13c3fb22" bindtap="{{m}}">立即支付</button></view></view>
|
||||
<view class="payment-container data-v-13c3fb22"><view class="status-card data-v-13c3fb22"><view class="{{['status-icon', 'data-v-13c3fb22', a]}}"></view><view class="status-text data-v-13c3fb22">{{b}}</view><view class="status-desc data-v-13c3fb22">{{c}}</view></view><view class="order-card data-v-13c3fb22"><view class="card-title data-v-13c3fb22">订单信息</view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">订单号</text><text class="value data-v-13c3fb22">{{d}}</text></view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">设备号</text><text class="value data-v-13c3fb22">{{e}}</text></view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">创建时间</text><text class="value data-v-13c3fb22">{{f}}</text></view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">联系电话</text><text class="value data-v-13c3fb22">{{g}}</text></view></view><view class="price-card data-v-13c3fb22"><view class="card-title data-v-13c3fb22">费用信息</view><view class="price-item data-v-13c3fb22"><text class="label data-v-13c3fb22">押金</text><text class="value data-v-13c3fb22">¥{{h}}</text></view><view class="price-item data-v-13c3fb22"><text class="label data-v-13c3fb22">套餐</text><text class="value data-v-13c3fb22">{{i}}元/{{j}}小时</text></view><view class="price-item total data-v-13c3fb22"><text class="label data-v-13c3fb22">合计</text><text class="value data-v-13c3fb22">¥{{k}}</text></view></view><view class="bottom-bar data-v-13c3fb22"><view class="total-amount data-v-13c3fb22"><text class="data-v-13c3fb22">合计:</text><text class="amount data-v-13c3fb22">¥{{l}}</text></view><button class="pay-btn data-v-13c3fb22" bindtap="{{m}}">立即支付</button></view></view>
|
||||
@@ -1,29 +1,36 @@
|
||||
{
|
||||
"description": "项目配置文件。",
|
||||
"packOptions": {
|
||||
"ignore": [],
|
||||
"include": []
|
||||
"description": "项目配置文件。",
|
||||
"packOptions": {
|
||||
"ignore": []
|
||||
},
|
||||
"setting": {
|
||||
"urlCheck": false,
|
||||
"es6": true,
|
||||
"postcss": false,
|
||||
"minified": false,
|
||||
"newFeature": true,
|
||||
"bigPackageSizeSupport": true
|
||||
},
|
||||
"compileType": "miniprogram",
|
||||
"libVersion": "",
|
||||
"appid": "wx2165f0be356ae7a9",
|
||||
"projectname": "fs",
|
||||
"condition": {
|
||||
"search": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"setting": {
|
||||
"urlCheck": false,
|
||||
"es6": true,
|
||||
"postcss": false,
|
||||
"minified": false,
|
||||
"newFeature": true,
|
||||
"bigPackageSizeSupport": true,
|
||||
"babelSetting": {
|
||||
"ignore": [],
|
||||
"disablePlugins": [],
|
||||
"outputPath": ""
|
||||
}
|
||||
"conversation": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"compileType": "miniprogram",
|
||||
"libVersion": "3.8.1",
|
||||
"appid": "wxe752f45e7f7aa271",
|
||||
"projectname": "fs",
|
||||
"condition": {},
|
||||
"editorSetting": {
|
||||
"tabIndent": "insertSpaces",
|
||||
"tabSize": 4
|
||||
"game": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"miniprogram": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
|
||||
"projectname": "fs",
|
||||
"setting": {
|
||||
"compileHotReLoad": true
|
||||
}
|
||||
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
|
||||
"projectname": "fs",
|
||||
"setting": {
|
||||
"compileHotReLoad": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1751009018822" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7460" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M779.073919 133.586954H667.784787V66.793477C667.784787 29.997071 637.887706 0 600.991309 0H423.008691c-36.796407 0-66.793477 29.997071-66.793478 66.793477v66.793477H244.926081c-36.796407 0-66.793477 29.997071-66.793477 66.793478v756.826091c0 36.796407 29.997071 66.793477 66.793477 66.793477h534.247828c36.796407 0 66.793477-29.997071 66.793477-66.793477v-756.926082c-0.09999-36.796407-29.997071-66.693487-66.893467-66.693487zM400.710868 66.793477c0-12.298799 9.999024-22.297822 22.297823-22.297822h177.982618c12.298799 0 22.297822 9.999024 22.297823 22.297822v64.593692H400.710868V66.793477z m400.660873 890.313056c0 12.298799-9.999024 22.297822-22.297822 22.297822H244.926081c-12.298799 0-22.297822-9.999024-22.297822-22.297822V200.280441c0-12.298799 9.999024-22.297822 22.297822-22.297822h534.247828c12.298799 0 22.297822 9.999024 22.297822 22.297822v756.826092z" fill="#ffffff" p-id="7461"></path><path d="M645.586954 489.652182H378.413046c-12.198809 0-22.297822 9.999024-22.297823 22.297823 0 12.198809 9.999024 22.297822 22.297823 22.297822h267.073918c12.198809 0 22.297822-9.999024 22.297823-22.297822 0-12.198809-9.999024-22.297822-22.197833-22.297823zM645.586954 667.734792H378.413046c-12.198809 0-22.297822 9.999024-22.297823 22.297822s9.999024 22.297822 22.297823 22.297822h267.073918c12.198809 0 22.297822-9.999024 22.297823-22.297822s-9.999024-22.297822-22.197833-22.297822zM645.586954 845.817401H378.413046c-12.198809 0-22.297822 9.999024-22.297823 22.297822s9.999024 22.297822 22.297823 22.297823h267.073918c12.198809 0 22.297822-9.999024 22.297823-22.297823s-9.999024-22.297822-22.197833-22.297822zM645.586954 311.669564H378.413046c-12.198809 0-22.297822 9.999024-22.297823 22.297822 0 12.198809 9.999024 22.297822 22.297823 22.297822h267.073918c12.198809 0 22.297822-9.999024 22.297823-22.297822s-9.999024-22.297822-22.197833-22.297822z" fill="#ffffff" p-id="7462"></path></svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1751008766607" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5409" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 427.023m-90 0a90 90 0 1 0 180 0 90 90 0 1 0-180 0Z" fill="#ffffff" p-id="5410"></path><path d="M512 910.402c-19.14 0-37.482-5.854-53.042-16.929-14.063-10.01-24.926-23.596-31.589-39.46L255.043 585.177l-0.154-0.25C225.522 537.209 210 482.605 210 427.021c0-80.667 31.414-156.506 88.454-213.546S431.333 125.021 512 125.021s156.506 31.414 213.546 88.454C782.587 270.515 814 346.354 814 427.021c0 55.849-15.655 110.671-45.274 158.539l-0.264 0.419-172.081 268.716c-6.755 15.726-17.66 29.176-31.704 39.055-15.485 10.895-33.7 16.652-52.677 16.652zM309.246 551.141l175.494 273.78 1.194 3.197c4.149 11.107 14.381 18.284 26.066 18.284 11.584 0 21.791-7.071 26.004-18.015l1.165-3.028L714.43 551.678C737.701 513.983 750 470.884 750 427.021c0-63.572-24.756-123.339-69.709-168.292-44.952-44.951-104.719-69.708-168.291-69.708s-123.339 24.756-168.292 69.708S274 363.449 274 427.021c0 43.64 12.186 86.552 35.246 124.12z" fill="#ffffff" p-id="5411"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 5.2 KiB |
@@ -10,7 +10,7 @@ const wxLogin = () => {
|
||||
if (loginRes.code) {
|
||||
const result = await config_user.login({
|
||||
code: loginRes.code,
|
||||
appid: "wxe752f45e7f7aa271"
|
||||
appid: "wx2165f0be356ae7a9"
|
||||
});
|
||||
if (result.code === 200) {
|
||||
common_vendor.index.setStorageSync("token", result.data.LoginWxVo.access_token);
|
||||
|
||||
@@ -16,7 +16,7 @@ export const wxLogin = () => {
|
||||
// 2. 发送 code 到后端换取 token
|
||||
const result = await login({
|
||||
code: loginRes.code,
|
||||
appid: "wxe752f45e7f7aa271"
|
||||
appid: "wx2165f0be356ae7a9"
|
||||
})
|
||||
|
||||
if (result.code === 200) {
|
||||
|
||||