diff --git a/app/performance-survey/[[...path]]/page.tsx b/app/performance-survey/[[...path]]/page.tsx index 20741b3..8cfd593 100644 --- a/app/performance-survey/[[...path]]/page.tsx +++ b/app/performance-survey/[[...path]]/page.tsx @@ -2130,7 +2130,6 @@ function CreateSurveyForm({ const [saving, setSaving] = useState(false) const [publishingLabel, setPublishingLabel] = useState('') const [error, setError] = useState(null) - const defaultTargetInitializedRef = useRef(false) const selectedTemplate = templateCode || templates[0]?.code || '' const selectedTemplateInfo = templates.find((template) => template.code === selectedTemplate) @@ -2140,33 +2139,26 @@ function CreateSurveyForm({ 1, Number(selectedTemplateInfo?.requiredWorkItemCount || DEFAULT_VISUAL_CASE_COUNT), ) + const effectiveTargetEmployees = useMemo( + () => surveyKind === 'item_course' + ? [] + : mergeEmployeesById(currentEmployee ? [currentEmployee] : [], targetEmployees), + [currentEmployee, surveyKind, targetEmployees], + ) const currentTargetSelected = Boolean( - currentEmployee?.id && targetEmployees.some((employee) => employee.id === currentEmployee.id), + currentEmployee?.id && effectiveTargetEmployees.some((employee) => employee.id === currentEmployee.id), ) const createdUploadTarget = visualTemplateSelected ? (createdSurvey?.targets || []).find((target: any) => target.canUploadWorkItems) : null const delegatedTargetCount = surveyKind === 'item_course' ? 0 - : targetEmployees.filter((employee) => employee.id !== currentEmployee?.id).length + : effectiveTargetEmployees.filter((employee) => employee.id !== currentEmployee?.id).length const evaluatorEmployees = useMemo( () => mergeEmployeesById(manualEvaluatorEmployees, ...Object.values(evaluatorDepartmentEmployees)), [manualEvaluatorEmployees, evaluatorDepartmentEmployees], ) - useEffect(() => { - if ( - defaultTargetInitializedRef.current - || surveyKind === 'item_course' - || !currentEmployee?.id - ) { - return - } - - defaultTargetInitializedRef.current = true - setTargetEmployees((current) => current.length > 0 ? current : [currentEmployee]) - }, [currentEmployee, surveyKind]) - const removeEvaluatorEmployee = (id: string) => { setManualEvaluatorEmployees((current) => current.filter((employee) => employee.id !== id)) setEvaluatorDepartmentEmployees((current) => { @@ -2193,8 +2185,8 @@ function CreateSurveyForm({ if (surveyKind === 'item_course' && targetItemsToSubmit.length === 0) { throw new Error(`请填写${selectedTemplateInfo?.itemName || '课程、事项或活动'}名称`) } - if (surveyKind !== 'item_course' && targetEmployees.length === 0) { - throw new Error(`请至少选择 1 个${selectedTemplateInfo?.ownerRoleName || '被考核人'}`) + if (surveyKind !== 'item_course' && !currentEmployee?.id) { + throw new Error('当前账户尚未匹配考核人员档案,暂时无法发起调研') } const visualCasesToSubmit = visualCases.slice(0, visualRequiredCount) if (visualTemplateSelected && currentTargetSelected) { @@ -2221,7 +2213,7 @@ function CreateSurveyForm({ templateCode: selectedTemplate, dueAt: assessmentMonth ? `${assessmentMonth}-01T00:00:00` : null, openNow, - targetEmployeeIds: surveyKind === 'item_course' ? [] : targetEmployees.map((employee) => employee.id), + targetEmployeeIds: effectiveTargetEmployees.map((employee) => employee.id), targetItems: targetItemsToSubmit, evaluatorEmployeeIds: evaluatorEmployees.map((employee) => employee.id), }), @@ -2252,7 +2244,7 @@ function CreateSurveyForm({ setTitle('') setDescription('') setDueAt(getCurrentMonthValue()) - setTargetEmployees(surveyKind === 'item_course' || !currentEmployee ? [] : [currentEmployee]) + setTargetEmployees([]) setManualEvaluatorEmployees([]) setEvaluatorDepartmentValues([]) setEvaluatorDepartmentEmployees({}) @@ -2310,7 +2302,7 @@ function CreateSurveyForm({ {error &&
{error}
}