From c7ac95fc8fb56ffcd16e8ce5cb5945ca391f6ae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=9F=E6=9E=97=E9=93=96?= Date: Wed, 29 Jul 2026 13:23:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=90=8C=E6=AD=A5=E5=B2=97=E4=BD=8D?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=B8=AD=E7=9A=84=E6=A8=A1=E6=9D=BF=E5=90=8D?= =?UTF-8?q?=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PerformanceSurveyAdminConfig.test.tsx | 43 +++++++++++++++++++ .../PerformanceSurveyAdminConfig.tsx | 18 +++++--- 2 files changed, 55 insertions(+), 6 deletions(-) diff --git a/app/performance-survey/PerformanceSurveyAdminConfig.test.tsx b/app/performance-survey/PerformanceSurveyAdminConfig.test.tsx index 1898966e..e2281503 100644 --- a/app/performance-survey/PerformanceSurveyAdminConfig.test.tsx +++ b/app/performance-survey/PerformanceSurveyAdminConfig.test.tsx @@ -301,6 +301,49 @@ describe('PerformanceSurveyAdminConfig', () => { expect(screen.queryByRole('button', { name: '复制岗位' })).not.toBeInTheDocument() }) + test('岗位模板搜索和已选考核项同步显示模板栏的最新名称', async () => { + const configuration = { + ...config, + groups: config.groups.map((group: any) => group.id === 'group-1' + ? { + ...group, + effectivePlan: { + ...group.effectivePlan, + templateVersionIds: [], + }, + } + : group), + templates: config.templates.map((template: any) => template.id === 'template-1' + ? { + ...template, + versions: [{ + ...template.versions[0], + id: 'version-draft-2', + version: 2, + status: 'draft', + effectiveMonth: null, + definition: { + ...template.versions[0].definition, + name: '品牌创意部门', + }, + }, template.versions[0]], + } + : template), + } + const request = createRequest(configuration) + render() + + await waitFor(() => expect(screen.getByRole('heading', { name: '岗位考核项' })).toBeInTheDocument()) + fireEvent.change(screen.getByLabelText('添加考核项'), { target: { value: '品牌创意部门' } }) + + const option = screen.getByRole('button', { name: /品牌创意部门.*v1/ }) + expect(option).toBeInTheDocument() + expect(screen.queryByRole('button', { name: /视觉案例评分.*v1/ })).not.toBeInTheDocument() + + fireEvent.click(option) + expect(screen.getByText('品牌创意部门')).toBeInTheDocument() + }) + test('新增岗位使用确定的 collection POST 契约', async () => { const request = createRequest() render() diff --git a/app/performance-survey/PerformanceSurveyAdminConfig.tsx b/app/performance-survey/PerformanceSurveyAdminConfig.tsx index 44b66560..c55d55b3 100644 --- a/app/performance-survey/PerformanceSurveyAdminConfig.tsx +++ b/app/performance-survey/PerformanceSurveyAdminConfig.tsx @@ -305,6 +305,10 @@ function getTemplateAvailability(template: TemplateRecord, month: string) { } } +function getTemplateDisplayName(template: TemplateRecord) { + return template.versions[0]?.definition.name?.trim() || template.name +} + function getTemplateListState(template: TemplateRecord, month: string): { label: string tone: StatusTone @@ -891,7 +895,9 @@ function PositionConfigWorkspace({ return availableTemplateVersions.filter(({ template, version }) => ( !templateVersionIds.includes(version.id) && !selectedTemplateIds.has(template.id) - && `${version.definition.name} ${template.name}`.toLocaleLowerCase('zh-CN').includes(keyword) + && `${getTemplateDisplayName(template)} ${version.definition.name} ${template.name}` + .toLocaleLowerCase('zh-CN') + .includes(keyword) )).slice(0, 8) }, [availableTemplateVersions, templateSearch, templateVersionIds, versionById]) @@ -1164,7 +1170,7 @@ function PositionConfigWorkspace({ className="flex min-h-11 w-full items-center justify-between gap-3 border-b border-[#eeeeee] px-3 py-2 text-left last:border-b-0 hover:bg-[#f4f6ff]" > - {version.definition.name} + {getTemplateDisplayName(template)} v{version.version} @@ -1181,7 +1187,7 @@ function PositionConfigWorkspace({ return (
-
{item?.version.definition.name || item?.template.name || '历史模板'}
+
{item ? getTemplateDisplayName(item.template) : '历史模板'}
第 {index + 1} 项{item ? ` · v${item.version.version}` : ''}
@@ -1449,7 +1455,7 @@ function TemplateConfigWorkspace({ } const selectedTemplateName = selectedTemplate - ? selectedTemplate.versions[0]?.definition.name || selectedTemplate.name + ? getTemplateDisplayName(selectedTemplate) : '新建模板' const selectedTemplateState = selectedTemplate ? getTemplateListState(selectedTemplate, month) @@ -1482,7 +1488,7 @@ function TemplateConfigWorkspace({ {data.templates.map((template) => ( ))} @@ -1506,7 +1512,7 @@ function TemplateConfigWorkspace({
{data.templates.map((template) => { const state = getTemplateListState(template, month) - const templateName = template.versions[0]?.definition.name || template.name + const templateName = getTemplateDisplayName(template) return (