|  | @@ -0,0 +1,86 @@
 | 
	
		
			
				|  |  | +import { useAjax } from "@/Hook/useAjax"
 | 
	
		
			
				|  |  | +import { syncComponentApi } from "@/services/adqV3/global"
 | 
	
		
			
				|  |  | +import { DatePicker, Form, message, Modal } from "antd"
 | 
	
		
			
				|  |  | +import { RangePickerProps } from "antd/lib/date-picker"
 | 
	
		
			
				|  |  | +import React, { useState } from "react"
 | 
	
		
			
				|  |  | +import moment from "moment"
 | 
	
		
			
				|  |  | +import '../../tencentAdPutIn/index.less'
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 同步组件
 | 
	
		
			
				|  |  | + * @returns 
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +const SyncCloudComponent: React.FC<{ onChange?: () => void, accountId: number }> = ({ onChange, accountId }) => {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /********************************************/
 | 
	
		
			
				|  |  | +    const [form] = Form.useForm()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const syncComponent = useAjax((params) => syncComponentApi(params))
 | 
	
		
			
				|  |  | +    const [visible, setVisible] = useState<boolean>(false)
 | 
	
		
			
				|  |  | +    /********************************************/
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const handleOk = () => {
 | 
	
		
			
				|  |  | +        form.validateFields().then(valid => {
 | 
	
		
			
				|  |  | +            const { createTime, ...params } = valid
 | 
	
		
			
				|  |  | +            syncComponent.run({ ...params, accountIds: [accountId], startTime: moment(createTime[0]).format('YYYY-MM-DD'), endTime: moment(createTime[1]).format('YYYY-MM-DD') }).then(res => {
 | 
	
		
			
				|  |  | +                if (res) {
 | 
	
		
			
				|  |  | +                    message.success('同步成功')
 | 
	
		
			
				|  |  | +                    onChange?.()
 | 
	
		
			
				|  |  | +                    setVisible(false)
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            })
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const disabledDate: RangePickerProps['disabledDate'] = current => {
 | 
	
		
			
				|  |  | +        // 禁止选择当前日期之前的日期  
 | 
	
		
			
				|  |  | +        return current && current > moment().endOf('day');
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return <>
 | 
	
		
			
				|  |  | +        <a onClick={() => setVisible(true)}>同步组件</a>
 | 
	
		
			
				|  |  | +        {visible && <Modal
 | 
	
		
			
				|  |  | +            title={<strong>同步组件</strong>}
 | 
	
		
			
				|  |  | +            open={visible}
 | 
	
		
			
				|  |  | +            onCancel={() => {
 | 
	
		
			
				|  |  | +                setVisible(false)
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +            onOk={handleOk}
 | 
	
		
			
				|  |  | +            className="modalResetCss"
 | 
	
		
			
				|  |  | +            confirmLoading={syncComponent.loading}
 | 
	
		
			
				|  |  | +            okText={'同步'}
 | 
	
		
			
				|  |  | +        >
 | 
	
		
			
				|  |  | +            <Form
 | 
	
		
			
				|  |  | +                name="basicSyncCloudSc"
 | 
	
		
			
				|  |  | +                form={form}
 | 
	
		
			
				|  |  | +                layout='vertical'
 | 
	
		
			
				|  |  | +                autoComplete="off"
 | 
	
		
			
				|  |  | +                initialValues={{ type: 'image', createTime: [moment(), moment()] }}
 | 
	
		
			
				|  |  | +            >
 | 
	
		
			
				|  |  | +                <Form.Item
 | 
	
		
			
				|  |  | +                    label={<strong>创建时间</strong>}
 | 
	
		
			
				|  |  | +                    name="createTime"
 | 
	
		
			
				|  |  | +                    rules={[
 | 
	
		
			
				|  |  | +                        { required: true, message: '请选择创建时间' },
 | 
	
		
			
				|  |  | +                        () => ({
 | 
	
		
			
				|  |  | +                            validator(_, value) {
 | 
	
		
			
				|  |  | +                                if (value) {
 | 
	
		
			
				|  |  | +                                    const [startDate, endDate] = value;
 | 
	
		
			
				|  |  | +                                    // 检查选择的日期范围是否超过30天  
 | 
	
		
			
				|  |  | +                                    if (endDate.diff(startDate, 'days') >= 30) {
 | 
	
		
			
				|  |  | +                                        return Promise.reject(new Error('选择的日期范围不能超过30天!'));
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                                return Promise.resolve();
 | 
	
		
			
				|  |  | +                            },
 | 
	
		
			
				|  |  | +                        })
 | 
	
		
			
				|  |  | +                    ]}
 | 
	
		
			
				|  |  | +                >
 | 
	
		
			
				|  |  | +                    <DatePicker.RangePicker disabledDate={disabledDate} />
 | 
	
		
			
				|  |  | +                </Form.Item>
 | 
	
		
			
				|  |  | +            </Form>
 | 
	
		
			
				|  |  | +        </Modal>}
 | 
	
		
			
				|  |  | +    </>
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export default React.memo(SyncCloudComponent)
 |