From da111954957d894857434c285636751e8a5020b7 Mon Sep 17 00:00:00 2001 From: jlzhangyx5 Date: Mon, 26 May 2025 17:44:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=84=E5=A7=94=E4=BC=9A-=E6=9C=AA=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E3=80=81=E5=85=AC=E5=91=8A=E7=BB=93=E6=9E=84=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/proxy.ts | 7 +- .../structure/BiddingAnnoStructureForm.tsx | 971 ++++++++++ .../BiddingAnnouncement/structure/Medias.tsx | 106 + .../structure/fieldItem.tsx | 177 ++ .../BiddingAnnouncement/structure/index.less | 42 + .../JudgingPanel/List/indexcopy.tsx | 1697 +++++++++++++++++ .../JudgingPanel/List/service.ts | 7 +- 7 files changed, 3005 insertions(+), 2 deletions(-) create mode 100644 src/pages/Bid/BiddingAnnouncement/structure/BiddingAnnoStructureForm.tsx create mode 100644 src/pages/Bid/BiddingAnnouncement/structure/Medias.tsx create mode 100644 src/pages/Bid/BiddingAnnouncement/structure/fieldItem.tsx create mode 100644 src/pages/Bid/BiddingAnnouncement/structure/index.less create mode 100644 src/pages/Tender/ProjectManager/JudgingPanel/List/indexcopy.tsx diff --git a/config/proxy.ts b/config/proxy.ts index 16f18a0..19942a8 100644 --- a/config/proxy.ts +++ b/config/proxy.ts @@ -34,10 +34,15 @@ export default { pathRewrite: { '/api/biz-service-ebtp-project': '' }, }, '/api/sys-manager-ebtp-project': { - target: 'http://localhost:18012', + target: 'http://localhost:18030', changeOrigin: true, pathRewrite: { '/api/sys-manager-ebtp-project': '' }, }, + '/api/biz-service-ebtp-rsms': { + target: 'http://localhost:18014', + changeOrigin: true, + pathRewrite: { '/api/biz-service-ebtp-rsms': '' }, + }, // '/api/wfap/v1/audit/bill/find/by/procid': { // target: 'http://10.242.31.158:8891/',//审批单 uat环境自动审批,暂时用不到 // changeOrigin: true, diff --git a/src/pages/Bid/BiddingAnnouncement/structure/BiddingAnnoStructureForm.tsx b/src/pages/Bid/BiddingAnnouncement/structure/BiddingAnnoStructureForm.tsx new file mode 100644 index 0000000..f3eed84 --- /dev/null +++ b/src/pages/Bid/BiddingAnnouncement/structure/BiddingAnnoStructureForm.tsx @@ -0,0 +1,971 @@ +import React, { useEffect, useState } from 'react'; +import { Avatar, Button, Col, Collapse, Form, Input, List, Modal, Image, Row, Space, Spin, message, Checkbox, Affix, Table, DatePicker, Anchor, BackTop } from 'antd'; +import { UserSwitchOutlined, CarryOutOutlined, MinusCircleOutlined, PlusOutlined, ArrowUpOutlined } from '@ant-design/icons'; +import moment from 'moment' +import logo from '@/assets/logo.svg'; +import styles from './index.less'; +import './index.less'; +import { getProOpenTenderForm, getSessionUserData } from "@/utils/session"; +import { isEmpty } from '@/utils/CommonUtils'; +import { CheckboxItem, DatePickerItem, InputItem, InputNumberItem, RadioItem, TextAreaItem } from './fieldItem'; +import { btnAuthority } from '@/utils/authority'; +import Dating from '@/images/招标公告/dating.jpg'; +import { getAnnoStructuralValue, getChooseRoom, saveAnnoStructuralFormData } from '../service'; +import { UploadProps } from "antd/lib/upload/interface"; +import { EditableProTable, ProColumns } from '@ant-design/pro-table'; +import ExtendUpload from '@/utils/ExtendUpload'; +import { SnowflakeID } from '@/services/untilService'; +import { history } from 'umi'; +import Medias from './Medias'; +const { Panel } = Collapse; +const formLayout = { labelCol: { span: 8 }, wrapperCol: { span: 16 }, }; +const form24Layout = { labelCol: { span: 4 }, wrapperCol: { span: 20 }, }; +const form24LayoutWithOutLabel = { wrapperCol: { span: 20, offset: 4 }, }; +const formFileWrapperCol = { wrapperCol: { span: 9 }, }; +const { Link } = Anchor; +/** + * 采购复盘-回填表 + * @param props + * @returns + */ + +const BiddingAnnoStructureForm: React.FC<{}> = (props: any) => { + // 取项目id + const projectId = props?.location?.state?.projectId; + const search = props?.location?.state?.search; + const annoId = props?.location?.state?.annoId; + const editInformation = props?.location?.state?.editStatus; + // const annoId = "1732282646482624512"; + // 取查询条件 + const stucturalId = "1"; + // 结构化信息 + const [annoStructureData, setAnnoStructureData] = useState([]); + // 取用户信息 + let data = getSessionUserData(); + // 招标公告---关联标段---当前选中的标段ids + const [sectionSelectIds, setSectionSelectIds] = useState([]); + // 项目概况和招标范围---标包情况---返回的全部标段信息 + const [sectionSelectData, setSectionSelectData] = useState([]); + // 招标文件的获取---招标文件费用---返回的全部标段信息 + const [expenses1AmountSectionData, setExpenses1AmountSectionData] = useState([]); + // 投标人资格能力要求---投标人资格能力要求---返回的全部包的投标人资格能力要求 + const [tenderAskData, setTenderAskData] = useState([]); + // 当前展开的折叠面板 + const [activeKey, setActiveKey] = useState([]); + // loading + const [loading, setLoading] = useState(false); + const [UploadID, setUploadID] = useState(); //upload 业务id + // const [editInformation, setEditInformation] = useState(props?.location?.state?.editStatus);//是否可编 + /*20210112 新增 发布媒体限制*/ + const [mediaType, setmediaType] = useState(); + // 2021-06-17 新增 发布媒体显示发布成功失败 + const [mediaReleases, mediaReleasesSet] = useState([]); + //右侧浮动层监听Dom + const [container, setContainer] = useState(null); + + const UploadProps: UploadProps = { + name: "file", + disabled: editInformation + } + // Form + const [form] = Form.useForm(); + /** + * 折叠面板选择 + * @param key + */ + const onCollapseChange = (key: string | string[]) => { + setActiveKey(key as string[]); + }; + + + const ReplyEndTimechange1 = (data?: any) => { + if (data != undefined) { + form.setFieldsValue({ + "openingTime": moment(data, 'yyyy-MM-DD HH:mm:ss'), + }); + } + }; + + /** + * 获取公告结构化信息 + * @param id + */ + const getStructuralList = async (id: any) => { + try { + const result = await getAnnoStructuralValue({ tpId: projectId, stucturalId: stucturalId, annoId: annoId ? annoId : undefined }); + if (result && result?.success) { + const offer = result?.data; + setAnnoStructureData(offer); + const linkKeys = offer?.groupVoList?.map((item: { id: any; }) => item?.id); + setActiveKey([...linkKeys]); + // 项目概况和招标范围---标包情况---返回的全部标段信息 + const overviewRangeDate = offer?.groupVoList?.filter((item: any) => item?.code === "overview_range"); + const sectionDate = overviewRangeDate[0]?.assemblyVoList?.filter((item: any) => item?.code === "sectionExpeses"); + setSectionSelectData(JSON.parse(sectionDate[0]?.extend2)) + { sectionDate[0]?.value && form.setFieldsValue({ "sectionExpeses": JSON.parse(sectionDate[0]?.value) }) } + // 招标文件的获取---招标文件费用---返回的全部标段信息 + const expesesDate = offer?.groupVoList?.filter((item: any) => item?.code === "expeses"); + const expenses1Amount = expesesDate[0]?.assemblyVoList?.filter((item: any) => item?.code === "expenses1Amount"); + setExpenses1AmountSectionData(JSON.parse(expenses1Amount[0]?.extend2)) + { expenses1Amount[0]?.value && form.setFieldsValue({ "expenses1Amount": JSON.parse(expenses1Amount[0]?.value) }) } + // 投标人资格能力要求---投标人资格能力要求---返回的全部包的投标人资格能力要求 + const tenderAskDate = offer?.groupVoList?.filter((item: any) => item?.code === "tenderAsk"); + const tenderAskProject = tenderAskDate[0]?.assemblyVoList?.filter((item: any) => item?.code === "tenderAskProject"); + setTenderAskData(JSON.parse(tenderAskProject[0]?.extend2)) + { tenderAskProject[0]?.value && form.setFieldsValue({ "tenderAskProject": JSON.parse(tenderAskProject[0]?.value) }) } + // 附件---附件---fileId + const annexDate = offer?.groupVoList?.filter((item: any) => item?.code === "annex"); + const fileId = annexDate[0]?.assemblyVoList?.filter((item: any) => item?.code === "fileId"); + setUploadID(fileId[0]?.value); + } + } catch (error) { + + } + } + const check = (data: any) => { + let msg = "false"; + if (form.getFieldValue("docStartTime") < moment().startOf('day')) { + message.warn('招标文件获取开始时间需晚于当前时间'); + } else if (moment(form.getFieldValue("docEndTime")).startOf('day').diff(moment(form.getFieldValue("docStartTime")).startOf('day'), "days") < 5) { + message.warn('招标文件获取截止时间需与文件获取开始时间间隔不少于5天'); + } else if (moment(form.getFieldValue("replyEndTime")).startOf('day').diff(moment(form.getFieldValue("docStartTime")).startOf('day'), "days") < (getProOpenTenderForm() == "open_tender_form_1" ? 20 : 15)) { + message.warn('投标截止时间需与文件获取开始时间间隔不少于' + (getProOpenTenderForm() == "open_tender_form_1" ? 20 : 15) + '天'); + } else if (form.getFieldValue("replyEndTime").format('YYYY-MM-DD HH:mm:ss') < form.getFieldValue("docEndTime").format('YYYY-MM-DD HH:mm:ss')) { + message.warn('投标截止时间需晚于或等于投标文件获取截止时间'); + } else if (moment(form.getFieldValue("openingTime")).diff(moment(form.getFieldValue("replyEndTime")), "minutes") != 0) { + message.warn('开标时间(' + form.getFieldValue("openingTime").format("yyyy-MM-DD HH:mm") + ')需与投标截止时间(' + form.getFieldValue("replyEndTime").format("yyyy-MM-DD HH:mm") + ')相同'); + } else if (form.getFieldValue("openhallTitle")?.substring(0, 10) != moment(form.getFieldValue("openingTime")).format('YYYY-MM-DD')) { + message.warn('开标大厅日期需与开标日期相同'); + } else if (data?.sectionDivide === "划分" && !data?.sectionNumber) { + message.warn('标包数量不可为空'); + } else { + msg = "true" + } + return msg; + } + + /** + * 保存 + */ + const onSave = async () => { + form.setFieldsValue({ "fileId": form.getFieldValue("fileId") ? form.getFieldValue("fileId") : UploadID }); + form.validateFields().then(async values => { + if (check(values) === "true") { + let structuralDataList: any[] = []; + for (let i = 0, length = annoStructureData?.groupVoList?.length; i < length; i++) { + const item = annoStructureData?.groupVoList[i]; + for (let j = 0, jlength = item?.assemblyVoList?.length; j < jlength; j++) { + const jitem = item?.assemblyVoList[j]; + if (isEmpty(values?.[jitem?.code])) { // 空值或者类型为表格无需返回数据 || jitem?.type === 6 else + if (jitem?.code === "annoNature") { + structuralDataList.push({ + assemblyId: jitem?.id, + assemblyCode: jitem?.code, + value: "1", + }) + } else if (jitem?.code === "source") { + structuralDataList.push({ + assemblyId: jitem?.id, + assemblyCode: jitem?.code, + value: "11", + }) + } + } else if (jitem?.type === "0") { // 默认文本 + // if (jitem?.ifShow === "1") { + structuralDataList.push({ + assemblyId: jitem?.id, + assemblyCode: jitem?.code, + value: jitem.value ? jitem.value : values?.[jitem?.code], + }) + // } + } else if (jitem?.type === "3" || jitem?.type === "31") { // 多选 + structuralDataList.push({ + assemblyId: jitem?.id, + assemblyCode: jitem?.code, + value: values[jitem?.code], + }) + } else if (jitem?.type === "4" || jitem?.type === "5") { // 日期 需要格式化时间 + structuralDataList.push({ + assemblyId: jitem?.id, + assemblyCode: jitem?.code, + value: moment(values[jitem?.code]).format('yyyy-MM-DD HH:mm:ss'), + }) + } else if (jitem?.type === "9") { // 表格 + // if (jitem?.code === "sectionExpeses") { + structuralDataList.push({ + assemblyId: jitem?.id, + assemblyCode: jitem?.code, + value: values[jitem?.code], + }) + // } + } else if (jitem?.type === "10") { // 附件 + structuralDataList.push({ + assemblyId: jitem?.id, + assemblyCode: jitem?.code, + value: values[jitem?.code], + }) + } else { //其他数值型字段放到contentValue上 + structuralDataList.push({ + assemblyId: jitem?.id, + assemblyCode: jitem?.code, + value: values[jitem?.code], + }) + } + } + } + try { + let params = { + // ...offerData, + structuralDataList, + tpId: projectId, + stucturalId: stucturalId, + sections: sectionSelectIds, + } + setLoading(true); + const result = await saveAnnoStructuralFormData(params); + if (result && result?.success) { + message.success("保存成功!"); + back(); + } + setLoading(false); + } catch (error) { + setLoading(false); + } + } + }) + } + + const back = () => { + history.push({ pathname: "/ProjectLayout/biddingAnnouncement/BiddingAnnouncementList", state: { returnParams: search } }) + } + useEffect(() => { + if (!annoId) { + SnowflakeID().then(res => { + setUploadID(res.id); + }); + } + if (projectId) { + getStructuralList(projectId); + } + // isCheck() + return () => { + } + }, []) + + useEffect(() => { + const selectData = sectionSelectData.filter((item: any) => sectionSelectIds.indexOf(item?.sectionId) !== -1); + const amountSelectData = expenses1AmountSectionData.filter((item: any) => sectionSelectIds.indexOf(item?.sectionId) !== -1); + const tenderAskProjectData = tenderAskData.filter((item: any) => sectionSelectIds.indexOf(item?.sectionId) !== -1); + form.setFieldsValue({ "sectionExpeses": selectData }) + form.setFieldsValue({ "expenses1Amount": amountSelectData }) + form.setFieldsValue({ "tenderAskProject": tenderAskProjectData }) + form.setFieldsValue({ "sectionNumber": sectionSelectIds.length }) + }, [sectionSelectIds]) + + + const [spinning, setSping] = useState(false);//加载遮罩 + const [choiceHallType, setChoiceHallType] = useState(false);//选择开标大厅窗口状态 + const [choiceHallData, setChoiceHallData] = useState([]);//选择开标大厅窗口状态 + /* 选择开标大厅 */ + const getChooseRoomList = async () => { + setSping(true); + //先获取开标时间 没有不打开modal + let openTime = form.getFieldValue('openingTime'); + if (openTime) {//不为空 + await getChooseRoom(openTime.format('YYYY-MM-DD')).then(res => { + if (res != null && res.message == "success") { + setChoiceHallData(res.data) + setChoiceHallType(true); + } else { + message.error(res.message); + } + }) + } else { + message.error('请先录入开标时间!') + } + setSping(false); + } + + const confirmChooseRoom = (data: any) => { + if (!(parseInt(data.num) < data.max)) { + message.error('所选大厅预约已满,请更换。') + } else { + setChoiceHallType(false); + form.setFieldsValue({ + "openhallId": data.id, + "openhallTitle": data.openDate + }); + } + } + //招标公告-关联标段-多选框 + const SectionCheckDom = (field: any) => { + const { onChange, value } = field; + setSectionSelectIds(value) + return ( + + { + field?.extend2 && JSON.parse(field?.extend2)?.map((item: any) => ( + + {Object.values(item)[0]} + + )) + } + + ) + }; + + //项目概况和招标范围-标包情况-表格 + const columns: ProColumns[] = [ + { + title: '序号', + editable: false, + valueType: 'index', + width: "5%", + fixed: 'left', + }, + { + title: '标包名称', + editable: false, + dataIndex: 'sectionName', + key: 'sectionName', + width: "20%", + }, + { + title: '是否最高限价', + dataIndex: 'ifCeilingPrice', + key: 'ifCeilingPrice', + width: "10%", + valueType: 'radio', + valueEnum: { + "0": { text: '否' }, + "1": { text: '是' }, + }, + }, + { + title: '最高限价(元)', + dataIndex: 'ceilingPrice', + key: 'ceilingPrice', + width: "15%", + tooltip: "是否最高限价选择【是】,当前行的最高限价(元)必须填写", + formItemProps: { + rules: [{ pattern: /^[0-9]+(\.[0-9]{1,2})?$/, message: '请输入正确数值(最多2位小数)' }, + { pattern: /^.{0,21}$/, message: '超长' }], + + } + }, + { + title: '分配情况', + editable: false, + dataIndex: 'ratioValue', + key: 'ratioValue', + width: "40%", + }, + ]; + //项目概况和招标范围-标包情况-表格 + const SectionExpesesTableItem = (field: any) => { + const { value, onChange } = field; + //处理列头 + return ( + item.sectionId) : [], + onValuesChange: (record, recordList) => { + onChange(recordList) + }, + }} + /> + ) + } + + //投标格式能力要求-投标格式能力要求-表格 + const TenderAskColumns: ProColumns[] = [ + { + title: '序号', + editable: false, + valueType: 'index', + width: "5%", + fixed: 'left', + }, + { + title: '资格条件', + dataIndex: 'condition', + key: 'condition', + width: "60%", + formItemProps: () => { + return { + rules: [{ required: true, message: '此项为必填项' }], + }; + }, + }, + { + title: '操作', + valueType: 'option', + width: 200, + render: (text, record, _, action) => [ + , + , + ], + }, + ]; + //投标格式能力要求-投标格式能力要求-表格类型定义 + type DataSourceType = { + id: number; + condition?: string; + }; + //投标格式能力要求-投标格式能力要求-表格 + const TenderAskTableItem = (field: any) => { + const { value, onChange } = field; + //处理列头 + return ( + + rowKey="id" + style={{ width: "90%" }} + recordCreatorProps={{ + newRecordType: 'dataSource', + hidden: editInformation, + creatorButtonText: '新增', + record: () => ({ + id: Date.now(), + condition: "", + }), + }} + columns={TenderAskColumns} + value={value ? value : []} + editable={{ + type: 'multiple', + onValuesChange: (record, recordList) => { + onChange(recordList) + }, + actionRender: (row, config, defaultDom) => { + return [ + defaultDom.save, + defaultDom.delete || defaultDom.cancel + ]; + }, + }} + /> + ) + } + + //投标格式能力要求-投标格式能力要求-表格 + const TenderAskProjectColumns: any[] = [ + { + title: '序号', + valueType: 'index', + width: 100, + render: (text: any, _: any, index: any) => index + 1, + }, + { + title: '资格条件', + dataIndex: 'condition', + key: 'condition', + // width: "60%", + }, + ]; + //投标格式能力要求-投标格式能力要求-表格 + const TenderAskProjectTableItem = (field: any) => { + const { value, onChange } = field; + //处理列头 + return ( + + + ) + } + + //招标文件的获取-招标文件费用-表格 + const expenses1AmountColumns: ProColumns[] = [ + { + title: '序号', + editable: false, + valueType: 'index', + width: "5%", + fixed: 'left', + }, + { + title: '标包名称', + editable: false, + dataIndex: 'sectionName', + key: 'sectionName', + width: "20%", + }, + { + title: '费用(元)', + dataIndex: 'amount', + key: 'amount', + width: "20%", + formItemProps: { + rules: [{ pattern: /^[0-9]+(\.[0-9]{1,2})?$/, message: '请输入正确数值(最多2位小数)' }, + { pattern: /^.{0,21}$/, message: '超长' }], + + } + }, + ]; + //招标文件的获取-招标文件费用-表格 + const Expenses1AmountTableItem = (field: any) => { + const { value, onChange } = field; + //处理列头 + return ( + item.sectionId) : [], + onValuesChange: (record, recordList) => { + onChange(recordList) + }, + }} + /> + ) + } + + //招标文件投递-投递文件数量-表格 + const submitFileNumberColumns: ProColumns[] = [ + { + title: '序号', + editable: false, + valueType: 'index', + width: "5%", + fixed: 'left', + }, + { + title: '文件类型', + editable: false, + dataIndex: 'name', + key: 'name', + width: "20%", + }, + { + title: '份数(份)', + dataIndex: 'number', + key: 'number', + width: "20%", + formItemProps: { + rules: [{ pattern: /^[0-9]?$/, message: '请输入正确数值' }, + { pattern: /^.{0,21}$/, message: '超长' }], + + } + }, + ]; + const SubmitFileNumberTableItem = (field: any) => { + const { value, onChange } = field; + //处理列头 + return ( + item.name) : JSON.parse(field?.extend2).map((item: any) => item.name), + onValuesChange: (record, recordList) => { + onChange(recordList) + }, + }} + /> + ) + } + + const ContactInformationFormItem = (fileds: any) => { + const assemblyVo = fileds?.assemblyVo + const icondition = JSON.parse(assemblyVo?.icondition) + //处理列头 + return ( + + { + if (names.length > icondition?.number) { + return Promise.reject(new Error('数量超出')); + } + }, + }, + ]} + initialValue={JSON.parse(assemblyVo?.value)} + > + {(fields, { add, remove }, { errors }) => { + if (fields.length === 0) { + add() + } + return <> + {fields.map((field, index) => ( + + + + + {fields.length > 1 ? ( + remove(field.name)} + hidden={editInformation} + /> + ) : null} + + ))} + + + + + + }} + + ) + } + //修改发布媒体 触发方法-邢书源 + const medias9 = (dis: any) => { + if (dis) { + form.setFieldsValue({ + "medias": ["9"], + }); + } + setmediaType(dis); + } + const ShowComponent = (fileds: any) => { + const groupVo = fileds?.groupVo + const assemblyVo = fileds?.assemblyVo + return ( + + + + + + + + + + } else if (assemblyVo?.type === "8") { // 数字 + return + } else if (assemblyVo?.type === "9" && assemblyVo?.code === "sectionExpeses") { // 表格-标包情况 + return + } else if (assemblyVo?.type === "9" && assemblyVo?.code === "tenderAsk") { // 表格-补充资格能力要求 + return + } else if (assemblyVo?.type === "9" && assemblyVo?.code === "tenderAskProject") { // 表格-投标格式能力要求 + return + } else if (assemblyVo?.type === "9" && assemblyVo?.code === "expenses1Amount") { // 表格-招标文件费用 + return + } else if (assemblyVo?.type === "9" && assemblyVo?.code === "submitFileNumber") { // 表格-投递文件数量 + return + } else if (assemblyVo?.type === "10") { // 附件 + return UploadID != "empty" ? + + : null + } else if (assemblyVo?.type === "14") { + return
+
+
+ } else { + return <> + } + })()} + + ); + } + const handleClick = ( + e: React.MouseEvent, + link: { + title: React.ReactNode; + href: string; + }, + ) => { + e.preventDefault(); + }; + return ( + <> +
+
+ 中国联通智慧供应链平台 | 招标采购中心 +
+
    +
  • {moment().format("YYYY-MM-DD")}
  • + {data?.organizationName == null ? null : (
  • {data.organizationName}
  • )} +
  • + + + {data.fullName} + +
  • +
+
+
+
+ +

招标公告

+
+ + + + + + +
+
+
+
+ {container && ( + <> + container} style={{ overflow: 'hidden' }} onClick={handleClick}> + {annoStructureData?.groupVoList && annoStructureData?.groupVoList?.map((groupVo: any) => ( + + ))} + + + )} +
+ +
+
+
+
+
+ + + { + annoStructureData?.groupVoList && annoStructureData?.groupVoList?.map((groupVo: any) => ( + +
+ + { + groupVo?.assemblyVoList && groupVo?.assemblyVoList?.map((assemblyVo: any) => { + const icondition = JSON.parse(assemblyVo?.icondition) + return
+ {assemblyVo?.icondition ? + prevValues[icondition?.key] !== currentValues[icondition?.key]} + > + {({ getFieldValue }) => + (icondition?.type === "2" && getFieldValue(icondition?.key) === icondition?.value) ? //单选 + + (assemblyVo.type === "13") ? + () + : + ( + ) + : + (icondition?.type === "3" && getFieldValue(icondition?.key)?.indexOf(icondition?.value) > -1) ? (//多选 + + ) : null + } + + : + + } + + }) + } + + + + )) + } + + + + + {choiceHallType && + + + + )} + > +

温馨提示:如当天所有大厅预约已满,请联系系统客服帮您处理~

+ ( + confirmChooseRoom(item)}> +
+ +
+
{item.openDate}
+
已预约:{item.num}/{item.max}
+
+
+
+ )} + /> +
+ } + + + ); +}; + +export default BiddingAnnoStructureForm; diff --git a/src/pages/Bid/BiddingAnnouncement/structure/Medias.tsx b/src/pages/Bid/BiddingAnnouncement/structure/Medias.tsx new file mode 100644 index 0000000..635347b --- /dev/null +++ b/src/pages/Bid/BiddingAnnouncement/structure/Medias.tsx @@ -0,0 +1,106 @@ +import { getDefId } from "@/utils/session"; +import { Checkbox, Col, Form, Row, Typography } from "antd"; +import React, { useEffect, useState } from "react" +import { getMediaService } from "../service"; + +//公告发布媒体 +interface MediaProps { + vis: boolean, + editInformation: boolean, + mediaType: boolean, + mediaData: any[], + mediaReleases: any, + medias9: (dis: any) => void, + label?: string, +} +const Media: React.FC = (props) => { + const { + vis, + editInformation, + mediaType, + mediaData, + mediaReleases, + medias9, + label + } = props; + //============================================================state + const [medias, mediasSet] = useState([]); + const { Text } = Typography + const defId = getDefId(); //流程id + //mediaReleases: [{mediaId: "9", status: 1}] 9-无需推送外网; 0:没发 1:发布成功 2发布失败 + let mediaStatus = {};//媒体对应发布状态 + mediaReleases?.length > 0 && mediaReleases.map((item: any) => { + let state = '' + item.status == '0' && (state = '暂未发送'); + item.status == '1' && (state = '发布成功'); + item.status == '2' && (state = '发布失败'); + mediaStatus[item.mediaId] = state; + }); + //============================================================func + useEffect(() => { + getMedias() + }, [vis]); + //取媒体数据 + async function getMedias() { + if (vis) { + // let data: never[] = []; + // await getMediaService().then((res: any) => { + // if (res.code == 200) { + // data = res.data; + // } + // }) + // mediasSet(data); + mediasSet(mediaData); + } + } + const changeMedia = (checkedParam: any) => { + medias9(checkedParam.indexOf("9") > -1); + } + //============================================================dom + return ( + <> + + + + { + medias?.length != 0 && + medias.map((item: any) => { + return ( +
+ + {item.webName} + + {item?.remark} + + + { + mediaReleases?.length > 0 && mediaStatus[item.id] != undefined && item.id != '9' && + `(${mediaStatus[item.id]})` + } + + + + ) + }) + } + + + + {/* {defId != "recruit_multi" && 如选择发布到【中国招标投标公共服务平台】,在发布前需填写【公共服务平台】信息} */} + + ) +} +export default Media \ No newline at end of file diff --git a/src/pages/Bid/BiddingAnnouncement/structure/fieldItem.tsx b/src/pages/Bid/BiddingAnnouncement/structure/fieldItem.tsx new file mode 100644 index 0000000..2fda1b0 --- /dev/null +++ b/src/pages/Bid/BiddingAnnouncement/structure/fieldItem.tsx @@ -0,0 +1,177 @@ +import React from "react" +import { Checkbox, Col, DatePicker, Input, InputNumber, Radio, Row } from "antd" +import moment from "moment" +import TextArea from "antd/lib/input/TextArea"; + +/** + * Input 文本 + * @param field + * @returns + */ +export const InputItem = (field: any) => { + const { onChange, value } = field; + return ( + + ) +} +/** + * TextArea 文本 + * @param field + * @returns + */ +export const TextAreaItem = (field: any) => { + const { onChange, value } = field; + return ( +