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

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

hxing6413年前 (2022-05-27)vue2095

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退出应用

Appif (uni.getSystemInfoSync().platform == 'ios'){     plus.ios.import("UIApplication").sharedAp...

深入探索Vue自定义过滤器

Vue.js是一种流行的JavaScript框架,提供了很多有用的功能来构建交互式的Web应用程序。其中一个非常有用且经常被忽视的功能是自定义过滤器。通过使用自定义过滤器,我们可以在Vue应用程序中轻松地转换、格式化和处理数据。本文将深入探索Vue自定义过滤器的使用方法和实际应用。一、什么是Vue自...

Vue.js双向绑定的实现原理解析与实例演示

1. 简介 Vue.js作为一款流行的前端框架,其双向绑定机制是其核心特性之一。通过双向绑定,Vue.js实现了数据模型和视图之间的即时同步,为开发者提供了极大的便利。在本文中,我们将深入探讨Vue.js双向绑定的实现原理,并结合代码示例进行详细解释。...

Vue中Mixin的应用与实践

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

Vue中的防抖节流技术,提升用户交互体验

在Vue开发中,我们经常会遇到需要处理用户频繁操作的场景,例如搜索框输入联想、窗口大小改变等。这时,使用防抖节流技术能够有效地控制事件触发频率,提升用户体验和页面性能。 1. 防抖技术 防抖(Debounce)是指在事件被触发后,等...

uniapp运行APP报错reportJSException >>>> exception function:createInstanceContext, exception:white screen

今天分享个自己在工作中遇到的头疼问题,记录下,在使用pinia时,引入use模块,h5端没问题,我使用的是vue3,运行在APP端一直报错:reportJSException >>>> exception function:createInstanceContext, exc...

发表评论

访客

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