首页 > 其他分享 >vue实现选中左边数据到右边

vue实现选中左边数据到右边

时间:2024-07-20 11:08:06浏览次数:12  
标签:右边 vue name selectedItems item 选中 数据 id quantity

vue

<template>
  <div class="container">
    <el-row>
      <el-col :span="4">
        <!-- 左边列表项 -->
        <div class="scrollable-menu">
          <el-menu
              class="el-menu-vertical-demo"
              background-color="#304156"
              text-color="#fff"
              active-text-color="#ffd04b"
          >
            <el-menu-item
                v-for="item in items"
                :key="item.id"
                :index="item.id.toString()"
                @click="selectItem(item)"
            >
              <i class="el-icon-menu"></i>
              {{ item.name }}
            </el-menu-item>
          </el-menu>
        </div>
      </el-col>
      <el-col :span="12">
        <!-- 右边选中的数据和数量 -->
        <div
            v-for="(selectedItem, index) in selectedItems"
            :key="index"
            class="item-container"
        >
          <div class="flex-container">
            <span class="item-name">{{ selectedItem.name }}</span>
            <el-input
                type="number"
                :min="1"
                v-model.number="selectedItem.quantity"
                class="quantity-input"
                @change="updateQuantity(selectedItem.id, selectedItem.quantity)"
            ></el-input>
            <el-button type="danger" @click="removeItem(index)">移除</el-button>
          </div>
        </div>
        <el-button type="primary" @click="addSelectedItem">提交</el-button>
      </el-col>
    </el-row>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        {id: 1, name: '数据1'},
        {id: 2, name: '数据2'},
        {id: 3, name: '数据3'},
        {id: 4, name: '数据4'},
        {id: 5, name: '数据5'},
        {id: 6, name: '数据6'},
        {id: 7, name: '数据7'},
        {id: 8, name: '数据8'},
        {id: 9, name: '数据9'},
        {id: 10, name: '数据10'},
        // 假设这里有很多数据项...
      ],
      selectedItems: [],
    };
  },
  methods: {
    selectItem(item) {
      const existingItem = this.selectedItems.find((x) => x.id === item.id);
      if (existingItem) {
        existingItem.quantity += 1;
      } else {
        this.selectedItems.push({...item, quantity: 1});
      }
    },
    removeItem(index) {
      this.selectedItems.splice(index, 1);
    },
    updateQuantity(id, quantity) {
      const item = this.selectedItems.find((x) => x.id === id);
      if (item) {
        item.quantity = quantity;
      }
    },
    addSelectedItem() {
      console.log(this.selectedItems)
    },
  },
};
</script>

<style scoped>
.container {
//margin: 30px;
}

.scrollable-menu {
  max-height: 400px; /* 可调整为适合的高度 */
  overflow-y: auto;
}

.item-container {
  margin-bottom: 10px;
}

.flex-container {
  display: flex;
  align-items: center;
  width: 100%;
}

.quantity-input {
  margin-right: 10px;
}

.item-name {
  margin-right: 10px;
}

.el-input {
  width: 50%;
}

.el-button {
  text-align: center;
}
</style>

标签:右边,vue,name,selectedItems,item,选中,数据,id,quantity
From: https://www.cnblogs.com/qcy-blog/p/18312865

相关文章

  • vue3中mixin的使用方法
     <template><divclass="box">{{mData.name}}</div></template><scriptsetup>import{ref}from'vue'//导入importuserMixfrom"@/common/mixins/user";//拿到数据const{mData......
  • 课程设计-基于Springboot+Vue的实验室管理系统的设计与实现(源码+LW+包运行)
    源码获取:https://download.csdn.net/download/u011832806/89432238基于SpringBoot+Vue的实验室管理系统开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven实验室管理系统软件是一款方便、快捷、实用的信息服务查询软件。随着智能......
  • 基于Vue CLI 3构建Vue3项目(Vue2也可参考)
    天行健,君子以自强不息;地势坤,君子以厚德载物。每个人都有惰性,但不断学习是好好生活的根本,共勉!文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。蜀国曾闻子规鸟,宣城还见杜鹃花。一叫一回肠一断,三春三月忆三巴。——《宣城见杜鹃花》文章目录使用......
  • Vue项目的构建方式
    天行健,君子以自强不息;地势坤,君子以厚德载物。每个人都有惰性,但不断学习是好好生活的根本,共勉!文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。兴酣落笔摇五岳,诗成笑傲凌沧洲。功名富贵若长在,汉水亦应西北流。——《江上吟》文章目录Vue项目的......
  • Vue常用组件安装命令合集
    qs是一个流行的查询参数序列化和解析库。可以将一个普通的object序列化成一个查询字符串,或者反过来将一个查询字符串解析成一个object,帮助我们查询字符串解析和序列化字符串。npminstallqsnpminstallaxios-Selementuiui组件库npmielement-ui-Snpmielement-ui@2......
  • 基于SpringBoot+Vue+uniapp的公考客观题复习系统的详细设计和实现(源码+lw+部署文档+
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • Java毕业设计基于Vue+SpringBoot体育竞赛成绩管理系统(代码+数据库+文档LW+运行成功)
    文末获取资源,收藏关注不迷路文章目录项目介绍技术介绍项目界面关键代码目录项目介绍体育竞赛是各种体育体育项目比赛的总称。是在裁判员的主持下,按统一的规则要求,组织与实施的体育员个体或体育队之间的竞技较量,是竞技体育与社会发生关联,并作用于社会的媒介,随着......
  • Java毕业设计基于Vue+SpringBoot医药销售系统(代码+数据库+文档LW+运行成功)
    文末获取资源,收藏关注不迷路文章目录项目介绍技术介绍项目界面关键代码目录项目介绍随着我国医药销售系统的放开和国家加快发展医药销售连锁经营相关政策的出台,我国各地区医药销售数量快速增长,医药销售之间的竞争也日益激烈.但是,目前医药销售行业之间的竞争基本......
  • vue路由守卫的使用方法和应用场景
    全局守卫beforeEach中三个属性router.beforeEach((to,from,next)=>{  if(!localStorage.getItem("token")){  if(to.path!=="/login"){   returnnext("/login")  } } next()})路由独享守卫 constroutes=[ {  pat......
  • Vue3的学习---2
    2.Vue基本语法2.1文本渲染指令v-html和v-textv-html:将数据当作html代码渲染到页面上v-text:将数据当作纯文本渲染到页面上<body><divid="app"><!--v-html和v-text指令的作用是将数据渲染到HTML元素或文本节点中,避免出现{{num}}--><pv-html="......