修复商品列表滚动错误
Test Runner / hello (push) Failing after 32s

This commit is contained in:
2026-08-25 14:25:43 +08:00
parent 65356953ed
commit 69734f36b4
25 changed files with 642 additions and 246 deletions
+20 -51
View File
@@ -4,7 +4,7 @@
<text class="section-title">用强大的功能开启盈利快车道</text>
<!-- 功能卡片横向滚动
:scroll-left 绑定 featScrollLeftactiveFeat 变化时尽量把选中项滚到左侧 -->
受控模式active 由父组件统一管理scroll-left 跟随 active -->
<scroll-view
scroll-x
class="feat-scroll"
@@ -15,7 +15,7 @@
<view class="feat-list">
<view
class="feat-card"
:class="{ active: activeFeat === index }"
:class="{ active: active === index }"
v-for="(item, index) in features"
:key="index"
@tap="onFeatTap(index)"
@@ -30,7 +30,7 @@
</scroll-view>
<!-- 集成平台大图 - 370x257 8px圆角
图片来源features[activeFeat].img4张卡片分别对应一张大图占位时 4 张同图设计师供图后换 mock.js 即可 -->
跟随 active 联动切换 -->
<view class="integration-wrap">
<image
class="integration-img"
@@ -42,14 +42,10 @@
</template>
<script>
// 功能卡片尺寸(与 CSS 保持一致,用于计算「选中卡片滚到左边」的 scrollLeft
// 卡片尺寸常量,用于计算 scroll-left(与 CSS 保持一致
// CSS: .feat-card { width:332rpx }, .feat-list gap:16rpx
// 1rpx = 0.5px,所以 1 张卡片+gap = (332 + 16) * 0.5 = 174px
const CARD_WIDTH_PX = 332 * 0.5 // 166
const CARD_GAP_PX = 16 * 0.5 // 8
const CARD_STEP_PX = CARD_WIDTH_PX + CARD_GAP_PX // 174
const AUTO_PLAY_INTERVAL = 3000 // 3 秒自动轮播一次
// 1rpx = 0.5px → 单卡步长 = (332 + 16) * 0.5 = 174px
const CARD_STEP_PX = (332 + 16) * 0.5 // 174
export default {
name: 'PlatformFeatures',
@@ -57,53 +53,44 @@ export default {
features: {
type: Array,
default: () => []
},
// 受控 active:由父组件(index.vue 的统一轮播定时器)传入
active: {
type: Number,
default: 0
}
},
data() {
return {
activeFeat: 0, // 默认从第一张开始轮播
featScrollLeft: 0, // scroll-view 的 scroll-leftpx
_timer: null
featScrollLeft: 0
}
},
computed: {
integrationImg() {
const f = this.features[this.activeFeat]
const f = this.features[this.active]
return (f && f.img) || ''
}
},
watch: {
activeFeat(idx) {
// 选中项变化时:把选中卡片尽量滚到左边
// index * step = 选中卡片起始 x
active(idx) {
// active 变化(无论是自动轮播还是手动点击)都把选中卡片尽量滚到左边
this.scrollToCard(idx)
}
},
mounted() {
this.startAutoPlay()
},
beforeDestroy() {
this.stopAutoPlay()
},
methods: {
onFeatTap(index) {
// 用户手动点击:切换 + 先停轮播,再隔 3 秒重启(避免刚点完又被立即切走)
this.stopAutoPlay()
this.activeFeat = index
// 子组件不再自管 state,只 emit 给父组件
this.$emit('change', index)
this.startAutoPlay()
},
/**
* 让横滚容器把第 idx 张卡片「尽量」滚到左边贴边。
* scroll-view 的 scroll-left 有最大上限(内容总长 - 视口宽度)
* 当 idx 是最后几张时,scroll-left 超过最大值,scroll-view 会自动截断到可滚的最大值,
* 因此卡片虽无法真的贴左,但已经是「滚到最接近左侧」的位置了。
* 把第 idx 张卡片「尽量」滚到左边贴边。
* scroll-view 的 scroll-left 超过最大可滚值时会自动截断
* 因此最后几张卡片虽无法真正贴左,但已经是「最接近左侧」的位置。
*/
scrollToCard(idx) {
const target = Math.max(0, idx) * CARD_STEP_PX
// 先赋值一个不同的值,保证 uni-app scroll-view 每次都能识别到属性变化
// (否则从 0 → 0 这种无变化赋值不触发滚动)
// 处理 0→0 无变化不触发滚动的情况
if (this.featScrollLeft === target) {
this.featScrollLeft = target + 0.001
this.$nextTick(() => {
@@ -112,24 +99,6 @@ export default {
} else {
this.featScrollLeft = target
}
},
startAutoPlay() {
this.stopAutoPlay()
if (!this.features || this.features.length <= 1) return
this._timer = setInterval(() => {
const total = this.features.length
const next = (this.activeFeat + 1) % total
this.activeFeat = next
this.$emit('change', next)
}, AUTO_PLAY_INTERVAL)
},
stopAutoPlay() {
if (this._timer) {
clearInterval(this._timer)
this._timer = null
}
}
}
}
+56 -8
View File
@@ -3,12 +3,19 @@
<view class="steps-section">
<text class="section-title">4步开始你的按需定制生意</text>
<!-- 步骤卡片横向滚动 -->
<scroll-view scroll-x class="steps-scroll" show-scrollbar="false">
<!-- 步骤卡片横向滚动
受控模式active 由父组件管理scroll-left 跟随 active 把选中卡片尽量滚到左边 -->
<scroll-view
scroll-x
class="steps-scroll"
show-scrollbar="false"
:scroll-left="stepsScrollLeft"
:scroll-with-animation="true"
>
<view class="steps-list">
<view
class="step-card"
:class="{ active: activeStep === index }"
:class="{ active: active === index }"
v-for="(item, index) in steps"
:key="index"
@tap="onStepTap(index)"
@@ -22,11 +29,12 @@
</view>
</scroll-view>
<!-- 预览大图 - image 25 370x370 6px圆角 -->
<!-- 预览大图 - image 25 370x370 6px圆角
跟随 active 联动切换4 步分别对应一张图占位时同图设计师供图后改 mock.js -->
<view class="preview-wrap">
<image
class="preview-img"
src="/static/images/home/image_25_1484_1689.png"
:src="previewImg"
mode="widthFix"
></image>
</view>
@@ -34,23 +42,63 @@
</template>
<script>
// 卡片尺寸常量,用于计算 scroll-left(与 CSS 保持一致)
// CSS: .step-card { width:332rpx }, .steps-list gap:16rpx
// 1rpx = 0.5px → 单卡步长 = (332 + 16) * 0.5 = 174px
const CARD_STEP_PX = (332 + 16) * 0.5 // 174
export default {
name: 'StepsFlow',
props: {
steps: {
type: Array,
default: () => []
},
// 受控 active:由父组件(index.vue 的统一轮播定时器)传入
active: {
type: Number,
default: 0
}
},
data() {
return {
activeStep: 0
stepsScrollLeft: 0
}
},
computed: {
previewImg() {
const s = this.steps[this.active]
return (s && s.img) || ''
}
},
watch: {
active(idx) {
// active 变化(无论是自动轮播还是手动点击)都把选中卡片尽量滚到左边
this.scrollToCard(idx)
}
},
methods: {
onStepTap(index) {
this.activeStep = index
// 子组件不再自管 state,只 emit 给父组件
this.$emit('change', index)
},
/**
* 把第 idx 张卡片「尽量」滚到左边贴边。
* scroll-view 的 scroll-left 超出最大可滚值时会自动截断,
* 因此最后几张卡片虽然无法真正贴左,但已经是「最接近左侧」的位置。
*/
scrollToCard(idx) {
const target = Math.max(0, idx) * CARD_STEP_PX
// 处理 0→0 无变化不触发滚动的情况
if (this.stepsScrollLeft === target) {
this.stepsScrollLeft = target + 0.001
this.$nextTick(() => {
this.stepsScrollLeft = target
})
} else {
this.stepsScrollLeft = target
}
}
}
}
@@ -86,7 +134,7 @@ export default {
display: inline-flex;
gap: 16rpx;
}
/* 卡片 - 166x80 圆角6px */
/* 卡片 - 166x80 圆角6px (332rpx × 160rpx) */
.step-card {
flex-shrink: 0;
width: 332rpx;
+84 -5
View File
@@ -3,8 +3,12 @@
<!-- Hero 首屏 -->
<HeroBanner :stats="trustStats" />
<!-- 4步流程 -->
<StepsFlow :steps="stepList" />
<!-- 4步流程active 由页面统一管理跟下面 PlatformFeatures 共用同一个定时器 -->
<StepsFlow
:steps="stepList"
:active="currentStep"
@change="onStepChange"
/>
<!-- 全球POD货盘 -->
<PodCatalog
@@ -15,8 +19,12 @@
@productTap="onGoDetail"
/>
<!-- 平台功能 + 集成平台 -->
<PlatformFeatures :features="featureList" />
<!-- 平台功能 + 集成平台active 由页面统一管理跟上面 StepsFlow 共用同一个定时器 -->
<PlatformFeatures
:features="featureList"
:active="currentFeat"
@change="onFeatChange"
/>
<!-- 为什么选择 -->
<WhyChoose :reasons="reasonList" />
@@ -45,6 +53,9 @@ import {
companyFeatures
} from './mock.js'
// 统一轮播间隔:3 秒推进一次,同时驱动 StepsFlow + PlatformFeatures
const AUTO_PLAY_INTERVAL = 3000
export default {
components: {
HeroBanner,
@@ -62,13 +73,28 @@ export default {
reasonList,
companyFeatures,
podCountries: [],
podProducts: []
podProducts: [],
// 两个区块共用一个定时器,但各自独立轮播(互不干扰)
currentStep: 0,
currentFeat: 0,
_autoPlayTimer: null // 唯一一个定时器
}
},
async onLoad() {
await this.loadPodCountries()
await this.loadPodProducts('')
},
onShow() {
// 页面显示 → 启动轮播
this.startAutoPlay()
},
onHide() {
// 页面隐藏 → 回收定时器(切 Tab、跳详情、退后台等)
this.stopAutoPlay()
},
onUnload() {
this.stopAutoPlay()
},
methods: {
async loadPodCountries() {
try {
@@ -117,6 +143,59 @@ export default {
uni.navigateTo({
url: '/pages/product-detail/product-detail?id=' + item.id
})
},
/* ============================
* 统一轮播控制(单一入口)
* ============================ */
/**
* 启动统一轮播:单一 setInterval,3 秒一次,
* 同时推进 StepsFlow 的 currentStep 和 PlatformFeatures 的 currentFeat。
* 两个组件的 active 各自 mod 自己的 length,互不干扰。
*/
startAutoPlay() {
this.stopAutoPlay()
this._autoPlayTimer = setInterval(() => {
const stepTotal = (this.stepList || []).length
const featTotal = (this.featureList || []).length
if (stepTotal > 1) {
this.currentStep = (this.currentStep + 1) % stepTotal
}
if (featTotal > 1) {
this.currentFeat = (this.currentFeat + 1) % featTotal
}
}, AUTO_PLAY_INTERVAL)
},
/**
* 回收定时器:onHide / onUnload 时调用,避免后台运行浪费资源
*/
stopAutoPlay() {
if (this._autoPlayTimer) {
clearInterval(this._autoPlayTimer)
this._autoPlayTimer = null
}
},
/**
* 用户点击 StepsFlow 卡片:
* 先停定时器 → 更新 currentStep → 重启 3s 计数
* (同时 currentFeat 的计数被重置也无妨,体验上完全可接受)
*/
onStepChange(idx) {
this.stopAutoPlay()
this.currentStep = idx
this.startAutoPlay()
},
/**
* 用户点击 PlatformFeatures 卡片:同上逻辑,函数复用
*/
onFeatChange(idx) {
this.stopAutoPlay()
this.currentFeat = idx
this.startAutoPlay()
}
}
}
+10 -4
View File
@@ -10,26 +10,32 @@ export const trustStats = [
]
// 4步流程
// 每一步对应一张预览大图(img 字段,目前暂用同一张占位图,设计师供图后替换即可)
const STEP_IMG = '/static/images/home/image_25_1484_1689.png'
export const stepList = [
{
step: '01',
title: '选择产品',
desc: '海量精选产品,满足多元定制需求'
desc: '海量精选产品,满足多元定制需求',
img: STEP_IMG
},
{
step: '02',
title: '上传设计',
desc: '可视化编辑器,轻松实现创意落地'
desc: '可视化编辑器,轻松实现创意落地',
img: STEP_IMG
},
{
step: '03',
title: '在线销售',
desc: '一键开通店铺,多渠道触达目标客群'
desc: '一键开通店铺,多渠道触达目标客群',
img: STEP_IMG
},
{
step: '04',
title: '生产配送',
desc: '智能化柔性生产,快速响应全球配送'
desc: '智能化柔性生产,快速响应全球配送',
img: STEP_IMG
}
]
+1 -1
View File
@@ -1,6 +1,6 @@
<template>
<!-- 已选筛选标签 - Figma 1519:250 圆角 60px -->
<view class="active-filters" v-if="list.length > 0">
<view class="active-filters" id="activeFilters" v-if="list.length > 0">
<view class="active-filter-tag" v-for="(item, index) in list" :key="index">
<text class="filter-text">{{ item.label }}</text>
<text class="filter-remove" @tap="onRemove(item.key)">×</text>
+1 -1
View File
@@ -1,6 +1,6 @@
<template>
<!-- 国家选择条 - 换行布局(对应 Figma 1511:195) -->
<view class="country-bar">
<view class="country-bar" id="countryBar">
<view class="country-inner">
<view
class="country-item"
+18 -15
View File
@@ -2,7 +2,7 @@
<!-- 右侧商品列表区 - 上方子分类 + 下方滚动商品网格 -->
<view class="right-content">
<!-- 子分类(顶部条件) - Figma 1519:250 -->
<view class="sub-categories" v-if="subCategories.length > 0">
<view class="sub-categories" id="subCategories" v-if="subCategories.length > 0">
<view
class="sub-cat-item"
:class="{ active: activeSubId === item.id }"
@@ -12,8 +12,16 @@
>{{ item.name }}</view>
</view>
<!-- 商品网格滚动区 -->
<scroll-view scroll-y class="product-scroll" :lower-threshold="100" :scroll-top="scrollTopVal" :scroll-with-animation="false" @scrolltolower="onScrollToLower">
<!-- 商品网格滚动区 - 固定高度由父组件动态计算传入符合官方文档要求 -->
<scroll-view
scroll-y
class="product-scroll"
:lower-threshold="100"
:scroll-top="scrollTopVal"
:scroll-with-animation="false"
:style="{ height: scrollHeight + 'px' }"
@scrolltolower="onScrollToLower"
>
<view class="product-grid" v-if="list.length > 0">
<view
class="product-card"
@@ -69,7 +77,9 @@ export default {
activeSubId: { type: [String, Number], default: '' },
hasMore: { type: Boolean, default: true },
loading: { type: Boolean, default: false },
scrollTopVal: { type: Number, default: 0 }
scrollTopVal: { type: Number, default: 0 },
// 商品滚动区固定高度(px),由父组件动态计算传入
scrollHeight: { type: Number, default: 400 }
},
methods: {
selectSub(id) { this.$emit('sub-select', id) },
@@ -81,15 +91,11 @@ export default {
<style scoped>
/* 右侧内容区 - 上下分:顶部条件 + 下方滚动
flex:1 与 height:100% 冲突,二选一(保留 flex:1) */
不再依赖 flex:1 撑高度,scroll-view 用父组件传入的固定高度 */
.right-content {
flex: 1;
min-width: 0;
min-height: 0;
display: flex;
flex-direction: column;
background: #f2f2f2;
overflow: hidden;
}
/* 顶部子分类条件 - padding 6px 10px 圆角 60px */
@@ -116,13 +122,10 @@ export default {
color: #ff6800;
}
/* 滚动商品区 - uni-app scroll-view 在 flex 布局里必须同时有 flex:1 + height:0
仅 min-height:0 无法让部分端的 scroll-view 正确计算内部 viewport 高度 */
/* 滚动商品区 - 高度由父组件通过 :style 传入(px 固定值),
符合 uni-app / 微信小程序官方文档「scroll-y 需给固定 height」的要求 */
.product-scroll {
flex: 1;
height: 0;
min-height: 0;
overflow: hidden;
width: 100%;
}
/* 商品网格 - 固定2列 grid,不会因商品个数变化而拉伸占行 */
+1 -1
View File
@@ -1,6 +1,6 @@
<template>
<!-- 搜索栏 -->
<view class="search-bar" :style="{ paddingTop: statusBarHeight + 'px' }">
<view class="search-bar" id="searchBar" :style="{ paddingTop: statusBarHeight + 'px' }">
<view class="search-input-wrap">
<text class="search-icon">🔍</text>
<input
+47 -1
View File
@@ -42,6 +42,7 @@
:has-more="hasMore"
:loading="loadingMore"
:scroll-top-val="scrollTopVal"
:scroll-height="productScrollHeight"
@sub-select="selectSubCategory"
@product-click="goDetail"
@scroll-to-lower="onScrollToLower"
@@ -108,7 +109,8 @@ export default {
loadingMore: false,
products: [],
windowHeight: 667,
scrollTopVal: 0
scrollTopVal: 0,
productScrollHeight: 400 // 商品滚动区高度(px),动态计算
}
},
async onLoad() {
@@ -123,6 +125,10 @@ export default {
await this.initData()
this.loadSubCategories('all')
await this.loadGoods(1)
// 首屏数据渲染完成后计算滚动区高度
this.$nextTick(() => {
this.calcScrollHeight()
})
},
methods: {
async initData() {
@@ -253,6 +259,11 @@ export default {
this.hasMore = this.products.length < total
this.loadingMore = false
// 数据变更后重算滚动区高度(筛选标签/子分类数量变化会影响上方占位高度)
this.$nextTick(() => {
this.calcScrollHeight()
})
console.log(
'[loadGoods] total=' + total +
', page=' + currentPage +
@@ -352,6 +363,41 @@ export default {
})
},
/**
* 动态计算商品滚动区高度(px)。
* 用 createSelectorQuery 测量 SearchBar / CountryBar / ActiveFilters / subCategories 的实际高度,
* 用 windowHeight 依次减去,得到 scroll-view 可用的固定高度。
* —— 完全符合 uni-app / 微信小程序官方文档「scroll-y 需给固定 height」的要求。
*/
calcScrollHeight() {
const query = uni.createSelectorQuery().in(this)
// 分别测量 4 个元素的 boundingClientRect
query.select('#searchBar').boundingClientRect()
query.select('#countryBar').boundingClientRect()
query.select('#activeFilters').boundingClientRect()
query.select('#subCategories').boundingClientRect()
query.exec((res) => {
// res[0]=searchBar, res[1]=countryBar, res[2]=activeFilters, res[3]=subCategories
// 注意:v-if 为 false 时 res[i] 可能为 null
const searchBarH = res[0] ? res[0].height : 0
const countryBarH = res[1] ? res[1].height : 0
const activeFiltersH = res[2] ? res[2].height : 0
const subCategoriesH = res[3] ? res[3].height : 0
const totalUsed = searchBarH + countryBarH + activeFiltersH + subCategoriesH
let h = this.windowHeight - totalUsed
// 最小值保护:至少 200px,避免极端情况
if (h < 200) h = 200
if (h > this.windowHeight) h = this.windowHeight
this.productScrollHeight = Math.round(h)
console.log('[calcScrollHeight] windowHeight=' + this.windowHeight +
', searchBar=' + searchBarH + ', countryBar=' + countryBarH +
', activeFilters=' + activeFiltersH + ', subCategories=' + subCategoriesH +
' → scrollHeight=' + this.productScrollHeight)
})
},
async selectCountry(id) {
// 如果点击的是已选中的国家 → 取消选中
if (this.selectedCountry === id) {
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+69 -8
View File
@@ -13354,6 +13354,55 @@ exports.default = _default;
/***/ }),
/* 60 */
/*!**************************************************************!*\
!*** C:/gs/project/demo/demo_uni/utils/product.js ***!
\**************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
/**
* 商品标题处理工具
*
* 背景后端返回的 goodName 常包含前半段品牌/系列 + 空格 + 后半段 SKU/描述
* 首页/列表页卡片空间有限只显示空格前的前半部分
*/
/**
* 截断商品标题返回第一个空格或全角空格之前的内容
* - 防错null/undefined/非字符串/空串 返回 ''
* - 没有空格 原样返回去掉首尾空白后
* - 多个连续空格 只看第一个
* - 全角空格 " " 也视为空格
*
* @param {string | any} title 原始商品标题goodName
* @returns {string} 截断后的标题
*/
function truncateProductTitle(title) {
if (title == null) return '';
if (typeof title !== 'string') {
try {
title = String(title);
} catch (e) {
return '';
}
}
// 去掉首尾空白
var s = title.trim();
if (!s) return '';
// 找第一个空格(半角 / 全角 / Tab / NBSP 都算)
var match = s.match(/[\s\u3000\u00a0]/);
if (!match) return s;
var idx = match.index;
if (idx <= 0) return s;
return s.slice(0, idx);
}
module.exports = {
truncateProductTitle: truncateProductTitle
};
/***/ }),
/* 61 */
/*!*****************************************************************!*\
!*** C:/gs/project/demo/demo_uni/pages/index/mock.js ***!
\*****************************************************************/
@@ -13390,23 +13439,29 @@ var trustStats = [{
}];
// 4步流程
// 每一步对应一张预览大图(img 字段,目前暂用同一张占位图,设计师供图后替换即可)
exports.trustStats = trustStats;
var STEP_IMG = '/static/images/home/image_25_1484_1689.png';
var stepList = [{
step: '01',
title: '选择产品',
desc: '海量精选产品,满足多元定制需求'
desc: '海量精选产品,满足多元定制需求',
img: STEP_IMG
}, {
step: '02',
title: '上传设计',
desc: '可视化编辑器,轻松实现创意落地'
desc: '可视化编辑器,轻松实现创意落地',
img: STEP_IMG
}, {
step: '03',
title: '在线销售',
desc: '一键开通店铺,多渠道触达目标客群'
desc: '一键开通店铺,多渠道触达目标客群',
img: STEP_IMG
}, {
step: '04',
title: '生产配送',
desc: '智能化柔性生产,快速响应全球配送'
desc: '智能化柔性生产,快速响应全球配送',
img: STEP_IMG
}];
// 全球POD货盘 - 国家tab
@@ -13458,23 +13513,29 @@ var podProducts = [{
}];
// 平台功能卡片
// 每一张卡片对应一张「集成平台」大图(img 字段目前暂用同一张占位图,后端/设计师提供后替换即可)
exports.podProducts = podProducts;
var FEAT_IMG = '/static/images/home/Rectangle_64_1484_1735.png';
var featureList = [{
step: '01',
title: '设计工具',
desc: '轻松设计,快速定制'
desc: '轻松设计,快速定制',
img: FEAT_IMG
}, {
step: '02',
title: '自动化履约',
desc: '从生产到配送,全程无忧,准时交付'
desc: '从生产到配送,全程无忧,准时交付',
img: FEAT_IMG
}, {
step: '03',
title: '全球配送',
desc: '全球11国自营本土工厂'
desc: '全球11国自营本土工厂',
img: FEAT_IMG
}, {
step: '04',
title: '店铺集成',
desc: '与全球主流电商平台无缝对接'
desc: '与全球主流电商平台无缝对接',
img: FEAT_IMG
}];
// 为什么选择 - 4个优势
+80 -13
View File
@@ -33,7 +33,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _index_vue_vue_type_template_id_57280228___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=57280228& */ 51);
/* harmony import */ var _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js& */ 53);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony import */ var _index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.vue?vue&type=style&index=0&lang=css& */ 61);
/* harmony import */ var _index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.vue?vue&type=style&index=0&lang=css& */ 62);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 36);
var renderjs
@@ -145,37 +145,40 @@ exports.default = void 0;
var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 55));
var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 57));
var _public = __webpack_require__(/*! @/api/public.js */ 58);
var _mock = __webpack_require__(/*! ./mock.js */ 60);
var _product = __webpack_require__(/*! @/utils/product.js */ 60);
var _mock = __webpack_require__(/*! ./mock.js */ 61);
var HeroBanner = function HeroBanner() {
__webpack_require__.e(/*! require.ensure | pages/index/components/HeroBanner */ "pages/index/components/HeroBanner").then((function () {
return resolve(__webpack_require__(/*! ./components/HeroBanner.vue */ 79));
return resolve(__webpack_require__(/*! ./components/HeroBanner.vue */ 80));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var StepsFlow = function StepsFlow() {
__webpack_require__.e(/*! require.ensure | pages/index/components/StepsFlow */ "pages/index/components/StepsFlow").then((function () {
return resolve(__webpack_require__(/*! ./components/StepsFlow.vue */ 86));
return resolve(__webpack_require__(/*! ./components/StepsFlow.vue */ 87));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var PodCatalog = function PodCatalog() {
__webpack_require__.e(/*! require.ensure | pages/index/components/PodCatalog */ "pages/index/components/PodCatalog").then((function () {
return resolve(__webpack_require__(/*! ./components/PodCatalog.vue */ 93));
return resolve(__webpack_require__(/*! ./components/PodCatalog.vue */ 94));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var PlatformFeatures = function PlatformFeatures() {
__webpack_require__.e(/*! require.ensure | pages/index/components/PlatformFeatures */ "pages/index/components/PlatformFeatures").then((function () {
return resolve(__webpack_require__(/*! ./components/PlatformFeatures.vue */ 100));
return resolve(__webpack_require__(/*! ./components/PlatformFeatures.vue */ 101));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var WhyChoose = function WhyChoose() {
__webpack_require__.e(/*! require.ensure | pages/index/components/WhyChoose */ "pages/index/components/WhyChoose").then((function () {
return resolve(__webpack_require__(/*! ./components/WhyChoose.vue */ 107));
return resolve(__webpack_require__(/*! ./components/WhyChoose.vue */ 108));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var CompanyIntro = function CompanyIntro() {
__webpack_require__.e(/*! require.ensure | pages/index/components/CompanyIntro */ "pages/index/components/CompanyIntro").then((function () {
return resolve(__webpack_require__(/*! ./components/CompanyIntro.vue */ 114));
return resolve(__webpack_require__(/*! ./components/CompanyIntro.vue */ 115));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
// 统一轮播间隔:3 秒推进一次,同时驱动 StepsFlow + PlatformFeatures
var AUTO_PLAY_INTERVAL = 3000;
var _default = {
components: {
HeroBanner: HeroBanner,
@@ -193,7 +196,11 @@ var _default = {
reasonList: _mock.reasonList,
companyFeatures: _mock.companyFeatures,
podCountries: [],
podProducts: []
podProducts: [],
// 两个区块共用一个定时器,但各自独立轮播(互不干扰)
currentStep: 0,
currentFeat: 0,
_autoPlayTimer: null // 唯一一个定时器
};
},
onLoad: function onLoad() {
@@ -216,6 +223,17 @@ var _default = {
}, _callee);
}))();
},
onShow: function onShow() {
// 页面显示 → 启动轮播
this.startAutoPlay();
},
onHide: function onHide() {
// 页面隐藏 → 回收定时器(切 Tab、跳详情、退后台等)
this.stopAutoPlay();
},
onUnload: function onUnload() {
this.stopAutoPlay();
},
methods: {
loadPodCountries: function loadPodCountries() {
var _this2 = this;
@@ -283,7 +301,7 @@ var _default = {
_this3.podProducts = items.map(function (item) {
return {
id: item.goodId,
name: item.goodName,
name: (0, _product.truncateProductTitle)(item.goodName),
image: item.image
};
});
@@ -328,6 +346,55 @@ var _default = {
uni.navigateTo({
url: '/pages/product-detail/product-detail?id=' + item.id
});
},
/* ============================
* 统一轮播控制(单一入口)
* ============================ */
/**
* 启动统一轮播:单一 setInterval,3 秒一次,
* 同时推进 StepsFlow 的 currentStep 和 PlatformFeatures 的 currentFeat。
* 两个组件的 active 各自 mod 自己的 length,互不干扰。
*/
startAutoPlay: function startAutoPlay() {
var _this5 = this;
this.stopAutoPlay();
this._autoPlayTimer = setInterval(function () {
var stepTotal = (_this5.stepList || []).length;
var featTotal = (_this5.featureList || []).length;
if (stepTotal > 1) {
_this5.currentStep = (_this5.currentStep + 1) % stepTotal;
}
if (featTotal > 1) {
_this5.currentFeat = (_this5.currentFeat + 1) % featTotal;
}
}, AUTO_PLAY_INTERVAL);
},
/**
* 回收定时器:onHide / onUnload 时调用,避免后台运行浪费资源
*/
stopAutoPlay: function stopAutoPlay() {
if (this._autoPlayTimer) {
clearInterval(this._autoPlayTimer);
this._autoPlayTimer = null;
}
},
/**
* 用户点击 StepsFlow 卡片:
* 先停定时器 → 更新 currentStep → 重启 3s 计数
* (同时 currentFeat 的计数被重置也无妨,体验上完全可接受)
*/
onStepChange: function onStepChange(idx) {
this.stopAutoPlay();
this.currentStep = idx;
this.startAutoPlay();
},
/**
* 用户点击 PlatformFeatures 卡片:同上逻辑,函数复用
*/
onFeatChange: function onFeatChange(idx) {
this.stopAutoPlay();
this.currentFeat = idx;
this.startAutoPlay();
}
}
};
@@ -336,7 +403,7 @@ exports.default = _default;
/***/ }),
/***/ 61:
/***/ 62:
/*!****************************************************************************************************!*\
!*** C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/index/index.vue?vue&type=style&index=0&lang=css& ***!
\****************************************************************************************************/
@@ -345,14 +412,14 @@ exports.default = _default;
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--6-oneOf-1-3!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=style&index=0&lang=css& */ 62);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--6-oneOf-1-3!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=style&index=0&lang=css& */ 63);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ 62:
/***/ 63:
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!./node_modules/postcss-loader/src??ref--6-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/index/index.vue?vue&type=style&index=0&lang=css& ***!
\********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+1 -1
View File
@@ -1 +1 @@
<view class="index-page"><hero-banner vue-id="8dd740cc-1" stats="{{trustStats}}" bind:__l="__l"></hero-banner><steps-flow vue-id="8dd740cc-2" steps="{{stepList}}" bind:__l="__l"></steps-flow><pod-catalog vue-id="8dd740cc-3" countries="{{podCountries}}" products="{{podProducts}}" data-event-opts="{{[['^countryChange',[['onPodCountryChange']]],['^moreTap',[['onGoProducts']]],['^productTap',[['onGoDetail']]]]}}" bind:countryChange="__e" bind:moreTap="__e" bind:productTap="__e" bind:__l="__l"></pod-catalog><platform-features vue-id="8dd740cc-4" features="{{featureList}}" bind:__l="__l"></platform-features><why-choose vue-id="8dd740cc-5" reasons="{{reasonList}}" bind:__l="__l"></why-choose><company-intro vue-id="8dd740cc-6" abilities="{{companyFeatures}}" bind:__l="__l"></company-intro></view>
<view class="index-page"><hero-banner vue-id="8dd740cc-1" stats="{{trustStats}}" bind:__l="__l"></hero-banner><steps-flow vue-id="8dd740cc-2" steps="{{stepList}}" active="{{currentStep}}" data-event-opts="{{[['^change',[['onStepChange']]]]}}" bind:change="__e" bind:__l="__l"></steps-flow><pod-catalog vue-id="8dd740cc-3" countries="{{podCountries}}" products="{{podProducts}}" data-event-opts="{{[['^countryChange',[['onPodCountryChange']]],['^moreTap',[['onGoProducts']]],['^productTap',[['onGoDetail']]]]}}" bind:countryChange="__e" bind:moreTap="__e" bind:productTap="__e" bind:__l="__l"></pod-catalog><platform-features vue-id="8dd740cc-4" features="{{featureList}}" active="{{currentFeat}}" data-event-opts="{{[['^change',[['onFeatChange']]]]}}" bind:change="__e" bind:__l="__l"></platform-features><why-choose vue-id="8dd740cc-5" reasons="{{reasonList}}" bind:__l="__l"></why-choose><company-intro vue-id="8dd740cc-6" abilities="{{companyFeatures}}" bind:__l="__l"></company-intro></view>
@@ -1,6 +1,6 @@
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["pages/product-detail/product-detail"],{
/***/ 71:
/***/ 72:
/*!********************************************************************************************************!*\
!*** C:/gs/project/官网小程序demo/官网小程序demo_uni/main.js?{"page":"pages%2Fproduct-detail%2Fproduct-detail"} ***!
\********************************************************************************************************/
@@ -13,7 +13,7 @@
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
__webpack_require__(/*! uni-pages */ 30);
var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 25));
var _productDetail = _interopRequireDefault(__webpack_require__(/*! ./pages/product-detail/product-detail.vue */ 72));
var _productDetail = _interopRequireDefault(__webpack_require__(/*! ./pages/product-detail/product-detail.vue */ 73));
// @ts-ignore
wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
createPage(_productDetail.default);
@@ -21,7 +21,7 @@ createPage(_productDetail.default);
/***/ }),
/***/ 72:
/***/ 73:
/*!*************************************************************************************!*\
!*** C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/product-detail/product-detail.vue ***!
\*************************************************************************************/
@@ -30,10 +30,10 @@ createPage(_productDetail.default);
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _product_detail_vue_vue_type_template_id_685304e6___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./product-detail.vue?vue&type=template&id=685304e6& */ 73);
/* harmony import */ var _product_detail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./product-detail.vue?vue&type=script&lang=js& */ 75);
/* harmony import */ var _product_detail_vue_vue_type_template_id_685304e6___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./product-detail.vue?vue&type=template&id=685304e6& */ 74);
/* harmony import */ var _product_detail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./product-detail.vue?vue&type=script&lang=js& */ 76);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _product_detail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _product_detail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony import */ var _product_detail_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./product-detail.vue?vue&type=style&index=0&lang=css& */ 77);
/* harmony import */ var _product_detail_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./product-detail.vue?vue&type=style&index=0&lang=css& */ 78);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 36);
var renderjs
@@ -62,7 +62,7 @@ component.options.__file = "pages/product-detail/product-detail.vue"
/***/ }),
/***/ 73:
/***/ 74:
/*!********************************************************************************************************************!*\
!*** C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/product-detail/product-detail.vue?vue&type=template&id=685304e6& ***!
\********************************************************************************************************************/
@@ -71,7 +71,7 @@ component.options.__file = "pages/product-detail/product-detail.vue"
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_template_id_685304e6___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./product-detail.vue?vue&type=template&id=685304e6& */ 74);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_template_id_685304e6___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./product-detail.vue?vue&type=template&id=685304e6& */ 75);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_template_id_685304e6___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_template_id_685304e6___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -84,7 +84,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ 74:
/***/ 75:
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/product-detail/product-detail.vue?vue&type=template&id=685304e6& ***!
\********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -134,7 +134,7 @@ render._withStripped = true
/***/ }),
/***/ 75:
/***/ 76:
/*!**************************************************************************************************************!*\
!*** C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/product-detail/product-detail.vue?vue&type=script&lang=js& ***!
\**************************************************************************************************************/
@@ -143,14 +143,14 @@ render._withStripped = true
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./product-detail.vue?vue&type=script&lang=js& */ 76);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./product-detail.vue?vue&type=script&lang=js& */ 77);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ 76:
/***/ 77:
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/product-detail/product-detail.vue?vue&type=script&lang=js& ***!
\*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -158,7 +158,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(uni) {
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
@@ -170,37 +170,37 @@ var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/r
var _public = __webpack_require__(/*! @/api/public.js */ 58);
var DetailSwiper = function DetailSwiper() {
__webpack_require__.e(/*! require.ensure | pages/product-detail/components/DetailSwiper */ "pages/product-detail/components/DetailSwiper").then((function () {
return resolve(__webpack_require__(/*! ./components/DetailSwiper.vue */ 163));
return resolve(__webpack_require__(/*! ./components/DetailSwiper.vue */ 164));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var ProductInfo = function ProductInfo() {
__webpack_require__.e(/*! require.ensure | pages/product-detail/components/ProductInfo */ "pages/product-detail/components/ProductInfo").then((function () {
return resolve(__webpack_require__(/*! ./components/ProductInfo.vue */ 170));
return resolve(__webpack_require__(/*! ./components/ProductInfo.vue */ 171));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var ColorSelector = function ColorSelector() {
__webpack_require__.e(/*! require.ensure | pages/product-detail/components/ColorSelector */ "pages/product-detail/components/ColorSelector").then((function () {
return resolve(__webpack_require__(/*! ./components/ColorSelector.vue */ 177));
return resolve(__webpack_require__(/*! ./components/ColorSelector.vue */ 178));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var SizeSelector = function SizeSelector() {
__webpack_require__.e(/*! require.ensure | pages/product-detail/components/SizeSelector */ "pages/product-detail/components/SizeSelector").then((function () {
return resolve(__webpack_require__(/*! ./components/SizeSelector.vue */ 184));
return resolve(__webpack_require__(/*! ./components/SizeSelector.vue */ 185));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var ParamsTable = function ParamsTable() {
__webpack_require__.e(/*! require.ensure | pages/product-detail/components/ParamsTable */ "pages/product-detail/components/ParamsTable").then((function () {
return resolve(__webpack_require__(/*! ./components/ParamsTable.vue */ 191));
return resolve(__webpack_require__(/*! ./components/ParamsTable.vue */ 192));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var SizeChart = function SizeChart() {
__webpack_require__.e(/*! require.ensure | pages/product-detail/components/SizeChart */ "pages/product-detail/components/SizeChart").then((function () {
return resolve(__webpack_require__(/*! ./components/SizeChart.vue */ 198));
return resolve(__webpack_require__(/*! ./components/SizeChart.vue */ 199));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var PackagingSpec = function PackagingSpec() {
__webpack_require__.e(/*! require.ensure | pages/product-detail/components/PackagingSpec */ "pages/product-detail/components/PackagingSpec").then((function () {
return resolve(__webpack_require__(/*! ./components/PackagingSpec.vue */ 205));
return resolve(__webpack_require__(/*! ./components/PackagingSpec.vue */ 206));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var _default = {
@@ -215,6 +215,7 @@ var _default = {
},
data: function data() {
return {
statusBarHeight: 20,
productId: null,
loading: false,
product: {
@@ -237,10 +238,20 @@ var _default = {
sizeChart: {},
// 变体列表(来自接口 variants),用于校验尺码+颜色组合、获取价格、包装规格
variants: [],
// 按颜色分组的图片映射:{ [colorId]: [url, ...] }(来自 detail.mediaByColor
mediaByColor: {},
// 默认轮播图(无颜色或 mediaByColor 缺失时使用,来自 detail.media.images
defaultImages: [],
packaging: null
};
},
onLoad: function onLoad(options) {
try {
var sysInfo = uni.getSystemInfoSync();
this.statusBarHeight = sysInfo.statusBarHeight || 20;
} catch (e) {
this.statusBarHeight = 20;
}
if (options && options.id) {
this.productId = options.id;
this.loadDetail(options.id);
@@ -312,22 +323,26 @@ var _default = {
}]
};
// 2. 图片画廊:按 sortOrder 升序,首图置顶
// 2. 图片画廊:
// - defaultImages:来自 detail.media.images(按 sortOrder 升序,首图置顶)
// - mediaByColor:来自 detail.mediaByColor,结构 [{ colorId, colorName, colorHex, images:[url,...] }]
// 顶部轮播优先显示选中颜色对应的图片;mediaByColor 缺失或当前颜色无图时回退到 defaultImages
var media = detail.media || {};
var images = (media.images || []).slice().sort(function (a, b) {
var defaultImages = (media.images || []).slice().sort(function (a, b) {
return (a.sortOrder || 0) - (b.sortOrder || 0);
}).map(function (img) {
return img.url;
}).filter(function (url) {
return url;
});
if (media.primaryImageUrl && images.indexOf(media.primaryImageUrl) === -1) {
images.unshift(media.primaryImageUrl);
if (media.primaryImageUrl && defaultImages.indexOf(media.primaryImageUrl) === -1) {
defaultImages.unshift(media.primaryImageUrl);
}
if (!images.length && detail.image) {
images.push(detail.image);
if (!defaultImages.length && detail.image) {
defaultImages.push(detail.image);
}
this.productImages = images;
this.defaultImages = defaultImages;
this.mediaByColor = this.buildMediaByColor(detail.mediaByColor);
// 3. 颜色:仅取启用项,按 sortOrder 升序
var colors = (detail.options && detail.options.colors || []).filter(function (c) {
@@ -369,6 +384,38 @@ var _default = {
// 9. 初始价格(按默认选中的 尺码+颜色 匹配变体价格)
this.syncPriceByVariant();
// 10. 初始轮播图(按默认选中颜色取 mediaByColor,无则回退 defaultImages
this.syncImagesByColor();
},
/**
* 将接口 mediaByColor 数组转为 colorId -> [url] 映射
* 入参:[{ colorId, colorName, colorHex, images:[url,...] }]
* 出参:{ '1126198': [url, ...], ... }
*/
buildMediaByColor: function buildMediaByColor(list) {
var map = {};
if (Array.isArray(list)) {
list.forEach(function (item) {
if (!item || item.colorId == null) return;
var imgs = Array.isArray(item.images) ? item.images.filter(function (u) {
return u;
}) : [];
if (imgs.length) map[String(item.colorId)] = imgs;
});
}
return map;
},
/**
* 按当前 selectedColorId 同步顶部轮播图:
* - 若 mediaByColor 命中且该颜色有图,则使用该颜色的图片数组
* - 否则回退到 defaultImages
*/
syncImagesByColor: function syncImagesByColor() {
var colorId = this.selectedColorId;
var byColor = this.mediaByColor || {};
var imgs = colorId && byColor[String(colorId)] ? byColor[String(colorId)] : this.defaultImages;
this.productImages = (imgs || []).slice();
},
/**
* 价格拆分:'35' → { symbol:'¥', integer:'35', decimal:'' }
@@ -535,6 +582,7 @@ var _default = {
*/
selectColor: function selectColor(id) {
this.selectedColorId = id;
this.syncImagesByColor();
this.syncPriceByVariant();
},
/**
@@ -590,10 +638,11 @@ var _default = {
}
};
exports.default = _default;
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"]))
/***/ }),
/***/ 77:
/***/ 78:
/*!**********************************************************************************************************************!*\
!*** C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/product-detail/product-detail.vue?vue&type=style&index=0&lang=css& ***!
\**********************************************************************************************************************/
@@ -602,14 +651,14 @@ exports.default = _default;
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--6-oneOf-1-3!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./product-detail.vue?vue&type=style&index=0&lang=css& */ 78);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--6-oneOf-1-3!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./product-detail.vue?vue&type=style&index=0&lang=css& */ 79);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_product_detail_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ 78:
/***/ 79:
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!./node_modules/postcss-loader/src??ref--6-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/product-detail/product-detail.vue?vue&type=style&index=0&lang=css& ***!
\**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -622,5 +671,5 @@ __webpack_require__.r(__webpack_exports__);
/***/ })
},[[71,"common/runtime","common/vendor"]]]);
},[[72,"common/runtime","common/vendor"]]]);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/product-detail/product-detail.js.map
@@ -1,5 +1,6 @@
{
"navigationBarTitleText": "产品详情",
"navigationStyle": "custom",
"usingComponents": {
"detail-swiper": "/pages/product-detail/components/DetailSwiper",
"product-info": "/pages/product-detail/components/ProductInfo",
@@ -1 +1 @@
<view class="detail-page"><detail-swiper vue-id="bbe3ce40-1" images="{{productImages}}" bind:__l="__l"></detail-swiper><product-info vue-id="bbe3ce40-2" info="{{product}}" bind:__l="__l"></product-info><block wx:if="{{$root.g0}}"><view class="section-divider"></view></block><block wx:if="{{$root.g1}}"><color-selector vue-id="bbe3ce40-3" list="{{colorListWithAvailability}}" selected-id="{{selectedColorId}}" data-event-opts="{{[['^select',[['selectColor']]]]}}" bind:select="__e" bind:__l="__l"></color-selector></block><block wx:if="{{$root.g2}}"><view class="section-divider"></view></block><block wx:if="{{$root.g3}}"><size-selector vue-id="bbe3ce40-4" list="{{sizeListWithAvailability}}" selected="{{selectedSize}}" data-event-opts="{{[['^select',[['selectSize']]]]}}" bind:select="__e" bind:__l="__l"></size-selector></block><block wx:if="{{$root.g4}}"><view class="section-divider"></view></block><block wx:if="{{$root.g5}}"><params-table vue-id="bbe3ce40-5" list="{{productParams}}" bind:__l="__l"></params-table></block><block wx:if="{{$root.g6}}"><view class="section-divider"></view></block><block wx:if="{{$root.g7}}"><size-chart vue-id="bbe3ce40-6" data="{{sizeChart}}" bind:__l="__l"></size-chart></block><block wx:if="{{packaging}}"><view class="section-divider"></view></block><block wx:if="{{packaging}}"><packaging-spec vue-id="bbe3ce40-7" data="{{packaging}}" bind:__l="__l"></packaging-spec></block></view>
<view class="detail-page" style="{{'padding-top:'+(statusBarHeight+'px')+';'}}"><detail-swiper vue-id="bbe3ce40-1" images="{{productImages}}" bind:__l="__l"></detail-swiper><product-info vue-id="bbe3ce40-2" info="{{product}}" bind:__l="__l"></product-info><block wx:if="{{$root.g0}}"><view class="section-divider"></view></block><block wx:if="{{$root.g1}}"><color-selector vue-id="bbe3ce40-3" list="{{colorListWithAvailability}}" selected-id="{{selectedColorId}}" data-event-opts="{{[['^select',[['selectColor']]]]}}" bind:select="__e" bind:__l="__l"></color-selector></block><block wx:if="{{$root.g2}}"><view class="section-divider"></view></block><block wx:if="{{$root.g3}}"><size-selector vue-id="bbe3ce40-4" list="{{sizeListWithAvailability}}" selected="{{selectedSize}}" data-event-opts="{{[['^select',[['selectSize']]]]}}" bind:select="__e" bind:__l="__l"></size-selector></block><block wx:if="{{$root.g4}}"><view class="section-divider"></view></block><block wx:if="{{$root.g5}}"><params-table vue-id="bbe3ce40-5" list="{{productParams}}" bind:__l="__l"></params-table></block><block wx:if="{{$root.g6}}"><view class="section-divider"></view></block><block wx:if="{{$root.g7}}"><size-chart vue-id="bbe3ce40-6" data="{{sizeChart}}" bind:__l="__l"></size-chart></block><block wx:if="{{packaging}}"><view class="section-divider"></view></block><block wx:if="{{packaging}}"><packaging-spec vue-id="bbe3ce40-7" data="{{packaging}}" bind:__l="__l"></packaging-spec></block></view>
+160 -95
View File
@@ -1,6 +1,6 @@
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["pages/products/products"],{
/***/ 63:
/***/ 64:
/*!********************************************************************************************!*\
!*** C:/gs/project/官网小程序demo/官网小程序demo_uni/main.js?{"page":"pages%2Fproducts%2Fproducts"} ***!
\********************************************************************************************/
@@ -13,7 +13,7 @@
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
__webpack_require__(/*! uni-pages */ 30);
var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 25));
var _products = _interopRequireDefault(__webpack_require__(/*! ./pages/products/products.vue */ 64));
var _products = _interopRequireDefault(__webpack_require__(/*! ./pages/products/products.vue */ 65));
// @ts-ignore
wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
createPage(_products.default);
@@ -21,7 +21,7 @@ createPage(_products.default);
/***/ }),
/***/ 64:
/***/ 65:
/*!*************************************************************************!*\
!*** C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/products/products.vue ***!
\*************************************************************************/
@@ -30,10 +30,10 @@ createPage(_products.default);
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _products_vue_vue_type_template_id_6b9ce706___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./products.vue?vue&type=template&id=6b9ce706& */ 65);
/* harmony import */ var _products_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./products.vue?vue&type=script&lang=js& */ 67);
/* harmony import */ var _products_vue_vue_type_template_id_6b9ce706___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./products.vue?vue&type=template&id=6b9ce706& */ 66);
/* harmony import */ var _products_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./products.vue?vue&type=script&lang=js& */ 68);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _products_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _products_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony import */ var _products_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./products.vue?vue&type=style&index=0&lang=css& */ 69);
/* harmony import */ var _products_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./products.vue?vue&type=style&index=0&lang=css& */ 70);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 36);
var renderjs
@@ -62,7 +62,7 @@ component.options.__file = "pages/products/products.vue"
/***/ }),
/***/ 65:
/***/ 66:
/*!********************************************************************************************************!*\
!*** C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/products/products.vue?vue&type=template&id=6b9ce706& ***!
\********************************************************************************************************/
@@ -71,7 +71,7 @@ component.options.__file = "pages/products/products.vue"
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_template_id_6b9ce706___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./products.vue?vue&type=template&id=6b9ce706& */ 66);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_template_id_6b9ce706___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./products.vue?vue&type=template&id=6b9ce706& */ 67);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_template_id_6b9ce706___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_template_id_6b9ce706___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -84,7 +84,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ 66:
/***/ 67:
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/products/products.vue?vue&type=template&id=6b9ce706& ***!
\********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -111,7 +111,7 @@ render._withStripped = true
/***/ }),
/***/ 67:
/***/ 68:
/*!**************************************************************************************************!*\
!*** C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/products/products.vue?vue&type=script&lang=js& ***!
\**************************************************************************************************/
@@ -120,14 +120,14 @@ render._withStripped = true
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./products.vue?vue&type=script&lang=js& */ 68);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./products.vue?vue&type=script&lang=js& */ 69);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ 68:
/***/ 69:
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/products/products.vue?vue&type=script&lang=js& ***!
\*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -148,34 +148,35 @@ var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runt
var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 57));
var _public = __webpack_require__(/*! @/api/public.js */ 58);
var _request = __webpack_require__(/*! @/api/request.js */ 59);
var _product = __webpack_require__(/*! @/utils/product.js */ 60);
var SearchBar = function SearchBar() {
__webpack_require__.e(/*! require.ensure | pages/products/components/SearchBar */ "pages/products/components/SearchBar").then((function () {
return resolve(__webpack_require__(/*! ./components/SearchBar.vue */ 121));
return resolve(__webpack_require__(/*! ./components/SearchBar.vue */ 122));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var CountryBar = function CountryBar() {
__webpack_require__.e(/*! require.ensure | pages/products/components/CountryBar */ "pages/products/components/CountryBar").then((function () {
return resolve(__webpack_require__(/*! ./components/CountryBar.vue */ 128));
return resolve(__webpack_require__(/*! ./components/CountryBar.vue */ 129));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var ActiveFilters = function ActiveFilters() {
__webpack_require__.e(/*! require.ensure | pages/products/components/ActiveFilters */ "pages/products/components/ActiveFilters").then((function () {
return resolve(__webpack_require__(/*! ./components/ActiveFilters.vue */ 135));
return resolve(__webpack_require__(/*! ./components/ActiveFilters.vue */ 136));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var CategorySidebar = function CategorySidebar() {
__webpack_require__.e(/*! require.ensure | pages/products/components/CategorySidebar */ "pages/products/components/CategorySidebar").then((function () {
return resolve(__webpack_require__(/*! ./components/CategorySidebar.vue */ 142));
return resolve(__webpack_require__(/*! ./components/CategorySidebar.vue */ 143));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var ProductGrid = function ProductGrid() {
__webpack_require__.e(/*! require.ensure | pages/products/components/ProductGrid */ "pages/products/components/ProductGrid").then((function () {
return resolve(__webpack_require__(/*! ./components/ProductGrid.vue */ 149));
return resolve(__webpack_require__(/*! ./components/ProductGrid.vue */ 150));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var FilterDrawer = function FilterDrawer() {
__webpack_require__.e(/*! require.ensure | pages/products/components/FilterDrawer */ "pages/products/components/FilterDrawer").then((function () {
return resolve(__webpack_require__(/*! ./components/FilterDrawer.vue */ 156));
return resolve(__webpack_require__(/*! ./components/FilterDrawer.vue */ 157));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};
var _default = {
@@ -203,32 +204,45 @@ var _default = {
showFilter: false,
filterGroups: [],
pagination: {
start: 1,
end: 10,
total: 0,
current: 1,
pageSize: 10,
totalPages: 0
pageSize: 10
},
pageNumbers: [],
hasMore: true,
loadingMore: false,
products: []
products: [],
windowHeight: 667,
scrollTopVal: 0,
productScrollHeight: 400 // 商品滚动区高度(px),动态计算
};
},
onLoad: function onLoad() {
var _this = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
var sysInfo;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
try {
sysInfo = uni.getSystemInfoSync(); // windowHeight 已自动扣除 uni-app 默认导航栏 & TabBar 高度
// 当前页是 navigationStyle:custom + TabBar 页,正好匹配可视区
_this.windowHeight = sysInfo.windowHeight || 667;
} catch (e) {
_this.windowHeight = 667;
}
_context.next = 3;
return _this.initData();
case 2:
case 3:
_this.loadSubCategories('all');
_context.next = 5;
_context.next = 6;
return _this.loadGoods(1);
case 5:
case 6:
// 首屏数据渲染完成后计算滚动区高度
_this.$nextTick(function () {
_this.calcScrollHeight();
});
case 7:
case "end":
return _context.stop();
}
@@ -365,7 +379,7 @@ var _default = {
loadGoods: function loadGoods(page) {
var _this4 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
var currentPage, pageSize, params, res, data, items, products, total, totalPages, pageNumbers, i;
var currentPage, pageSize, params, res, data, items, products, total;
return _regenerator.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
@@ -389,7 +403,7 @@ var _default = {
products = items.map(function (item) {
return {
id: item.goodId,
name: item.goodName,
name: (0, _product.truncateProductTitle)(item.goodName),
price: item.price,
image: item.image,
tags: (item.tags || []).map(function (t) {
@@ -402,37 +416,41 @@ var _default = {
};
});
total = data.total || 0;
totalPages = Math.ceil(total / pageSize) || 1;
pageNumbers = [];
for (i = Math.max(1, currentPage - 2); i <= Math.min(totalPages, currentPage + 2); i++) {
pageNumbers.push(i);
if (currentPage === 1) {
// 整表替换 = 筛选/分类/国家/搜索/初始化 等切换 → 滚动条回顶部
_this4.products = products;
_this4.resetScrollToTop();
} else {
// 分页追加(触底加载)→ 保持滚动位置,不回到顶部
_this4.products = _this4.products.concat(products);
}
_this4.products = products;
_this4.pagination = {
start: total === 0 ? 0 : (currentPage - 1) * pageSize + 1,
end: Math.min(currentPage * pageSize, total),
total: total,
current: currentPage,
pageSize: pageSize,
totalPages: totalPages
pageSize: pageSize
};
_this4.pageNumbers = pageNumbers;
_this4.hasMore = _this4.products.length < total;
_this4.loadingMore = false;
console.log('[loadGoods] total=' + total + ', page=' + currentPage + ', items=' + products.length);
_context4.next = 27;
// 数据变更后重算滚动区高度(筛选标签/子分类数量变化会影响上方占位高度)
_this4.$nextTick(function () {
_this4.calcScrollHeight();
});
console.log('[loadGoods] total=' + total + ', page=' + currentPage + ', items=' + products.length + ', loaded=' + _this4.products.length + ', hasMore=' + _this4.hasMore);
_context4.next = 25;
break;
case 22:
_context4.prev = 22;
case 20:
_context4.prev = 20;
_context4.t0 = _context4["catch"](0);
console.error('[loadGoods Error]', _context4.t0);
_this4.products = [];
_this4.loadingMore = false;
case 27:
case 25:
case "end":
return _context4.stop();
}
}
}, _callee4, null, [[0, 22]]);
}, _callee4, null, [[0, 20]]);
}))();
},
/**
@@ -506,35 +524,82 @@ var _default = {
onSearchBlur: function onSearchBlur() {
this.loadGoods(1);
},
selectCountry: function selectCountry(id) {
onScrollToLower: function onScrollToLower() {
if (this.loadingMore || !this.hasMore) return;
this.loadingMore = true;
this.loadGoods(this.pagination.current + 1);
},
/**
* 把商品列表滚动条回到顶部。
* uni-app scroll-view 的 :scroll-top 仅在值变化时触发滚动,
* 所以先写到一个大值(必定变化),再 nextTick 写 0,保证每次都能回到顶部。
*/
resetScrollToTop: function resetScrollToTop() {
var _this5 = this;
this.scrollTopVal = 99999;
this.$nextTick(function () {
_this5.scrollTopVal = 0;
});
},
/**
* 动态计算商品滚动区高度(px)。
* 用 createSelectorQuery 测量 SearchBar / CountryBar / ActiveFilters / subCategories 的实际高度,
* 用 windowHeight 依次减去,得到 scroll-view 可用的固定高度。
* —— 完全符合 uni-app / 微信小程序官方文档「scroll-y 需给固定 height」的要求。
*/
calcScrollHeight: function calcScrollHeight() {
var _this6 = this;
var query = uni.createSelectorQuery().in(this);
// 分别测量 4 个元素的 boundingClientRect
query.select('#searchBar').boundingClientRect();
query.select('#countryBar').boundingClientRect();
query.select('#activeFilters').boundingClientRect();
query.select('#subCategories').boundingClientRect();
query.exec(function (res) {
// res[0]=searchBar, res[1]=countryBar, res[2]=activeFilters, res[3]=subCategories
// 注意:v-if 为 false 时 res[i] 可能为 null
var searchBarH = res[0] ? res[0].height : 0;
var countryBarH = res[1] ? res[1].height : 0;
var activeFiltersH = res[2] ? res[2].height : 0;
var subCategoriesH = res[3] ? res[3].height : 0;
var totalUsed = searchBarH + countryBarH + activeFiltersH + subCategoriesH;
var h = _this6.windowHeight - totalUsed;
// 最小值保护:至少 200px,避免极端情况
if (h < 200) h = 200;
if (h > _this6.windowHeight) h = _this6.windowHeight;
_this6.productScrollHeight = Math.round(h);
console.log('[calcScrollHeight] windowHeight=' + _this6.windowHeight + ', searchBar=' + searchBarH + ', countryBar=' + countryBarH + ', activeFilters=' + activeFiltersH + ', subCategories=' + subCategoriesH + ' → scrollHeight=' + _this6.productScrollHeight);
});
},
selectCountry: function selectCountry(id) {
var _this7 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
var country, filters;
return _regenerator.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
if (!(_this5.selectedCountry === id)) {
if (!(_this7.selectedCountry === id)) {
_context5.next = 8;
break;
}
_this5.selectedCountry = '';
_this5.activeFilters = _this5.activeFilters.filter(function (f) {
_this7.selectedCountry = '';
_this7.activeFilters = _this7.activeFilters.filter(function (f) {
return f.key !== 'country';
});
_context5.next = 5;
return _this5.loadCategoryData('');
return _this7.loadCategoryData('');
case 5:
_context5.next = 7;
return _this5.loadGoods(1);
return _this7.loadGoods(1);
case 7:
return _context5.abrupt("return");
case 8:
// 选中新国家
country = _this5.countries.find(function (c) {
country = _this7.countries.find(function (c) {
return c.id === id;
});
filters = _this5.activeFilters.filter(function (f) {
filters = _this7.activeFilters.filter(function (f) {
return f.key !== 'country';
});
if (country) {
@@ -543,13 +608,13 @@ var _default = {
label: country.name
});
}
_this5.selectedCountry = id;
_this5.activeFilters = filters;
_this7.selectedCountry = id;
_this7.activeFilters = filters;
_context5.next = 15;
return _this5.loadCategoryData(id);
return _this7.loadCategoryData(id);
case 15:
_context5.next = 17;
return _this5.loadGoods(1);
return _this7.loadGoods(1);
case 17:
case "end":
return _context5.stop();
@@ -559,16 +624,16 @@ var _default = {
}))();
},
selectCategory: function selectCategory(id) {
var _this6 = this;
var _this8 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
return _regenerator.default.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
_this6.activeCategory = id;
_this6.loadSubCategories(id);
_this8.activeCategory = id;
_this8.loadSubCategories(id);
_context6.next = 4;
return _this6.loadGoods(1);
return _this8.loadGoods(1);
case 4:
case "end":
return _context6.stop();
@@ -578,15 +643,15 @@ var _default = {
}))();
},
selectSubCategory: function selectSubCategory(id) {
var _this7 = this;
var _this9 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
return _regenerator.default.wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
_this7.activeSubCategory = id;
_this9.activeSubCategory = id;
_context7.next = 3;
return _this7.loadGoods(1);
return _this9.loadGoods(1);
case 3:
case "end":
return _context7.stop();
@@ -618,27 +683,27 @@ var _default = {
this.filterGroups = groups;
},
removeFilter: function removeFilter(key) {
var _this8 = this;
var _this10 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {
var filters, groupId, groups;
return _regenerator.default.wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
case 0:
filters = _this8.activeFilters.filter(function (f) {
filters = _this10.activeFilters.filter(function (f) {
return f.key !== key;
});
if (!(key === 'country')) {
_context8.next = 9;
break;
}
_this8.selectedCountry = '';
_this8.activeFilters = filters;
_this10.selectedCountry = '';
_this10.activeFilters = filters;
_context8.next = 6;
return _this8.loadCategoryData('');
return _this10.loadCategoryData('');
case 6:
_context8.next = 8;
return _this8.loadGoods(1);
return _this10.loadGoods(1);
case 8:
return _context8.abrupt("return");
case 9:
@@ -647,7 +712,7 @@ var _default = {
break;
}
groupId = key.replace('tag_', '');
groups = _this8.filterGroups.map(function (g) {
groups = _this10.filterGroups.map(function (g) {
if (String(g.id) === String(groupId)) {
return Object.assign({}, g, {
selected: []
@@ -655,14 +720,14 @@ var _default = {
}
return g;
});
_this8.activeFilters = filters;
_this8.filterGroups = groups;
_this10.activeFilters = filters;
_this10.filterGroups = groups;
_context8.next = 16;
return _this8.loadGoods(1);
return _this10.loadGoods(1);
case 16:
return _context8.abrupt("return");
case 17:
_this8.activeFilters = filters;
_this10.activeFilters = filters;
case 18:
case "end":
return _context8.stop();
@@ -672,33 +737,33 @@ var _default = {
}))();
},
clearAllFilters: function clearAllFilters() {
var _this9 = this;
var _this11 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {
var hasCountry, groups;
return _regenerator.default.wrap(function _callee9$(_context9) {
while (1) {
switch (_context9.prev = _context9.next) {
case 0:
hasCountry = _this9.activeFilters.some(function (f) {
hasCountry = _this11.activeFilters.some(function (f) {
return f.key === 'country';
});
_this9.activeFilters = [];
if (!(hasCountry || _this9.selectedCountry)) {
_this11.activeFilters = [];
if (!(hasCountry || _this11.selectedCountry)) {
_context9.next = 6;
break;
}
_this9.selectedCountry = '';
_this11.selectedCountry = '';
_context9.next = 6;
return _this9.loadCategoryData('');
return _this11.loadCategoryData('');
case 6:
groups = _this9.filterGroups.map(function (g) {
groups = _this11.filterGroups.map(function (g) {
return Object.assign({}, g, {
selected: []
});
});
_this9.filterGroups = groups;
_this11.filterGroups = groups;
_context9.next = 10;
return _this9.loadGoods(1);
return _this11.loadGoods(1);
case 10:
case "end":
return _context9.stop();
@@ -716,7 +781,7 @@ var _default = {
this.filterGroups = groups;
},
confirmFilters: function confirmFilters() {
var _this10 = this;
var _this12 = this;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {
var filters, countryFilter;
return _regenerator.default.wrap(function _callee10$(_context10) {
@@ -724,11 +789,11 @@ var _default = {
switch (_context10.prev = _context10.next) {
case 0:
filters = [];
countryFilter = _this10.activeFilters.find(function (f) {
countryFilter = _this12.activeFilters.find(function (f) {
return f.key === 'country';
});
if (countryFilter) filters.push(countryFilter);
_this10.filterGroups.forEach(function (group) {
_this12.filterGroups.forEach(function (group) {
if (group.selected.length > 0) {
var labels = group.tags.filter(function (t) {
return group.selected.indexOf(t.id) > -1;
@@ -743,10 +808,10 @@ var _default = {
}
}
});
_this10.activeFilters = filters;
_this10.showFilter = false;
_this12.activeFilters = filters;
_this12.showFilter = false;
_context10.next = 8;
return _this10.loadGoods(1);
return _this12.loadGoods(1);
case 8:
case "end":
return _context10.stop();
@@ -767,7 +832,7 @@ exports.default = _default;
/***/ }),
/***/ 69:
/***/ 70:
/*!**********************************************************************************************************!*\
!*** C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/products/products.vue?vue&type=style&index=0&lang=css& ***!
\**********************************************************************************************************/
@@ -776,14 +841,14 @@ exports.default = _default;
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--6-oneOf-1-3!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./products.vue?vue&type=style&index=0&lang=css& */ 70);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--6-oneOf-1-3!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../app/HB/HBuilderX.5.24.2026081301/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./products.vue?vue&type=style&index=0&lang=css& */ 71);
/* harmony import */ var _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_app_HB_HBuilderX_5_24_2026081301_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_products_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ 70:
/***/ 71:
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!./node_modules/postcss-loader/src??ref--6-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!C:/gs/project/官网小程序demo/官网小程序demo_uni/pages/products/products.vue?vue&type=style&index=0&lang=css& ***!
\**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -796,5 +861,5 @@ __webpack_require__.r(__webpack_exports__);
/***/ })
},[[63,"common/runtime","common/vendor"]]]);
},[[64,"common/runtime","common/vendor"]]]);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/products/products.js.map
@@ -1,5 +1,6 @@
{
"navigationBarTitleText": "产品中心",
"navigationStyle": "custom",
"usingComponents": {
"search-bar": "/pages/products/components/SearchBar",
"country-bar": "/pages/products/components/CountryBar",
+1 -1
View File
@@ -1 +1 @@
<view class="products-page"><search-bar vue-id="08007ac0-1" keyword="{{searchKeyword}}" data-event-opts="{{[['^input',[['onSearchInput']]],['^blur',[['onSearchBlur']]],['^filter',[['toggleFilter']]]]}}" bind:input="__e" bind:blur="__e" bind:filter="__e" bind:__l="__l"></search-bar><country-bar vue-id="08007ac0-2" list="{{countries}}" selected-id="{{selectedCountry}}" data-event-opts="{{[['^select',[['selectCountry']]]]}}" bind:select="__e" bind:__l="__l"></country-bar><view class="content-body"><category-sidebar vue-id="08007ac0-3" list="{{categories}}" active-id="{{activeCategory}}" data-event-opts="{{[['^select',[['selectCategory']]]]}}" bind:select="__e" bind:__l="__l"></category-sidebar><view class="right-wrap"><active-filters vue-id="08007ac0-4" list="{{activeFilters}}" data-event-opts="{{[['^remove',[['removeFilter']]],['^clearAll',[['clearAllFilters']]]]}}" bind:remove="__e" bind:clearAll="__e" bind:__l="__l"></active-filters><product-grid vue-id="08007ac0-5" list="{{products}}" sub-categories="{{subCategories}}" active-sub-id="{{activeSubCategory}}" total="{{pagination.total}}" current="{{pagination.current}}" page-size="{{pagination.pageSize}}" total-pages="{{pagination.totalPages}}" page-numbers="{{pageNumbers}}" start="{{pagination.start}}" end="{{pagination.end}}" loading="{{loadingMore}}" data-event-opts="{{[['^subSelect',[['selectSubCategory']]],['^productClick',[['goDetail']]],['^pageChange',[['loadGoods']]]]}}" bind:subSelect="__e" bind:productClick="__e" bind:pageChange="__e" bind:__l="__l"></product-grid></view></view><filter-drawer vue-id="08007ac0-6" visible="{{showFilter}}" groups="{{filterGroups}}" data-event-opts="{{[['^close',[['closeFilter']]],['^toggleTag',[['toggleFilterTag']]],['^reset',[['resetFilters']]],['^confirm',[['confirmFilters']]]]}}" bind:close="__e" bind:toggleTag="__e" bind:reset="__e" bind:confirm="__e" bind:__l="__l"></filter-drawer></view>
<view class="products-page" style="{{'height:'+(windowHeight+'px')+';'}}"><search-bar vue-id="08007ac0-1" keyword="{{searchKeyword}}" data-event-opts="{{[['^input',[['onSearchInput']]],['^blur',[['onSearchBlur']]],['^filter',[['toggleFilter']]]]}}" bind:input="__e" bind:blur="__e" bind:filter="__e" bind:__l="__l"></search-bar><country-bar vue-id="08007ac0-2" list="{{countries}}" selected-id="{{selectedCountry}}" data-event-opts="{{[['^select',[['selectCountry']]]]}}" bind:select="__e" bind:__l="__l"></country-bar><view class="content-body"><category-sidebar vue-id="08007ac0-3" list="{{categories}}" active-id="{{activeCategory}}" data-event-opts="{{[['^select',[['selectCategory']]]]}}" bind:select="__e" bind:__l="__l"></category-sidebar><view class="right-wrap"><active-filters vue-id="08007ac0-4" list="{{activeFilters}}" data-event-opts="{{[['^remove',[['removeFilter']]],['^clearAll',[['clearAllFilters']]]]}}" bind:remove="__e" bind:clearAll="__e" bind:__l="__l"></active-filters><product-grid vue-id="08007ac0-5" list="{{products}}" sub-categories="{{subCategories}}" active-sub-id="{{activeSubCategory}}" has-more="{{hasMore}}" loading="{{loadingMore}}" scroll-top-val="{{scrollTopVal}}" scroll-height="{{productScrollHeight}}" data-event-opts="{{[['^subSelect',[['selectSubCategory']]],['^productClick',[['goDetail']]],['^scrollToLower',[['onScrollToLower']]]]}}" bind:subSelect="__e" bind:productClick="__e" bind:scrollToLower="__e" bind:__l="__l"></product-grid></view></view><filter-drawer vue-id="08007ac0-6" visible="{{showFilter}}" groups="{{filterGroups}}" data-event-opts="{{[['^close',[['closeFilter']]],['^toggleTag',[['toggleFilterTag']]],['^reset',[['resetFilters']]],['^confirm',[['confirmFilters']]]]}}" bind:close="__e" bind:toggleTag="__e" bind:reset="__e" bind:confirm="__e" bind:__l="__l"></filter-drawer></view>
+4 -3
View File
@@ -3,7 +3,7 @@
.products-page {
display: flex;
flex-direction: column;
height: 100vh;
overflow: hidden; /* 唯一滚动源 = scroll-view,整页绝不兜底滚动 */
background: #f2f2f2;
}
/* 主体内容 - 左右分栏 */
@@ -13,13 +13,14 @@
overflow: hidden;
min-height: 0;
}
/* 右侧容器 - 自动占满剩余宽度(高度自动撑开,内部由 ProductGrid 自己滚动) */
/* 右侧容器 - 自动占满剩余宽度(高度自动撑开,内部由 ProductGrid 自己滚动)
flex:1 与 height:100% 冲突,必须二选一,否则 flex 链路断裂 */
.right-wrap {
flex: 1;
min-width: 0;
min-height: 0;
display: flex;
flex-direction: column;
height: 100%;
overflow: hidden;
}
+1 -1
View File
@@ -13,7 +13,7 @@
},
"compileType": "miniprogram",
"libVersion": "",
"appid": "wxd0e6eff3c220337b",
"appid": "wx962684512df4e5fd",
"projectname": "inkreach-miniprogram",
"condition": {
"search": {