import { App, Button, Dropdown, Form, Input, message, Modal, Radio, Select } from "antd" import React, { useEffect, useState } from "react" import UploadImg from "../../components/materialMould/uploadImg" import UploadVideo from "../../components/materialMould/uploadVideo" import { CloseCircleOutlined, MinusOutlined, PlusOutlined } from '@ant-design/icons'; import { useAjax } from "@/Hook/useAjax"; import { createLandingPageApi, editLandingPageApi } from "../../API/miniProgramPages"; interface Props { groupList: { label: string, value: number }[] corpList: { corpName: string, corpId: string, corpUserList: { corpUserName: string, corpUserId: string }[] }[] pageSpecs: TASK_MINI_PAGE_CREATE.PageSpecsProps visible?: boolean onChange?: () => void onClose?: () => void initialValues?: any } const Submit: React.FC = ({ corpList, visible, pageSpecs, onChange, onClose, groupList, initialValues }) => { /***********************************/ const { message } = App.useApp(); const [form] = Form.useForm(); const corpId = Form.useWatch('corpId', form) const [corpUserList, setCorpUserList] = useState<{ corpUserName: string, corpUserId: string }[]>([]) const createLandingPage = useAjax((params) => createLandingPageApi(params)) const editLandingPage = useAjax((params) => editLandingPageApi(params)) /***********************************/ useEffect(() => { if (corpId) { setCorpUserList(corpList.find(item => item.corpId === corpId)?.corpUserList || []) } else { setCorpUserList([]) } }, [corpList, corpId]) const handleOk = () => { form.validateFields().then(valid => { const { bgColor, globalElementsSpecList, pageElementsSpecList } = pageSpecs let pageSpecsList = [] let qrCodeFloatList: { siteId: number, urlList: string[] }[] = [] if (globalElementsSpecList?.length > 0) { pageSpecsList = [...pageElementsSpecList.map(item => { delete (item as any)?.comptActive return item }), ...globalElementsSpecList.map(item => { delete item.comptActive return item })] const floatButton = globalElementsSpecList?.find(item => item.elementType === 'FLOAT_BUTTON') if (floatButton) { qrCodeFloatList = [{ siteId: floatButton.id, urlList: floatButton.qrCodeFloatList }] } } const qrCodeList = pageElementsSpecList.filter(item => item.elementType === 'QR_CODE')?.map((item: TASK_MINI_PAGE_CREATE.QrCode) => ({ siteId: item.id, urlList: item.imageList })) const { pageName, ...v } = valid const params = { content: JSON.stringify({ pageName, bgColor, elementsSpecList: pageSpecsList }), qrCodeFloatList, qrCodeList, ...v } if (initialValues?.id) { editLandingPage.run({ ...params, id: initialValues.id }).then(res => { if (res?.data) { message.success('修改成功') onChange?.() } }) } else { createLandingPage.run(params).then(res => { if (res?.data) { message.success('新增成功') onChange?.() } }) } }).catch(err => { }) } return 落地页基础配置} open={visible} onCancel={onClose} onOk={handleOk} width={750} confirmLoading={createLandingPage?.loading || editLandingPage?.loading} maskClosable={false} >
{ message.error(errorFields?.[0]?.errors?.[0]) }} onFinish={handleOk} initialValues={initialValues} > 落地页名称} name="name" rules={[{ required: true, message: '请输入落地页名称!' }]}> 落地页标题} name="pageName" rules={[{ required: true, message: '请输入落地页标题!' }]}> 落地页备注} name="remark"> 小程序预览AppId} name="previewAppId"> 企微主体} name="corpId" rules={[{ required: true, message: '请选择主体!' }]}> ({ label: item.corpUserName, value: item.corpUserId }))} showSearch filterOption={(input, option) => (option?.label ?? '').toLowerCase().includes(input.toLowerCase()) } mode="multiple" /> } 书名} name="bookName"> 项目组} name="projectGroupIdList" rules={[{ required: true, message: '请选择项目组!' }]}>