fix(iOS微信真机): 修复扫码核销页空白页

根因:verify/index.vue 在 <script> 顶层调用 getApp().globalData,
与 diy 组件白屏问题相同——iOS 微信真机 subpackage evaluate
阶段早于 App.vue#onLaunch,globalData 未就绪导致 evaluation 失败。

修复:
1. 移除顶层 const app = getApp() 和 var bar_height = ...
2. data() 中 status_bar_height 初始值改为 0
3. onLoad() 中延迟调用 getApp() 读取 statusBarHeight
4. 所有方法内 app.globalData.xxx 改为 getApp().globalData.xxx
5. 加留痕注释

gitnexus detect_changes: risk_level=low, 0 affected_processes
master
Council 2026-06-30 15:57:46 +08:00
parent 79ca8385d6
commit 0a42be5df6
1 changed files with 27 additions and 17 deletions

View File

@ -240,22 +240,23 @@
</template>
<script>
//
// [iOS · A] 2026-06-30
// vr-ticket-wallet subpackageiOS subpackage
// evaluate App.vue#onLaunch getApp().globalData
// globalData <script> evaluation header
// getApp() globalData onLoad()
// docs/ios-weixin-real-device-white-screen-report.md
//
import componentCommon from '@/components/common/common';
const app = getApp();
//
var bar_height = parseInt(app.globalData.get_system_info('statusBarHeight', 0, true));
// #ifdef MP-TOUTIAO || H5
bar_height = 0;
// #endif
export default {
components: {
componentCommon
},
data() {
return {
status_bar_height: bar_height,
status_bar_height: 0,
//
verifierName: '',
//
@ -280,6 +281,15 @@ export default {
},
onLoad(params) {
// [iOS ] getApp() globalData onLoad()
// evaluate app.globalData
const app = getApp();
let bar_height = parseInt(app.globalData.get_system_info('statusBarHeight', 0, true));
// #ifdef MP-TOUTIAO || H5
bar_height = 0;
// #endif
this.status_bar_height = bar_height;
// #ifdef H5
this.isH5 = true;
// #endif
@ -322,7 +332,7 @@ export default {
//
checkVerifierPermission() {
uni.request({
url: app.globalData.get_request_url('checkVerifier', 'ticket', 'vr_ticket'),
url: getApp().globalData.get_request_url('checkVerifier', 'ticket', 'vr_ticket'),
method: 'GET',
dataType: 'json',
success: (res) => {
@ -336,7 +346,7 @@ export default {
}
} else if (res.data.code == 401) {
//
app.globalData.get_user_info(this, 'checkVerifierPermission');
getApp().globalData.get_user_info(this, 'checkVerifierPermission');
} else {
this.showNoPermission = true;
}
@ -351,7 +361,7 @@ export default {
//
fetchStats() {
uni.request({
url: app.globalData.get_request_url('myVerifications', 'ticket', 'vr_ticket'),
url: getApp().globalData.get_request_url('myVerifications', 'ticket', 'vr_ticket'),
method: 'GET',
data: { page: 1, page_size: 1 },
dataType: 'json',
@ -382,7 +392,7 @@ export default {
//
uni.request({
url: app.globalData.get_request_url('myVerifications', 'ticket', 'vr_ticket'),
url: getApp().globalData.get_request_url('myVerifications', 'ticket', 'vr_ticket'),
method: 'GET',
data: { page: 1, page_size: 100 },
dataType: 'json',
@ -407,7 +417,7 @@ export default {
// #ifdef H5
// H5 使
app.globalData.showToast('H5 环境请使用手动输入核销');
getApp().globalData.showToast('H5 环境请使用手动输入核销');
return;
// #endif
@ -425,7 +435,7 @@ export default {
self.processScanResult(res.result);
} else {
self.isScanning = false;
app.globalData.showToast('未识别到票码');
getApp().globalData.showToast('未识别到票码');
}
},
fail: function(err) {
@ -434,7 +444,7 @@ export default {
if (err.errMsg && err.errMsg.indexOf('cancel') !== -1) {
//
} else {
app.globalData.showToast('扫码失败,请重试');
getApp().globalData.showToast('扫码失败,请重试');
}
}
});
@ -450,7 +460,7 @@ export default {
//
submitManualCode() {
if (!this.manualCode || this.manualCode.trim() === '') {
app.globalData.showToast('请输入有效的票码');
getApp().globalData.showToast('请输入有效的票码');
return;
}
this.processScanResult(this.manualCode.trim());
@ -469,7 +479,7 @@ export default {
this.isScanning = true;
uni.request({
url: app.globalData.get_request_url('verify', 'ticket', 'vr_ticket'),
url: getApp().globalData.get_request_url('verify', 'ticket', 'vr_ticket'),
method: 'POST',
data: { ticket_code: ticketCode },
dataType: 'json',