import './card-proj.css'; import { CheckOutlined, ClockCircleOutlined, CloseCircleOutlined, CreditCardOutlined, DeleteOutlined, DownloadOutlined, DownOutlined, EditOutlined, EyeOutlined, LoadingOutlined, SearchOutlined, SettingOutlined, WarningOutlined } from '@ant-design/icons'; import {Button, ConfigProvider, Dropdown, Tag} from 'antd'; import {GenerateStatus, IProj, PayStatus, ProjChargeType} from "../../interfaces/proj/IProj.ts"; import {useNavigate} from "react-router-dom"; import {Axios, put} from "../../util/AjaxUtils.ts"; import {useContext, useEffect, useState} from "react"; import {IndexListContext} from "../../context/IndexListContext.ts"; import useMessage from "antd/es/message/useMessage"; export default function CardProj(props: { item: IProj }) { const nav = useNavigate(); const data = props.item; const [messageApi, messageContext] = useMessage(); const [projCategoryId, setProjCategoryId] = useState(data.projCategoryId); const [projCategoryName, setProjCategoryName] = useState(data.projCategoryName); const [charge, setCharge] = useState(''); const [payCharge, setPayCharge] = useState(''); const indexListContext = useContext(IndexListContext); /** * 生成状态 */ const renderGenerateStatus = () => { if (data.generate.generateStatus == GenerateStatus.PENDING) { return 等待生成 } if (data.generate.generateStatus == GenerateStatus.GENERATING) { return 正在生成 } if (data.generate.generateStatus == GenerateStatus.SUCCESS) { return 生成成功 } if (data.generate.generateStatus == GenerateStatus.FAILED) { return 生成失败 } if (data.generate.generateStatus == GenerateStatus.NONE) { return 未生成 } return 错误 } const renderOption = () => { if (data.pay.payStatus == PayStatus.UNPAID) { return ( <>
) } return ( <>
{ data.generate.generateStatus == GenerateStatus.SUCCESS ? (
) : <> } ) } const goEdit = () => { if(charge == ProjChargeType.ALL) { nav(`/proj-eall/${data.projId}`); } else if(charge == ProjChargeType.FREE) { nav(`/proj-efree/${data.projId}`); } else { nav(`/proj-edit/${data.projId}`); } } useEffect(() => { const charge = props.item.pay.charge.split(':')[0]; let chargeName = ''; if (charge == ProjChargeType.ALL) { chargeName = '全托管'; } else if (charge == ProjChargeType.MATERIAL_AGENT) { chargeName = '写材料+代理'; } else if (charge == ProjChargeType.MATERIAL_AGENT_URGENT) { chargeName = '写材料+代理(加急)'; } else if (charge == ProjChargeType.MATERIAL) { chargeName = '写材料'; } else { chargeName = '免费试用'; } setCharge(charge) setPayCharge(chargeName); }, []) return ( <>
{data.projName}
上下文:{data.projContext} {data.gmtCreate} {renderGenerateStatus()}

{payCharge} ¥{data.pay.payment / 100}
{ data.generate.generateStatus == GenerateStatus.SUCCESS ? ( 查看 ) : ( 编辑 ) } { window.open(`${Axios.defaults?.baseURL}/${data.previewUrl}`, '_blank') }}>预览
{ data.generate.generateStatus == GenerateStatus.SUCCESS ? ( { e.preventDefault(); nav(`/agent-select/${data.projId}`); }}>找代理 ) : <> }
{ const span = e.domEvent.target as HTMLSpanElement; put({ messageApi, url: `/api/proj/update-category/${data.projId}/${e.key}`, onSuccess() { messageApi.success('修改成功'); setProjCategoryId(e.key); setProjCategoryName(span.innerText); } }); } }}> {projCategoryId ? projCategoryName : '无目录'} { projCategoryId ? ( { put({ messageApi, url: `/api/proj/cancel-category/${data.projId}`, onSuccess() { messageApi.success('取消成功'); setProjCategoryId(''); setProjCategoryName(''); } }); }}/> ) : <> }

{renderOption()}
{messageContext} ) }