修改添加成员相关功能

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更新家庭组号
addMembers: async (id: number, familyid: string) => {
return await request.put({ url: `/system/person/add-members?id=` + id + `&familyid=` + familyid })
addMembers: async (id: number, familyid: string,familyrelation:number) => {
return await request.put({ url: `/system/person/add-members?id=` + id + `&familyid=` + familyid + `&familyrelation=` + familyrelation })
},
// 根据用户ID移除家庭组号

View File

@ -7,7 +7,7 @@
<el-input v-model="formData.phone" placeholder="请输入手机号" />
</el-form-item>
<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 label="姓名" prop="name">
<el-input v-model="formData.name" placeholder="请输入姓名" />
@ -18,22 +18,24 @@
<el-option label="女" :value="2" />
</el-select>
</el-form-item>
<el-form-item label="身份证号" prop="idcard">
<el-form-item label="身份证号" prop="idcard">
<el-input v-model="formData.idcard" placeholder="请输入身份证号" />
</el-form-item>
</el-col>
<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 label="机构名称" prop="orgname">
<el-input v-model="formData.orgname" placeholder="请输入机构名称" />
</el-form-item>
<el-form-item label="家庭组号" prop="familyid">
<el-input v-model="formData.familyid" placeholder="请输入家庭组号" />
</el-form-item>
<el-form-item label="家庭关系" prop="familyrelation">
<el-input v-model="formData.familyrelation" placeholder="请输入家庭关系" />
<el-form-item label="家庭关系" prop="familyrelation" v-if="formType === 'update' && formData.familyid">
<el-select v-model="formData.familyrelation" placeholder="请选择家庭关系" :disabled="formData.familyrelation === 1">
<el-option label="本人(主号)" :value="1" />
<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>
</el-form-item>
</el-col>
<el-col :span="24">
@ -85,7 +87,7 @@ const formType = ref('') // 表单的类型create - 新增update - 修改
const formData = ref({
id: undefined,
phone: undefined,
password: undefined,
password: undefined as string | undefined,
name: undefined,
address: '',
gender: undefined,
@ -229,7 +231,7 @@ const resetForm = () => {
formData.value = {
id: undefined,
phone: undefined,
password: undefined,
password: formType.value === 'create' ? '123456' : undefined,
name: undefined,
address: '',
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="relation" width="100">
<template #default="scope">
<el-tag :type="scope.row.relation === '主号' ? 'primary' : 'success'">
{{ scope.row.relation }}
<el-tag :type="scope.row.familyrelation === 1 ? 'primary' : 'success'">
{{ getFamilyRelation(scope.row.familyrelation) }}
</el-tag>
</template>
</el-table-column>
@ -69,7 +69,7 @@ interface FamilyMember {
mobile: string
age: number
gender: string
relation: string
relation: number
address: string
createTime: string
familyid: string
@ -133,11 +133,16 @@ const handleAddMembers = async (members: FamilyMember[]) => {
loading.value = true
// API
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 {
loading.value = false
}

View File

@ -27,6 +27,23 @@
<el-table-column label="编号" prop="id" />
<el-table-column label="姓名" prop="name" />
<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>
<!-- 分页控件 -->
<div class="pagination-container">
@ -63,7 +80,7 @@ interface FamilyMember {
mobile: string
age: number
gender: string
relation: string
relation: number
address: string
createTime: string
}
@ -78,6 +95,7 @@ const emit = defineEmits<{
}>()
const visible = ref(props.modelValue)
// relation
const selectedMembers = ref<FamilyMember[]>([])
const list = ref<FamilyMember[]>([])
const loading = ref(false)
@ -121,7 +139,6 @@ const getList = async () => {
//
const getFamilyRelation = (relation: number): string => {
const relationMap: Record<number, string> = {
1: '本人',
2: '兄弟',
3: '父亲',
4: '母亲',
@ -173,6 +190,12 @@ watch(visible, (val) => {
//
const handleSelectionChange = (selection: FamilyMember[]) => {
selectedMembers.value = selection
// relation relation
selection.forEach(member => {
if (!member.relation) {
member.relation = 6 // ""
}
})
}
//