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}
>
)
}