element-ui封装dialog组件提供商品选择(支持单选/全选及已选择商品翻页保存)

该博客介绍如何使用Element-UI封装一个Dialog组件,用于商品选择,支持单选、全选及已选商品翻页保存。父组件通过传入`parentSelectArr`和监听`handleSubmit`事件来交互,子组件包括代码结构、逻辑和样式,实现了商品列表展示和确认功能。搜索功能可根据具体需求自行实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

父组件调用及需传入值说明

① parentSelectArr:此属性主要传入父组件表格已选择的商品数据
① handleSubmit:此事件在子组件点击确定按钮时触发,接收子组件传递过来的商品数据,然后把商品数据push到父组件的商品列表中
在这里插入图片描述父组件显示的商品数据如上(调用的element-ui的table标签展示商品数据)

<add
        :visible.sync="showAddDialog"
        @onSubmit="handleSubmit"
        :parentSelectArr="tableData"
      ></add>

handleSubmit函数如下

// 子组件点击确认选择的商品触发父组件的此事件
    async handleSubmit(options, args) {
   
   
      this.showAddDialog = false;
      this.tableData.push(...options);
      this.formDate.gift.push(...args);
      this.num = this.tableData.length;
      //   formDate.gift 父组件中包含所有已选择商品ID的数组
      // tableData 父组件中包含所有已选择商品信息的数组
      // num 父组件中已选择商品数量
    },

子组件封装及说明

  1. 代码结构部分
<template>
  <el-dialog
    v-bind="$attrs"
    title="选择商品"
    center
    :close-on-click-modal="false"
    width="60%"
    @close="$emit('update:visible', false)"
    @open="openDialog"
  >
    <!-- 选择栏 -->
    <div class="wrap">
      <div class="head-search">
        <input
          ref="check"
          type="checkbox"
          style="margin-left: 20px; vertical-align: middle;"
          @click="checkedAll()"
          :checked="checkIsAllSelect"
        /><span style="color: #409eff; margin-left: 5px;">全选当前页</span>

        <p>
          已选择<span style="color: red;">{
   
   {
   
    selectArr.length }}</span
          >个商品
        </p>
      </div>

      <!-- 内容区域 -->
      <div class="content">
      	<!-- element-ui的layout布局,一页展示12条数据,可根据自己需求调整 -->
        <el-row :gutter="10">
          <el-col
            :xs="24"
            :sm="12"
            :md="8"
            :lg="6"
            :xl="4"
            v-for="(item, index) in goodsList"
            :key="index"
          >
            <div class="grid-content bg-purple" style="margin-bottom: 40px;">
              <div class
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值