编辑队伍人员(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的数据绑定和计算属性来解决。以下是解决方案的步骤:
data() {
return {
teams: [
{ teamname: '队伍A', members: [] },
{ teamname: '队伍B', members: [] },
// 其他队伍信息
]
}
},
<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;
// 其他操作...
}
}
<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>
methods: {
saveTeam() {
// 根据队伍名查找队伍信息
let currentTeam = this.teams.find(t => t.teamname === this.form.teamname);
// 更新队伍人员信息
currentTeam.members = this.form.members;
// 其他操作...
}
}
至于外键的问题,根据你提供的信息,队伍名字段(teamname)可以作为队伍表(team)和队伍人员表(editpeople)之间的关联字段,无需增加外键。主键都是id字段,所以在数据层面上,你可以使用id来关联两个表的数据。