diff --git a/src/pages/Jobfair/Outdoorfair/index.tsx b/src/pages/Jobfair/Outdoorfair/index.tsx index bc798db..a08d100 100644 --- a/src/pages/Jobfair/Outdoorfair/index.tsx +++ b/src/pages/Jobfair/Outdoorfair/index.tsx @@ -18,6 +18,7 @@ import { addOutdoorFairDictOption, signupOutdoorFair, getMyOutdoorFairQrCode, + getOutdoorFairMiniProgramQrCode, } from '@/services/jobportal/outdoorFair'; import type { OutdoorFairItem, @@ -25,6 +26,7 @@ import type { OutdoorFairForm, OutdoorFairDictForm, OutdoorFairCompanyQrCodeInfo, + OutdoorFairMiniProgramQrCodeInfo, } from '@/services/jobportal/outdoorFair'; import { getParticipatingJobs } from '@/services/jobportal/outdoorFairDetail'; import { getDictSelectOption, getDictValueEnum } from '@/services/system/dict'; @@ -51,6 +53,10 @@ const OutdoorFairList: React.FC = () => { const [jobEditModalOpen, setJobEditModalOpen] = useState(false); const [qrModalOpen, setQrModalOpen] = useState(false); const [qrInfo, setQrInfo] = useState(null); + const [miniProgramQrModalOpen, setMiniProgramQrModalOpen] = useState(false); + const [miniProgramQrInfo, setMiniProgramQrInfo] = + useState(null); + const [miniProgramQrLoadingFairId, setMiniProgramQrLoadingFairId] = useState(); const [rejectReasonModalOpen, setRejectReasonModalOpen] = useState(false); const [rejectReason, setRejectReason] = useState(''); const [companyDetailFair, setCompanyDetailFair] = useState(null); @@ -191,6 +197,23 @@ const OutdoorFairList: React.FC = () => { } }; + const openMiniProgramQrCode = async (record: OutdoorFairItem) => { + setMiniProgramQrLoadingFairId(record.id); + try { + const res = await getOutdoorFairMiniProgramQrCode(record.id); + if (res.code === 200 && res.data?.imageData) { + setMiniProgramQrInfo(res.data); + setMiniProgramQrModalOpen(true); + } else { + message.error(res.msg || '小程序二维码加载失败'); + } + } catch (error) { + message.error('小程序二维码加载失败,请稍后重试'); + } finally { + setMiniProgramQrLoadingFairId(undefined); + } + }; + const openJobList = (record: OutdoorFairItem) => { setSelectedFair(record); setJobListModalOpen(true); @@ -374,7 +397,7 @@ const OutdoorFairList: React.FC = () => { { title: '操作', valueType: 'option', - width: isEnterprise ? 520 : 160, + width: isEnterprise ? 520 : 260, fixed: 'right', render: (_, record) => [ isEnterprise && !record.signedUp ? ( @@ -410,12 +433,22 @@ const OutdoorFairList: React.FC = () => { ) : null, isEnterprise ? ( - ) : null, isEnterprise && record.signedUp && record.reviewStatus === '1' ? ( - ) : null, @@ -429,6 +462,17 @@ const OutdoorFairList: React.FC = () => { > 详情 , + , , + ]} + destroyOnHidden + onCancel={() => { + setMiniProgramQrModalOpen(false); + setMiniProgramQrInfo(null); + }} + > + {miniProgramQrInfo?.imageData && ( +
+ 招聘会小程序二维码 + + 请使用微信扫码 + + {miniProgramQrInfo.permanent && ( + + 此小程序码长期有效,无需定期更换 + + )} +
+ )} + ( + `${CMS_OUTDOOR_FAIR_BASE}/${fairId}/mini-program-qrcode`, + { method: 'GET' }, + ); +} + /** * 上传户外招聘会照片 * POST /api/common/upload