更新记录

0.1.0(2026-03-12)

  • 首次发布:底部弹出的「规格弹窗选择器」
  • 支持多规格选择、数量加减、库存/限购校验
  • 文档补充:组件所需数据结构与返回事件说明(更适合组件市场直接接入)

平台兼容性

uni-app(4.86)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - -

其他

多语言 暗黑模式 宽屏模式
× ×

sku/规格弹窗选择器

  • 注意 注意 注意 必须要导入官方的uni-popup、uni-scss和uni-transition组件才可以使用

一个“看起来像电商、用起来不费劲”的 SKU 规格选择弹窗:从底部弹出,选规格、选数量、看库存/限购,点一下就把结果回传给页面。

它不会内置你项目的接口请求(这样才适合上架组件市场)。你可以用它的 skuInfoMap 做本地映射,也可以监听 change 事件自己去请求后端,再把结果回灌给组件。

你会用到的能力

  • 多规格:颜色/尺码/版本…多少组都行
  • 数量选择:加减/输入都支持,并自动做上限约束
  • 校验:未选全规格不允许确认;库存不足/超出限购会给出 toast
  • 展示:主价 + 划线原价(如 ¥6.99 / ¥59.99

安装方式

在插件市场找到本插件,点击“使用 HBuilderX 导入插件”即可。

使用方式(只告诉你需要什么数据)

这个组件只做两件事:让用户选择规格 + 选择数量,然后把结果通过事件抛给你。

  • 你给它:skuListproductInfo(可选)以及你希望展示的 skuInfo / skuInfoMap
  • 它还给你:用户选了什么(selectedSku / selectedText)、选了几件(quantity)、以及你回灌的 skuInfo

API

Props

属性名 类型 默认值 说明
show Boolean false 是否显示弹窗(支持 :show.sync / v-model:show
skuList Array [] 规格列表(见下方数据结构)
productInfo Object - 商品信息(必须包含 name,建议包含 image/price/originalPrice
skuInfo Object {} 当前已选规格对应的 SKU 信息(外部回灌用,优先级最高)
skuInfoMap Object {} 通过 “已选文本” 映射到 SKU 信息(适合 mock/本地映射)
actionType String 'cart' cart:加入购物车;buy:立即购买
isPointsProduct Boolean false 是否积分商品(按钮文案会变成“立即兑换”)
maxQuantity Number 999 最大购买数量(会与库存/限购取最小值)
themeColor String '#111' 底部确认按钮主题色(只影响按钮背景色)

Events

事件名 说明 回调参数
change 选择规格发生变化时触发 { selectedSku, selectedText }
confirm 点击确认按钮且校验通过 { selectedSku, quantity, skuInfo, selectedText }
closed 弹窗关闭时触发 -

交互说明

  • 商品图支持点击预览:点击左上角商品图会调用 uni.previewImage 全屏预览当前图片(优先预览 SKU 图 picsrc,没有则用 productInfo.image)。

skuList 数据结构

[
  {
    skuTypeTitle: '颜色',
    skuValueTitleList: ['黑色', '白色', '红色']
  },
  {
    skuTypeTitle: '尺码',
    skuValueTitleList: ['S', 'M', 'L']
  }
]

skuInfo / skuInfoMap 值结构(建议字段)

{
  price: '¥6.99',
  originalPrice: '¥59.99',
  stock: 20,      // 库存
  sy: 3,          // 限购(可选)
  id: 123,        // sku id(可选)
  picsrc: '...'   // sku 图(可选)
}

最推荐的接入思路(两种)

方案 A:你有后端接口(更常见)

  • 用户每点一次规格,组件会触发 change({ selectedSku, selectedText })
  • 你在 change 里拿到 selectedText(例如 "黑色;S"),去请求后端拿到对应的价格/库存/限购/图片
  • 再把结果通过 skuInfo 回传给组件(或存进 skuInfoMap[selectedText]

方案 B:你只有本地映射(例如活动页 / 静态商品)

  • 你提前准备一个 skuInfoMap(key 为 selectedText
  • 组件会自动从 skuInfoMap[selectedText] 取出并展示价格/库存等信息

更新日志

changelog.md

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。