el-table向下复制数据新增一行,如何让数据之间修改不相互影响

发布于 2022-09-13 00:46:34 字数 4951 浏览 21 评论 0

问题描述:
1.第二行数据 是由第一行数据向下复制的来的,同样 第三行数据 是第二行数据向下复制来的

  1. 任意修改某一行数据的 检测项目 的下拉,任何一行的数据全都改变,现在希望他们之间各自独立,互不影响,求问应该如何解决。

向下复制代码

 <el-table-column label="操作" align="center" width="180">
              <template slot-scope="scope">
                <el-button
                  type="text"
                  icon="el-icon-copy-document"
                  size="small"
                  @click="copy(scope.row, scope.$index)"
                  >向下复制</el-button
                >
              </template>
            </el-table-column>
 //向下复制
    copy(data, index) {
      data.detectItemIdArr.map((item) => {
        this.changeDetectItem(item.id);
      });

      let obj = {
        detectObjectId: "",
        detectItemId: "",
        analyMethodId: "",
        originalSampleNumber: "",
        detectItemIdArr: [{ id: "" }],
        analyMethodIdArr: [{ id: "" }],
      };

      Object.keys(obj).forEach((key) => {
        obj[key] = data[key];
      });
      this.tableData.push(obj);
      // this.$set(this.tableData, [index + 1], data);
    },

table结构

<el-table-column
              align="center"
              label="检测对象"
              prop="detectObjectId"
              width="180"
            >
              <template slot-scope="scope">
                <el-select
                  v-model="scope.row.detectObjectId"
                  @change="changeDetectObj"
                >
                  <el-option
                    v-for="item in detectObj"
                    :key="item.detectObjectId"
                    :label="item.detectObjectName"
                    :value="item.detectObjectId"
                  ></el-option>
                </el-select>
              </template>
            </el-table-column>
            <el-table-column
              align="center"
              label="检测项目"
              prop="detectItemId"
              width="180"
            >
              <template slot-scope="scope">
                <div
                  style="display: flex; margin: 5px 0"
                  :key="index"
                  v-for="(item, index) in scope.row.detectItemIdArr"
                >
                  <el-select v-model="item.id" @change="changeDetectItem">
                    <el-option
                      v-for="item in detectItem"
                      :key="item.detectItemId"
                      :label="item.detectItemName"
                      :value="item.detectItemId"
                    ></el-option>
                  </el-select>
                  <el-button
                    style="margin: 0 10px"
                    type="text"
                    @click="addItem(scope.$index)"
                    >新增</el-button
                  >
                </div>
              </template>
            </el-table-column>
            <el-table-column
              align="center"
              label="测深方法-标准号"
              prop="analyMethodId"
              width="180"
            >
              <template slot-scope="scope">
                <div
                  style="display: flex; margin: 5px 0"
                  :key="index"
                  v-for="(item, index) in scope.row.analyMethodIdArr"
                >
                  <el-select v-model="item.id">
                    <el-option
                      v-for="item in analyMethods"
                      :key="item.analyMethodId"
                      :label="item.methodName"
                      :value="item.analyMethodId"
                    ></el-option>
                  </el-select>
                </div>
              </template>
            </el-table-column>
            <el-table-column label="操作" align="center" width="180">
              <template slot-scope="scope">
                <el-button
                  type="text"
                  icon="el-icon-copy-document"
                  size="small"
                  @click="copy(scope.row, scope.$index)"
                  >向下复制</el-button
                >
                <el-button
                  type="text"
                  icon="el-icon-delete"
                  size="small"
                  style="color: #f56c6c"
                  @click="del(scope.row, scope.$index)"
                  >删除</el-button
                >
              </template>
            </el-table-column>

//新增下拉框数据

  addItem(index) {
      this.tableData[index].detectItemIdArr.push({
        id: "",
      });
      this.tableData[index].analyMethodIdArr.push({
        id: "",
      });
    },

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

和影子一齐双人舞 2022-09-20 00:46:34
copy(data, index) {
      data.detectItemIdArr.map((item) => {
        this.changeDetectItem(item.id);
      });

      let obj = JSON.parse(JSON.stringify(data));
     
      this.tableData.push(obj);
   
    },
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文