当前位置:首页 > VUE

vue element 实现商品sku

2026-01-20 15:42:15VUE

商品SKU实现方法

在Vue和Element UI中实现商品SKU功能,可以通过以下步骤完成:

数据结构设计

商品SKU通常需要处理多个属性组合,每个属性有不同的选项。数据结构可以设计为:

data() {
  return {
    skuData: {
      attributes: [
        { name: '颜色', items: ['红色', '蓝色', '绿色'] },
        { name: '尺寸', items: ['S', 'M', 'L'] }
      ],
      skus: []
    }
  }
}

属性选择组件

使用Element UI的Checkbox或Radio组件实现属性选择:

<el-form-item v-for="attr in skuData.attributes" :key="attr.name" :label="attr.name">
  <el-checkbox-group v-model="selectedAttrs[attr.name]">
    <el-checkbox v-for="item in attr.items" :key="item" :label="item"></el-checkbox>
  </el-checkbox-group>
</el-form-item>

SKU表格生成

根据选择的属性组合生成SKU表格:

generateSkus() {
  const selected = Object.values(this.selectedAttrs).filter(arr => arr.length > 0)
  if (selected.length === 0) return

  const combinations = this.cartesianProduct(...selected)
  this.skuData.skus = combinations.map(comb => ({
    combination: comb.join(','),
    price: 0,
    stock: 0
  }))
}

cartesianProduct(...arrays) {
  return arrays.reduce((a, b) => 
    a.flatMap(d => b.map(e => [...d, e])), [[]])
}

SKU表格渲染

使用Element UI的Table组件展示SKU组合:

vue element 实现商品sku

<el-table :data="skuData.skus">
  <el-table-column prop="combination" label="规格组合"></el-table-column>
  <el-table-column label="价格">
    <template #default="{row}">
      <el-input-number v-model="row.price" :min="0"></el-input-number>
    </template>
  </el-table-column>
  <el-table-column label="库存">
    <template #default="{row}">
      <el-input-number v-model="row.stock" :min="0"></el-input-number>
    </template>
  </el-table-column>
</el-table>

完整示例代码

<template>
  <div>
    <el-form>
      <el-form-item v-for="attr in skuData.attributes" :key="attr.name" :label="attr.name">
        <el-checkbox-group v-model="selectedAttrs[attr.name]">
          <el-checkbox v-for="item in attr.items" :key="item" :label="item"></el-checkbox>
        </el-checkbox-group>
      </el-form-item>

      <el-button @click="generateSkus">生成SKU</el-button>
    </el-form>

    <el-table :data="skuData.skus" v-if="skuData.skus.length > 0">
      <el-table-column prop="combination" label="规格组合"></el-table-column>
      <el-table-column label="价格">
        <template #default="{row}">
          <el-input-number v-model="row.price" :min="0"></el-input-number>
        </template>
      </el-table-column>
      <el-table-column label="库存">
        <template #default="{row}">
          <el-input-number v-model="row.stock" :min="0"></el-input-number>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      skuData: {
        attributes: [
          { name: '颜色', items: ['红色', '蓝色', '绿色'] },
          { name: '尺寸', items: ['S', 'M', 'L'] }
        ],
        skus: []
      },
      selectedAttrs: {}
    }
  },
  methods: {
    generateSkus() {
      const selected = Object.values(this.selectedAttrs).filter(arr => arr.length > 0)
      if (selected.length === 0) return

      const combinations = this.cartesianProduct(...selected)
      this.skuData.skus = combinations.map(comb => ({
        combination: comb.join(','),
        price: 0,
        stock: 0
      }))
    },
    cartesianProduct(...arrays) {
      return arrays.reduce((a, b) => 
        a.flatMap(d => b.map(e => [...d, e])), [[]])
    }
  }
}
</script>

注意事项

  1. 确保在生成SKU前至少选择一个属性值
  2. 属性组合较多时,考虑性能优化
  3. 可以添加SKU图片上传功能,为每个组合设置不同图片
  4. 后端接口需要支持批量保存SKU数据

标签: 商品vue
分享给朋友:

相关文章

vue使用vr实现标注

vue使用vr实现标注

Vue 中使用 VR 实现标注的方法 在 Vue 项目中结合 VR 技术实现标注功能,可以通过 WebXR 和 Three.js 等库实现。以下为具体实现方法: 安装依赖 确保项目中已安装 Thre…

vue手写签名如何实现

vue手写签名如何实现

实现手写签名的基本思路 在Vue中实现手写签名功能,通常需要借助HTML5的Canvas API来捕获用户的绘制操作。核心流程包括初始化画布、监听触摸/鼠标事件、记录轨迹以及生成签名图片。 安装依赖…

vue交互实现

vue交互实现

Vue 交互实现方法 Vue.js 提供了多种方式实现用户交互,包括事件处理、表单绑定、动态渲染等。以下是常见的交互实现方法: 事件处理 通过 v-on 或 @ 指令绑定事件,触发方法或直接执行表达…

vue实现异步

vue实现异步

Vue 实现异步操作的常见方法 Vue 提供了多种方式来处理异步操作,包括数据获取、事件处理等场景。 使用 async/await 在 Vue 方法中可以直接使用 async/await 语法处理异…

vue实现route

vue实现route

Vue 路由实现方法 Vue 中实现路由通常使用 vue-router 库,这是 Vue 官方推荐的路由管理器。以下是具体实现步骤: 安装 vue-router 通过 npm 或 yarn 安装…

vue实现单据

vue实现单据

Vue 实现单据功能的方法 使用 Vue 实现单据功能通常涉及表单设计、数据绑定、验证和提交等环节。以下是具体实现方案: 表单设计与数据绑定 使用 Vue 的 v-model 指令实现表单数据的双向…