调整个人中介中介子类型与关联关系展示

This commit is contained in:
wkc
2026-03-23 17:06:08 +08:00
parent c7311f9319
commit 93527a977e
4 changed files with 161 additions and 18 deletions

View File

@@ -16,7 +16,7 @@
<!-- 个人类型专属字段 -->
<template v-if="detailData.intermediaryType === '1'">
<el-descriptions-item label="人员类型">{{ detailData.personType || '-' }}</el-descriptions-item>
<el-descriptions-item label="人员子类型">{{ detailData.personSubType || '-' }}</el-descriptions-item>
<el-descriptions-item label="中介子类型">{{ detailData.personSubType || detailData.relationType || '-' }}</el-descriptions-item>
<el-descriptions-item label="性别">
<span v-if="detailData.gender === 'M'"></span>
<span v-else-if="detailData.gender === 'F'"></span>
@@ -30,7 +30,6 @@
<el-descriptions-item label="所在公司">{{ detailData.company || '-' }}</el-descriptions-item>
<el-descriptions-item label="职位">{{ detailData.position || '-' }}</el-descriptions-item>
<el-descriptions-item label="企业统一信用码">{{ detailData.socialCreditCode || '-' }}</el-descriptions-item>
<el-descriptions-item label="关系类型">{{ detailData.relationType || '-' }}</el-descriptions-item>
<el-descriptions-item label="关联人员ID">{{ detailData.relatedNumId || '-' }}</el-descriptions-item>
</template>

View File

@@ -62,8 +62,21 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="人员子类型">
<el-input v-model="form.personSubType" placeholder="请输入人员子类型" maxlength="100" clearable/>
<el-form-item label="中介子类型">
<el-select
v-model="form.personSubType"
placeholder="请选择中介子类型"
clearable
style="width: 100%"
@change="handlePersonSubTypeChange"
>
<el-option
v-for="item in personSubTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
@@ -132,20 +145,6 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="关联关系">
<el-select v-model="form.relationType" placeholder="请选择关联关系" clearable style="width: 100%">
<el-option
v-for="item in relationTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="备注" prop="remark">
<el-input
v-model="form.remark"
@@ -409,6 +408,21 @@ export default {
return '机构信息';
}
return '';
},
personSubTypeOptions() {
const options = [{ label: '个人', value: '个人' }, ...this.relationTypeOptions];
const dedupedOptions = [];
const existedValues = new Set();
options.forEach(item => {
if (!item || !item.value || existedValues.has(item.value)) {
return;
}
existedValues.add(item.value);
dedupedOptions.push(item);
});
return dedupedOptions;
}
},
watch: {
@@ -446,6 +460,8 @@ export default {
}
this.shouldAnimate = false;
}
this.syncPersonSubTypeRelation();
},
/**
@@ -454,6 +470,9 @@ export default {
handleTypeSelect(type) {
this.tempSelectedType = type;
this.form.intermediaryType = type;
if (type === '1') {
this.syncPersonSubTypeRelation();
}
// 延迟设置 selectedType使表单显示带动画效果
setTimeout(() => {
this.selectedType = type;
@@ -478,6 +497,10 @@ export default {
return;
}
if (this.form.intermediaryType === '1') {
this.syncPersonSubTypeRelation();
}
// 根据类型验证不同的表单
const formRef = this.form.intermediaryType === '1' ? 'indivForm' : 'corpForm';
@@ -491,6 +514,19 @@ export default {
});
},
handlePersonSubTypeChange(value) {
this.form.relationType = value || null;
},
syncPersonSubTypeRelation() {
if (!this.form || this.form.intermediaryType !== '1') {
return;
}
const currentValue = this.form.personSubType || this.form.relationType || null;
this.form.personSubType = currentValue;
this.form.relationType = currentValue;
},
/**
* 滚动到第一个错误字段
*/

View File

@@ -0,0 +1,55 @@
const assert = require("assert");
const fs = require("fs");
const path = require("path");
const editDialogPath = path.resolve(
__dirname,
"../../src/views/ccdiIntermediary/components/EditDialog.vue"
);
const detailDialogPath = path.resolve(
__dirname,
"../../src/views/ccdiIntermediary/components/DetailDialog.vue"
);
const editDialogSource = fs.readFileSync(editDialogPath, "utf8");
const detailDialogSource = fs.readFileSync(detailDialogPath, "utf8");
[
'label="中介子类型"',
'v-model="form.personSubType"',
'v-for="item in personSubTypeOptions"',
"label: '个人'",
"handlePersonSubTypeChange"
].forEach((token) => {
assert(
editDialogSource.includes(token),
`个人中介编辑弹窗缺少中介子类型改造: ${token}`
);
});
[
'label="关联关系"',
'v-model="form.relationType" placeholder="请选择关联关系"'
].forEach((token) => {
assert(
!editDialogSource.includes(token),
`个人中介编辑弹窗不应继续单独展示关联关系字段: ${token}`
);
});
[
'label="中介子类型"',
"detailData.personSubType || detailData.relationType || '-'"
].forEach((token) => {
assert(
detailDialogSource.includes(token),
`个人中介详情缺少中介子类型展示调整: ${token}`
);
});
assert(
!detailDialogSource.includes('label="关系类型"'),
"个人中介详情不应继续展示单独的关系类型字段"
);
console.log("intermediary-person-edit-ui test passed");