/* eslint-disable @typescript-eslint/no-unused-vars */ import './card-proj.css'; import { useDispatch } from 'react-redux' import { CheckOutlined, ClockCircleOutlined, CloseCircleOutlined, DownloadOutlined, EditOutlined, EyeOutlined, LoadingOutlined, SearchOutlined, WarningOutlined, } from '@ant-design/icons'; import { Button, Tag, Modal, Carousel } from 'antd'; import { GenerateStatus } from "../../interfaces/proj/IProj.ts"; import { useNavigate } from "react-router-dom"; import { Axios, post, downloadUrl, get, del } from "../../util/AjaxUtils.ts"; import { useEffect, useState } from "react"; import useMessage from "antd/es/message/useMessage"; import setImg from '../../static/right/set.png' import orderImg from '../../static/right/order.png' import menuImg from '../../static/right/menu.png' // import LoginPage from '../../components/LoginPage/LoginPage.tsx' import LoginPage from '../../route/proj/edit/ProjConfigLoginpage.tsx' // import LoginPageShow from '../../components/LoginPageShow/LoginPageShow.tsx' import LoginPageShow from '../../route/proj/edit/ProjConfigLoginpageShow.tsx' import SoftwareManagement from '../../route/proj/edit/ProjConfigModList.tsx' import SoftwareManagementShow from '../../route/proj/edit/ProjConfigModListShow.tsx' import DisplayOrder from '../../route/proj/edit/ProjConfigMenuList.tsx' import DisplayOrderShow from '../../route/proj/edit/ProjConfigMenuListShow.tsx' export default function CardProj(props: any) { const height = window.innerHeight - 250; // 下载等待弹窗 const [downModal, setDownModal] = useState(false) // 是否已经点击下载按钮 const [hasDown, setHasDown] = useState(false) // 是否可以关闭等待下载弹窗 // // 选项数组 // const [tagArray, setTagArray] = useState([]) // // 获取标签 // const getTag = () => { // get({ // messageApi, // url: `/api/proj/tag/list-tag`, // onBefore() { // }, // onSuccess(data: any) { // // console.log('标签信息', data); // const newarrty: any = (data.data).map((item: any) => ({ // value: item.key, // label: item.value // })); // // console.log('标签信息', newarrty); // setTagArray(newarrty) // }, // onFinally() { // } // }) // } const data = props.item; // data.generate.generateStatus == GenerateStatus.SUCCESS ?'查看':'编辑' const [tagIdArray, setTagIdArray] = useState(data.tagDataIds) const [RemindIdArray, setRemindIdArray] = useState(data.projRemindIds) const downAll = (projId: string, name: string) => { setHasDown(true) if (!hasDown) { get({ messageApi, url: `/route/proj/download/all/${projId}`, config: { responseType: 'blob' // 指定响应类型为 blob }, onBefore() { setDownModal(true); // 打开下载模态框 setHasDown(true); // 设置正在下载状态 }, onSuccess(data: any) { // 处理下载成功的逻辑 const blob = new Blob([data.data]); // 创建 Blob 对象 const url = window.URL.createObjectURL(blob); // 创建下载链接 const link = document.createElement('a'); // 创建临时的 元素 link.href = url; link.setAttribute('download', `${name}全部资料.zip`); // 设置下载文件的名称 document.body.appendChild(link); link.click(); // 触发下载 document.body.removeChild(link); // 下载完成后移除 元素 // 释放 URL 对象,建议在用户确认下载完成后解除 // window.URL.revokeObjectURL(url); }, onFinally() { // 在请求完成后(成功或失败)都会执行 setHasDown(false); // 重置 hasDown 状态 setDownModal(false); // 关闭模态框 } }) } else { setDownModal(true); } }; // 更新标签状态 const upTag = (dataId: string, projId: string) => { post({ messageApi, url: `/api/proj/tag/save-or-delete`, body: { dataId, projId }, onBefore() { }, onSuccess(data) { // console.log(data.data.data); // props.upData // props.updata() // setTagStatus(data.data.data) // 根据返回的状态更新 tagIdArray if (data.data.data === 'SAVE') { setTagIdArray((prevArray: any) => [...prevArray, dataId]); } else if (data.data.data === 'DELETE') { setTagIdArray((prevArray: any[]) => prevArray.filter(id => id !== dataId)); } }, onFinally() { } }) } // 保存提示标签 const saveRemind = (projRemindId: string, projId: string) => { post({ messageApi, url: `/api/proj/remind/task/save`, body: { projRemindId, projId }, onBefore() { }, onSuccess() { setRemindIdArray((prevArray: any) => [...prevArray, projRemindId]); }, onFinally() { } }) } // 删除提示标签 const deleteRemind = (projRemindId: string, projId: string) => { // setRemindIdArray((prevArray: any[]) => prevArray.filter(id => id !== projRemindId)); del({ messageApi, url: `/api/proj/remind/task/delete/proj-id/${projId}/proj-remind-id/${projRemindId}`, onSuccess() { setRemindIdArray((prevArray: any[]) => prevArray.filter(id => id !== projRemindId)); } }) } // 更改data加入数组 // const upData = (tagId:string) => { // if(tagStatus=='SAVE'){ // setTagIdArray(tagIdArray.push(tagId)) // } // } // 第四步 登陆页面设置 const [loginPageOpne, setLoginPageOpne] = useState(false) const [loginPageShowOpne, setLoginPageShowOpne] = useState(false) const nav = useNavigate(); // 第五步 软件功能管理 const [softwareManagementOpen, setSoftwareManagementOpen] = useState(false) const [softwareManagementShowOpen, setSoftwareManagementShowOpen] = useState(false) // const [showZpi,setShowZpi] = useState(false) // 第六步 显示顺序 const [displayOrderOpen, setDisplayOrderOpen] = useState(false) const [displayOrderShowOpen, setDisplayOrderShowOpen] = useState(false) const pkg = data.pay.chargeAdditionals.match(/PKG:(\d+)/); const video = data.pay.chargeAdditionals.match(/VIDEO_DEMO:(\d+)/); const URGENT = data.pay.chargeAdditionals.match(/URGENT:(\d+)/); // 基础服务费 // const basics = data.pay.charge.match(/:(\d+)/); const pkgValue: number | null = pkg ? parseInt(pkg[1], 10) / 100 : null; const videoDemoValue: number | null = video ? parseInt(video[1], 10) / 100 : null; const URGENTvalue: number | null = URGENT ? parseInt(URGENT[1], 10) / 100 : null; // const basicsValue: number | null = basics ? parseInt(basics[1], 10)/100 : null; const [projId] = useState(data.projId) // 修改 const isShow = data.pay.chargeAdditionals.includes('PKG') || data.pay.chargeType == 'ALL' 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 dispath = useDispatch() const goEdit = () => { if (data.projStatus == 'NORMAL' || data.projStatus == 'EXPIRED' || data.pay.payStatus == 'CORRECTION2_REFUND' || data.pay.payStatus == 'CORRECTION1_REFUND') { if (data.pay.chargeType == 'ALL') { nav(`/proj-eall/${data.projId}`); dispath({ type: 'upProjName', val: data.projName }) dispath({ type: 'upProjStatus', val: data.generate.generateStatus == GenerateStatus.SUCCESS ? '查看' : '编辑' }) } else if (data.pay.chargeType == 'FREE') { nav(`/proj-efree/${data.projId}`); dispath({ type: 'upProjName', val: data.projName }) dispath({ type: 'upProjStatus', val: data.generate.generateStatus == GenerateStatus.SUCCESS ? '查看' : '编辑' }) } else { nav(`/proj-edit/${data.projId}`); dispath({ type: 'upProjName', val: data.projName }) dispath({ type: 'upProjStatus', val: data.generate.generateStatus == GenerateStatus.SUCCESS ? '查看' : '编辑' }) } } } useEffect(() => { // 修改 // const charge = props.item.pay.charge.split(':')[0]; let chargeName = ''; if (data.pay.chargeType == 'ALL') { chargeName = '全托管'; } else if (data.pay.chargeType == 'MATERIAL_AGENT') { chargeName = '写材料+代理'; } else if (data.pay.chargeType == 'MATERIAL_AGENT_URGENT') { chargeName = '写材料+代理(加急)'; } else if (data.pay.chargeType == 'MATERIAL') { chargeName = '写材料'; } else { chargeName = '免费试用'; } // data.pay.chargeType // setCharge(charge) setPayCharge(chargeName); // console.log('额外收费安装包',pkgValue); // console.log('额外收费视频',videoDemoValue); // console.log('额外收费加急',URGENTvalue); // console.log('基础服务费',basicsValue); // getTag() // console.log('查看数据', data); // console.log('查看状态', data.pay.payStatus); }, []) return ( <>
{data.projName}
{payCharge}
{payCharge}
编号:{data.projContext}
{data.gmtCreate}
{/* 标签 */} {props.tagArray.map((item: any) => { return (
{ upTag(item.value, data.projId) // upData(item.value) // props.updata() }} > {item.label}
) })}
{/*
{data.progress == 'DONE' ? '已完成' : data.progress == 'SUBMIT_FOR_REVIEW' ? '已提交版权中心' : data.progress == 'PRODUCTION' ? '正在制作中' : '等待制作中'}
*/}
{ data.generate.generateStatus == GenerateStatus.SUCCESS ? ( 查看 ) : ( 编辑 ) } | { window.open(`${Axios.defaults?.baseURL}/${data.previewUrl}`, '_blank') }}>预览
{/* lyp */}
{data.pay.payStatus == 'UNPAID' ? '未付款' : data.pay.payStatus == 'PAID' ? '已付款' : data.pay.payStatus == 'ARREARS' ? '欠费' : data.pay.payStatus == 'FULL_REFUND' ? '全额退款' : data.pay.payStatus == 'CORRECTION1_REFUND' ? '补正1次退款' : data.pay.payStatus == 'CORRECTION2_REFUND' ? '补正2次退款' : ''}
{/* */}
金额(¥) :
{data.pay.payment / 100}
(已优惠{data.pay.couponAmount / 100}元)
{/*
基础费用:{basicsValue}
*/} 加急:{URGENTvalue} 安装包:{pkgValue} 演示视频:{videoDemoValue}
{ if (data.generate.generateStatus == GenerateStatus.SUCCESS || payCharge == '全托管') { // nav(`/proj-edit/config-loginpage-show/${data.projId}`) setLoginPageShowOpne(true); } else { // nav(`/proj-edit/config-loginpage/${data.projId}`) setLoginPageOpne(true) } }}>
登录界面设置
{ if (data.generate.generateStatus == GenerateStatus.SUCCESS || payCharge == '全托管') { // nav(`/proj-edit/config-mod-list-show/${data.projId}`) setSoftwareManagementShowOpen(true) } else { setSoftwareManagementOpen(true) // nav(`/proj-edit/config-mod-list/${data.projId}`) } }}>
系统菜单管理({data.projModCount})
{ if (data.generate.generateStatus == GenerateStatus.SUCCESS || payCharge == '全托管') { // nav(`/proj-edit/config-menu-list-show/${data.projId}`) setDisplayOrderShowOpen(true); } else { // nav(`/proj-edit/config-menu-list/${data.projId}`) setDisplayOrderOpen(true); } }}>
菜单排序({data.projModCount})
{data.projStatus == 'REFUND_APPLYING' ? '退款申请中' : data.projStatus == 'CLOSE' ? '该项目已关闭' : data.projStatus == 'EXPIRED' ? '该项目已过期' : ''}
{ data.generate.generateStatus == GenerateStatus.SUCCESS ? (
{/* */}
操作手册
{ isShow && } {/* */} {/* */}
源代码
) : <> }
{/*
{ 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(''); } }); }} /> ) : <> }
*/}
产权所属者:{data.apply.authorName}
{/*
*/}
-当前状态-
{renderGenerateStatus()}
0 ? 'unset' : 'none', }}>
{/* {props.tagArray.map((item: any) => { return (
{ upTag(item.value, data.projId) }} > {item.label}
) })} */} {props.remindTagArray.map((item: any) => { return (
0 ? 'unset' : 'none', }} onClick={() => { if (RemindIdArray.includes(item.value)) { deleteRemind(item.value, data.projId) } else { saveRemind(item.value, data.projId) } }} > {item.label}
) })}
{/*
{data.projName}
编号:{data.projContext} {data.gmtCreate} */} {/* 状态标签 */} {/* {renderGenerateStatus()} */} {/*
{ data.generate.generateStatus == GenerateStatus.SUCCESS ? ( 查看 ) : ( 编辑 ) } | { window.open(`${Axios.defaults?.baseURL}/${data.previewUrl}`, '_blank') }}>预览
*/} {/*
*/} {/*
*/} {/* {payCharge} */} {/* 金额 */} {/* ¥{data.pay.payment / 100} */} {/*
*/} {/*
金额(¥) : {data.pay.payment / 100}
{ if (data.generate.generateStatus == GenerateStatus.SUCCESS) { nav(`/proj-edit/config-loginpage-show/${data.projId}`) } else { nav(`/proj-edit/config-loginpage/${data.projId}`) } }}>
登录界面设置
{ if (data.generate.generateStatus == GenerateStatus.SUCCESS) { nav(`/proj-edit/config-mod-list-show/${data.projId}`) } else { nav(`/proj-edit/config-mod-list/${data.projId}`) } }}>
系统菜单管理({data.projModCount})
{ if (data.generate.generateStatus == GenerateStatus.SUCCESS) { nav(`/proj-edit/config-menu-list-show/${data.projId}`) } else { nav(`/proj-edit/config-menu-list/${data.projId}`) } }}>
菜单排序({data.projModCount})
*/} {/* 目录层级结构*/} {/*
- 当前状态 -
{renderGenerateStatus()}
*/} {/*
{ 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()}
*/}
{/* 第四步 设置 */} < Modal open={loginPageOpne} title="登陆页面设置" width={1700} destroyOnClose={true} onCancel={() => { setLoginPageOpne(false); // window.location.reload(); // 在取消时刷新页面 } } footer={null} > { setLoginPageOpne(false) }}> {/* 第四步 查看 */} < Modal open={loginPageShowOpne} title="登陆页面查看" width={1700} destroyOnClose={true} onCancel={() => { setLoginPageShowOpne(false); }} footer={null} > {/* 第五步 设置 */} < Modal open={softwareManagementOpen} title="软件功能管理设置" width={1500} destroyOnClose={true} onCancel={() => { // props.upreqData() setSoftwareManagementOpen(false); // props.getreqData() // window.location.reload(); // 在取消时刷新页面 }} footer={null} > {/* 第五步 查看 */} < Modal open={softwareManagementShowOpen} title="软件功能管理查看" width={1500} destroyOnClose={true} onCancel={() => { setSoftwareManagementShowOpen(false); }} footer={null} > {/* 第六步 设置 */} < Modal open={displayOrderOpen} title="设置功能列表显示顺序" width={1500} destroyOnClose={true} onCancel={() => { // props.upreqData() setDisplayOrderOpen(false); }} footer={null} > {/* 第六步 查看 */} < Modal open={displayOrderShowOpen} title="查看功能列表显示顺序" width={1500} destroyOnClose={true} onCancel={() => { setDisplayOrderShowOpen(false); }} footer={null} > {messageContext} setDownModal(false)} // style={{ // backgroundColor: '#ff4d4f', // 自定义背景颜色 // borderColor: '#ff4d4f', // 自定义边框颜色 // color: '#fff', // 自定义文字颜色 // }} > 关闭 } onCancel={() => { setDownModal(false) }} width={500} >
正在打包中请稍后
) }