import React, { useEffect, useCallback, useState } from 'react'
import { Button, Col, Input, message, Row } from 'antd'
import { useAjax } from '@/Hook/useAjax'
import { getAdqLandingPageList, putAdqLandingPage } from '@/services/launchAdq/adq'
import TableData from '../../components/TableData'
import tableConfig from './tableConfig'

function LandingPage(props: { accountId: string, adAccountId: string, userId: string, tableIdClick: any }) {
    let { accountId, adAccountId, userId, tableIdClick } = props
    const listAjax = useAjax((params) => getAdqLandingPageList(params), { formatResult: true })
    const syncAjax = useAjax((adAccountId) => putAdqLandingPage(adAccountId))
    const [selectedRows, setSelectedRows] = useState<any[]>([])
    const [queryFrom, set_queryFrom] = useState<{
        pageNum: number;
        pageSize: number;
        accountId?: string;
        pageName?: string;
        pageType?: string;
        pageTemplateId?: string;
        pageStatus?: string;
    }>({ pageNum: 1, pageSize: 20 })
    console.log('落地页=====》')
    useEffect(() => {
        getList({ pageNum: 1, pageSize: 20 })
    }, [accountId])
    // 获取列表
    const getList = useCallback((params: {
        pageNum: number;
        pageSize: number;
        accountId?: string;
        pageName?: string;
        pageType?: string;
        pageTemplateId?: string;
        pageStatus?: string;
    }) => {
        if (!params.pageName || params.pageName !== listAjax?.params[0]?.pageName) {
            !params.pageName && delete params.pageName
        }
        listAjax.run({ ...params, userId })
    }, [listAjax, userId])
    // 同步 
    const sync = useCallback(() => {
        // if (selectedRows?.length === 0) {
        //     message.error('请先勾选要同步的广点通账号!')
        //     return
        // }
        let arr = [...new Set(selectedRows?.map(item=>item.accountId))]
        syncAjax.run({ accountIdList:arr }).then(res => {
            res && listAjax.refresh()
            res ? message.success('同步成功！') : message.error('同步失败！')

        })
    }, [listAjax,selectedRows])

    return <div>
        <TableData
            isCard={false}
            columns={() => tableConfig(tableIdClick)}
            ajax={listAjax}
            syncAjax={sync}
            dataSource={listAjax?.data?.data?.records}
            loading={listAjax?.loading || syncAjax?.loading}
            scroll={{ y: 550 }}
            total={listAjax?.data?.data?.total}
            page={listAjax?.data?.data?.current}
            pageSize={listAjax?.data?.data?.size}
            myKey={'pageId'}
            leftChild={<>
                <Row gutter={[10, 10]}>
                    <Col>
                        <Input
                            placeholder='广告账号'
                            allowClear
                            style={{ width: 150 }}
                            onChange={(e) => {
                                let value = e.target.value
                                set_queryFrom({ ...queryFrom, accountId: value })
                            }}
                        />
                    </Col>
                    <Col>
                        <Input
                            placeholder='落地页名称'
                            allowClear
                            style={{ width: 150 }}
                            onChange={(e) => {
                                let value = e.target.value
                                set_queryFrom({ ...queryFrom, pageName: value })
                            }}
                        />
                    </Col>
                    {/* <Col>
                        <Select placeholder='推广目标选择' style={{ minWidth: 200 }} showSearch filterOption={(input: any, option: any) =>
                            (option!.children as unknown as string).toLowerCase().includes(input.toLowerCase())
                        } allowClear onChange={(value: any) => {
                            getList({ pageNum: 1, pageSize: 20, accountId})
                        }}>
                            {
                                Object.keys(PromotedObjectType).map(key => {
                                    // let obj = JSON.parse(PromotedObjectType[key])
                                    return <Select.Option value={key} key={key}>{PromotedObjectType[key]}</Select.Option>
                                })
                            }
                        </Select>
                    </Col> */}
                    <Col>
                        <Button type='primary' onClick={() => { getList({ ...queryFrom, pageNum: 1 }) }}>搜索</Button>
                    </Col>
                </Row>
            </>}
            onChange={(props: any) => {
                let { sortData, pagination } = props
                let { current, pageSize } = pagination
                set_queryFrom({ ...queryFrom, pageNum: current, pageSize })
                getList({ ...queryFrom, pageNum: current, pageSize })
            }}
            rowSelection={{
                selectedRowKeys: selectedRows?.map(item => item?.pageId?.toString()),
                onChange: (selectedRowKeys: any, selectedRows: any) => {
                    setSelectedRows(selectedRows)
                }
            }}
        />
    </div>
}
export default LandingPage