123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- import { FnAjax, useAjax } from '@/Hook/useAjax'
- import { Data, ListData, SysAdgroupsDTO } from '@/services/launchAdq'
- import { PromotedObjectType } from '@/services/launchAdq/enum'
- import { createSysAdgroups, getSysAdgroupsInfo, getSysAdgroupsList } from '@/services/launchAdq/localAd'
- import { Col, Row, Input, Select, Button } from 'antd'
- import React, { useEffect, useState, useCallback } from 'react'
- import TableData from '../../../components/TableData'
- import AdModal from './modal'
- import tableConfig from './tableConfig'
- export interface ModalConfig {
- visible: boolean;
- title?: string;
- type?:'add'|'look'|'edit',
- dataInfo?:null
- }
- function Ad() {
- // 变量
- const [modalConfig, setModalConfig] = useState<ModalConfig>({
- visible: false,
- type:'add'
- })
- const [oldsearchData, setOldsearchData] = useState<any>(null)
- // api方法
- const sysAdgroupsList: FnAjax<ListData<SysAdgroupsDTO> | any> = useAjax((params) => getSysAdgroupsList(params),{formatResult:true})
- const getSysAdgroupsInfos:any = useAjax((adgroupsId) => getSysAdgroupsInfo(adgroupsId),{formatResult:true})
- const createSysAdgroup = useAjax((params) => createSysAdgroups(params))
- // 初始获取列表
- useEffect(() => {
- getList({ pageSize: 20, pageNum: 1 })
- }, [])
- // 获取列表
- const getList = useCallback((arg: { pageSize: number, pageNum: number, adgroupName?: string, promotedObjectType?: string }) => {
- Object.keys(arg).forEach(key => {
- !arg[key] && delete arg[key]
- })
- if (JSON.stringify(arg) !== JSON.stringify(oldsearchData)) {
- setOldsearchData(arg)
- sysAdgroupsList.run(arg)
- }
- }, [oldsearchData])
- // 设置变量
- const handleModalConfig = useCallback((arg: ModalConfig) => {
- setModalConfig({ ...modalConfig, ...arg })
- }, [modalConfig])
- // submit
- const submit = useCallback((arg: any) => {
- console.log(arg)
- createSysAdgroup.run(arg).then(res => {
- if (res) {
- sysAdgroupsList.refresh()
- handleModalConfig({ visible: false,dataInfo:null,type:'add' })
- }
- })
- }, [sysAdgroupsList])
- // 获取详情
- const getInfo = useCallback((adgroupsId,type)=>{
- getSysAdgroupsInfos.run(adgroupsId).then((res: any)=>{
- setModalConfig({...modalConfig,visible:true,type,dataInfo:res.data})
- })
- },[modalConfig])
- // 回调
- const callback=useCallback((data,type)=>{
- getInfo(data.id,type)
- },[])
- return <div>
- <TableData
- columns={()=>tableConfig(callback)}
- ajax={sysAdgroupsList}
- dataSource={sysAdgroupsList?.data?.data?.records}
- loading={sysAdgroupsList?.loading}
- // scroll={{ y: 600 }}
- total={sysAdgroupsList?.data?.data?.total}
- page={sysAdgroupsList?.data?.data?.current}
- pageSize={sysAdgroupsList?.data?.data?.size}
- leftChild={<>
- <Row gutter={[10, 10]}>
- <Col span={24}><Button type='primary' onClick={() => {
- handleModalConfig({ visible: true })
- }}>新建广告模板</Button></Col>
- <Col>
- <Input
- placeholder='广告名称'
- allowClear
- onBlur={(e) => {
- let value = e.target.value
- getList({ pageNum: 1, pageSize: 20, adgroupName: value })
- }}
- onKeyDownCapture={(e: any) => {
- let key = e.key
- if (key === 'Enter') {
- let value = e.target.value
- getList({ pageNum: 1, pageSize: 20, adgroupName: value })
- }
- }}
- onChange={(e) => {
- let value = e.target.value
- if (!value) {
- getList({ pageNum: 1, pageSize: 20, adgroupName: value })
- }
- }}
- />
- </Col>
- <Col>
- <Select placeholder='推广目标选择' style={{ minWidth: 200 }} showSearch filterOption={(input, option) =>
- (option!.children as unknown as string).toLowerCase().includes(input.toLowerCase())
- } allowClear onChange={(value) => {
- getList({ pageNum: 1, pageSize: 20, promotedObjectType: value })
- }}>
- {
- Object.keys(PromotedObjectType).map(key => {
- // let obj = JSON.parse(PromotedObjectType[key])
- return <Select.Option value={key} key={key}>{PromotedObjectType[key]}</Select.Option>
- })
- }
- </Select>
- </Col>
- </Row>
- </>}
- onChange={(props: any) => {
- let { sortData, pagination } = props
- let { current, pageSize } = pagination
- getList({pageNum:current,pageSize})
- }}
- // config={guanggao}
- // configName={'广告模板列表'}
- />
- {modalConfig.visible && <AdModal visible={modalConfig.visible} PupFn={handleModalConfig} callback={submit} confirmLoading={createSysAdgroup.loading} type={modalConfig.type} dataInfo={modalConfig.dataInfo}/>}
- </div>
- }
- export default Ad
|