当前位置:首页 > javascript > vue > 正文内容

Element-UI 表格中含有form表单提交

hxing6413年前 (2022-05-27)vue2166

form表单中需要提交表格中的数据,并且验证:

image.png

使用el-form包裹表格,实现代码如下

1,HTML代码,el-table标签放在es-form标签内

<el-form
        ref="form"
        :inline="true"
        :model="form"
        size="small"
        :rules="rules"
      >
        <el-table
          ref="table"
          :data="form.stockList"
          style="width: 100%"
          max-height="500"
          row-key="id"
          border
          :header-cell-style="{
            background: '#F2F6FA',
            color: '#555555',
            'text-align': 'center',
          }"
        >
          <el-table-column label="库位编号" align="center" width="200">
            <template slot-scope="scope">
              <el-form-item
                :rules="rules.positionNo"
                :prop="'stockList.' + scope.$index + '.positionNo'"
              >
                <el-input
                  size="mini"
                  v-model="scope.row.positionNo"
                  placeholder="请输入库位编号"
                  maxlength="20"
                  show-word-limit
                ></el-input>
              </el-form-item>
            </template>
          </el-table-column>
          <el-table-column label="库位类型" align="center">
            <template slot-scope="scope">
              <el-form-item
                :rules="rules.positionType"
                :prop="'stockList.' + scope.$index + '.positionType'"
              >
                <el-select
                  size="mini"
                  v-model="scope.row.positionType"
                  placeholder="请选择"
                >
                  <el-option label="地堆" :value="1"></el-option>
                  <el-option label="货架" :value="2"></el-option>
                </el-select>
              </el-form-item>
            </template>
          </el-table-column>
          <el-table-column label="仓库名称" align="center">
            <template slot-scope="scope">
              <el-form-item
                :rules="rules.houseId"
                :prop="'stockList.' + scope.$index + '.houseId'"
              >
                <el-select
                  v-model="scope.row.houseId"
                  filterable
                  remote
                  reserve-keyword
                  placeholder="请输入仓库名称"
                  :remote-method="getProductHouseItemList"
                  :loading="romoteLoading"
                  @change="
                    (id=> {
                      houseChange(scope.$indexid);
                    }
                  "
                >
                  <el-option
                    v-for="item in productHouseList"
                    :key="item.id"
                    :label="item.houseName"
                    :value="item.id"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
            </template>
          </el-table-column>

          <el-table-column label="库区名称" align="center">
            <template slot-scope="scope">
              <el-form-item
                :rules="rules.stockAreaId"
                :prop="'stockList.' + scope.$index + '.stockAreaId'"
              >
                <el-select
                  size="mini"
                  v-model="scope.row.stockAreaId"
                  placeholder="请选择"
                >
                  <el-option
                    :label="item.areaName"
                    :value="item.id"
                    v-for="item in areaList"
                    :key="item.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </template>
          </el-table-column>
          <el-table-column label="操作" width="160" align="center">
            <template slot-scope="scope">
              <el-row class="handle-table-box">
                <el-button
                  size="mini"
                  type="primary"
                  @click="handleAdd(scope.$indexscope.row)"
                >
                  添加
                </el-button>
                <el-button
                  v-if="scope.$index > 0"
                  size="mini"
                  type="danger"
                  @click="handleDelete(scope.$indexscope.row)"
                  >删除
                </el-button>
              </el-row>
            </template>
          </el-table-column>
        </el-table>
      </el-form>

2,data中定义数据

const DEFAULT_FORM = {

  stockList: [
    { positionNo: ""positionType: ""houseId: ""stockAreaId: "" },
  ],
};


data() {

    return {

          form: Object.assign({}, DEFAULT_FORM, {})
    }

}

3,在methods中定义添加删除数据方法(因为我的需求是点击哪一条数据就复制哪一条数据到该数据下面,所以我用splice实现)

handleAdd(indexrow) {
  this.form.stockList.splice(index + 10, { ...row });

},

handleDelete(index) {
  this.form.stockList.splice(index1);
}

4,在methods中定义重置表单的方法,当弹框取消或者点击添加完成后调用此方法

reset() {

// 默认保存一个

  this.form = {

      stockList: [

          { positionNo: ""positionType: ""houseId: ""stockAreaId: "" }

      ]

  };

  this.$nextTick(() => {

    // 清空验证规则

    this.$refs.form.resetFields();

  });

}

扫描二维码推送至手机访问。

版权声明:本文由星星博客发布,如需转载请注明出处。

本文链接:https://xingxinghan.cn/?id=390

“Element-UI 表格中含有form表单提交” 的相关文章

UniApp H5项目指南:处理二维码生成和扫描操作

UniApp H5项目指南:处理二维码生成和扫描操作

在我们基于UniApp的H5项目中,需要生成一些二维码进行展示,另外也需要让用户可以扫码进行一定的快捷操作,本篇随笔介绍一下二维码的生成处理和基于H5的扫码进行操作。二维码的生成,使用了JS文件weapp-qrcode.js进行处理,而二维码扫码则是基于一个第三方组件的方式进行支持的,最后通过统一入...

Vue中的父子组件通讯及使用sync同步父子组件数据

在Vue.js中,组件通讯是一个非常重要的主题。特别是在处理父子组件之间的通讯时,我们需要了解不同的方式来传递数据和响应事件。本文将介绍Vue中父子组件通讯的几种方式,并重点讨论使用sync属性来实现父子组件数据的双向绑定。父子组件通讯 在Vue中,父组件可以通过prop向子组件传递数据,而子组件则...

Vue.js 系列教程:深入理解组件、Props和Slots

Vue.js 是一款流行的 JavaScript 框架,它提供了一种组件化的开发方式,使得构建复杂的用户界面变得更加简单和高效。 在本篇教程中,我们将深入探讨 Vue.js 中的组件、Props 和 Slots 的概念和用法。 组件...

Vue中Mixin的应用与实践

在Vue.js中,Mixin是一种非常有用的技术,它允许我们将可复用的功能和逻辑抽象出来,并混入到组件中,从而实现代码的复用和组件的扩展。本文将深入探讨Vue中Mixin的应用与实践,包括Mixin的基本概念、实际应用场景以及相关的代码示例,最终总结如何合理地应用和实践Mixin特性。...

uniapp vue3 打包h5后无法正常正常使用uni对象中的方法

今天uniapp项目遇到一个小问题,记录下,就是打包h5后放到服务器跑,一直报错:uni.navigator  is  not  defined以下是我的代码:to(url, type = 'navigateTo')&nbs...

axios性能优化:防止重复请求

网站性能优化是一系列技术和策略的应用,提高网站的加载速度、响应时间和整体性能,以提供更好的用户体验和增强网站的竞争力,比较直接的方式就是减少http请求数量,过滤掉无效请求。 也是本篇文章的主题。 开始 本篇将基于...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。