Compare commits
2 Commits
9d1dfe962f
...
befc27adae
| Author | SHA1 | Date | |
|---|---|---|---|
| befc27adae | |||
| bef39f6894 |
@@ -247,6 +247,12 @@ const PortalJobFairDetailPage: React.FC = () => {
|
||||
<Title level={4}>招聘会简介</Title>
|
||||
<Paragraph>{detail.jobFairIntroduction || '暂未提供招聘会简介。'}</Paragraph>
|
||||
</section>
|
||||
{channel === 'outdoor' && (
|
||||
<section className="job-fair-detail-introduction">
|
||||
<Title level={4}>招聘会整体流程</Title>
|
||||
<Paragraph>{detail.jobFairProcess || '暂未提供招聘会整体流程。'}</Paragraph>
|
||||
</section>
|
||||
)}
|
||||
</Card>
|
||||
) : (
|
||||
!loading && (
|
||||
|
||||
@@ -157,6 +157,12 @@ const FairInfoTab: React.FC<Props> = ({ fairInfo, onFairUpdate }) => {
|
||||
'--'
|
||||
)}
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="招聘会简介" span={3}>
|
||||
<div style={{ whiteSpace: 'pre-wrap' }}>{fairInfo.fairIntroduction || '--'}</div>
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="招聘会整体流程" span={3}>
|
||||
<div style={{ whiteSpace: 'pre-wrap' }}>{fairInfo.fairProcess || '--'}</div>
|
||||
</Descriptions.Item>
|
||||
</Descriptions>
|
||||
</Card>
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
ProFormSwitch,
|
||||
ProFormSelect,
|
||||
ProFormText,
|
||||
ProFormTextArea,
|
||||
} from '@ant-design/pro-components';
|
||||
import { Button, Divider, Form, Image, Input, message, Modal, Space, Upload } from 'antd';
|
||||
import { PlusOutlined, UploadOutlined } from '@ant-design/icons';
|
||||
@@ -297,6 +298,18 @@ const EditModal: React.FC<EditModalProps> = ({
|
||||
colProps={{ md: 24 }}
|
||||
initialValue={false}
|
||||
/>
|
||||
<ProFormTextArea
|
||||
name="fairIntroduction"
|
||||
label="招聘会简介"
|
||||
placeholder="请输入招聘会简介"
|
||||
fieldProps={{ maxLength: 5000, showCount: true, autoSize: { minRows: 4, maxRows: 8 } }}
|
||||
/>
|
||||
<ProFormTextArea
|
||||
name="fairProcess"
|
||||
label="招聘会整体流程"
|
||||
placeholder="请输入招聘会整体流程"
|
||||
fieldProps={{ maxLength: 5000, showCount: true, autoSize: { minRows: 4, maxRows: 8 } }}
|
||||
/>
|
||||
<ProForm.Item label="招聘会照片" required>
|
||||
<Space direction="vertical" size={12}>
|
||||
<Upload
|
||||
|
||||
@@ -1,9 +1,20 @@
|
||||
import React from 'react';
|
||||
import { Descriptions, Modal, Tag, Typography } from 'antd';
|
||||
import { createStyles } from 'antd-style';
|
||||
import DictTag from '@/components/DictTag';
|
||||
import type { DictValueEnumObj } from '@/components/DictTag';
|
||||
import { normalizeNewsContent } from '@/utils/newsImageUrl';
|
||||
|
||||
const useStyles = createStyles(() => ({
|
||||
content: {
|
||||
'& img': {
|
||||
display: 'block',
|
||||
maxWidth: '100%',
|
||||
height: 'auto',
|
||||
},
|
||||
},
|
||||
}));
|
||||
|
||||
interface DetailModalProps {
|
||||
open: boolean;
|
||||
data?: API.NewsInfo.NewsInfoItem;
|
||||
@@ -11,7 +22,10 @@ interface DetailModalProps {
|
||||
onCancel: () => void;
|
||||
}
|
||||
|
||||
const DetailModal: React.FC<DetailModalProps> = ({ open, data, moduleEnum, onCancel }) => (
|
||||
const DetailModal: React.FC<DetailModalProps> = ({ open, data, moduleEnum, onCancel }) => {
|
||||
const { styles } = useStyles();
|
||||
|
||||
return (
|
||||
<Modal
|
||||
title="新闻资讯详情"
|
||||
open={open}
|
||||
@@ -37,7 +51,7 @@ const DetailModal: React.FC<DetailModalProps> = ({ open, data, moduleEnum, onCan
|
||||
<Descriptions.Item label="正文" span={2}>
|
||||
{data?.content ? (
|
||||
<Typography
|
||||
className="news-detail-content"
|
||||
className={`${styles.content} news-detail-content`}
|
||||
dangerouslySetInnerHTML={{ __html: normalizeNewsContent(data.content) }}
|
||||
/>
|
||||
) : (
|
||||
@@ -49,6 +63,7 @@ const DetailModal: React.FC<DetailModalProps> = ({ open, data, moduleEnum, onCan
|
||||
</Descriptions.Item>
|
||||
</Descriptions>
|
||||
</Modal>
|
||||
);
|
||||
);
|
||||
};
|
||||
|
||||
export default DetailModal;
|
||||
|
||||
@@ -15,6 +15,7 @@ export interface PortalJobFairItem {
|
||||
jobFairHostUnit?: string;
|
||||
jobFairOrganizeUnit?: string;
|
||||
jobFairIntroduction?: string;
|
||||
jobFairProcess?: string;
|
||||
jobFairPhone?: string;
|
||||
jobFairImage?: string;
|
||||
enterpriseNum?: string;
|
||||
@@ -71,6 +72,8 @@ interface PortalOutdoorFairDetailData extends Partial<PortalJobFairItem> {
|
||||
holdTime?: string;
|
||||
endTime?: string;
|
||||
photoUrl?: string;
|
||||
fairIntroduction?: string;
|
||||
fairProcess?: string;
|
||||
}
|
||||
|
||||
interface PortalOutdoorFairDetailResult {
|
||||
@@ -197,7 +200,8 @@ export async function getPortalJobFairDetail(channel: JobFairChannel, jobFairId:
|
||||
jobFairEndTime: fair.jobFairEndTime || fair.endTime,
|
||||
jobFairHostUnit: fair.jobFairHostUnit || fair.hostUnit,
|
||||
jobFairOrganizeUnit: fair.jobFairOrganizeUnit,
|
||||
jobFairIntroduction: fair.jobFairIntroduction,
|
||||
jobFairIntroduction: fair.jobFairIntroduction || fair.fairIntroduction,
|
||||
jobFairProcess: fair.jobFairProcess || fair.fairProcess,
|
||||
jobFairPhone: fair.jobFairPhone,
|
||||
jobFairImage: fair.jobFairImage || fair.photoUrl,
|
||||
boothNum:
|
||||
|
||||
@@ -33,6 +33,10 @@ export interface OutdoorFairItem {
|
||||
onlineApply: boolean;
|
||||
/** 招聘会照片 */
|
||||
photoUrl: string;
|
||||
/** 招聘会简介 */
|
||||
fairIntroduction?: string;
|
||||
/** 招聘会整体流程 */
|
||||
fairProcess?: string;
|
||||
/** 当前企业ID */
|
||||
companyId?: number;
|
||||
/** 当前企业名称 */
|
||||
@@ -88,6 +92,10 @@ export interface OutdoorFairForm {
|
||||
applyEndTime: string;
|
||||
onlineApply: boolean;
|
||||
photoUrl: string;
|
||||
/** 招聘会简介 */
|
||||
fairIntroduction?: string;
|
||||
/** 招聘会整体流程 */
|
||||
fairProcess?: string;
|
||||
/** 更换场地时确认清空旧展位图与预定,并按新模板重建 */
|
||||
resetBoothMap?: boolean;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user