From 73776841d881479a09bb08b3a2fe6e3663e1b393 Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Mon, 20 Jul 2026 08:44:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=B8=BF=E8=92=99?= =?UTF-8?q?=E5=85=83=E6=9C=8D=E5=8A=A1=E5=95=86=E5=93=81=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E9=A1=B5=E7=A9=BA=E7=99=BD=E5=8F=8A=E6=8E=A5=E5=8F=A3=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 移除view组件无效的scroll-y属性,避免鸿蒙JSVM静默不渲染导致页面空白 2. 删除冗余的商品分类页面路由配置 3. 为ref调用和接口请求添加try-catch与空值防御,避免极端场景下崩溃 4. 补充鸿蒙元服务接口调用的兼容性处理,确保请求正常发起 5. 调整loading隐藏时机和异常捕获逻辑,优化页面容错能力 --- common/js/goods_detail_base.js | 56 +++++++++------- pages.json | 64 ------------------- .../goods-detail-view/goods-detail-view.vue | 4 +- pages_goods/public/js/detail.js | 54 +++++++++++----- 4 files changed, 73 insertions(+), 105 deletions(-) diff --git a/common/js/goods_detail_base.js b/common/js/goods_detail_base.js index e634676..75bc04e 100644 --- a/common/js/goods_detail_base.js +++ b/common/js/goods_detail_base.js @@ -91,22 +91,28 @@ export default { this.modifyGoodsInfo(); // 初始化商品详情视图数据 - if (this.$refs.goodsDetailView) this.$refs.goodsDetailView.init({ - sku_id: this.skuId, - goods_id: this.goodsSkuDetail.goods_id, - preview: this.preview, - source_member: this.source_member, - posterParams: this.posterParams, - posterApi: this.posterApi, - shareUrl: this.shareUrl, - goodsRoute: this.goodsRoute, - isVirtual: this.goodsSkuDetail.is_virtual, - deliveryType: this.goodsSkuDetail.express_type, - whetherCollection: this.goodsSkuDetail.is_collect, - evaluateConfig: this.goodsSkuDetail.evaluate_config, - evaluateList: this.goodsSkuDetail.evaluate_list, - evaluateCount: this.goodsSkuDetail.evaluate_count - }); + try { + if (this.$refs && this.$refs.goodsDetailView) { + this.$refs.goodsDetailView.init({ + sku_id: this.skuId, + goods_id: this.goodsSkuDetail.goods_id, + preview: this.preview, + source_member: this.source_member, + posterParams: this.posterParams, + posterApi: this.posterApi, + shareUrl: this.shareUrl, + goodsRoute: this.goodsRoute, + isVirtual: this.goodsSkuDetail.is_virtual, + deliveryType: this.goodsSkuDetail.express_type, + whetherCollection: this.goodsSkuDetail.is_collect, + evaluateConfig: this.goodsSkuDetail.evaluate_config, + evaluateList: this.goodsSkuDetail.evaluate_list, + evaluateCount: this.goodsSkuDetail.evaluate_count + }); + } + } catch (e) { + console.error('goodsDetailView.init failed:', e); + } //媒体 if (this.goodsSkuDetail.video_url) this.switchMedia = "video"; @@ -179,17 +185,19 @@ export default { size: 'big' }) }; - if (this.$refs.goodsPromotion) this.$refs.goodsPromotion.refresh(this.goodsSkuDetail.goods_promotion); + try { + if (this.$refs && this.$refs.goodsPromotion) { + this.$refs.goodsPromotion.refresh(this.goodsSkuDetail.goods_promotion); + } + } catch (e) { console.error('goodsPromotion refresh failed:', e); } - if (this.goodsRoute != '/pages_goods/detail') this.setPublicShare(); - - // this.getBarrageData(); // 性能优化: 商品表单(留言表单)仅在商品详情打开"立即留言"弹窗时才需要, // 不再阻塞首次渲染。改为在后台并发请求, 用户真正打开弹窗时数据已就绪。 - // 注意: 不再依赖 addonIsExist.form (后端可能未开启 form 插件, 但产品被设为"留言商品"(isinformation=2) - // 仍需展示留言表单), 始终尝试加载, getGoodsForm 内部已对失败分支兜底空数组。 - this._goodsFormPromise = this.getGoodsForm(); - // 不 await, 释放主流程; 调用方需要时可 await this._goodsFormPromise + try { + this._goodsFormPromise = this.getGoodsForm(); + } catch (e) { + console.error('getGoodsForm kicked off failed:', e); + } } catch (e) { console.error('handleGoodsSkuData failed:', e); } diff --git a/pages.json b/pages.json index 8d5bba6..2a33b8f 100644 --- a/pages.json +++ b/pages.json @@ -152,70 +152,6 @@ } } }, - { - "path": "_components/goods-detail-view/goods-detail-view", - "style": { - "disableScroll": true, - "navigationBarTitleText": "商品分类", - "enablePullDownRefresh": true, - "componentPlaceholder": { - "diy-article": "view", - "diy-audio": "view", - "diy-bargain": "view", - "diy-bottom-nav": "view", - "diy-category": "view", - "diy-category-item": "view", - "diy-channel-list": "view", - "diy-channel-video": "view", - "diy-comp-extend": "view", - "diy-coupon": "view", - "diy-digit": "view", - "diy-fenxiao-goods-list": "view", - "diy-float-btn": "view", - "diy-follow-official-account": "view", - "diy-form": "view", - "diy-goods-brand": "view", - "diy-goods-list": "view", - "diy-goods-recommend": "view", - "diy-graphic-nav": "view", - "diy-group": "view", - "diy-groupbuy": "view", - "diy-horz-blank": "view", - "diy-horz-line": "view", - "diy-hot-area": "view", - "diy-icon": "view", - "diy-image-nav": "view", - "diy-img-ads": "view", - "diy-index-page": "view", - "diy-kefu": "view", - "diy-listmenu": "view", - "diy-live": "view", - "diy-many-goods-list": "view", - "diy-map": "view", - "diy-member-info": "view", - "diy-member-my-order": "view", - "diy-merch-list": "view", - "diy-notes": "view", - "diy-notice": "view", - "diy-payment-qrcode": "view", - "diy-picture": "view", - "diy-pinfan": "view", - "diy-pintuan": "view", - "diy-presale": "view", - "diy-quick-nav": "view", - "diy-rich-text": "view", - "diy-rubik-cube": "view", - "diy-search": "view", - "diy-seckill": "view", - "diy-store": "view", - "diy-store-label": "view", - "diy-tab": "view", - "diy-text": "view", - "diy-video": "view", - "diy-video-list": "view" - } - } - }, { "path": "cart", "style": { diff --git a/pages_goods/_components/goods-detail-view/goods-detail-view.vue b/pages_goods/_components/goods-detail-view/goods-detail-view.vue index da84a7b..b9ebd6f 100644 --- a/pages_goods/_components/goods-detail-view/goods-detail-view.vue +++ b/pages_goods/_components/goods-detail-view/goods-detail-view.vue @@ -1,6 +1,8 @@