hts/apps/migrant/app/[locale]/manage/new/create-form.tsx

326 lines
7.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use client";
import React, { useEffect, useState } from 'react';
import { Button, Form, Input, InputNumber, Modal, Select, message } from 'antd';
import { Loading } from "@/components/dashboard/loading";
import service from '@/lib/http/service';
import toast from 'react-hot-toast';
import { StaffsInfo, addStaff } from '@/lib/http/staff';
import { useRouter } from 'next/navigation';
export interface CreateFormProps {
onCancel?: () => void;
onSubmit?: (values: StaffsInfo) => void;
createModalVisible?: boolean;
}
const FormItem = Form.Item;
const formLayout = {
labelCol: { span: 7 },
wrapperCol: { span: 13 },
};
/**
* 添加节点
* @param fields
*/
const handleAdd = async (fields: StaffsInfo) => {
const hide = message.loading('正在添加');
try {
// fields.password = md5(fields.password)
// fields.user_alias = fields.user_name
console.log("----------:", fields)
await addStaff({ ...fields });
hide();
message.success('添加成功');
return true;
} catch (error) {
hide();
message.error('添加失败请重试!');
return false;
}
};
const CreateForm: React.FC<CreateFormProps> = (props) => {
const [form] = Form.useForm();
const [initLoading, setInitLoading] = useState(false);
const {
onSubmit,
onCancel,
createModalVisible,
} = props;
useEffect(() => {
if (form && !createModalVisible) {
form.resetFields();
}
}, [props.createModalVisible]);
const handleSubmit = () => {
if (!form) return;
form.submit();
};
// const handleFinish = (values: JobListItem) => {
// if (onSubmit) {
// onSubmit(values);
// }
// };
const handleFinish = async (value: StaffsInfo) => {
console.log("onFinish ---", value);
await service.post('/api/v1/customer/create/staff', {
// "name":"我的AI员工1号", //员工名称(必填)
// "org_name":"主板销售部", //组织名称(必填)
// "tone":"亲切且专业", //语气
// "output_length":"简短", //回复长度
// "description":"销冠的潜质", //员工描述
// "avatar_url":"https://www.pic.com/avatar001.jpg" //头像URL
name: value.name,
org_name: value.org_name,
tone: value.tone,
output_length: value.output_length,
description: value.description,
avatar_url: value.avatar_url,
}, {
headers: {
// 'Authorization': token
}
}).then(function (result: any) {
console.log("result:", result)
if (result && result.header.code != 0) {
toast.error(result.header.message)
return
}
// setInitLoading(false);
// categoriesRef.current.values
const tags = result.data.list
// getNewListFunc(1)
}).catch((err) => {
// setInitLoading(false);
});
};
const renderContent = () => {
return (
<>
<Form.Item label="版本">
<Select defaultValue="demo" disabled>
<Select.Option value="demo"></Select.Option>
<Select.Option value="demo2"></Select.Option>
</Select>
</Form.Item>
<Form.Item
label="设置组织名称"
name="org_name"
rules={[{ required: true }]}
>
<Input
// variant="borderless"
// className="placeholder:text-[#808080] "
// style={{
// background: "#F5F5F5",
// borderRadius: "0",
// // width: 360
// }}
placeholder="设置名称"
/>
</Form.Item>
<Form.Item
label="员工名称(必填)"
name="name"
rules={[{ required: true }]}
>
<Input
// variant="borderless"
// className="placeholder:text-[#808080] "
// style={{
// background: "#F5F5F5",
// borderRadius: "0",
// // width: 360
// }}
placeholder="设置名称"
/>
</Form.Item>
<Form.Item
label="客服语气"
name="tone"
// rules={[{ required: true }]}
>
{/* communication tones交流语气友好且真诚friendly and sincere, 专业且稳重professional and cautious, 清晰且直接clear and direct */}
{/* defaultValue="friendly and sincere" */}
<Select id="tone" placeholder={'请选择语气'}>
<Select.Option value="friendly and sincere"></Select.Option>
<Select.Option value="professional and cautious"></Select.Option>
<Select.Option value="clear and direct"></Select.Option>
</Select>
</Form.Item>
<Form.Item
label="回答长度"
name="output_length"
// rules={[{ required: true }]}
>
<Select id="output_length" placeholder={'请选择回答长度'}>
<Select.Option value="short">()</Select.Option>
<Select.Option value="medium"></Select.Option>
<Select.Option value="longer"></Select.Option>
</Select>
</Form.Item>
<Form.Item
label="上传LOGO"
name="avatar_url"
// rules={[{ required: true }]}
>
{/* <Select defaultValue="one" >
<Select.Option value="one">默认</Select.Option>
</Select> */}
<Input
// variant="borderless"
// className="placeholder:text-[#808080] "
// style={{
// background: "#F5F5F5",
// borderRadius: "0",
// // width: 360
// }}
placeholder="设置Logo"
/>
</Form.Item>
<Form.Item label="员工描述"
name="description"
// wrapperCol={{
// offset: 2,
// span: 16
// }}
// validateStatus="error"
// hasFeedback
// help="Should have something"
>
<Input.TextArea
// allowClear
// showCount
// style={{
// background: "#fff",
// borderRadius: "0",
// border: "none",
// height: "100px",
// }}
className=""
/>
</Form.Item>
{/* <Button type="primary" htmlType="submit" className="bg-[#000] w-full rounded">
创建AI客服
</Button> */}
<Form.Item wrapperCol={{ span: 12, offset: 12 }}>
<Button
// disabled={initLoading || !form.formState.isValid}
disabled={
initLoading
// ||
// !form.isFieldsTouched(true) ||
// !!form.getFieldsError().filter(({ errors }) => errors.length).length
}
className="mt-4 bg-[#000] text-[#fff]"
htmlType="submit"
>
{initLoading ? <Loading /> : "创建AI客服"}
</Button>
</Form.Item>
</>
);
};
const modalFooter = { okText: '保存', onOk: handleSubmit, onCancel };
const router = useRouter();
return (
// <Modal
// forceRender
// destroyOnClose
// title="新建职位信息"
// open={createModalVisible}
// {...modalFooter}
// >
// <Form
// {...formLayout}
// form={form}
// onFinish={handleFinish}
// >
// {renderContent()}
// </Form>
// </Modal>
<div>
<Form
{...formLayout}
form={form}
onFinish={async (e) => {
if (await handleAdd(e)) {
router.push("/manage/staffs")
}
}}
>
{renderContent()}
</Form>
</div>
);
};
export default CreateForm;