简历集成、简历预览、简历编辑、修改密码等功能开发
Some checks failed
Node CI / build (14.x, macOS-latest) (push) Has been cancelled
Node CI / build (14.x, ubuntu-latest) (push) Has been cancelled
Node CI / build (14.x, windows-latest) (push) Has been cancelled
Node CI / build (16.x, macOS-latest) (push) Has been cancelled
Node CI / build (16.x, ubuntu-latest) (push) Has been cancelled
Node CI / build (16.x, windows-latest) (push) Has been cancelled
coverage CI / build (push) Has been cancelled
Node pnpm CI / build (16.x, macOS-latest) (push) Has been cancelled
Node pnpm CI / build (16.x, ubuntu-latest) (push) Has been cancelled
Node pnpm CI / build (16.x, windows-latest) (push) Has been cancelled

This commit is contained in:
francis-fh
2026-07-20 10:22:51 +08:00
parent d2311d0c5b
commit dfe22c6307
19 changed files with 6098 additions and 4935 deletions

View File

@@ -22,15 +22,20 @@ const InterviewInvite: React.FC<InterviewInviteProps> = (props) => {
const [interviewForm] = Form.useForm();
const [interviewMethod, setInterviewMethod] = useState<string>('online');
const [meetingType, setMeetingType] = useState<string>('shz_video');
const [submitting, setSubmitting] = useState<boolean>(false);
const [alreadyInvited, setAlreadyInvited] = useState<boolean>(false);
const [checkingInvitation, setCheckingInvitation] = useState<boolean>(false);
useEffect(() => {
if (open && userId && jobId) {
checkExistingInvitation();
if (open && userId) {
if (jobId) {
checkExistingInvitation();
}
interviewForm.resetFields();
setInterviewMethod('online');
setMeetingType('shz_video');
interviewForm.setFieldsValue({ interviewMethod: 'online', meetingType: 'shz_video', meetingLink: 'https://mc.repohub.cn/pro.html' });
}
}, [open, userId, jobId]);
@@ -74,6 +79,7 @@ const InterviewInvite: React.FC<InterviewInviteProps> = (props) => {
? dayjs(values.interviewTime).format('YYYY-MM-DD HH:mm:ss')
: undefined,
interviewMethod: values.interviewMethod,
meetingType: values.meetingType,
meetingLink: values.meetingLink,
meetingPassword: values.meetingPassword,
interviewLocation: values.interviewLocation,
@@ -89,6 +95,7 @@ const InterviewInvite: React.FC<InterviewInviteProps> = (props) => {
setAlreadyInvited(true);
interviewForm.resetFields();
setInterviewMethod('online');
setMeetingType('shz_video');
} else {
message.error(response.msg || '发送失败');
}
@@ -118,7 +125,7 @@ const InterviewInvite: React.FC<InterviewInviteProps> = (props) => {
<Form
form={interviewForm}
layout="vertical"
initialValues={{ interviewMethod: 'online', meetingLink: 'https://mc.repohub.cn/pro.html' }}
initialValues={{ interviewMethod: 'online', meetingType: 'shz_video', meetingLink: 'https://mc.repohub.cn/pro.html' }}
>
<Form.Item
name="interviewMethod"
@@ -147,12 +154,53 @@ const InterviewInvite: React.FC<InterviewInviteProps> = (props) => {
</Form.Item>
{interviewMethod === 'online' && (
<Form.Item
name="meetingLink"
label="在线会议链接"
>
<Input placeholder="请输入在线会议链接" />
</Form.Item>
<>
<Form.Item
name="meetingType"
label="在线会议类型"
rules={[{ required: true, message: '请选择会议类型' }]}
>
<Select
placeholder="请选择会议类型"
onChange={(value) => {
setMeetingType(value);
if (value === 'shz_video') {
interviewForm.setFieldsValue({ meetingLink: 'https://mc.repohub.cn/pro.html', meetingPassword: '' });
} else {
interviewForm.setFieldsValue({ meetingLink: '', meetingPassword: '' });
}
}}
>
<Option value="shz_video"></Option>
<Option value="tencent_meeting"></Option>
</Select>
</Form.Item>
{meetingType === 'shz_video' && (
<Form.Item
name="meetingLink"
label="会议链接"
>
<Input disabled placeholder="https://mc.repohub.cn/pro.html" />
</Form.Item>
)}
{meetingType === 'tencent_meeting' && (
<>
<Form.Item
name="meetingLink"
label="腾讯会议链接"
rules={[{ required: true, message: '请输入腾讯会议链接' }]}
>
<Input placeholder="请输入腾讯会议链接" />
</Form.Item>
<Form.Item
name="meetingPassword"
label="会议密码"
>
<Input placeholder="请输入会议密码(选填)" />
</Form.Item>
</>
)}
</>
)}
{interviewMethod === 'offline' && (