import React from 'react'; import { useSelector } from 'react-redux'; /** * 知识库表单组件 */ const KnowledgeBaseForm = ({ formData, formErrors, isSubmitting, onInputChange, onSubmit, onDelete, onTypeChange, isAdmin, departments, availableGroups, }) => { // 获取当前用户信息 const currentUser = useSelector((state) => state.auth.user); // 根据用户角色确定可以设置的知识库类型 const isLeader = currentUser?.role === 'leader'; // 获取当前用户可以设置的知识库类型 const getAvailableTypes = () => { if (isAdmin) { return [ { value: 'admin', label: '公共知识库' }, { value: 'leader', label: '组长级知识库' }, { value: 'member', label: '组内知识库' }, { value: 'private', label: '私有知识库' }, { value: 'secret', label: '私密知识库' }, ]; } else if (isLeader) { return [ { value: 'admin', label: '公共知识库' }, { value: 'member', label: '组内知识库' }, { value: 'private', label: '私有知识库' }, ]; } else { return [ { value: 'admin', label: '公共知识库' }, { value: 'private', label: '私有知识库' }, ]; } }; const availableTypes = getAvailableTypes(); // 检查类型是否被更改 const hasTypeChanged = formData.original_type && formData.original_type !== formData.type; // 检查部门或组别是否被更改 const hasDepartmentOrGroupChanged = (formData.original_department && formData.department !== formData.original_department) || (formData.original_group && formData.group !== formData.original_group); // 是否显示类型更改按钮 const showTypeChangeButton = hasTypeChanged || (isAdmin && hasDepartmentOrGroupChanged); return (
知识库设置
{formErrors.name &&
{formErrors.name}
}
{formErrors.desc &&
{formErrors.desc}
}
{availableTypes.map((type) => (
))}
{currentUser?.role === 'member' && ( 您可以修改知识库类型为公共或私有。 )} {formErrors.type &&
{formErrors.type}
}
{/* 仅当不是私有知识库时才显示部门选项 */} {formData.type === 'member' || formData.type === 'leader' && (
{isAdmin ? ( <> {formErrors.department && (
{formErrors.department}
)} ) : ( <> )}
)} {/* 仅当不是私有知识库时才显示组别选项 */} {formData.type === 'member' && (
{isAdmin ? ( <> {formErrors.group &&
{formErrors.group}
} {!formData.department && ( 请先选择部门 )} ) : ( <> )}
)} {/* 类型更改按钮 */} {showTypeChangeButton && (
{hasTypeChanged && (

知识库类型更改为 {formData.type}

)} {isAdmin && hasDepartmentOrGroupChanged &&

部门/组别已更改

} 点击更新按钮单独保存这些更改
)}
); }; export default KnowledgeBaseForm;