fix: resolve header overlap on Dynamic Island iPhones
- app.js 通过 wx.getSystemInfoSync 获取 statusBarHeight 存入 globalData
- 所有12个自定义导航页面的 JS 读取 statusBarHeight
- WXML 通过 style="padding-top: {{statusBarHeight + 24}}px" 动态适配
- 普通手机和灵动岛手机都能正确显示
这个提交包含在:
+5
-1
@@ -5,10 +5,14 @@ App({
|
|||||||
userInfo: null,
|
userInfo: null,
|
||||||
userId: null,
|
userId: null,
|
||||||
connectedDevice: null,
|
connectedDevice: null,
|
||||||
currentTreatment: null
|
currentTreatment: null,
|
||||||
|
statusBarHeight: 44
|
||||||
},
|
},
|
||||||
|
|
||||||
onLaunch: function () {
|
onLaunch: function () {
|
||||||
|
var sysInfo = wx.getSystemInfoSync()
|
||||||
|
this.globalData.statusBarHeight = sysInfo.statusBarHeight || 44
|
||||||
|
|
||||||
if (!wx.cloud) {
|
if (!wx.cloud) {
|
||||||
console.error('请使用 2.2.3 或以上的基础库以使用云能力')
|
console.error('请使用 2.2.3 或以上的基础库以使用云能力')
|
||||||
return
|
return
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@ page {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.page-header {
|
.page-header {
|
||||||
padding: 80rpx 40rpx 32rpx;
|
padding: 0 40rpx 32rpx;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ var ble = require('../../services/ble')
|
|||||||
|
|
||||||
Page({
|
Page({
|
||||||
data: {
|
data: {
|
||||||
|
statusBarHeight: 44,
|
||||||
scanning: true,
|
scanning: true,
|
||||||
scanProgress: 0,
|
scanProgress: 0,
|
||||||
regionData: [],
|
regionData: [],
|
||||||
@@ -9,6 +10,8 @@ Page({
|
|||||||
},
|
},
|
||||||
|
|
||||||
onLoad: function () {
|
onLoad: function () {
|
||||||
|
var app = getApp()
|
||||||
|
this.setData({ statusBarHeight: app.globalData.statusBarHeight })
|
||||||
this.startScan()
|
this.startScan()
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<view class="page">
|
<view class="page">
|
||||||
<view class="page-header page-header-pink">
|
<view class="page-header page-header-pink" style="padding-top: {{statusBarHeight + 24}}px;">
|
||||||
<view class="page-header-title">自动扫描</view>
|
<view class="page-header-title">自动扫描</view>
|
||||||
<view class="page-header-subtitle">正在识别面部...</view>
|
<view class="page-header-subtitle">正在识别面部...</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
Page({
|
Page({
|
||||||
data: {
|
data: {
|
||||||
|
statusBarHeight: 44,
|
||||||
deviceId: '',
|
deviceId: '',
|
||||||
trialDays: 7
|
trialDays: 7
|
||||||
},
|
},
|
||||||
|
|
||||||
onLoad: function (options) {
|
onLoad: function (options) {
|
||||||
|
var app = getApp()
|
||||||
|
this.setData({ statusBarHeight: app.globalData.statusBarHeight })
|
||||||
this.setData({ deviceId: options.device_id || '' })
|
this.setData({ deviceId: options.device_id || '' })
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<view class="page">
|
<view class="page">
|
||||||
<view class="page-header page-header-green">
|
<view class="page-header page-header-green" style="padding-top: {{statusBarHeight + 24}}px;">
|
||||||
<view class="page-header-title">绑定成功</view>
|
<view class="page-header-title">绑定成功</view>
|
||||||
<view class="page-header-subtitle">设备已成功绑定</view>
|
<view class="page-header-subtitle">设备已成功绑定</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ var app = getApp()
|
|||||||
|
|
||||||
Page({
|
Page({
|
||||||
data: {
|
data: {
|
||||||
|
statusBarHeight: 44,
|
||||||
deviceId: '',
|
deviceId: '',
|
||||||
bindToken: '',
|
bindToken: '',
|
||||||
state: 'scanning',
|
state: 'scanning',
|
||||||
@@ -10,6 +11,7 @@ Page({
|
|||||||
},
|
},
|
||||||
|
|
||||||
onLoad: function (options) {
|
onLoad: function (options) {
|
||||||
|
this.setData({ statusBarHeight: app.globalData.statusBarHeight })
|
||||||
this.setData({
|
this.setData({
|
||||||
deviceId: options.device_id || '',
|
deviceId: options.device_id || '',
|
||||||
bindToken: options.bind_token || ''
|
bindToken: options.bind_token || ''
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<view class="page">
|
<view class="page">
|
||||||
<view class="page-header page-header-pink">
|
<view class="page-header page-header-pink" style="padding-top: {{statusBarHeight + 24}}px;">
|
||||||
<view class="page-header-title">蓝牙连接</view>
|
<view class="page-header-title">蓝牙连接</view>
|
||||||
<view class="page-header-subtitle">{{state === 'scanning' ? '正在搜索设备...' : state === 'connecting' ? '正在连接设备...' : state === 'binding' ? '正在绑定...' : '连接失败'}}</view>
|
<view class="page-header-subtitle">{{state === 'scanning' ? '正在搜索设备...' : state === 'connecting' ? '正在连接设备...' : state === 'binding' ? '正在绑定...' : '连接失败'}}</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -2,9 +2,15 @@ var app = getApp()
|
|||||||
|
|
||||||
Page({
|
Page({
|
||||||
data: {
|
data: {
|
||||||
|
statusBarHeight: 44,
|
||||||
loading: false
|
loading: false
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onLoad: function () {
|
||||||
|
var app = getApp()
|
||||||
|
this.setData({ statusBarHeight: app.globalData.statusBarHeight })
|
||||||
|
},
|
||||||
|
|
||||||
onLogin: function () {
|
onLogin: function () {
|
||||||
var self = this
|
var self = this
|
||||||
self.setData({ loading: true })
|
self.setData({ loading: true })
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<view class="page">
|
<view class="page">
|
||||||
<view class="page-header page-header-pink">
|
<view class="page-header page-header-pink" style="padding-top: {{statusBarHeight + 24}}px;">
|
||||||
<view class="page-header-title">光子美容仪</view>
|
<view class="page-header-title">光子美容仪</view>
|
||||||
<view class="page-header-subtitle">微信授权登录</view>
|
<view class="page-header-subtitle">微信授权登录</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -2,11 +2,17 @@ var http = require('../../utils/request')
|
|||||||
|
|
||||||
Page({
|
Page({
|
||||||
data: {
|
data: {
|
||||||
|
statusBarHeight: 44,
|
||||||
scanning: false,
|
scanning: false,
|
||||||
deviceId: '',
|
deviceId: '',
|
||||||
error: ''
|
error: ''
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onLoad: function () {
|
||||||
|
var app = getApp()
|
||||||
|
this.setData({ statusBarHeight: app.globalData.statusBarHeight })
|
||||||
|
},
|
||||||
|
|
||||||
onScan: function () {
|
onScan: function () {
|
||||||
var self = this
|
var self = this
|
||||||
self.setData({ scanning: true, error: '' })
|
self.setData({ scanning: true, error: '' })
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<view class="page">
|
<view class="page">
|
||||||
<view class="page-header page-header-pink">
|
<view class="page-header page-header-pink" style="padding-top: {{statusBarHeight + 24}}px;">
|
||||||
<view class="page-header-title">扫码绑定</view>
|
<view class="page-header-title">扫码绑定</view>
|
||||||
<view class="page-header-subtitle">扫描设备底部二维码</view>
|
<view class="page-header-subtitle">扫描设备底部二维码</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ var http = require('../../utils/request')
|
|||||||
|
|
||||||
Page({
|
Page({
|
||||||
data: {
|
data: {
|
||||||
|
statusBarHeight: 44,
|
||||||
plans: [
|
plans: [
|
||||||
{ plan: 'monthly', price: '¥99', desc: '约3.3元/天' },
|
{ plan: 'monthly', price: '¥99', desc: '约3.3元/天' },
|
||||||
{ plan: 'yearly', price: '¥899', desc: '省¥289' }
|
{ plan: 'yearly', price: '¥899', desc: '省¥289' }
|
||||||
@@ -10,6 +11,11 @@ Page({
|
|||||||
purchasing: false
|
purchasing: false
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onLoad: function () {
|
||||||
|
var app = getApp()
|
||||||
|
this.setData({ statusBarHeight: app.globalData.statusBarHeight })
|
||||||
|
},
|
||||||
|
|
||||||
onSelect: function (e) {
|
onSelect: function (e) {
|
||||||
this.setData({ selected: e.currentTarget.dataset.plan })
|
this.setData({ selected: e.currentTarget.dataset.plan })
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<view class="page">
|
<view class="page">
|
||||||
<view class="page-header page-header-gold">
|
<view class="page-header page-header-gold" style="padding-top: {{statusBarHeight + 24}}px;">
|
||||||
<view class="page-header-title">订阅服务</view>
|
<view class="page-header-title">订阅服务</view>
|
||||||
<view class="page-header-subtitle">解锁智能模式</view>
|
<view class="page-header-subtitle">解锁智能模式</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
Page({
|
Page({
|
||||||
data: {},
|
data: {
|
||||||
|
statusBarHeight: 44
|
||||||
|
},
|
||||||
|
|
||||||
|
onLoad: function () {
|
||||||
|
var app = getApp()
|
||||||
|
this.setData({ statusBarHeight: app.globalData.statusBarHeight })
|
||||||
|
},
|
||||||
|
|
||||||
onViewPlans: function () {
|
onViewPlans: function () {
|
||||||
wx.navigateTo({ url: '/pages/subscribe-plans/subscribe-plans' })
|
wx.navigateTo({ url: '/pages/subscribe-plans/subscribe-plans' })
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<view class="page">
|
<view class="page">
|
||||||
<view class="page-header page-header-pink">
|
<view class="page-header page-header-pink" style="padding-top: {{statusBarHeight + 24}}px;">
|
||||||
<view class="page-header-title">护理设置</view>
|
<view class="page-header-title">护理设置</view>
|
||||||
<view class="page-header-subtitle">试用期已结束</view>
|
<view class="page-header-subtitle">试用期已结束</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
Page({
|
Page({
|
||||||
data: {
|
data: {
|
||||||
|
statusBarHeight: 44,
|
||||||
planName: '年卡会员',
|
planName: '年卡会员',
|
||||||
expiryDate: ''
|
expiryDate: ''
|
||||||
},
|
},
|
||||||
|
|
||||||
onLoad: function () {
|
onLoad: function () {
|
||||||
|
var app = getApp()
|
||||||
|
this.setData({ statusBarHeight: app.globalData.statusBarHeight })
|
||||||
var now = new Date()
|
var now = new Date()
|
||||||
now.setFullYear(now.getFullYear() + 1)
|
now.setFullYear(now.getFullYear() + 1)
|
||||||
var y = now.getFullYear()
|
var y = now.getFullYear()
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<view class="page">
|
<view class="page">
|
||||||
<view class="page-header page-header-green">
|
<view class="page-header page-header-green" style="padding-top: {{statusBarHeight + 24}}px;">
|
||||||
<view class="page-header-title">订阅成功</view>
|
<view class="page-header-title">订阅成功</view>
|
||||||
<view class="page-header-subtitle">欢迎使用智能模式</view>
|
<view class="page-header-subtitle">欢迎使用智能模式</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ var ble = require('../../services/ble')
|
|||||||
|
|
||||||
Page({
|
Page({
|
||||||
data: {
|
data: {
|
||||||
|
statusBarHeight: 44,
|
||||||
regions: 0,
|
regions: 0,
|
||||||
wavelength: 2,
|
wavelength: 2,
|
||||||
duration: 600000,
|
duration: 600000,
|
||||||
@@ -16,6 +17,8 @@ Page({
|
|||||||
},
|
},
|
||||||
|
|
||||||
onLoad: function (options) {
|
onLoad: function (options) {
|
||||||
|
var app = getApp()
|
||||||
|
this.setData({ statusBarHeight: app.globalData.statusBarHeight })
|
||||||
this.setData({
|
this.setData({
|
||||||
regions: parseInt(options.regions) || 0x7F,
|
regions: parseInt(options.regions) || 0x7F,
|
||||||
wavelength: parseInt(options.wavelength) || 2,
|
wavelength: parseInt(options.wavelength) || 2,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<view class="page">
|
<view class="page">
|
||||||
<view class="page-header page-header-blue">
|
<view class="page-header page-header-blue" style="padding-top: {{statusBarHeight + 24}}px;">
|
||||||
<view class="page-header-title">护理中</view>
|
<view class="page-header-title">护理中</view>
|
||||||
<view class="page-header-subtitle">正在护理...</view>
|
<view class="page-header-subtitle">正在护理...</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ var app = getApp()
|
|||||||
|
|
||||||
Page({
|
Page({
|
||||||
data: {
|
data: {
|
||||||
|
statusBarHeight: 44,
|
||||||
sessionId: '',
|
sessionId: '',
|
||||||
regions: 0,
|
regions: 0,
|
||||||
duration: 0,
|
duration: 0,
|
||||||
@@ -15,6 +16,7 @@ Page({
|
|||||||
},
|
},
|
||||||
|
|
||||||
onLoad: function (options) {
|
onLoad: function (options) {
|
||||||
|
this.setData({ statusBarHeight: app.globalData.statusBarHeight })
|
||||||
var durationMs = parseInt(options.duration) || 0
|
var durationMs = parseInt(options.duration) || 0
|
||||||
var mins = Math.floor(durationMs / 60000)
|
var mins = Math.floor(durationMs / 60000)
|
||||||
var secs = Math.floor((durationMs % 60000) / 1000)
|
var secs = Math.floor((durationMs % 60000) / 1000)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<view class="page">
|
<view class="page">
|
||||||
<view class="page-header page-header-green">
|
<view class="page-header page-header-green" style="padding-top: {{statusBarHeight + 24}}px;">
|
||||||
<view class="page-header-title">护理完成</view>
|
<view class="page-header-title">护理完成</view>
|
||||||
<view class="page-header-subtitle">本次护理已结束</view>
|
<view class="page-header-subtitle">本次护理已结束</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ var ble = require('../../services/ble')
|
|||||||
|
|
||||||
Page({
|
Page({
|
||||||
data: {
|
data: {
|
||||||
|
statusBarHeight: 44,
|
||||||
regions: [
|
regions: [
|
||||||
{ name: '左脸颊', mask: 0x01, checked: true },
|
{ name: '左脸颊', mask: 0x01, checked: true },
|
||||||
{ name: '右脸颊', mask: 0x02, checked: true },
|
{ name: '右脸颊', mask: 0x02, checked: true },
|
||||||
@@ -17,6 +18,8 @@ Page({
|
|||||||
},
|
},
|
||||||
|
|
||||||
onLoad: function () {
|
onLoad: function () {
|
||||||
|
var app = getApp()
|
||||||
|
this.setData({ statusBarHeight: app.globalData.statusBarHeight })
|
||||||
this.checkSubscription()
|
this.checkSubscription()
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<view class="page">
|
<view class="page">
|
||||||
<view class="page-header page-header-pink">
|
<view class="page-header page-header-pink" style="padding-top: {{statusBarHeight + 24}}px;">
|
||||||
<view class="page-header-title">护理设置</view>
|
<view class="page-header-title">护理设置</view>
|
||||||
<view class="page-header-subtitle">选择模式和区域</view>
|
<view class="page-header-subtitle">选择模式和区域</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -2,11 +2,17 @@ var ble = require('../../services/ble')
|
|||||||
|
|
||||||
Page({
|
Page({
|
||||||
data: {
|
data: {
|
||||||
|
statusBarHeight: 44,
|
||||||
checking: false,
|
checking: false,
|
||||||
result: null,
|
result: null,
|
||||||
error: ''
|
error: ''
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onLoad: function () {
|
||||||
|
var app = getApp()
|
||||||
|
this.setData({ statusBarHeight: app.globalData.statusBarHeight })
|
||||||
|
},
|
||||||
|
|
||||||
onShow: function () {
|
onShow: function () {
|
||||||
this.checkWearing()
|
this.checkWearing()
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<view class="page">
|
<view class="page">
|
||||||
<view class="page-header page-header-pink">
|
<view class="page-header page-header-pink" style="padding-top: {{statusBarHeight + 24}}px;">
|
||||||
<view class="page-header-title">确认佩戴</view>
|
<view class="page-header-title">确认佩戴</view>
|
||||||
<view class="page-header-subtitle">请确保面罩贴合面部</view>
|
<view class="page-header-subtitle">请确保面罩贴合面部</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
在新工单中引用
屏蔽一个用户