diff --git a/src/pages/JobPortal/PersonalCenter/Showcase/index.tsx b/src/pages/JobPortal/PersonalCenter/Showcase/index.tsx index 8d29c2d..f68a2c6 100644 --- a/src/pages/JobPortal/PersonalCenter/Showcase/index.tsx +++ b/src/pages/JobPortal/PersonalCenter/Showcase/index.tsx @@ -11,16 +11,18 @@ import { Modal, Tag, Tooltip, + Popconfirm, } from 'antd'; import { UploadOutlined, ArrowLeftOutlined, CameraOutlined, VideoCameraOutlined, + DeleteOutlined, } from '@ant-design/icons'; import { history } from '@umijs/max'; import JobPortalHeader from '@/components/JobPortalHeader'; -import { uploadShowcaseFile, getShowcaseFileList } from '@/services/jobportal/user'; +import { uploadShowcaseFile, getShowcaseFileList, deleteShowcaseFile } from '@/services/jobportal/user'; import { getFileDisplayUrl } from '@/utils/fileUrl'; import './index.less'; @@ -163,6 +165,20 @@ const ShowcasePage: React.FC = () => { return isValid; }; + const handleDelete = async (item: ShowcaseItem) => { + try { + const resp = await deleteShowcaseFile(item.id); + if (resp?.code === 200 || resp?.code === 0) { + message.success('删除成功'); + await fetchFileList(); + } else { + message.error(resp?.msg || '删除失败'); + } + } catch (error) { + message.error('删除失败'); + } + }; + const handleBack = () => { history.push('/job-portal/personal-center'); }; @@ -275,6 +291,24 @@ const ShowcasePage: React.FC = () => { } /> +
+ handleDelete(item)} + okText="确定" + cancelText="取消" + > + + +
); })} diff --git a/src/pages/Management/EnterpriseShowcase/index.tsx b/src/pages/Management/EnterpriseShowcase/index.tsx index 4199ffa..9a0308b 100644 --- a/src/pages/Management/EnterpriseShowcase/index.tsx +++ b/src/pages/Management/EnterpriseShowcase/index.tsx @@ -11,15 +11,17 @@ import { Modal, Tag, Tooltip, + Popconfirm, } from 'antd'; import { UploadOutlined, CameraOutlined, VideoCameraOutlined, ArrowLeftOutlined, + DeleteOutlined, } from '@ant-design/icons'; import { history } from '@umijs/max'; -import { uploadShowcaseFile, getShowcaseFileList } from '@/services/jobportal/user'; +import { uploadShowcaseFile, getShowcaseFileList, deleteShowcaseFile } from '@/services/jobportal/user'; import { getFileDisplayUrl } from '@/utils/fileUrl'; import EnterpriseHeader from '@/components/EnterpriseHeader'; import './index.less'; @@ -163,6 +165,20 @@ const EnterpriseShowcase: React.FC = () => { return isValid; }; + const handleDelete = async (item: ShowcaseItem) => { + try { + const resp = await deleteShowcaseFile(item.id); + if (resp?.code === 200 || resp?.code === 0) { + message.success('删除成功'); + await fetchFileList(); + } else { + message.error(resp?.msg || '删除失败'); + } + } catch (error) { + message.error('删除失败'); + } + }; + return (
@@ -270,6 +286,24 @@ const EnterpriseShowcase: React.FC = () => {
} /> +
+ handleDelete(item)} + okText="确定" + cancelText="取消" + > + + +
); })} diff --git a/src/pages/Management/Showcase/index.tsx b/src/pages/Management/Showcase/index.tsx index 7fad1eb..63bf4ce 100644 --- a/src/pages/Management/Showcase/index.tsx +++ b/src/pages/Management/Showcase/index.tsx @@ -26,6 +26,22 @@ const statusValueEnum = { '2': { text: '已驳回', status: 'Error' }, }; +const userTypeValueEnum = { + '0': { text: '企业' }, + '1': { text: '求职者' }, + '2': { text: '网格员' }, + '3': { text: '政府人员' }, + '4': { text: '其他' }, +}; + +const userTypeColorMap: Record = { + '0': 'blue', + '1': 'green', + '2': 'orange', + '3': 'purple', + '4': 'default', +}; + const ShowcaseReview: React.FC = () => { const access = useAccess(); const actionRef = useRef(); @@ -103,6 +119,7 @@ const ShowcaseReview: React.FC = () => { justifyContent: 'center', cursor: 'pointer', borderRadius: 4, + position: 'relative', }} onClick={() => { setPreviewUrl(url); @@ -135,10 +152,29 @@ const ShowcaseReview: React.FC = () => { ), }, { - title: '上传用户ID', - dataIndex: 'bussinessid', + title: '用户昵称', + dataIndex: 'userName', width: 120, - fieldProps: { placeholder: '输入用户ID' }, + fieldProps: { placeholder: '输入用户昵称' }, + }, + { + title: '用户类型', + dataIndex: 'userType', + width: 100, + valueType: 'select', + valueEnum: userTypeValueEnum, + fieldProps: { placeholder: '选择用户类型' }, + render: (_, record) => { + const text = userTypeValueEnum[record.userType || '']?.text || record.userType || '-'; + const color = userTypeColorMap[record.userType || ''] || 'default'; + return {text}; + }, + }, + { + title: '手机号码', + dataIndex: 'userPhone', + width: 130, + fieldProps: { placeholder: '输入手机号码' }, }, { title: '审核状态', @@ -215,12 +251,14 @@ const ShowcaseReview: React.FC = () => { rowKey="id" search={{ labelWidth: 100 }} request={async (params) => { - const { current, pageSize, bussinessid, reviewStatus } = params; + const { current, pageSize, reviewStatus, userName, userType, userPhone } = params; const res = await getShowcaseReviewList({ current, pageSize, - bussinessid: bussinessid ? Number(bussinessid) : undefined, reviewStatus, + userName, + userType, + userPhone, }); return { data: res?.rows || [], diff --git a/src/services/Management/showcaseReview.ts b/src/services/Management/showcaseReview.ts index e0d9f33..52a2f25 100644 --- a/src/services/Management/showcaseReview.ts +++ b/src/services/Management/showcaseReview.ts @@ -11,14 +11,20 @@ export interface ShowcaseReviewItem { reviewTime?: string; createTime: string; updateTime?: string; + /** JOIN app_user 查询字段 */ + userName?: string; // 用户名称 + userType?: string; // '0'=企业, '1'=求职者, '2'=网格员, '3'=政府人员 + userPhone?: string; // 手机号码 } /** 风采审核列表查询参数 */ export interface ShowcaseReviewListParams { current?: number; pageSize?: number; - bussinessid?: number; reviewStatus?: string; + userName?: string; + userType?: string; + userPhone?: string; } /** 风采审核操作参数 */ diff --git a/src/services/jobportal/user.ts b/src/services/jobportal/user.ts index cde0da0..71b58f9 100644 --- a/src/services/jobportal/user.ts +++ b/src/services/jobportal/user.ts @@ -161,3 +161,10 @@ export async function getShowcaseFileList(userId: number) { }); } +/** 删除我的风采文件 DELETE /app/file/{id} */ +export async function deleteShowcaseFile(id: number) { + return request(`/app/file/${id}`, { + method: 'DELETE', + }); +} +