import KFModal from '@/components/KFModal'; import { type CodeConfigData } from '@/pages/CodeConfig/List'; import { addCodeConfigReq, updateCodeConfigReq } from '@/services/codeConfig'; import { to } from '@/utils/promise'; import { Form, Input, Radio, message, type ModalProps } from 'antd'; import { omit } from 'lodash'; export enum RepoVisibleEnum { Private = 0, // 私有 Public = 1, // 公开 } export enum VerifyModeEnum { Password = 0, // 用户名密码 SSH = 1, // SSH Key } export enum OperationTypeEnum { Create = 0, // 新建 Update = 1, // 更新 } type FormData = Partial; interface AddCodeConfigModalProps extends Omit { opType: OperationTypeEnum; codeConfigData?: CodeConfigData; onOk: () => void; } function AddCodeConfigModal({ opType, codeConfigData, onOk, ...rest }: AddCodeConfigModalProps) { // 上传请求 const createCodeConfig = async (formData: FormData) => { const params: FormData & { id?: number } = { ...formData, }; // 清除多余的信息 if (formData.code_repo_vis === RepoVisibleEnum.Public) { omit(params, ['verify_mode', 'git_user_name', 'git_password', 'ssh_key']); } if (formData.verify_mode === VerifyModeEnum.Password) { omit(params, ['ssh_key']); } else if (formData.verify_mode === VerifyModeEnum.SSH) { omit(params, ['git_user_name', 'git_password']); } if (opType === OperationTypeEnum.Update) { params.id = codeConfigData?.id; } const request = opType === OperationTypeEnum.Create ? addCodeConfigReq : updateCodeConfigReq; const [res] = await to(request(params)); if (res) { message.success(opType === OperationTypeEnum.Create ? '创建成功' : '修改成功'); onOk?.(); } }; // 提交 const onFinish = (formData: FormData) => { createCodeConfig(formData); }; // 设置初始值 const initialValues: FormData = codeConfigData ?? { code_repo_vis: RepoVisibleEnum.Public, verify_mode: VerifyModeEnum.Password, }; if (initialValues.verify_mode === undefined || initialValues.verify_mode === null) { initialValues.verify_mode = VerifyModeEnum.Password; } return (
{/* 禁止 Chrome 自动填充 */} {/* */} 公开 私有 prevValues?.code_repo_vis !== currentValues?.code_repo_vis } > {({ getFieldValue }) => { return getFieldValue('code_repo_vis') === RepoVisibleEnum.Private ? ( <> 用户名/密码 SSH Key prevValues?.verify_mode !== currentValues?.verify_mode } > {({ getFieldValue }) => { return getFieldValue('verify_mode') === VerifyModeEnum.Password ? ( <> ) : ( ); }} ) : null; }}
); } export default AddCodeConfigModal;