## Sku 商品购买组件 ### 使用指南 ```javascript import { Sku } from 'vant'; Vue.use(Sku); ``` ### 代码演示 #### 基础用法 ```html ``` #### 高级用法 ```html ``` ### API | 参数 | 说明 | 类型 | 默认值 | 可选值 | |-----------|-----------|-----------|-------------|-------------| | v-model | 是否显示sku | `Boolean` | `false` | - | | sku | 商品sku数据 | `Object` | - | - | | goods | 商品信息 | `Object` | - | - | | goodsId | 商品id | `String | Number` | - | - | | hideStock | 是否显示商品剩余库存 | `Boolean` | `false` | - | | showAddCartBtn | 是否显示加入购物车按钮 | `Boolean` | `true` | - | | quota | 限购数(0表示不限购) | `Number` | `0` | - | | quotaUsed | 已经购买过的数量 | `Number` | `0` | - | | resetStepperOnHide | 窗口隐藏时重置选择的商品数量 | `Boolean` | `false` | - | | disableStepperInput | 是否禁用sku中stepper的input框 | `Boolean` | `false` | - | | stepperTitle | 数量选择组件左侧文案 | `String` | `购买数量` | - | ### Event | 事件名 | 说明 | 参数 | |-----------|-----------|-----------| | add-cart | 点击添加购物车回调 | skuData: Object | | buy-clicked | 点击购买回调 | skuData: Object | ### Slot Sku 组件默认划分好了若干区块,这些区块都定义成了 slot,可以按需进行替换。区块顺序见下表: | 名称 | 说明 | |-----------|-----------| | sku-header | 商品信息展示区,包含商品图片、名称、价格等信息 | | sku-group | 商品sku展示区 | | extra-sku-group | 额外商品sku展示区,一般用不到 | | sku-stepper | 商品数量选择区 | | sku-messages | 商品留言区 | | sku-actions | 操作按钮区 | ### 数据结构 #### sku对象结构 ```javascript sku: { // 所有sku规格类目与其值的从属关系,比如商品有颜色和尺码两大类规格,颜色下面又有红色和蓝色两个规格值。 // 可以理解为一个商品可以有多个规格类目,一个规格类目下可以有多个规格值。 tree: [ { k: '颜色', // skuKeyName:规格类目名称 v: [ { id: '30349', // skuValueId:规格值 id name: '红色', // skuValueName:规格值名称 imgUrl: 'https://img.yzcdn.cn/1.jpg' // 规格类目图片,只有第一个规格类目可以定义图片 }, { id: '1215', name: '蓝色', imgUrl: 'https://img.yzcdn.cn/2.jpg' } ], k_s: 's1' // skuKeyStr:sku 组合列表(下方 list)中当前类目对应的 key 值,value 值会是从属于当前类目的一个规格值 id } ], // 所有 sku 的组合列表,比如红色、M 码为一个 sku 组合,红色、S 码为另一个组合 list: [ { id: 2259, // skuId,下单时后端需要 price: 100, // 价格(单位分) s1: '1215', // 规格类目 k_s 为 s1 的对应规格值 id s2: '1193', // 规格类目 k_s 为 s2 的对应规格值 id s3: '0', // 最多包含3个规格值,为0表示不存在该规格 stock_num: 110 // 当前 sku 组合对应的库存 } ], price: '1.00', // 默认价格(单位元) stock_num: 227, // 商品总库存 collection_id: 2261, // 无规格商品 skuId 取 collection_id,否则取所选 sku 组合对应的 id none_sku: false, // 是否无规格商品 messages: [ { // 商品留言 datetime: '0', // 留言类型为 time 时,是否含日期。'1' 表示包含 multiple: '0', // 留言类型为 text 时,是否多行文本。'1' 表示多行 name: '留言', // 留言名称 type: 'text', // 留言类型,可选: id_no(身份证), text, tel, date, time, email required: '1' // 是否必填 '1' 表示必填 } ], hide_stock: false // 是否隐藏剩余库存 } ``` #### goods 对象结构 ```javascript goods: { // 商品标题 title: '测试商品', // 默认商品 sku 缩略图 picture: 'https://img.yzcdn.cn/1.jpg' } ``` #### 添加购物车和点击购买回调函数接收的 skuData 对象结构 ```javascript skuData: { // 商品 id goodsId: '946755', // 留言信息 messages: { message_0: '12', message_1: '' }, // 另一种格式的留言,key 不同 cartMessages: { '留言1': 'xxxx' }, // 选择的商品数量 selectedNum: 1, // 选择的 sku 组合 selectedSkuComb: { id: 2257, price: 100, s1: '30349', s2: '1193', s3: '0', stock_num: 111 } } ```