修改添加成员相关功能

This commit is contained in:
lxd 2025-06-13 15:44:09 +08:00
parent 5f1ac04e0f
commit 6c2a5525d8
4 changed files with 53 additions and 23 deletions

View File

@ -52,8 +52,8 @@ export const PersonApi = {
}, },
// 根据用户ID更新家庭组号 // 根据用户ID更新家庭组号
addMembers: async (id: number, familyid: string) => { addMembers: async (id: number, familyid: string,familyrelation:number) => {
return await request.put({ url: `/system/person/add-members?id=` + id + `&familyid=` + familyid }) return await request.put({ url: `/system/person/add-members?id=` + id + `&familyid=` + familyid + `&familyrelation=` + familyrelation })
}, },
// 根据用户ID移除家庭组号 // 根据用户ID移除家庭组号

View File

@ -7,7 +7,7 @@
<el-input v-model="formData.phone" placeholder="请输入手机号" /> <el-input v-model="formData.phone" placeholder="请输入手机号" />
</el-form-item> </el-form-item>
<el-form-item label="密码" prop="password"> <el-form-item label="密码" prop="password">
<el-input v-model="formData.password" placeholder="请输入密码" /> <el-input v-model="formData.password" placeholder="请输入密码" show-password />
</el-form-item> </el-form-item>
<el-form-item label="姓名" prop="name"> <el-form-item label="姓名" prop="name">
<el-input v-model="formData.name" placeholder="请输入姓名" /> <el-input v-model="formData.name" placeholder="请输入姓名" />
@ -18,22 +18,24 @@
<el-option label="女" :value="2" /> <el-option label="女" :value="2" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="身份证号" prop="idcard"> <el-form-item label="身份证号" prop="idcard">
<el-input v-model="formData.idcard" placeholder="请输入身份证号" /> <el-input v-model="formData.idcard" placeholder="请输入身份证号" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="机构ID" prop="orgid">
<el-input v-model="formData.orgid" placeholder="请输入机构ID" /> <el-form-item label="家庭组号" prop="familyid" v-if="formType === 'update' && formData.familyid">
<el-input v-model="formData.familyid" placeholder="请输入家庭组号" :disabled="formType === 'update'" />
</el-form-item> </el-form-item>
<el-form-item label="机构名称" prop="orgname"> <el-form-item label="家庭关系" prop="familyrelation" v-if="formType === 'update' && formData.familyid">
<el-input v-model="formData.orgname" placeholder="请输入机构名称" /> <el-select v-model="formData.familyrelation" placeholder="请选择家庭关系" :disabled="formData.familyrelation === 1">
</el-form-item> <el-option label="本人(主号)" :value="1" />
<el-form-item label="家庭组号" prop="familyid"> <el-option label="兄弟" :value="2" />
<el-input v-model="formData.familyid" placeholder="请输入家庭组号" /> <el-option label="父亲" :value="3" />
</el-form-item> <el-option label="母亲" :value="4" />
<el-form-item label="家庭关系" prop="familyrelation"> <el-option label="子女" :value="5" />
<el-input v-model="formData.familyrelation" placeholder="请输入家庭关系" /> <el-option label="其他" :value="6" />
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
@ -85,7 +87,7 @@ const formType = ref('') // 表单的类型create - 新增update - 修改
const formData = ref({ const formData = ref({
id: undefined, id: undefined,
phone: undefined, phone: undefined,
password: undefined, password: undefined as string | undefined,
name: undefined, name: undefined,
address: '', address: '',
gender: undefined, gender: undefined,
@ -229,7 +231,7 @@ const resetForm = () => {
formData.value = { formData.value = {
id: undefined, id: undefined,
phone: undefined, phone: undefined,
password: undefined, password: formType.value === 'create' ? '123456' : undefined,
name: undefined, name: undefined,
address: '', address: '',
gender: undefined, gender: undefined,

View File

@ -21,8 +21,8 @@
<el-table-column label="手机号码" align="center" prop="mobile" width="180" /> <el-table-column label="手机号码" align="center" prop="mobile" width="180" />
<el-table-column label="关系" align="center" prop="relation" width="100"> <el-table-column label="关系" align="center" prop="relation" width="100">
<template #default="scope"> <template #default="scope">
<el-tag :type="scope.row.relation === '主号' ? 'primary' : 'success'"> <el-tag :type="scope.row.familyrelation === 1 ? 'primary' : 'success'">
{{ scope.row.relation }} {{ getFamilyRelation(scope.row.familyrelation) }}
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
@ -69,7 +69,7 @@ interface FamilyMember {
mobile: string mobile: string
age: number age: number
gender: string gender: string
relation: string relation: number
address: string address: string
createTime: string createTime: string
familyid: string familyid: string
@ -133,11 +133,16 @@ const handleAddMembers = async (members: FamilyMember[]) => {
loading.value = true loading.value = true
// API // API
for (const member of members) { for (const member of members) {
await PersonApi.addMembers(member.id, currentMember.value.familyid) await PersonApi.addMembers(member.id, currentMember.value.familyid,member.relation)
} }
// //
memberList.value.push(...members) // familyrelation
const newMembers = members.map(member => ({
...member,
familyrelation: member.relation // 使 relation familyrelation
}))
memberList.value.push(...newMembers)
} finally { } finally {
loading.value = false loading.value = false
} }

View File

@ -27,6 +27,23 @@
<el-table-column label="编号" prop="id" /> <el-table-column label="编号" prop="id" />
<el-table-column label="姓名" prop="name" /> <el-table-column label="姓名" prop="name" />
<el-table-column label="手机号码" prop="mobile" /> <el-table-column label="手机号码" prop="mobile" />
<el-table-column label="关系" width="150">
<template #default="{ row }">
<!-- 只有勾选时才显示下拉框relation 值会自动同步到 selectedMembers 中对应成员对象的 relation 字段 -->
<el-select
v-if="selectedMembers.some(member => member.id === row.id)"
v-model="row.relation"
placeholder="请选择关系"
style="width: 100%"
>
<el-option label="兄弟" :value=2 />
<el-option label="父亲" :value=3 />
<el-option label="母亲" :value=4 />
<el-option label="子女" :value=5 />
<el-option label="其他" :value=6 />
</el-select>
</template>
</el-table-column>
</el-table> </el-table>
<!-- 分页控件 --> <!-- 分页控件 -->
<div class="pagination-container"> <div class="pagination-container">
@ -63,7 +80,7 @@ interface FamilyMember {
mobile: string mobile: string
age: number age: number
gender: string gender: string
relation: string relation: number
address: string address: string
createTime: string createTime: string
} }
@ -78,6 +95,7 @@ const emit = defineEmits<{
}>() }>()
const visible = ref(props.modelValue) const visible = ref(props.modelValue)
// relation
const selectedMembers = ref<FamilyMember[]>([]) const selectedMembers = ref<FamilyMember[]>([])
const list = ref<FamilyMember[]>([]) const list = ref<FamilyMember[]>([])
const loading = ref(false) const loading = ref(false)
@ -121,7 +139,6 @@ const getList = async () => {
// //
const getFamilyRelation = (relation: number): string => { const getFamilyRelation = (relation: number): string => {
const relationMap: Record<number, string> = { const relationMap: Record<number, string> = {
1: '本人',
2: '兄弟', 2: '兄弟',
3: '父亲', 3: '父亲',
4: '母亲', 4: '母亲',
@ -173,6 +190,12 @@ watch(visible, (val) => {
// //
const handleSelectionChange = (selection: FamilyMember[]) => { const handleSelectionChange = (selection: FamilyMember[]) => {
selectedMembers.value = selection selectedMembers.value = selection
// relation relation
selection.forEach(member => {
if (!member.relation) {
member.relation = 6 // ""
}
})
} }
// //