import { App, Button, Card, Form, Input, Modal, Select } from "antd"; import React from "react"; import { FANQIELINKTYPE, HUASHENGLINKTYPE, LINKTYPE, WENDINGLINKTYPE } from "./const"; import { PlusOutlined, MinusCircleOutlined } from "@ant-design/icons"; import { useAjax } from "@/Hook/useAjax"; import { addCorpAutoLinkApi } from "../../API/bookLink"; import PagePromoLinkCreateDTO from "./components/yuewen/pagePromoLinkCreateDTO"; import BookPromoLinkCreateDTO from "./components/yuewen/bookPromoLinkCreateDTO"; import RechargeActivityLinkDTO from "./components/yuewen/rechargeActivityLinkDTO"; import GiftActivityLinkDTO from "./components/yuewen/giftActivityLinkDTO"; import ConsumeActivityLinkDTO from "./components/yuewen/consumeActivityLinkDTO"; import PagePromoLinkCreateDTOFanQie from "./components/fanqie/pagePromoLinkCreateDTO"; import BookPromoLinkCreateDTOFanqie from "./components/fanqie/bookPromoLinkCreateDTO"; import RechargeActivityLinkDTOFanqie from "./components/fanqie/rechargeActivityLinkDTO"; import GiftActivityLinkDTOFanQie from "./components/fanqie/giftActivityLinkDTO"; import ConsumeActivityLinkDTOFanQie from "./components/fanqie/consumeActivityLinkDTO"; import BookPromoLinkCreateDTOHuaSheng from './components/huasheng/bookPromoLinkCreateDTO' import RechargeActivityLinkDTOHuaSheng from './components/huasheng/rechargeActivityLinkDTO' import GiftActivityLinkDTOHuaSheng from './components/huasheng/giftActivityLinkDTO' import BookPromoLinkCreateDTOWenDing from './components/wending/bookPromoLinkCreateDTO' import RechargeActivityLinkDTOWenDing from './components/wending/rechargeActivityLinkDTO' import dayJs from "dayjs"; interface Props { mpList: { label: string, value: number }[] bookPlatForm: TASK_CREATE.BookPlatFormProps[] visible?: boolean; onChange?: () => void onClose?: () => void initialValues?: any } export const DispatchBookLink = React.createContext(null); /** * 书城链接生成 * @param param0 * @returns */ const ModalBookLink: React.FC = ({ mpList, bookPlatForm, visible, onChange, onClose, initialValues = { yueWenCreateLinkDTOList: [{}] } }) => { /********************************************/ const { message } = App.useApp() const [form] = Form.useForm(); const yueWenCreateLinkDTOList = Form.useWatch('yueWenCreateLinkDTOList', form) const fanQieCreateLinkDTOList = Form.useWatch('fanQieCreateLinkDTOList', form) const huaShengCreateLinkDTOList = Form.useWatch('huaShengCreateLinkDTOList', form) const wenDingCreateLinkDTOList = Form.useWatch('wenDingCreateLinkDTOList', form) const platform = Form.useWatch('platform', form) const mpAccountIds = Form.useWatch('mpAccountIds', form) const addCorpAutoLink = useAjax((params) => addCorpAutoLinkApi(params)) /********************************************/ const handleOk = () => { form.validateFields().then((values) => { console.log(values) let params: { [x: string]: any } = {} if (values?.platform === 'YUE_WEN') { params = { mpAccountIds: values.mpAccountIds, platform: values.platform, yueWenCreateLinkDTOList: values.yueWenCreateLinkDTOList.map(item => { const { linkType, pagePromoLinkCreateDTO, bookPromoLinkCreateDTO, rechargeActivityLinkDTO, consumeActivityLinkDTO, giftActivityLinkDTO, ...rest } = item if (linkType === '1') { return { ...rest, pagePromoLinkCreateDTO, linkType } } else if (linkType === '2') { return { ...rest, bookPromoLinkCreateDTO, linkType } } else if (linkType === '3') { const { activityTime, display, isDayRepeat, rechargeCount, ...ralDto } = rechargeActivityLinkDTO return { ...rest, rechargeActivityLinkDTO: { ...ralDto, rechargeCount, isDayRepeat: rechargeCount == 1 ? isDayRepeat : false, startTime: dayJs(activityTime[0]).format('YYYY-MM-DD'), endTime: dayJs(activityTime[1]).format('YYYY-MM-DD'), display: display?.join(',') }, linkType } } else if (linkType === '4') { const { activityTime, display, ...calDto } = giftActivityLinkDTO return { ...rest, giftActivityLinkDTO: { ...calDto, startTime: dayJs(activityTime[0]).format('YYYY-MM-DD'), endTime: dayJs(activityTime[1]).format('YYYY-MM-DD'), display: display?.join(',') }, linkType } } else if (linkType === '5') { const { activityTime, display, ...galDto } = consumeActivityLinkDTO return { ...rest, consumeActivityLinkDTO: { ...galDto, startTime: dayJs(activityTime[0]).format('YYYY-MM-DD'), endTime: dayJs(activityTime[1]).format('YYYY-MM-DD'), display: display?.join(',') }, linkType } } }) } } else if (values?.platform === 'FAN_QIE') { params = { mpAccountIds: values.mpAccountIds, platform: values.platform, fanQieCreateLinkDTOList: values.fanQieCreateLinkDTOList.map(item => { const { linkType, pagePromoLinkCreateDTO, bookPromoLinkCreateDTO, rechargeActivityLinkDTO, consumeActivityLinkDTO, giftActivityLinkDTO, ...rest } = item if (linkType === '1') { return { ...rest, pagePromoLinkCreateDTO, linkType } } else if (linkType === '2') { return { ...rest, bookPromoLinkCreateDTO, linkType } } else if (linkType === '3') { const { activityTime, ...ralDto } = rechargeActivityLinkDTO return { ...rest, rechargeActivityLinkDTO: { ...ralDto, startTime: dayJs(activityTime[0]).format('YYYY-MM-DD'), endTime: dayJs(activityTime[1]).format('YYYY-MM-DD') }, linkType } } else if (linkType === '4') { const { activityTime, ...calDto } = giftActivityLinkDTO return { ...rest, giftActivityLinkDTO: { ...calDto, startTime: dayJs(activityTime[0]).format('YYYY-MM-DD'), endTime: dayJs(activityTime[1]).format('YYYY-MM-DD') }, linkType } } else if (linkType === '5') { const { activityTime, ...galDto } = consumeActivityLinkDTO return { ...rest, consumeActivityLinkDTO: { ...galDto, startTime: dayJs(activityTime[0]).format('YYYY-MM-DD'), endTime: dayJs(activityTime[1]).format('YYYY-MM-DD') }, linkType } } }) } } else if (values?.platform === 'HUA_SHENG') { params = { mpAccountIds: values.mpAccountIds, platform: values.platform, huaShengCreateLinkDTOList: values.huaShengCreateLinkDTOList.map(item => { const { linkType, bookPromoLinkCreateDTO, rechargeActivityLinkDTO, giftActivityLinkDTO, ...rest } = item if (linkType === '1') { return { ...rest, bookPromoLinkCreateDTO, linkType } } else if (linkType === '2') { const { activityTime, display, rechargeAmount, giftAmount, ...ralDto } = rechargeActivityLinkDTO return { ...rest, rechargeActivityLinkDTO: { ...ralDto, productName: rechargeAmount + '-' + giftAmount, startTime: dayJs(activityTime[0]).format('YYYY-MM-DD'), endTime: dayJs(activityTime[1]).format('YYYY-MM-DD'), display: display?.join(',') }, linkType } } else if (linkType === '3') { const { activityTime, display, rechargeAmount, giftAmount, ...ralDto } = giftActivityLinkDTO return { ...rest, giftActivityLinkDTO: { ...ralDto, startTime: dayJs(activityTime[0]).format('YYYY-MM-DD'), endTime: dayJs(activityTime[1]).format('YYYY-MM-DD'), display: display?.join(',') }, linkType } } }) } } else if (values?.platform === 'WEN_DING') { params = { mpAccountIds: values.mpAccountIds, platform: values.platform, wenDingCreateLinkDTOList: values.wenDingCreateLinkDTOList.map(item => { const { linkType, bookPromoLinkCreateDTO, rechargeActivityLinkDTO, giftActivityLinkDTO, ...rest } = item if (linkType === '1') { return { ...rest, bookPromoLinkCreateDTO, linkType } } else if (linkType === '2') { const { activityTime, ...ralDto } = rechargeActivityLinkDTO return { ...rest, rechargeActivityLinkDTO: { ...ralDto, startTime: dayJs(activityTime[0]).format('YYYY-MM-DD'), endTime: dayJs(activityTime[1]).format('YYYY-MM-DD') }, linkType } } }) } } else { message.error('当前书城占不支持') return } addCorpAutoLink.run(params).then(res => { if (res?.data) { message.success('添加成功') onChange?.() } }) }).catch(() => { form.submit() }); } return 书城链接生成} open={visible} onCancel={onClose} onOk={handleOk} width={650} confirmLoading={addCorpAutoLink.loading} >
{ message.error(errorFields?.[0]?.errors?.[0]) }} onFinish={handleOk} initialValues={initialValues} > 基础信息配置} style={{ background: '#fff', marginBottom: 10 }}> 书城} name="platform" rules={[{ required: true, message: '请选择书城!' }]}> ((option?.label ?? '') as string).toLowerCase().includes(input.toLowerCase()) } options={mpList} /> {platform === 'YUE_WEN' ? {(fields, { add, remove }) => ( <> {fields.map(({ key, name, ...restField }, index) => { const yueWenCreateLinkDTO = yueWenCreateLinkDTOList?.[index] return 链接信息配置{index + 1}} style={{ background: '#fff', marginBottom: 10 }} key={key} extra={yueWenCreateLinkDTOList?.length > 1 ?
remove(name)}>
: undefined} > 链接类型} rules={[{ required: true, message: '请选择链接类型!' }]} > 推广类型} rules={[{ required: true, message: '请选择推广类型!' }]} > ((option?.label ?? '') as string).toLowerCase().includes(input.toLowerCase()) } allowClear options={Object.keys(FANQIELINKTYPE).map(key => ({ label: FANQIELINKTYPE[key], value: key }))} onChange={(e) => { if (e === '1') { setTimeout(() => { form.setFieldsValue({ fanQieCreateLinkDTOList: fanQieCreateLinkDTOList.map((item, i) => { if (index === i) { const { channelName } = item return { channelName, linkType: '1', pagePromoLinkCreateDTO: {} } } return item }) }) }, 0) } else if (e === '2') { setTimeout(() => { form.setFieldsValue({ fanQieCreateLinkDTOList: fanQieCreateLinkDTOList.map((item, i) => { if (index === i) { const { channelName } = item return { channelName, linkType: '2', bookPromoLinkCreateDTO: {} } } return item }) }) }, 0) } else if (e === '3') { setTimeout(() => { form.setFieldsValue({ fanQieCreateLinkDTOList: fanQieCreateLinkDTOList.map((item, i) => { if (index === i) { const { channelName } = item return { channelName, linkType: '3', rechargeActivityLinkDTO: { rechargeCount: -1 } } } return item }) }) }, 0) } else if (e === '4') { setTimeout(() => { form.setFieldsValue({ fanQieCreateLinkDTOList: fanQieCreateLinkDTOList.map((item, i) => { if (index === i) { const { channelName } = item return { channelName, linkType: '4', giftActivityLinkDTO: { rechargeCount: 1 } } } return item }) }) }, 0) } else if (e === '5') { setTimeout(() => { form.setFieldsValue({ fanQieCreateLinkDTOList: fanQieCreateLinkDTOList.map((item, i) => { if (index === i) { const { channelName } = item return { channelName, linkType: '5', consumeActivityLinkDTO: { rechargeCount: 1, activityFrequencies: 2 } } } return item }) }) }, 0) } }} /> 渠道名称} rules={[{ required: true, message: '请输入渠道名称!' }]} > {fanQieCreateLinkDTO?.linkType === '1' ? : fanQieCreateLinkDTO?.linkType === '2' ? : fanQieCreateLinkDTO?.linkType === '3' ? : fanQieCreateLinkDTO?.linkType === '4' ? : fanQieCreateLinkDTO?.linkType === '5' ? : undefined}
})} )}
: platform === 'HUA_SHENG' ? {(fields, { add, remove }) => ( <> {fields.map(({ key, name, ...restField }, index) => { const huaShengCreateLinkDTO = huaShengCreateLinkDTOList?.[index] return 链接信息配置{index + 1}} style={{ background: '#fff', marginBottom: 10 }} key={key} extra={huaShengCreateLinkDTOList?.length > 1 ?
remove(name)}>
: undefined} > 链接类型} rules={[{ required: true, message: '请选择链接类型!' }]} > 推广类型} rules={[{ required: huaShengCreateLinkDTO?.linkType == 1 ? true : false, message: '请选择推广类型!' }]} > ((option?.label ?? '') as string).toLowerCase().includes(input.toLowerCase()) } allowClear options={Object.keys(WENDINGLINKTYPE).map(key => ({ label: WENDINGLINKTYPE[key], value: key }))} onChange={(e) => { if (e === '1') { setTimeout(() => { form.setFieldsValue({ wenDingCreateLinkDTOList: wenDingCreateLinkDTOList.map((item, i) => { if (index === i) { const { channelName, channelType } = item return { channelName, channelType, linkType: '1', bookPromoLinkCreateDTO: { qrcodeOpenStatus: 0, linkClassify: '3' } } } return item }) }) }, 0) } else if (e === '2') { setTimeout(() => { form.setFieldsValue({ wenDingCreateLinkDTOList: wenDingCreateLinkDTOList.map((item, i) => { if (index === i) { const { channelName, channelType } = item return { channelName, channelType, linkType: '2', rechargeActivityLinkDTO: { userGroup: 0, hideCountDown: 0 } } } return item }) }) }, 0) } }} /> 渠道名称} rules={[{ required: true, message: '请输入渠道名称!' }]} > 推广类型} rules={[{ required: true, message: '请选择推广类型!' }]} >