feat(purchase): 人员选择组件增加部门名称显示

- 履约验收采购人员/资产管理员下拉显示部门名称
- OrgSelector组件已选列表、搜索结果增加部门名称和工号显示
- 格式统一为:部门名称 - 姓名 (工号)
This commit is contained in:
吴红兵
2026-03-04 12:06:20 +08:00
parent 501af39a14
commit 849d5df857
4 changed files with 29 additions and 11 deletions

View File

@@ -9,7 +9,7 @@
:type="item.type === 'dept' ? 'primary' : item.type === 'user' ? 'warning' : 'success'" :type="item.type === 'dept' ? 'primary' : item.type === 'user' ? 'warning' : 'success'"
size="large" size="large"
> >
{{ item.name }} {{ getDisplayName(item) }}
</el-tag> </el-tag>
</div> </div>
</template> </template>
@@ -28,6 +28,16 @@ let props = defineProps({
}, },
}); });
const getDisplayName = (item) => {
if (item.type === 'user') {
const commonDeptName = item.commonDeptName || '';
const realName = item.realName || item.name || '';
const teacherNo = item.teacherNo || item.username || '';
return commonDeptName ? `${commonDeptName} - ${realName} (${teacherNo})` : `${realName} (${teacherNo})`;
}
return item.name;
};
const removeItem = (index, id, type) => { const removeItem = (index, id, type) => {
emits( emits(
'update:data', 'update:data',

View File

@@ -62,7 +62,11 @@
<div class="f11"> <div class="f11">
<upload-img v-model:image-url="item.avatar" disabled width="20px" height="20px"/> <upload-img v-model:image-url="item.avatar" disabled width="20px" height="20px"/>
</div> </div>
<div class="f12">{{ item.name }}</div> <div class="f12">
<span v-if="item.commonDeptName">{{ item.commonDeptName }} - </span>
<span>{{ item.realName || item.name }}</span>
<span v-if="item.teacherNo" style="color: #999; margin-left: 4px;">({{ item.teacherNo }})</span>
</div>
</div> </div>
</el-checkbox> </el-checkbox>
</li> </li>

View File

@@ -48,7 +48,11 @@
<div class="f11"> <div class="f11">
<upload-img v-model:image-url="item.avatar" disabled width="20px" height="20px" /> <upload-img v-model:image-url="item.avatar" disabled width="20px" height="20px" />
</div> </div>
<div class="f12">{{ item.name }}</div> <div class="f12">
<span v-if="item.commonDeptName">{{ item.commonDeptName }} - </span>
<span>{{ item.realName || item.name }}</span>
<span v-if="item.teacherNo" style="color: #999; margin-left: 4px;">({{ item.teacherNo }})</span>
</div>
<div class="f13"> <div class="f13">
<el-button size="small" text @click="cancel(item)" :icon="CircleClose"></el-button> <el-button size="small" text @click="cancel(item)" :icon="CircleClose"></el-button>
</div> </div>

View File

@@ -79,10 +79,10 @@
<el-option <el-option
v-for="item in purchaserOptions" v-for="item in purchaserOptions"
:key="item.teacherNo" :key="item.teacherNo"
:label="item.name + ' (' + item.teacherNo + ')'" :label="(item.commonDeptName ? item.commonDeptName + ' - ' : '') + (item.realName || item.name) + ' (' + item.teacherNo + ')'"
:value="item.teacherNo" :value="item.teacherNo"
> >
<span>{{ item.name }}</span> <span>{{ item.commonDeptName ? item.commonDeptName + ' - ' : '' }}{{ item.realName || item.name }}</span>
<span style="color: #999; font-size: 12px; margin-left: 8px;">{{ item.teacherNo }}</span> <span style="color: #999; font-size: 12px; margin-left: 8px;">{{ item.teacherNo }}</span>
</el-option> </el-option>
</el-select> </el-select>
@@ -105,10 +105,10 @@
<el-option <el-option
v-for="item in assetAdminOptions" v-for="item in assetAdminOptions"
:key="item.teacherNo" :key="item.teacherNo"
:label="item.name + ' (' + item.teacherNo + ')'" :label="(item.commonDeptName ? item.commonDeptName + ' - ' : '') + (item.realName || item.name) + ' (' + item.teacherNo + ')'"
:value="item.teacherNo" :value="item.teacherNo"
> >
<span>{{ item.name }}</span> <span>{{ item.commonDeptName ? item.commonDeptName + ' - ' : '' }}{{ item.realName || item.name }}</span>
<span style="color: #999; font-size: 12px; margin-left: 8px;">{{ item.teacherNo }}</span> <span style="color: #999; font-size: 12px; margin-left: 8px;">{{ item.teacherNo }}</span>
</el-option> </el-option>
</el-select> </el-select>
@@ -180,10 +180,10 @@ const syncFormFromModel = (val: Record<string, any> | undefined) => {
Object.assign(form, val || {}) Object.assign(form, val || {})
// 加载已选人员信息用于回显 // 加载已选人员信息用于回显
if (form.purchaserId && form.purchaserName) { if (form.purchaserId && form.purchaserName) {
purchaserOptions.value = [{ teacherNo: form.purchaserId, name: form.purchaserName }] purchaserOptions.value = [{ teacherNo: form.purchaserId, realName: form.purchaserName, name: form.purchaserName }]
} }
if (form.assetAdminId && form.assetAdminName) { if (form.assetAdminId && form.assetAdminName) {
assetAdminOptions.value = [{ teacherNo: form.assetAdminId, name: form.assetAdminName }] assetAdminOptions.value = [{ teacherNo: form.assetAdminId, realName: form.assetAdminName, name: form.assetAdminName }]
} }
} }
@@ -305,7 +305,7 @@ const onPurchaserChange = (teacherNo: string) => {
const selected = purchaserOptions.value.find((item: any) => item.teacherNo === teacherNo) const selected = purchaserOptions.value.find((item: any) => item.teacherNo === teacherNo)
if (selected) { if (selected) {
form.purchaserId = selected.teacherNo form.purchaserId = selected.teacherNo
form.purchaserName = selected.name form.purchaserName = selected.realName || selected.name
} }
} }
@@ -318,7 +318,7 @@ const onAssetAdminChange = (teacherNo: string) => {
const selected = assetAdminOptions.value.find((item: any) => item.teacherNo === teacherNo) const selected = assetAdminOptions.value.find((item: any) => item.teacherNo === teacherNo)
if (selected) { if (selected) {
form.assetAdminId = selected.teacherNo form.assetAdminId = selected.teacherNo
form.assetAdminName = selected.name form.assetAdminName = selected.realName || selected.name
} }
} }