两个表怎么一一对应起来

img


如图,在某个队伍的”编辑队伍人员“中输入一组数据后保存,再点击其他队伍的编辑队伍人员,会出现同样的数据。如何把队伍人员信息对应上指定的队伍中去呢?

img


点击”队员分配“出现”编辑队伍人员“窗口

img

编辑队伍人员(editpeople)和队伍(team)表中都有teamname,用来跟队伍(team)相关联,但都不是主键,主键都是id,两表没有外键(这个地方需要增加外键吗?)


 <!-- 添加或修改编辑队伍人员对话框 -->
          <el-dialog :title="title" :visible.sync="edit" width="500px" append-to-body>
            <el-form ref="form1" :model="form1" :rules="rules1"  label-width="80px">
              <el-col :span="1.5">
                <el-button
                  type="primary"
                  plain
                  icon="el-icon-plus"
                  size="mini"
                  @click="lineAdd"

                >新增</el-button>

              </el-col>

              <table v-for="(form1, index) in editpeopleList" :key="index">

              <el-form-item label="姓名" prop="name">
                    <el-input  v-model="form1.name" placeholder="请输入" />
                  </el-form-item>
                  <el-form-item label="电话" prop="peoplephone">
                    <el-input  v-model="form1.peoplephone" placeholder="请输入" />
                  </el-form-item>
                  <el-form-item label="岗位" prop="position">
                    <el-select  v-model="form1.position" placeholder="请选择">
                      <el-option
                        v-for="dict in dict.type.position"
                        :key="dict.value"
                        :label="dict.label"
                        :value="dict.value"
                      ></el-option>
                    </el-select>
                  </el-form-item>
                  <el-button
                    size="mini"
                    type="text"
                    icon="el-icon-delete"
                    @click="deleteRow()"
                    v-hasPermi="['system:team:remove']"
                  >删除</el-button>
              </table>
            </el-form>
                <div slot="footer" class="dialog-footer">
                  <el-button :loading="buttonLoading" type="primary" @click="submitEdit">确 定</el-button>
                  <el-button @click="cancel">取 消</el-button>
                </div>
              </el-dialog>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>

 // 删除指定行
    deleteRow(index) {
      this.editpeopleList.splice(index, 1);
    },
    /** 添加记录按钮操作 */
    /**
     * 新增<前端假新增>
     */

    lineAdd() {
      this.editpeopleList.push(
        {
          name:'',
          peoplephone:'',
          position:'',
        }
      )
    },


submitEdit() {
      this.$refs["form1"].validate(valid => {
        if (valid) {
          this.buttonLoading = true;

            updateEditpeople(this.form1).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.edit = false;
            }).finally(() => {
              this.buttonLoading = false;
            });

          }

      });
    },

前面有成功一一对应过,但是却出现了另一个问题,就是每次新增文本框时都会出现跟第一次输入时一模一样的数据,这个问题解决后另一个问题又来了,对应不上相应的队伍

【以下回答由 GPT 生成】

对于这个问题,你可以使用Vue.js的数据绑定和计算属性来解决。以下是解决方案的步骤:

  1. 在Vue实例的data属性中添加一个teams数组来存储队伍信息,每个队伍包括名称和队伍人员的信息。例如:
data() {
  return {
    teams: [
      { teamname: '队伍A', members: [] },
      { teamname: '队伍B', members: [] },
      // 其他队伍信息
    ]
  }
},
  1. 在队伍分配对话框中,为每个队伍的编辑按钮绑定一个事件处理函数,将当前选择的队伍信息赋值给表单数据。例如:
<el-button
  type="primary"
  plain
  icon="el-icon-edit"
  size="mini"
  @click="editTeam(team)"
>
  编辑队伍人员
</el-button>
methods: {
  editTeam(team) {
    // 根据队伍名查找队伍信息
    let currentTeam = this.teams.find(t => t.teamname === team.teamname);
    // 将队伍人员信息赋值给表单数据
    this.form.members = currentTeam.members;
    // 其他操作...
  }
}
  1. 在表单组件中,使用v-for指令遍历队伍人员信息,并绑定表单中的输入框。例如:
<table v-for="(member, index) in form.members" :key="index">
  <el-form-item label="姓名" prop="name">
    <el-input v-model="member.name" placeholder="请输入" />
  </el-form-item>
  <el-form-item label="电话" prop="peoplephone">
    // 其他表单元素...
  </el-form-item>
  // 其他表单元素...
</table>
  1. 当进行表单提交或保存操作时,更新对应队伍的队伍人员信息。例如:
methods: {
  saveTeam() {
    // 根据队伍名查找队伍信息
    let currentTeam = this.teams.find(t => t.teamname === this.form.teamname);
    // 更新队伍人员信息
    currentTeam.members = this.form.members;
    // 其他操作...
  }
}

至于外键的问题,根据你提供的信息,队伍名字段(teamname)可以作为队伍表(team)和队伍人员表(editpeople)之间的关联字段,无需增加外键。主键都是id字段,所以在数据层面上,你可以使用id来关联两个表的数据。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^