style:新增懒加载机制

This commit is contained in:
2026-02-19 21:45:39 +08:00
parent 7fd9c25ea8
commit 99872dd6df
16 changed files with 2531 additions and 2525 deletions
+1
View File
@@ -15,6 +15,7 @@
:src="order.pictureUrl || order.productImage || '/static/default-product.png'"
mode="aspectFill"
class="product-image"
lazy-load="true"
></image>
<view class="product-info">
<view class="product-name">{{ order.productName || order.deviceName || '风电者2026新款' }}</view>
+1 -1
View File
@@ -28,7 +28,7 @@
</view>
<view class="empty-state" v-if="!isLoading && (!positions || positions.length === 0)">
<image class="empty-icon" src="/static/scan-icon.png" mode="aspectFit" />
<image class="empty-icon" src="/static/scan-icon.png" mode="aspectFit" lazy-load="true" />
<text class="empty-text">{{ $t('home.noNearbyDevice') }}</text>
</view>
</view>
+4 -4
View File
@@ -9,7 +9,7 @@
<view class="header-right">
<!-- 支付方式标识移到头部右侧 -->
<view class="payment-badge wx-score" v-if="order.payWay == 'wx_score_pay'">
<image src="/static/images/wxpayflag.png" mode="aspectFit" class="badge-icon"></image>
<image src="/static/images/wxpayflag.png" mode="aspectFit" class="badge-icon" lazy-load="true"></image>
<view class="badge-text">
<text>{{ $t('order.wxPayScore') }}</text>
<text class="divider">|</text>
@@ -63,16 +63,16 @@
<view class="order-footer">
<view class="footer-left">
<view v-if="isInUse" class="renting">
<image src="/static/order_time.png" mode="aspectFit" class="icon-time"></image>
<image src="/static/order_time.png" mode="aspectFit" class="icon-time" lazy-load="true"></image>
{{ $t('order.renting') }}
</view>
<view v-else-if="isFinished" class="meta">
<view class="meta-item">
<image src="/static/order_time.png" mode="aspectFit" class="icon-time"></image>
<image src="/static/order_time.png" mode="aspectFit" class="icon-time" lazy-load="true"></image>
{{ usedDurationText }}
</view>
<view class="meta-item">
<image src="/static/order_price.png" mode="aspectFit" class="icon-price"></image>
<image src="/static/order_price.png" mode="aspectFit" class="icon-price" lazy-load="true"></image>
{{ displayAmount }}
</view>
</view>
+2 -2
View File
@@ -1,6 +1,6 @@
// export const URL = "https://my.gxfs123.com/api" //正式服务器-弃用
export const URL = "https://manager.fdzpower.com/api" //正式服务器
// export const URL = "https://fansdev.gxfs123.com/api" //测试服务器
// export const URL = "https://manager.fdzpower.com/api" //正式服务器
export const URL = "https://fansdev.gxfs123.com/api" //测试服务器
// export const URL = "http://192.168.5.123:8080" //本地调试
// export const URL = "http://127.0.0.1:8080" //本地调试
+1 -2
View File
@@ -170,6 +170,7 @@ export default {
orderNo: 'Order No.',
orderStatus: 'Order Status',
deviceNo: 'Device No.',
deviceName: 'Device Name',
rentLocation: 'Rent Location',
rentTime: 'Rent Time',
returnTime: 'Return Time',
@@ -847,5 +848,3 @@ export default {
processing: 'Processing...'
}
}
+1
View File
@@ -131,6 +131,7 @@ export default {
scanToUse: 'Pindai untuk Menggunakan',
deviceInfo: 'Informasi Perangkat',
deviceNo: 'Nomor Perangkat',
deviceName: 'Nama perangkat',
location: 'Lokasi',
businessHours: 'Jam Operasional',
pricing: 'Penagihan',
+1 -2
View File
@@ -169,6 +169,7 @@ export default {
orderNo: '订单号',
orderStatus: '订单状态',
deviceNo: '设备号',
deviceName: '设备名称',
rentLocation: '租借地点',
rentTime: '租借时间',
returnTime: '归还时间',
@@ -846,5 +847,3 @@ export default {
processing: '正在处理...'
}
}
+8 -2
View File
@@ -4,17 +4,22 @@
<view class="card device-info-card">
<view class="device-location">
<view class="location-left">
<image src="/static/device_location.png" mode="aspectFit" class="location-icon"></image>
<image src="/static/device_location.png" mode="aspectFit" class="location-icon" lazy-load="true"></image>
<text class="location-name">{{ deviceLocation }}</text>
</view>
<view class="device-status" :class="deviceStatus.class">
<text class="status-text">{{ deviceStatus.text }}</text>
</view>
</view>
<view class="device-id">
<text class="id-label">{{ $t('order.deviceName') }}</text>
<text class="id-value">{{ deviceInfo.name }}</text>
</view>
<view class="device-id">
<text class="id-label">{{ $t('device.deviceNo') }}</text>
<text class="id-value">{{ deviceId }}</text>
</view>
</view>
<!-- 计费规则 -->
@@ -87,7 +92,7 @@
</view>
<!-- 微信支付分标识仅在微信小程序环境显示 -->
<view class="wechat-credit" v-if="isWechatMiniProgram">
<image src="/static/images/wxpayflag.png" mode="aspectFit" class="wx-icon"></image>
<image src="/static/images/wxpayflag.png" mode="aspectFit" class="wx-icon" lazy-load="true"></image>
<text class="credit-text">{{ $t('device.wxPayScoreDesc') }}</text>
</view>
</view>
@@ -772,6 +777,7 @@
.device-id {
display: flex;
align-items: center;
margin-bottom: 5rpx;
.id-label {
font-size: 26rpx;
+3 -3
View File
@@ -46,21 +46,21 @@
<view class="action-btn secondary small btn-nearby" @click="goToBuy">
<view class="icon-wrap">
<image src="/static/shop_icon.png" class="action-icon" mode="scaleToFill"></image>
<image src="/static/shop_icon.png" class="action-icon" mode="scaleToFill" lazy-load="true"></image>
</view>
<text class="action-label">{{ $t('home.buyDevice') }}</text>
</view>
<view class="action-btn primary btn-scan" @click="handleScan">
<view class="icon-wrap">
<image class="action-icon" src="/static/scan-icon.png" mode="aspectFill" />
<image class="action-icon" src="/static/scan-icon.png" mode="aspectFill" lazy-load="true" />
</view>
<text class="primary-label">{{ $t('home.scanToUse') }}</text>
</view>
<view class="action-btn secondary small btn-my" @click="goMy">
<view class="icon-wrap">
<image class="action-icon" src="/static/user.png" mode="aspectFit" />
<image class="action-icon" src="/static/user.png" mode="aspectFit" lazy-load="true" />
</view>
<text class="action-label">{{ $t('home.personalCenter') }}</text>
</view>
+9 -9
View File
@@ -15,7 +15,7 @@
</view>
<view class="header-right" v-if="orderInfo.orderStatus === 'in_used'">
<view class="device-no-eject-btn" @click="handleDeviceNoEject">
<image src="/static/power_no_popout.png" class="device-no-eject-icon" mode="aspectFit"></image>
<image src="/static/power_no_popout.png" class="device-no-eject-icon" mode="aspectFit" lazy-load="true"></image>
<text class="device-no-eject-text">{{ $t('order.deviceNoEject') }}</text>
</view>
</view>
@@ -50,7 +50,7 @@
</view>
<!-- 计费规则图片 -->
<view class="fee-rule-image">
<image :src="getFeeRuleImageUrl()" mode="widthFix" class="rule-image"></image>
<image :src="getFeeRuleImageUrl()" mode="widthFix" class="rule-image" lazy-load="true"></image>
</view>
</view>
@@ -89,7 +89,7 @@
<view class="rent-item" v-if="isOrderCompleted() && orderInfo.discountTypeName">
<view class="rent-label">{{ $t('order.usedPromotion') }}</view>
<view class="rent-value promotion-value">
<image src="/static/promotion-icon.png" class="promotion-icon" mode="aspectFit"></image>
<image src="/static/promotion-icon.png" class="promotion-icon" mode="aspectFit" lazy-load="true"></image>
{{ orderInfo.discountTypeName }}<text
v-if="orderInfo.discountAmount">{{'-'+orderInfo.discountAmount||''}}</text>
</view>
@@ -125,11 +125,11 @@
<!-- 支付成功状态 -->
<template v-if="orderInfo.orderStatus === 'payment_successful'">
<view class="bottom-icon-btn" @click="contactService">
<image src="/static/customer-service.png" class="icon" mode="aspectFit"></image>
<image src="/static/customer-service.png" class="icon" mode="aspectFit" lazy-load="true"></image>
<text>{{ $t('user.customerService') }}</text>
</view>
<view class="bottom-icon-btn" @click="handleDeviceNoEject">
<image src="/static/complaint.png" class="icon" mode="aspectFit"></image>
<image src="/static/complaint.png" class="icon" mode="aspectFit" lazy-load="true"></image>
<text>{{ $t('order.deviceNoEject') }}</text>
</view>
</template>
@@ -137,7 +137,7 @@
<!-- 使用中状态 -->
<template v-if="orderInfo.orderStatus === 'in_used'">
<view class="bottom-icon-btn" @click="contactService">
<image src="/static/customer-service.png" class="icon" mode="aspectFit"></image>
<image src="/static/customer-service.png" class="icon" mode="aspectFit" lazy-load="true"></image>
<text>{{ $t('user.customerService') }}</text>
</view>
<!-- 只有支持快递归还时才显示倒计时和快递归还按钮 -->
@@ -166,11 +166,11 @@
<template v-if="isOrderCompleted()">
<view class="bottom-icon-btn" @click="handleWithdraw"
v-if="!orderInfo.isWithdrawn && orderInfo.refundAmount > 0">
<image src="/static/suggess.png" class="icon" mode="aspectFit"></image>
<image src="/static/suggess.png" class="icon" mode="aspectFit" lazy-load="true"></image>
<text>{{ $t('order.feeAppeal') }}</text>
</view>
<view class="bottom-icon-btn" @click="contactService">
<image src="/static/customer-service.png" class="icon" mode="aspectFit"></image>
<image src="/static/customer-service.png" class="icon" mode="aspectFit" lazy-load="true"></image>
<text>{{ $t('user.customerService') }}</text>
</view>
<view class="action-btn primary" @click="rentAgain">
@@ -222,7 +222,7 @@
</view>
</view>
<view class="popup-body">
<image :src="returnMapImageUrl" mode="widthFix" class="map-image"></image>
<image :src="returnMapImageUrl" mode="widthFix" class="map-image" lazy-load="true"></image>
</view>
<view class="popup-footer">
<view class="save-btn" @click="saveReturnMapImage">
+1 -1
View File
@@ -6,7 +6,7 @@
@relocate="init" @markerTap="goToPositionDetail" />
<!-- 定位按钮 -->
<view class="relocate-btn" @click="init">
<image src="/static/location.png" class="relocate-icon" mode="aspectFit"></image>
<image src="/static/location.png" class="relocate-icon" mode="aspectFit" lazy-load="true"></image>
</view>
</view>
<view class="list-wrap">
+7 -7
View File
@@ -18,7 +18,7 @@
indicator-active-color="#07c160">
<swiper-item v-for="(image, index) in goodsInfo.imageList" :key="index">
<view class="swiper-item-wrapper">
<image :src="image" mode="aspectFit" class="product-image"></image>
<image :src="image" mode="aspectFit" class="product-image" lazy-load="true"></image>
</view>
</swiper-item>
</swiper>
@@ -33,7 +33,7 @@
<view class="features-section">
<view class="feature-item">
<view class="feature-icon">
<image src="@/static/battery-icon.png" mode="aspectFit" class="icon-img"></image>
<image src="@/static/battery-icon.png" mode="aspectFit" class="icon-img" lazy-load="true"></image>
</view>
<view class="" style="display: flex;flex-direction: column;align-items: center;">
<text class="feature-label">{{ $t('goods.features.battery') }}</text>
@@ -43,7 +43,7 @@
<view class="feature-item">
<view class="feature-icon">
<image src="@/static/wind-icon.png" mode="aspectFit" class="icon-img"></image>
<image src="@/static/wind-icon.png" mode="aspectFit" class="icon-img" lazy-load="true"></image>
</view>
<view class="" style="display: flex;flex-direction: column;align-items: center;">
<text class="feature-label">{{ $t('goods.features.wind') }}</text>
@@ -52,7 +52,7 @@
<view class="feature-item">
<view class="feature-icon">
<image src="@/static/temp-icon.png" mode="aspectFit" class="icon-img"></image>
<image src="@/static/temp-icon.png" mode="aspectFit" class="icon-img" lazy-load="true"></image>
</view>
<view class="" style="display: flex;flex-direction: column;align-items: center;">
<text class="feature-label">{{ $t('goods.features.temp') }}</text>
@@ -61,7 +61,7 @@
<view class="feature-item">
<view class="feature-icon">
<image src="@/static/charge-icon.png" mode="aspectFit" class="icon-img"></image>
<image src="@/static/charge-icon.png" mode="aspectFit" class="icon-img" lazy-load="true"></image>
</view>
<view class="" style="display: flex;flex-direction: column;align-items: center;">
<text class="feature-label">{{ $t('goods.features.charge') }}</text>
@@ -82,7 +82,7 @@
<!-- 底部购买按钮 -->
<view class="footer">
<view class="" style="display: flex;flex-direction: column;width: 140rpx;align-items: center;margin-right: 20rpx;" @click="GotoList">
<image src="/static/jl.png" mode="scaleToFill" style="width: 35rpx;height:35rpx;"></image>
<image src="/static/jl.png" mode="scaleToFill" style="width: 35rpx;height:35rpx;" lazy-load="true"></image>
<text style="font-size: 26rpx;">定制记录</text>
</view>
<view class="buy-button" @click="handleBuy">
@@ -109,7 +109,7 @@
<view class="sku-info">
<image v-if="selectedSku.pictureUrl" :src="selectedSku.pictureUrl" class="sku-image"
mode="aspectFit"></image>
mode="aspectFit" lazy-load="true"></image>
<view class="sku-detail">
<text class="sku-price">¥{{ selectedSku.price || goodsInfo.price }}</text>
<text class="sku-name">{{ selectedSku.optionName || '请选择规格' }}</text>
+1 -1
View File
@@ -12,7 +12,7 @@
<view class="order-list">
<view class="empty-state" v-if="orderList.length === 0">
<view class="empty-icon">
<image src="/static/orderList.png" mode="aspectFill" class="empty-icon"></image>
<image src="/static/orderList.png" mode="aspectFill" class="empty-icon" lazy-load="true"></image>
</view>
<text class="empty-text">{{ $t('order.noOrderRecord') }}</text>
</view>
+1 -1
View File
@@ -12,7 +12,7 @@
<view class="order-list">
<view class="empty-state" v-if="orderList.length === 0">
<view class="empty-icon">
<image src="/static/orderList.png" mode="aspectFill" class="empty-icon"></image>
<image src="/static/orderList.png" mode="aspectFill" class="empty-icon" lazy-load="true"></image>
</view>
<text class="empty-text">{{ $t('order.noOrderRecord') }}</text>
</view>
+13 -13
View File
@@ -2,8 +2,8 @@
<view class="my-page">
<view class="user-card" @click="navigateTo('/pages/userProfile/index')">
<view class="avatar-box">
<image class="avatar" v-if="userInfo.avatar" :src="userInfo.avatar" mode="aspectFill"></image>
<image v-else class="avatar" src="@/static/head.png" mode="aspectFill"></image>
<image class="avatar" v-if="userInfo.avatar" :src="userInfo.avatar" mode="aspectFill" lazy-load="true"></image>
<image v-else class="avatar" src="@/static/head.png" mode="aspectFill" lazy-load="true"></image>
</view>
<view class="user-text">
<view class="nickname">{{ userInfo.nickName || $t('user.clickToLogin') }}</view>
@@ -29,20 +29,20 @@
<swiper class="banner-swiper" :indicator-dots="bannerImages.length > 1"
:autoplay="bannerImages.length > 1" :circular="true" :interval="3000">
<swiper-item v-for="(image, index) in bannerImages" :key="index">
<image class="banner-image" :src="image" mode="aspectFill" @click="handleBannerClick(index)">
<image class="banner-image" :src="image" mode="aspectFill" @click="handleBannerClick(index)" lazy-load="true">
</image>
</swiper-item>
</swiper>
</view>
<!-- 默认图片当没有广告时显示 -->
<view class="banner-card" v-else @click="navigateTo('/pages/join/index')">
<image class="banner-image" src="/static/userCenter_swiper.png" mode="aspectFill"></image>
<image class="banner-image" src="/static/userCenter_swiper.png" mode="aspectFill" lazy-load="true"></image>
</view>
<!-- <view class="section-title">常用服务</view> -->
<view class="list">
<view class="list-item" @click="handleQuickReturn">
<view class="left">
<image class="icon" src="/static/express_return.png" mode="aspectFit"></image>
<image class="icon" src="/static/express_return.png" mode="aspectFit" lazy-load="true"></image>
<text class="title">{{ $t('user.quickReturn') }}<text
style="font-size: 18rpx;">{{ $t('user.quickReturnDesc') }}</text></text>
</view>
@@ -50,42 +50,42 @@
</view>
<view class="list-item" @click="navigateTo('/pages/expressReturn/index')" v-if="showMenuItem">
<view class="left">
<image class="icon" src="/static/express.png" mode="aspectFit"></image>
<image class="icon" src="/static/express.png" mode="aspectFit" lazy-load="true"></image>
<text class="title">{{ $t('user.expressReturn') }}</text>
</view>
<uv-icon name="arrow-right" size="16" color="#c8c8c8"></uv-icon>
</view>
<view class="list-item" @click="navigateTo('/subPackages/order/index')">
<view class="left">
<image class="icon" src="/static/orderList.png" mode="aspectFit"></image>
<image class="icon" src="/static/orderList.png" mode="aspectFit" lazy-load="true"></image>
<text class="title">{{ $t('user.myOrders') }}</text>
</view>
<uv-icon name="arrow-right" size="16" color="#c8c8c8"></uv-icon>
</view>
<view class="list-item" @click="navigateTo('/subPackages/user/my/card')">
<view class="left">
<image class="icon" src="/static/my_member.png" mode="aspectFit"></image>
<image class="icon" src="/static/my_member.png" mode="aspectFit" lazy-load="true"></image>
<text class="title">{{ $t('user.myCards') }}</text>
</view>
<uv-icon name="arrow-right" size="16" color="#c8c8c8"></uv-icon>
</view>
<view class="list-item" @click="navigateTo('/subPackages/user/my/coupon')">
<view class="left">
<image class="icon" src="/static/my_coupon.png" mode="aspectFit"></image>
<image class="icon" src="/static/my_coupon.png" mode="aspectFit" lazy-load="true"></image>
<text class="title">{{ $t('user.myCoupons') }}</text>
</view>
<uv-icon name="arrow-right" size="16" color="#c8c8c8"></uv-icon>
</view>
<view class="list-item" @click="navigateTo('/subPackages/service/help/index')">
<view class="left">
<image class="icon" src="/static/customer-service.png" mode="aspectFit"></image>
<image class="icon" src="/static/customer-service.png" mode="aspectFit" lazy-load="true"></image>
<text class="title">{{ $t('user.customerService') }}</text>
</view>
<uv-icon name="arrow-right" size="16" color="#c8c8c8"></uv-icon>
</view>
<view class="list-item" @click="navigateTo('/subPackages/service/feedback/index')">
<view class="left">
<image class="icon" src="/static/suggess.png" mode="aspectFit"></image>
<image class="icon" src="/static/suggess.png" mode="aspectFit" lazy-load="true"></image>
<text class="title">{{ $t('user.feedback') }}</text>
</view>
<uv-icon name="arrow-right" size="16" color="#c8c8c8"></uv-icon>
@@ -99,14 +99,14 @@
</view> -->
<view class="list-item" @click="navigateTo('/subPackages/other/join/index')">
<view class="left">
<image class="icon" src="/static/peopleInWork.png" mode="aspectFit"></image>
<image class="icon" src="/static/peopleInWork.png" mode="aspectFit" lazy-load="true"></image>
<text class="title">{{ $t('user.cooperation') }}</text>
</view>
<uv-icon name="arrow-right" size="16" color="#c8c8c8"></uv-icon>
</view>
<view class="list-item" @click="navigateTo('/subPackages/user/setting/index')">
<view class="left">
<image class="icon" src="/static/setting.png" mode="aspectFit"></image>
<image class="icon" src="/static/setting.png" mode="aspectFit" lazy-load="true"></image>
<text class="title">{{ $t('user.settings') }}</text>
</view>
<uv-icon name="arrow-right" size="16" color="#c8c8c8"></uv-icon>
+2 -2
View File
@@ -2,8 +2,8 @@
<view class="profile-page">
<view class="avatar-section">
<view class="avatar-container">
<image class="avatar" v-if="userInfo.avatar" :src="userInfo.avatar" mode="aspectFill"></image>
<image v-else class="avatar" src="@/static/head.png" mode="aspectFill"></image>
<image class="avatar" v-if="userInfo.avatar" :src="userInfo.avatar" mode="aspectFill" lazy-load="true"></image>
<image v-else class="avatar" src="@/static/head.png" mode="aspectFill" lazy-load="true"></image>
<!-- 覆盖在头像上的微信选择头像授权按钮仅小程序生效 -->
<!-- #ifdef MP-WEIXIN -->
<button class="avatar-choose-btn" open-type="chooseAvatar" @chooseavatar="onChooseAvatar"></button>