Vue2商品规格选择

Vue2+Element-ui

Vu2仿写拼多多商家后台规则选择,为什么用Vue2呢,因为公司用的Vue2...
样式不是很好看,自己调一下就行。
 

 

<template><div ref="inputContainer"><div>{{ combinationsResult }}</div><el-row><el-col :span="10"><div class="input-group"><label for="columnOneName" style="width: 150px;">商品规格-1:</label><el-input v-model="columnNoeName" id="columnOneName"></el-input></div></el-col></el-row><el-row><el-col :span="10"><div class="input-group"><label for="columnTwoName" style="width: 150px;">商品规格-2:</label><el-input v-model="columnTwoName" id="columnTwoName"></el-input></div></el-col></el-row><div v-show="columnNoeName!==''" v-for="(item, index) in classifyOne" :key="`one-${index}`"style="display: inline-block; width: 300px;"><el-inputv-model="item.value"placeholder="请输入内容"@blur="() => handleBlur('classifyOne', index)"style="display: inline-block; width: 200px;"></el-input><el-button style="display: inline-block" v-if="item.value" @click="() => removeInput('classifyOne', index)"class="right-space">删除</el-button></div><div></div><div v-show="columnTwoName!==''" v-for="(item, index) in classifyTwo" :key="`two-${index}`"style="display: inline-block; width: 300px;  margin-top: 20px;"><el-inputv-model="item.value"placeholder="请输入内容"@blur="() => handleBlur('classifyTwo', index)"style="display: inline-block; width: 200px;"></el-input><el-button style="display: inline-block" v-if="item.value" @click="() => removeInput('classifyTwo', index)"class="right-space">删除</el-button></div><el-table :data="combinationsResult"style="width: 80%; margin: 0 auto; margin-bottom: 100px; margin-top: 50px;"><el-table-column v-if="showStyleColumn" prop="style" :label="columnTwoName"></el-table-column><el-table-column v-if="showColorColumn" prop="color" :label="columnNoeName"></el-table-column><el-table-column label="库存"><template slot-scope="scope"><el-input v-model="scope.row.stock" placeholder="请输入库存"></el-input></template></el-table-column><el-table-column label="拼单价(元)"><template slot-scope="scope"><el-input v-model="scope.row.groupPrice" placeholder="请输入拼单价"></el-input></template></el-table-column><el-table-column label="单买价(元)"><template slot-scope="scope"><el-input v-model="scope.row.singlePrice" placeholder="请输入单买价"></el-input></template></el-table-column><el-table-column label="预览图"><template slot-scope="scope"><el-input v-model="scope.row.preview" placeholder="请输入预览图 URL"></el-input></template></el-table-column><el-table-column label="规格编码"><template slot-scope="scope"><el-input v-model="scope.row.code" placeholder="请输入规格编码"></el-input></template></el-table-column></el-table></div>
</template><script>
export default {data() {return {classifyOne: [{value: ''}],classifyTwo: [{value: ''}],columnNoeName: "",columnTwoName: "",combinationsResult: [{stock: '',groupPrice: '',singlePrice: '',preview: '',code: ''}],  // 用于存储表格中的数据};},computed: {showColorColumn() {return this.classifyOne.some(one => one.value);},showStyleColumn() {return this.classifyTwo.some(two => two.value);}},methods: {createRow(color, style) {return {color,style,stock: '',groupPrice: '',singlePrice: '',preview: '',code: ''};},generateCombinations() {let result = [];let sourceResult = this.combinationsResult; // 用于存储组合结果const hasColorValues = this.classifyOne.some(one => one.value);const hasStyleValues = this.classifyTwo.some(two => two.value);if (!hasColorValues && !hasStyleValues) {result = [this.createRow('', '')];} else if (hasColorValues && hasStyleValues) {this.classifyOne.forEach(one => {this.classifyTwo.forEach(two => {if (one.value && two.value) {result.push(this.createRow(one.value, two.value));}});});} else {this.classifyOne.forEach(one => {if (one.value) {result.push(this.createRow(one.value, ''));}});this.classifyTwo.forEach(two => {if (two.value) {result.push(this.createRow('', two.value));}});}for (let i = 0; i < result.length; i++) {for (let j = 0; j < sourceResult.length; j++) {if (sourceResult === []) {break;}if (result[i].color === sourceResult[j].color &&result[i].style === sourceResult[j].style) {result[i] = sourceResult[j];}}this.combinationsResult = result;}},handleBlur(arrayName, index) {this.ensureEmptyInputAtEnd(arrayName);},removeInput(arrayName, index) {this[arrayName].splice(index, 1);this.ensureEmptyInputAtEnd(arrayName);},ensureEmptyInputAtEnd(arrayName) {const array = this[arrayName];if (array && array[array.length - 1].value) {array.push({value: ''});}this[arrayName] = array && array.filter((item, idx) =>item.value || idx === array.length - 1);},handleClickOutside(e) {if (!this.$refs.inputContainer.contains(e.target)) {this.ensureEmptyInputAtEnd('classifyOne');this.ensureEmptyInputAtEnd('classifyTwo');}}},mounted() {document.addEventListener('click', this.handleClickOutside);},beforeDestroy() {document.removeEventListener('click', this.handleClickOutside);},watch: {classifyOne: {handler: 'generateCombinations',deep: true},classifyTwo: {handler: 'generateCombinations',deep: true}}
};
</script><style scoped>
.right-space {margin-right: 10px;
}.input-group {display: flex;align-items: center;
}.input-group label {margin-right: 10px;
}</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/327543.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开源】基于JAVA语言的智能教学资源库系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 课程档案表3.2.2 课程资源表3.2.3 课程作业表3.2.4 课程评价表 四、系统展示五、核心代…

【响应式编程-05】Lambda方法引用

一、简要描述 Lambda的方法引用也叫引用方法 方法引用初体验方法引用的底层实现方法引用的语法格式方法引用举例 静态方法引用构造方法引用普通方法引用super和this方法引用数组的方法引用 二、方法引用初体验 为什么出现方法引用&#xff1f; 引用已存在方法&#xff0c;避免重…

DBeaver配置类Navicat显示字段是否非空

在Navicat中设计表时可以很方便的看到字段是否【非空】&#xff0c;而在DBeaver中确实这样显示的,必须双击字段才能看到是否【非空】 解决方案 点击此处齿轮按钮,将【非空】以及其他需要的显示字段都勾上,重新打开即可

Python中的有序字典是什么

有序字典 一、简介 Python中的字典的特性&#xff1a;无序性。 有序字典和通常字典类似&#xff0c;只是它可以记录元素插入其中的顺序&#xff0c;而一般字典是会以任意的顺序迭代的。 二、普通字典 #! /usr/bin/env python3 # -*- coding:utf-8 -*- d1 {} d1[a] A d1[b…

【Java EE初阶七】多线程案例(生产者消费者模型)

1. 阻塞队列 队列是先进先出的一种数据结构&#xff1b; 阻塞队列&#xff0c;是基于队列&#xff0c;做了一些扩展&#xff0c;适用于多线程编程中&#xff1b; 阻塞队列特点如下&#xff1a; 1、是线程安全的 2、具有阻塞的特性 2.1、当队列满了时&#xff0c;就不能往队列里…

druid Communications link failure报错处理

现象 日志报错&#xff1a;com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 原因 从数据库连接池拿到了已经关闭的连接&#xff0c;导致报错。druid有定时任务进行空闲连接的检测和回收&#xff0c;当连接时长超过mysql的连接超时时间…

YOLOv8改进 | 2023主干篇 | FasterNeT跑起来的主干网络( 提高FPS和检测效率)

一、本文介绍 本文给大家带来的改进机制是FasterNet网络,将其用来替换我们的特征提取网络,其旨在提高计算速度而不牺牲准确性,特别是在视觉任务中。它通过一种称为部分卷积(PConv)的新技术来减少冗余计算和内存访问。这种方法使得FasterNet在多种设备上运行速度比其他网络…

【Flink精讲】Flink数据延迟处理

面试题&#xff1a;Flink数据延迟怎么处理&#xff1f; 将迟到数据直接丢弃【默认方案】将迟到数据收集起来另外处理&#xff08;旁路输出&#xff09;重新激活已经关闭的窗口并重新计算以修正结果&#xff08;Lateness&#xff09; Flink数据延迟处理方案 用一个案例说明三…

C# Attribute特性实战(1):Swtich判断优化

文章目录 前言简单Switch问题无参Swtich方法声明Swtich Attribute声明带有Swtich特性方法主方法结果 有参Switch修改代码修改运行过程运行结果 总结 前言 在经过前面两章内容的讲解&#xff0c;我们已经简单了解了如何使用特性和反射。我们这里解决一个简单的案例 C#高级语法 …

摄像头视频录制程序使用教程(Win10)

摄像头视频录制程序-Win10 &#x1f957;介绍&#x1f35b;使用说明&#x1f6a9;config.json 说明&#x1f6a9;启动&#x1f6a9;关闭&#x1f6a9;什么时候开始录制&#xff1f;&#x1f6a9;什么时候触发录制&#xff1f;&#x1f6a9;调参 &#x1f957;介绍 检测画面变化…

前端Web系统架构设计

文章目录 1.目录结构定义2. 路由封装2.1 API路由定义2.2 组件路由定义 3. Axios请求开发4. 环境变量封装5. storage模块封装(sessionStorage, localStorage)6. 公共函数封装(日期,金额,权限..)7. 通用交互定义(删除二次确认,类别,面包屑...)8. 接口全貌概览 1.目录结构定义 2. …

30、共空间模式CSP与白化矩阵

CSP算法和PCA降维都涉及到了白化&#xff0c;那白化的目的和作用到底是啥呢&#xff1f; 矩阵白化目的&#xff1a; 对于任意一个矩阵X&#xff0c;对其求协方差&#xff0c;得到的协方差矩阵cov(X)并不一定是一个单位阵。 下面介绍几个线代矩阵的几个概念&#xff1a; 1、…