diff --git a/src/api/componentMarket.ts b/src/api/componentMarket.ts index 883c6b7..838b469 100644 --- a/src/api/componentMarket.ts +++ b/src/api/componentMarket.ts @@ -24,6 +24,11 @@ export function publishComponent(params: PublishComponentParams) { return axios.post(`${urlPrefix}/componentMarket/componentSubmitNew`, params); } +// 删除市场组件/取消组件发布 +export function deleteComponentMarket(id) { + return axios.delete(`${urlPrefix}/componentMarket/delete/${id}`); +} + // 多文件上传 export function uploadComponentFile(formData: FormData) { return axios.post(`${urlPrefix}/componentMarket/multiFileUpload`, formData, { diff --git a/src/pages/componentDevelopment/componentList/handleButtonGroup.tsx b/src/pages/componentDevelopment/componentList/handleButtonGroup.tsx index 3aeabb2..ec2237b 100644 --- a/src/pages/componentDevelopment/componentList/handleButtonGroup.tsx +++ b/src/pages/componentDevelopment/componentList/handleButtonGroup.tsx @@ -20,6 +20,7 @@ interface HandleButtonGroupProps { onExportComponent: (row: ComponentItem) => void; onStopComponentShow: (row: ComponentItem) => void; onRowDel: (row: ComponentItem) => void; + onCancelPublish?: (row: ComponentItem) => void; } const HandleButtonGroup: React.FC = ({ @@ -34,7 +35,8 @@ const HandleButtonGroup: React.FC = ({ onShareCollaboration, onExportComponent, onStopComponentShow, - onRowDel + onRowDel, + onCancelPublish }) => { // 检查组件状态是否符合条件 @@ -71,6 +73,15 @@ const HandleButtonGroup: React.FC = ({ ); + // 取消发布 + if (row.publicStatus === publicStatus.PUBLISHED && onCancelPublish) { + items.push( + + + + ); + } + // 下架组件 if (isEligible([componentStatusConstant.DEPLOYED], row.componentStatus)) { items.push( diff --git a/src/pages/componentDevelopment/componentList/index.tsx b/src/pages/componentDevelopment/componentList/index.tsx index 663b459..fa92a60 100644 --- a/src/pages/componentDevelopment/componentList/index.tsx +++ b/src/pages/componentDevelopment/componentList/index.tsx @@ -10,7 +10,7 @@ import { getImportComponentInfo, importComponent } from '@/api/componentBase'; -import { getReviewGroupByNew } from '@/api/componentMarket'; +import { getReviewGroupByNew, deleteComponentMarket } from '@/api/componentMarket'; import { componentRelease, componentRevoke } from '@/api/componentRelease'; import { ComponentItem } from '@/api/interface'; import AddComponentModal from '@/pages/componentDevelopment/componentList/addComponentModal'; @@ -215,6 +215,7 @@ const GlobalVarContainer = () => { setOffSaleComponent(row); setShowOffSaleModal(true); }} + onCancelPublish={handleCancelPublish} onRowDel={(row) => { // 显示确认框 Modal.confirm({ @@ -293,6 +294,30 @@ const GlobalVarContainer = () => { } }; + // 取消发布组件 + const handleCancelPublish = async (row: ComponentItem) => { + Modal.confirm({ + title: '确认取消发布', + content: `确定要取消发布组件 "${row.name}" 吗?取消后该组件将从组件市场下架。`, + okButtonProps: { status: 'warning' }, + onOk: async () => { + try { + const res: any = await deleteComponentMarket(row.id); + if (res.code === 200) { + Message.success('取消发布成功'); + // 重新获取数据以更新状态 + fetchComponentData(); + } else { + Message.error(res.message || '取消发布失败'); + } + } catch (error) { + console.error('取消发布失败:', error); + Message.error('取消发布失败'); + } + } + }); + }; + // 处理导入组件 - 文件选择后获取组件信息 const handleImportFileSelect = async (file: File) => { try {