import React, { useEffect, useState } from 'react'; import { Space, Table, Button, Input, Select, DatePicker, Tabs, message } from 'antd'; import type { TableProps } from 'antd'; import dayjs, { Dayjs } from 'dayjs'; import styles from './index.module.css'; import PunlishPlanModal from './components/publishPlanModal'; const { RangePicker } = DatePicker; import { useAccountOptions } from '@src/views/publishContent/weGZH/hooks/useAccountOptions'; import { useGzhPlanList, GzhPlanType } from '@src/views/publishContent/weGZH/hooks/useGzhPlanList'; import http from '@src/http'; import { saveGzhPlanApi } from '@src/http/api'; import PunlishPlanDetailModal from './components/PunlishPlanDetailModal'; const TableHeight = window.innerHeight - 380; const WeGZHContent: React.FC = () => { // 状态管理 const [selectedAccount, setSelectedAccount] = useState(); const [videoTitle, setVideoTitle] = useState(''); const [selectedPublisher, setSelectedPublisher] = useState(); const [dateRange, setDateRange] = useState<[Dayjs | null, Dayjs | null]>(); const [isShowAddPunlishPlan, setIsShowAddPunlishPlan] = useState(false); const [actionType, setActionType] = useState<'add' | 'edit'>('add'); const [editPlanData, setEditPlanData] = useState(); const [activeKey, setActiveKey] = useState('1'); const [isSubmiting, setIsSubmiting] = useState(false); const { accountOptions } = useAccountOptions(); const { gzhPlanList, getGzhPlanList, totalSize } = useGzhPlanList(); const [isShowAddPunlishDetailPlan, setIsShowAddPunlishDetailPlan] = useState(false); // 表格列配置 const columns: TableProps['columns'] = [ { title: '公众号名称', dataIndex: 'accountName', key: 'accountName', width: 200, }, { title: '场景', dataIndex: 'scene', key: 'scene', width: 120, render: (_, record) => { return record.scene === 0 ? '关注回复' : '自动回复'; } }, { title: '视频数量', dataIndex: 'videoCount', key: 'videoCount', width: 120, }, { title: '视频标题', dataIndex: 'title', key: 'title', ellipsis: true, render: (_, record) => { return record.videoList.map(video => { return
{video.title}
}) } }, { title: '计划创建时间', dataIndex: 'createTimestamp', key: 'createTimestamp', width: 200, render: (_, record) => { return record.createTimestamp ? dayjs(record.createTimestamp).format('YYYY-MM-DD HH:mm:ss') : ''; } }, { title: '发布方', dataIndex: 'publishStage', key: 'publishStage', width: 120, render: (_, record) => { return record.publishStage === 0 ? '平台发布' : '用户发布'; } }, { title: '操作', key: 'action', width: 200, render: (_, record) => ( ), }, ]; const editPlan = (record: GzhPlanType) => { setEditPlanData(record); setActionType('edit'); setIsShowAddPunlishPlan(true); }; const editPlanDetail = (record: GzhPlanType) => { setEditPlanData(record); setActionType('edit'); setIsShowAddPunlishDetailPlan(true); } const addPunlishPlan = () => { setActionType('add'); setEditPlanData(undefined); setIsShowAddPunlishPlan(true); } const handleAddPunlishPlan = async (params: GzhPlanType) => { setIsSubmiting(true); const res = await http.post(saveGzhPlanApi, params) .catch(err => { message.error(err.msg); }) .finally(() => { setIsSubmiting(false); }); if (res?.code === 0) { message.success('发布计划创建成功'); getGzhPlanList({ pageNum: 1, pageSize: 10, }); setIsShowAddPunlishPlan(false); } else { message.error(res?.msg); } } useEffect(() => { getGzhPlanList({ pageNum: 1, pageSize: 10, }); }, []); const handleSearch = () => { getGzhPlanList({ pageNum: 1, pageSize: 10, title: videoTitle, accountId: selectedAccount ? parseInt(selectedAccount) : undefined, publishStage: selectedPublisher, createTimestampStart: dateRange?.[0]?.unix(), createTimestampEnd: dateRange?.[1]?.unix(), }); } return (
公众号内容
{/* 搜索区域 */}
公众号名称: setVideoTitle(e.target.value)} />
发布方: