Add tool submit and cancel management

This commit is contained in:
2024-02-01 19:07:46 +08:00
parent 8e5031e8a3
commit 06213d3414
6 changed files with 117 additions and 14 deletions

View File

@@ -74,10 +74,15 @@ export const DATABASE_EXECUTE_ERROR = 30050
export const DATABASE_DUPLICATE_KEY = 30051 export const DATABASE_DUPLICATE_KEY = 30051
export const DATABASE_NO_RECORD_FOUND = 30052 export const DATABASE_NO_RECORD_FOUND = 30052
export const TOOL_SUBMIT_SUCCESS = 40010
export const TOOL_CANCEL_SUCCESS = 40011
export const TOOL_ILLEGAL_VERSION = 40050 export const TOOL_ILLEGAL_VERSION = 40050
export const TOOL_UNDER_REVIEW = 40051 export const TOOL_UNDER_REVIEW = 40051
export const TOOL_HAS_UNPUBLISHED_VERSION = 40052 export const TOOL_NOT_UNDER_REVIEW = 40052
export const TOOL_HAS_BEEN_PUBLISHED = 40053 export const TOOL_HAS_UNPUBLISHED_VERSION = 40053
export const TOOL_HAS_BEEN_PUBLISHED = 40054
export const TOOL_SUBMIT_ERROR = 40060
export const TOOL_CANCEL_ERROR = 40061
export const API_AVATAR_SUCCESS = 50100 export const API_AVATAR_SUCCESS = 50100
export const API_AVATAR_ERROR = 50150 export const API_AVATAR_ERROR = 50150

View File

@@ -1,5 +0,0 @@
const All = () => {
return <></>
}
export default All

View File

@@ -0,0 +1,5 @@
const Store = () => {
return <></>
}
export default Store

View File

@@ -6,12 +6,22 @@ import {
DATABASE_DELETE_SUCCESS, DATABASE_DELETE_SUCCESS,
DATABASE_SELECT_SUCCESS, DATABASE_SELECT_SUCCESS,
DATABASE_UPDATE_SUCCESS, DATABASE_UPDATE_SUCCESS,
TOOL_CANCEL_SUCCESS,
TOOL_HAS_BEEN_PUBLISHED,
TOOL_HAS_UNPUBLISHED_VERSION, TOOL_HAS_UNPUBLISHED_VERSION,
TOOL_ILLEGAL_VERSION, TOOL_ILLEGAL_VERSION,
TOOL_NOT_UNDER_REVIEW,
TOOL_SUBMIT_SUCCESS,
TOOL_UNDER_REVIEW TOOL_UNDER_REVIEW
} from '@/constants/common.constants' } from '@/constants/common.constants'
import { getLoginStatus } from '@/util/auth' import { getLoginStatus } from '@/util/auth'
import { r_tool_delete, r_tool_get, r_tool_upgrade } from '@/services/tool' import {
r_tool_cancel,
r_tool_delete,
r_tool_get,
r_tool_submit,
r_tool_upgrade
} from '@/services/tool'
import FitFullscreen from '@/components/common/FitFullscreen' import FitFullscreen from '@/components/common/FitFullscreen'
import HideScrollbar from '@/components/common/HideScrollbar' import HideScrollbar from '@/components/common/HideScrollbar'
import FlexBox from '@/components/common/FlexBox' import FlexBox from '@/components/common/FlexBox'
@@ -113,9 +123,11 @@ interface ToolCardProps {
tools: ToolVo[] tools: ToolVo[]
onDelete?: (tool: ToolVo) => void onDelete?: (tool: ToolVo) => void
onUpgrade?: (tool: ToolVo) => void onUpgrade?: (tool: ToolVo) => void
onSubmit?: (tool: ToolVo) => void
onCancel?: (tool: ToolVo) => void
} }
const ToolCard = ({ tools, onDelete, onUpgrade }: ToolCardProps) => { const ToolCard = ({ tools, onDelete, onUpgrade, onSubmit, onCancel }: ToolCardProps) => {
const navigate = useNavigate() const navigate = useNavigate()
const [selectedTool, setSelectedTool] = useState(tools[0]) const [selectedTool, setSelectedTool] = useState(tools[0])
@@ -137,13 +149,17 @@ const ToolCard = ({ tools, onDelete, onUpgrade }: ToolCardProps) => {
const handleOnPublishTool = () => { const handleOnPublishTool = () => {
if (selectedTool.publish === '0' && ['NONE', 'REJECT'].includes(selectedTool.review)) { if (selectedTool.publish === '0' && ['NONE', 'REJECT'].includes(selectedTool.review)) {
return () => {} return () => {
onSubmit?.(selectedTool)
}
} }
} }
const handleOnCancelReview = () => { const handleOnCancelReview = () => {
if (selectedTool.publish === '0' && selectedTool.review === 'PROCESSING') { if (selectedTool.publish === '0' && selectedTool.review === 'PROCESSING') {
return () => {} return () => {
onCancel?.(selectedTool)
}
} }
} }
@@ -199,7 +215,7 @@ const Tools = () => {
const handleOnDeleteTool = (tool: ToolVo) => { const handleOnDeleteTool = (tool: ToolVo) => {
modal modal
.confirm({ .confirm({
title: '确定删除', title: '删除',
content: `确定删除工具 ${tool.name}:${tool.ver} 吗?` content: `确定删除工具 ${tool.name}:${tool.ver} 吗?`
}) })
.then( .then(
@@ -228,7 +244,7 @@ const Tools = () => {
const handleOnUpgradeTool = (tool: ToolVo) => { const handleOnUpgradeTool = (tool: ToolVo) => {
void modal.confirm({ void modal.confirm({
title: '更新应用', title: '更新工具',
content: ( content: (
<> <>
<AntdForm form={upgradeForm}> <AntdForm form={upgradeForm}>
@@ -301,6 +317,82 @@ const Tools = () => {
}) })
} }
const handleOnSubmitTool = (tool: ToolVo) => {
modal
.confirm({
title: '提交审核',
content: `确定提交审核工具 ${tool.name}:${tool.ver} 吗?`
})
.then(
(confirmed) => {
if (confirmed) {
setLoading(true)
void r_tool_submit(tool.id)
.then((res) => {
const response = res.data
switch (response.code) {
case TOOL_SUBMIT_SUCCESS:
void message.success('提交审核成功')
getTool()
break
case TOOL_UNDER_REVIEW:
void message.warning('工具审核中,请勿重复提交')
break
case TOOL_HAS_BEEN_PUBLISHED:
void message.warning('工具已发布,请创建新版本')
break
default:
void message.error('提交审核失败,请稍后重试')
}
})
.finally(() => {
setLoading(false)
})
}
},
() => {}
)
}
const handleOnCancelTool = (tool: ToolVo) => {
modal
.confirm({
title: '取消审核',
content: `确定取消审核工具 ${tool.name}:${tool.ver} 吗?`
})
.then(
(confirmed) => {
if (confirmed) {
setLoading(true)
void r_tool_cancel(tool.id)
.then((res) => {
const response = res.data
switch (response.code) {
case TOOL_CANCEL_SUCCESS:
void message.success('取消审核成功')
getTool()
break
case TOOL_NOT_UNDER_REVIEW:
void message.warning('工具非审核状态')
break
case TOOL_HAS_BEEN_PUBLISHED:
void message.warning('工具已发布,请创建新版本')
break
default:
void message.error('取消审核失败,请稍后重试')
}
})
.finally(() => {
setLoading(false)
})
}
},
() => {}
)
}
const getTool = () => { const getTool = () => {
if (loading) { if (loading) {
return return
@@ -356,6 +448,8 @@ const Tools = () => {
tools={value} tools={value}
onDelete={handleOnDeleteTool} onDelete={handleOnDeleteTool}
onUpgrade={handleOnUpgradeTool} onUpgrade={handleOnUpgradeTool}
onSubmit={handleOnSubmitTool}
onCancel={handleOnCancelTool}
/> />
))} ))}
</FlexBox> </FlexBox>

View File

@@ -13,7 +13,7 @@ export const tools: RouteJsonObject[] = [
path: 'store', path: 'store',
absolutePath: '/store', absolutePath: '/store',
id: 'tools-store', id: 'tools-store',
component: lazy(() => import('@/pages/Tools')), component: lazy(() => import('@/pages/Tools/Store')),
name: '工具商店', name: '工具商店',
titlePostfix: ' - 商店', titlePostfix: ' - 商店',
icon: lazy(() => import('~icons/oxygen/store')), icon: lazy(() => import('~icons/oxygen/store')),

View File

@@ -24,4 +24,8 @@ export const r_tool_detail = (username: string, toolId: string, ver: string) =>
export const r_tool_update = (param: ToolUpdateParam) => request.put<ToolVo>(URL_TOOL, param) export const r_tool_update = (param: ToolUpdateParam) => request.put<ToolVo>(URL_TOOL, param)
export const r_tool_submit = (id: string) => request.post(`${URL_TOOL}/${id}`)
export const r_tool_cancel = (id: string) => request.put(`${URL_TOOL}/${id}`)
export const r_tool_delete = (id: string) => request.delete(`${URL_TOOL}/${id}`) export const r_tool_delete = (id: string) => request.delete(`${URL_TOOL}/${id}`)