Merge branch '20220413-zjl-公共服务平台' into 'master-20220527'
5.27 公共服务平台对接 See merge request eshop/fe_service_ebtp_frontend!88
This commit is contained in:
@ -71,6 +71,10 @@ export default [
|
||||
},
|
||||
],
|
||||
},
|
||||
{//公共服务平台
|
||||
path: '/PublicPlatform',
|
||||
component: './Bid/BiddingAnnouncement/components/PublicPlatform',
|
||||
},
|
||||
|
||||
//==============================================================引入的业务路由
|
||||
...approvalForm,//审批单
|
||||
|
BIN
src/images/stamp/stamp_example.png
Normal file
BIN
src/images/stamp/stamp_example.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 290 KiB |
@ -18,6 +18,7 @@ import { history } from "umi";
|
||||
import { btnAuthority } from "@/utils/authority";
|
||||
import { getApprProcessList } from "@/utils/SeleApprovalProcess/service"
|
||||
import SeleApprovalProcess from "@/utils/SeleApprovalProcess"
|
||||
import { isEmpty } from "@/utils/CommonUtils"
|
||||
import { checkObjectId } from "@/utils/DownloadUtils"
|
||||
|
||||
/*
|
||||
@ -158,6 +159,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => toEdit(record)}>编辑</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" disabled={pageloading} onClick={() => handleApproval(record)}>提交审批</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -167,6 +169,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn3 = (
|
||||
@ -176,6 +179,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn4 = (
|
||||
@ -185,6 +189,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -194,6 +199,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
<Button type="text" onClick={() => toChange(record)}>变更</Button>
|
||||
</>
|
||||
);
|
||||
@ -205,6 +211,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
|
||||
@ -272,6 +279,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => toEdit4Change(record)}>编辑</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" disabled={pageloading} onClick={() => handleApproval(record)}>提交审批</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -281,6 +289,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn3 = (
|
||||
@ -290,6 +299,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn4 = (
|
||||
@ -299,6 +309,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -308,6 +319,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn6 = (
|
||||
@ -317,6 +329,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { Checkbox, Col, Form, Row } from "antd";
|
||||
import { getDefId } from "@/utils/session";
|
||||
import { Checkbox, Col, Form, Row, Typography } from "antd";
|
||||
import React, { useEffect, useState } from "react"
|
||||
import { getMediaService } from "../service";
|
||||
|
||||
@ -26,7 +27,8 @@ const Media: React.FC<MediaProps> = (props) => {
|
||||
} = props;
|
||||
//============================================================state
|
||||
const [medias, mediasSet] = useState<any>([]);
|
||||
|
||||
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) => {
|
||||
@ -81,7 +83,19 @@ const Media: React.FC<MediaProps> = (props) => {
|
||||
{
|
||||
medias?.length != 0 &&
|
||||
medias.map((item: any) => {
|
||||
return (
|
||||
return defId == "recruit_multi" ? (
|
||||
item.id != "6" && <Col span={24} key={item.id + 'Col'}>
|
||||
<Checkbox disabled={item.id != '9' && mediaType} key={item.id} value={item.id}>
|
||||
{item.webName}
|
||||
<span style={{ color: mediaStatus[item.id] == '发布成功' ? 'rgb(7,193,96)' : 'red' }}>
|
||||
{
|
||||
mediaReleases?.length > 0 && mediaStatus[item.id] != undefined && item.id != '9' &&
|
||||
`(${mediaStatus[item.id]})`
|
||||
}
|
||||
</span>
|
||||
</Checkbox>
|
||||
</Col>
|
||||
) : (
|
||||
<Col span={24} key={item.id + 'Col'}>
|
||||
<Checkbox disabled={item.id != '9' && mediaType} key={item.id} value={item.id}>
|
||||
{item.webName}
|
||||
@ -99,6 +113,7 @@ const Media: React.FC<MediaProps> = (props) => {
|
||||
</Row>
|
||||
</Checkbox.Group>
|
||||
</Form.Item>
|
||||
{defId != "recruit_multi" && <Text type="secondary">如选择发布到【中国招标投标公共服务平台】,在发布前需填写【公共服务平台】信息</Text>}
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
406
src/pages/Bid/BiddingAnnouncement/components/PublicPlatform.tsx
Normal file
406
src/pages/Bid/BiddingAnnouncement/components/PublicPlatform.tsx
Normal file
@ -0,0 +1,406 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import logo from '@/images/opening/logo.svg';
|
||||
import styles from './style.less';
|
||||
import './style.less';
|
||||
import { Anchor, BackTop, Button, Collapse, Descriptions, Form, Input, message, Modal, PageHeader, Space, Spin, Tooltip, Typography } from 'antd';
|
||||
import { btnAuthority } from '@/utils/authority';
|
||||
import { ArrowUpOutlined, CaretRightOutlined, InfoCircleOutlined } from '@ant-design/icons';
|
||||
import { getURLInformation, isNotEmpty, returnDictVal } from '@/utils/CommonUtils';
|
||||
import ExtendUpload from '@/utils/ExtendUpload';
|
||||
import { getPublicData, savePublicData } from '../service';
|
||||
import { getDefId, getDicData, getProMethod } from '@/utils/session';
|
||||
import { getAllFlowNameByRoomType } from '@/utils/FlowUtils';
|
||||
import exampleImg from '@/images/stamp/stamp_example.png'
|
||||
|
||||
const layout = {
|
||||
labelCol: {
|
||||
span: 6,
|
||||
},
|
||||
wrapperCol: {
|
||||
span: 17,
|
||||
},
|
||||
};
|
||||
|
||||
const validateMessages = {
|
||||
required: '请填写当前项内容',
|
||||
};
|
||||
|
||||
const PublicPlatform: React.FC<{}> = () => {
|
||||
//loading
|
||||
const [loading, setLoading] = useState<boolean>(false);
|
||||
//右侧浮动层监听Dom
|
||||
const [container, setContainer] = useState<HTMLDivElement | null>(null);
|
||||
//初始数据
|
||||
const [initialData, setInitialData] = useState<any>({});
|
||||
//只读状态readOnly 默认只读
|
||||
const [readOnly, setReadOnly] = useState<boolean>(true);
|
||||
//公示or公告 true-公示 false-公告
|
||||
const [annoType, setAnnoType] = useState<boolean>(false);
|
||||
//示例弹窗Example
|
||||
const [exampleVisible, setExampleVisible] = useState<boolean>(false);
|
||||
//annoId 公告公示id
|
||||
const annoId = getURLInformation("id");
|
||||
//资审流程所处阶段 (roomType 2是后审,1是预审)
|
||||
const roomType = getURLInformation('roomType') === null ? '2' : getURLInformation('roomType');
|
||||
//采购方式
|
||||
const proMethod = getProMethod();
|
||||
//所有流程名
|
||||
const flowName = getAllFlowNameByRoomType(proMethod, roomType);
|
||||
//流程id
|
||||
const defId = getDefId();
|
||||
//获取字典
|
||||
const getDict: any = getDicData();
|
||||
const dictData = JSON.parse(getDict);
|
||||
|
||||
const { TextArea } = Input;
|
||||
const { Panel } = Collapse;
|
||||
const { Text } = Typography;
|
||||
const { Link } = Anchor;
|
||||
const [form] = Form.useForm();
|
||||
//Input
|
||||
function returnInput(name: string | string[], label: string, readonly: boolean, initialValue: string | number | null, rules?: any[], placeholder?: string, maxLength?: number, extra?: React.ReactNode, width?: string | number, type?: string, suffix?: React.ReactNode) {
|
||||
return (
|
||||
<Form.Item
|
||||
name={name}
|
||||
label={label}
|
||||
rules={rules}
|
||||
extra={extra}
|
||||
initialValue={initialValue}
|
||||
>
|
||||
<Input
|
||||
bordered={!readonly}
|
||||
readOnly={readonly}
|
||||
placeholder={placeholder}
|
||||
style={{ width }}
|
||||
maxLength={maxLength ? maxLength : 20}
|
||||
type={type}
|
||||
suffix={suffix}
|
||||
/>
|
||||
</Form.Item>
|
||||
)
|
||||
}
|
||||
//TextArea
|
||||
function returnArea(name: string | string[], label: string, readonly: boolean, initialValue: string | null, rules?: any[], placeholder?: string, extra?: React.ReactNode, maxLength?: number) {
|
||||
return (
|
||||
<Form.Item
|
||||
name={name}
|
||||
label={label}
|
||||
rules={rules}
|
||||
extra={extra}
|
||||
initialValue={initialValue}
|
||||
>
|
||||
<TextArea
|
||||
bordered={!readonly}
|
||||
showCount={!readonly}
|
||||
readOnly={readonly}
|
||||
maxLength={maxLength ? maxLength : 1000}
|
||||
rows={3}
|
||||
autoSize={readonly}
|
||||
placeholder={placeholder}
|
||||
/>
|
||||
</Form.Item>
|
||||
)
|
||||
}
|
||||
//Upload
|
||||
function returnUpload(name: string | string[], label: string, readonly: boolean, initialValue?: string, rules?: any[], extra?: React.ReactNode) {
|
||||
return (
|
||||
<Form.Item
|
||||
name={name}
|
||||
label={label}
|
||||
rules={rules}
|
||||
extra={
|
||||
<div style={{ color: '#b30000', marginTop: 16 }}>
|
||||
<p>1、请上传含公告(公示)正文的pdf文件</p>
|
||||
<p>2、依据公共服务平台要求,上传的pdf请务必进行手写签名及盖章
|
||||
<Tooltip title="查看示例">
|
||||
<InfoCircleOutlined style={{ marginLeft: 4 }} onClick={() => setExampleVisible(true)} />
|
||||
</Tooltip>
|
||||
</p>
|
||||
<p>勾选中国招标投标公共服务平台后该操作为必须执行</p>
|
||||
</div>
|
||||
}
|
||||
>
|
||||
<ExtendUpload bid={initialValue} btnName="上传文件" maxCount={1} uploadProps={{ disabled: readonly, accept: ".pdf" }} />
|
||||
</Form.Item>
|
||||
)
|
||||
}
|
||||
//公示-标段(包)遍历
|
||||
const sectionsRender = (sections: any[] | null, readonly: boolean) => {
|
||||
if (isNotEmpty(sections)) {
|
||||
const activeKeyList = (length: number) => {
|
||||
const list: number[] = []
|
||||
for (let i = 0; i < length; i++) {
|
||||
list.push(i);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
return sections?.map((item, index) => (
|
||||
<Descriptions bordered key={index}>
|
||||
<Descriptions.Item label="标段(包)名称" span={2} key="1">
|
||||
{item.bidSectName}
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="标段(包)编号" key="2">
|
||||
{item.bidSectBizNum}
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="中标候选人" key="3">
|
||||
<Collapse
|
||||
defaultActiveKey={isNotEmpty(item.suppliers) ? activeKeyList(item.suppliers.length) : []}
|
||||
expandIcon={({ isActive }) => <CaretRightOutlined rotate={isActive ? 90 : 0} />}
|
||||
>
|
||||
{suppliersRender(item.suppliers, readonly)}
|
||||
</Collapse>
|
||||
</Descriptions.Item>
|
||||
</Descriptions>
|
||||
))
|
||||
}
|
||||
return null;
|
||||
}
|
||||
//公示-中标候选人遍历
|
||||
const suppliersRender = (suppliers: any[] | null, readonly: boolean) => {
|
||||
if (isNotEmpty(suppliers)) {
|
||||
return suppliers?.map((item, index) => (
|
||||
<Panel header={item.companyName} key={index}>
|
||||
{returnInput([item.sectionId, item.id, 'pmName'], "项目负责人姓名", readonly, item.pmName, [{ required: !readonly }], "项目负责人姓名")}
|
||||
{returnInput([item.sectionId, item.id, 'pmCode'], "项目负责人证件号码", readonly, item.pmCode, [{ required: !readonly }], "项目负责人证件号码", 18)}
|
||||
{returnArea([item.sectionId, item.id, 'pmCeritficates'], "项目负责人相关证书和编号", readonly, item.pmCeritficates, [{ required: !readonly }], "项目负责人相关证书和编号")}
|
||||
{returnArea([item.sectionId, item.id, 'quality'], "质量", readonly, item.quality, [{ required: !readonly }], "质量")}
|
||||
{returnArea([item.sectionId, item.id, 'evaluationStatus'], "评标情况", readonly, item.evaluationStatus, [{ required: !readonly }], "评标情况")}
|
||||
{returnArea([item.sectionId, item.id, 'winCandidateQualification'], "资格能力条件", readonly, item.winCandidateQualification, [{ required: !readonly }], "中标候选人响应招标文件的资格能力条件")}
|
||||
{returnInput([item.sectionId, item.id, 'timeLimit'], "工期/交货期/服务期", readonly, readonly ? item.timeLimit + "天" : item.timeLimit, [{ required: !readonly }], "天数", void 0, null, 100, readonly ? void 0 : "number", readonly ? null : "天")}
|
||||
</Panel>
|
||||
))
|
||||
}
|
||||
return null;
|
||||
}
|
||||
//项目信息
|
||||
const projectRender = (project: any, tenderer: any, agency: any, projectRecord: any, readonly: boolean) => {
|
||||
if (isNotEmpty(project) && isNotEmpty(tenderer) && isNotEmpty(agency) && isNotEmpty(projectRecord)) {
|
||||
const rel: boolean = readonly || project.readonly;
|
||||
return (
|
||||
<>
|
||||
{returnInput("tenderProjectCode", "项目编号", true, project.tenderProjectCode)}
|
||||
{returnArea("projectName", "项目名称", true, projectRecord.projectName)}
|
||||
{returnInput("agencyCode", "招标代理机构代码", true, agency.code)}
|
||||
{returnInput("agencyCompanyName", "招标代理机构名称", true, agency.companyName)}
|
||||
{returnInput("bidOrgDict", "招标组织形式", true, returnDictVal(dictData['organization=entrust'], projectRecord.bidOrgDict))}
|
||||
{returnInput("constant", "招标代理机构联系人", true, agency.constant)}
|
||||
{returnInput("tel", "招标代理机构联系电话", true, agency.tel)}
|
||||
{returnInput("name", "招标人名称", rel, tenderer.name, [{ required: !rel }], "招标人名称")}
|
||||
{returnInput("code", "招标人代码", rel, tenderer.code, [{ required: !rel }], "统一社会信用代码")}
|
||||
{returnArea("projectScale", "项目规模", rel, project.projectScale, [{ required: !rel }], "项目规模", null, 500)}
|
||||
{returnArea("tenderContent", "招标内容与范围及招标方案说明", rel, project.tenderContent, [{ required: !rel }], "招标内容与范围及招标方案说明")}
|
||||
</>
|
||||
)
|
||||
}
|
||||
return null;
|
||||
}
|
||||
//公告&公示信息
|
||||
const annoRender = (anno: any, readonly: boolean) => {
|
||||
if (isNotEmpty(anno)) {
|
||||
if (anno.annoNature === 1 || anno.annoNature === 7 || anno.annoNature === 8) {//公告&变更公告&再次发布
|
||||
return (
|
||||
<>
|
||||
{returnArea("annoTitle", "公告名称", true, anno.annoTitle)}
|
||||
{returnInput("docStartTime", flowName['fileName'] + "文件获取开始时间", true, anno.docStartTime)}
|
||||
{returnInput("docEndTime", flowName['fileName'] + "文件获取截止时间", true, anno.docEndTime)}
|
||||
{returnInput("replyEndTime", flowName['response'] + "截止时间", true, anno.replyEndTime)}
|
||||
{defId != "recruit_multi" && returnInput("openingTime", flowName['review'] + "时间", true, anno.openingTime)}
|
||||
{returnUpload("ctpspFileId", "PDF公告文件", readonly, anno.ctpspFileId, [{ required: !readonly, message: '请上传' }])}
|
||||
</>
|
||||
)
|
||||
} else if (anno.annoNature === 4) {//失败公告
|
||||
return (
|
||||
<>
|
||||
{returnArea("annoTitle", "失败公告名称", true, anno.annoTitle)}
|
||||
{returnInput("annoStartTime", "失败公告发布时间", true, anno.annoStartTime)}
|
||||
{returnInput("annoEndTime", "失败公告结束时间", true, anno.annoEndTime)}
|
||||
{returnUpload("ctpspFileId", "PDF公告文件", readonly, anno.ctpspFileId, [{ required: !readonly, message: '请上传' }])}
|
||||
</>
|
||||
)
|
||||
} else if (anno.annoNature === 201) {//公示
|
||||
return (
|
||||
<>
|
||||
{returnArea("annoTitle", "公示名称", true, anno.annoTitle)}
|
||||
{returnInput("docStartTime", "公示开始时间", true, anno.docStartTime)}
|
||||
{returnInput("docEndTime", "公示结束时间", true, anno.docEndTime)}
|
||||
{returnUpload("ctpspFileId", "PDF公示文件", readonly, anno.ctpspFileId, [{ required: !readonly, message: '请上传' }])}
|
||||
</>
|
||||
)
|
||||
}
|
||||
return
|
||||
}
|
||||
return null;
|
||||
}
|
||||
//保存方法
|
||||
const onSave = () => {
|
||||
form.validateFields()
|
||||
.then(values => {
|
||||
setLoading(true);
|
||||
console.log('success', values);
|
||||
const data = JSON.parse(JSON.stringify(initialData));//深拷贝
|
||||
console.log('init', data);
|
||||
//项目
|
||||
if (isNotEmpty(data?.project)) {
|
||||
data.project.projectScale = values.projectScale;
|
||||
data.project.tenderContent = values.tenderContent;
|
||||
}
|
||||
//投标人
|
||||
if (isNotEmpty(data?.tenderer)) {
|
||||
data.tenderer.name = values.name;
|
||||
data.tenderer.code = values.code;
|
||||
}
|
||||
//公告&公示
|
||||
if (isNotEmpty(data?.anno)) {
|
||||
data.anno.ctpspFileId = values.ctpspFileId;
|
||||
}
|
||||
//标段 中标候选人公示
|
||||
if (isNotEmpty(data?.sections)) {
|
||||
for (const item of data?.sections) {
|
||||
if (isNotEmpty(item.suppliers)) {
|
||||
for (const val of item.suppliers) {
|
||||
const formData: any = form.getFieldValue([item.id, val.id]);
|
||||
val.pmName = formData.pmName;
|
||||
val.pmCode = formData.pmCode;
|
||||
val.pmCeritficates = formData.pmCeritficates;
|
||||
val.quality = formData.quality;
|
||||
val.evaluationStatus = formData.evaluationStatus;
|
||||
val.winCandidateQualification = formData.winCandidateQualification;
|
||||
val.timeLimit = formData.timeLimit;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//保存数据
|
||||
savePublicData(data).then(res => {
|
||||
if (res?.code == 200 && res?.success) {
|
||||
message.success('保存成功');
|
||||
}
|
||||
}).finally(() => {
|
||||
setLoading(false);
|
||||
})
|
||||
})
|
||||
.catch(errorInfo => {
|
||||
console.log('error', errorInfo)
|
||||
});
|
||||
};
|
||||
|
||||
const handleClick = (
|
||||
e: React.MouseEvent<HTMLElement>,
|
||||
link: {
|
||||
title: React.ReactNode;
|
||||
href: string;
|
||||
},
|
||||
) => {
|
||||
e.preventDefault();
|
||||
console.log(link);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (isNotEmpty(annoId)) {
|
||||
setLoading(true);
|
||||
//获取公共服务平台数据
|
||||
getPublicData(annoId).then(res => {
|
||||
if (res?.code == 200) {
|
||||
const data = res?.data;
|
||||
setInitialData(data);
|
||||
if (isNotEmpty(data.anno)) {
|
||||
setAnnoType(data.anno.annoNature === 201);
|
||||
setReadOnly(data.anno.status != 1 && data.anno.status != 4);
|
||||
}
|
||||
}
|
||||
}).finally(() => {
|
||||
setLoading(false);
|
||||
})
|
||||
} else {
|
||||
message.error('获取公共服务平台数据失败,请联系管理员');
|
||||
}
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<div style={{ height: '100%', background: 'rgb(240,242,245)' }}>
|
||||
<div className={styles.header}>
|
||||
<div className={styles.headerAlign}>
|
||||
<img src={logo} style={{ height: '30px', position: 'relative', top: '-2px' }} />
|
||||
<span style={{ marginLeft: '10px', height: '30px' }}>招标采购中心 | 公共服务平台</span>
|
||||
</div>
|
||||
</div>
|
||||
<Spin spinning={loading} size='large'>
|
||||
<PageHeader
|
||||
title={
|
||||
<Space>
|
||||
{!readOnly && <Button type='primary' key='save' hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} onClick={() => onSave()}>保存</Button>}
|
||||
<Button key='close' onClick={() => window.close()}>关闭</Button>
|
||||
</Space>
|
||||
}
|
||||
/>
|
||||
<div style={{ width: '100%', height: 16, backgroundColor: 'rgb(240,242,245)', }}></div>
|
||||
<div style={{ padding: '0px 24px' }} className="public-platform-header">
|
||||
<div style={{ width: '85%', float: 'left', borderRadius: '8px', }}>
|
||||
<PageHeader
|
||||
title={<Text strong>公共服务平台信息</Text>}
|
||||
extra={<Text strong style={{ color: '#b30000' }}>注:因公共服务平台的公告/公示信息无法实时推送,招标采购中心发送成功后,建议间隔15分钟到公共服务平台进行确认</Text>}
|
||||
/>
|
||||
<div style={{ height: innerHeight - 180, overflowY: 'auto' }} className="public-platform" ref={setContainer}>
|
||||
<Form {...layout} form={form} scrollToFirstError name="public-platform" validateMessages={validateMessages}>
|
||||
<Collapse
|
||||
defaultActiveKey={['1', '2', '3', '4']}
|
||||
expandIcon={({ isActive }) => <CaretRightOutlined rotate={isActive ? 90 : 0} />}
|
||||
>
|
||||
<Panel
|
||||
header={<Text strong>项目信息</Text>}
|
||||
id="panel1"
|
||||
key="1"
|
||||
>
|
||||
{projectRender(initialData?.project, initialData?.tenderer, initialData?.agency, initialData?.projectRecord, readOnly)}
|
||||
</Panel>
|
||||
{annoType && <Panel
|
||||
header={<Text strong>中标候选人信息</Text>}
|
||||
id="panel2"
|
||||
key="2"
|
||||
>
|
||||
{sectionsRender(initialData?.sections, readOnly)}
|
||||
</Panel>}
|
||||
<Panel
|
||||
header={<Text strong>{annoType ? "公示信息" : "公告信息"}</Text>}
|
||||
id="panel3"
|
||||
key="3"
|
||||
>
|
||||
{annoRender(initialData?.anno, readOnly)}
|
||||
</Panel>
|
||||
</Collapse>
|
||||
</Form>
|
||||
</div>
|
||||
</div>
|
||||
<div style={{ width: '15%', float: 'right' }}>
|
||||
<div style={{ margin: '0px 16px', border: '1px solid rgb(179,0,0)', borderRadius: '8px', padding: '8px 0px', backgroundColor: 'white', width: '12%' }} className='anchor-father'>
|
||||
{container && (
|
||||
<Anchor getContainer={() => container} style={{ overflow: 'hidden' }} onClick={handleClick}>
|
||||
<Link href="#panel1" title="项目信息" />
|
||||
{annoType && <Link href="#panel2" title="中标候选人信息" />}
|
||||
<Link href="#panel3" title={annoType ? "公示信息" : "公告信息"} />
|
||||
</Anchor>
|
||||
)}
|
||||
</div>
|
||||
<BackTop style={{ right: '100vh-40px' }}>
|
||||
<div className='backtop'><ArrowUpOutlined /></div>
|
||||
</BackTop>
|
||||
</div>
|
||||
</div>
|
||||
</Spin>
|
||||
<Modal
|
||||
destroyOnClose
|
||||
title="PDF文件手写签名及盖章示例"
|
||||
visible={exampleVisible}
|
||||
onCancel={() => setExampleVisible(false)}
|
||||
cancelText="关闭"
|
||||
okButtonProps={{ hidden: true }}
|
||||
bodyStyle={{ padding: 48 }}
|
||||
centered
|
||||
width={921}
|
||||
>
|
||||
<img src={exampleImg} width="825" height="501" />
|
||||
</Modal>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
export default PublicPlatform;
|
@ -1,90 +1,91 @@
|
||||
//新增招标公告
|
||||
// .bidding {
|
||||
// margin-bottom: 8px;
|
||||
// :global {
|
||||
// .biddingLabel {
|
||||
// width: 30%;
|
||||
// display: inline-block;
|
||||
// text-align: right;
|
||||
// // padding-left: 20px;
|
||||
// padding-right: 10px;
|
||||
// }
|
||||
// .biddingIndex {
|
||||
// width: 40%;
|
||||
// display: inline-block;
|
||||
// justify-content: right;
|
||||
// }
|
||||
// .biddingDatePicker {
|
||||
// width: 40%;
|
||||
// }
|
||||
// .biddingRadio {
|
||||
// // display: inline-block;
|
||||
// width: 40%;
|
||||
// margin-top:24px;
|
||||
// }
|
||||
// .ant-row .ant-col {
|
||||
// margin: 6px 0px;
|
||||
// }
|
||||
// .uploadTotal {
|
||||
// display: inline-block;
|
||||
// width: 40%;
|
||||
// .upload {
|
||||
// --antd-wave-shadow-color:#1c84c6;
|
||||
// background: #1c84c6;
|
||||
// color:#fff;
|
||||
// border-color: #1c84c6;
|
||||
// }
|
||||
// .uploadLabel {
|
||||
// // display: inline;
|
||||
// font-size: 13px;
|
||||
// color: #c8ced1;
|
||||
// margin-top: 5px;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// .announcementFootButton {
|
||||
// :global{
|
||||
// display: flex;
|
||||
// justify-content: center;
|
||||
// margin-top: 15px;
|
||||
// .save{
|
||||
// --antd-wave-shadow-color:#f7ab59;
|
||||
// background: #f7ab59;
|
||||
// color:#fff;
|
||||
// border-color: #f7ab59;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// //招标公告
|
||||
// .label {
|
||||
// :global {
|
||||
// color:#f62a2b;
|
||||
// }
|
||||
// }
|
||||
// .ant-pro-table-toolbar {
|
||||
// :global {
|
||||
// margin: -12px 0px;
|
||||
// }
|
||||
// }
|
||||
@import '~antd/lib/style/themes/default.less';
|
||||
|
||||
.card-onmouse {
|
||||
// margin:auto;
|
||||
.ant-image {
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
z-index: 1,
|
||||
z-index: 1;
|
||||
}
|
||||
.text-css {
|
||||
width:100%;
|
||||
text-align: center;
|
||||
font-size: 20px;
|
||||
position: absolute;
|
||||
z-index: 99;
|
||||
color: white;
|
||||
top: 50%;
|
||||
z-index: 99;
|
||||
width: 100%;
|
||||
color: white;
|
||||
font-size: 20px;
|
||||
text-align: center;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
}
|
||||
.card-onmouse:hover {
|
||||
box-shadow: 8px 8px 5px #9e9e9e; /*设置阴影,可以自定义参数*/
|
||||
}
|
||||
.header {
|
||||
display: flex;
|
||||
height: 56px;
|
||||
color: white;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
line-height: 56px;
|
||||
background-color: #b30000;
|
||||
.headerAlign {
|
||||
align-self: center;
|
||||
margin-left: 20px;
|
||||
}
|
||||
.proName {
|
||||
font-weight: 300;
|
||||
font-size: 30px;
|
||||
}
|
||||
.closeButton {
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
}
|
||||
}
|
||||
.anchor-father {
|
||||
position: fixed;
|
||||
.ant-anchor {
|
||||
padding: 0px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.ant-anchor-ink {
|
||||
position: fixed;
|
||||
margin: 0px;
|
||||
}
|
||||
.ant-anchor-wrapper {
|
||||
margin-left: 0px;
|
||||
padding: 0px;
|
||||
// border-radius: 8px;
|
||||
}
|
||||
.ant-anchor-ink-ball.visible {
|
||||
display: none;
|
||||
}
|
||||
.ant-anchor-ink::before {
|
||||
display: none;
|
||||
}
|
||||
.ant-anchor-link-active {
|
||||
background-color: rgb(179, 0, 0);
|
||||
}
|
||||
.ant-anchor-link-title-active {
|
||||
color: rgb(255, 255, 255);
|
||||
}
|
||||
.ant-affix {
|
||||
top: 135px !important;
|
||||
}
|
||||
}
|
||||
.backtop {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
line-height: 40px;
|
||||
text-align: center;
|
||||
background-color: rgb(179, 0, 0);
|
||||
border-radius: 4px;
|
||||
}
|
||||
.public-platform .ant-form-item {
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
.public-platform-header .ant-page-header-heading {
|
||||
align-items: center;
|
||||
}
|
||||
|
@ -204,3 +204,22 @@ export async function TOrF(params: any, id: any) {//{skip:'true/false'}
|
||||
data: params
|
||||
});
|
||||
}
|
||||
/**
|
||||
* 公共服务平台-获取数据
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export async function getPublicData(params: any) {
|
||||
return request('/api/biz-service-ebtp-bid/v1/ctpsp/get/' + params);
|
||||
}
|
||||
/**
|
||||
* 公共服务平台-保存数据
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export async function savePublicData(params: any) {
|
||||
return request('/api/biz-service-ebtp-bid/v1/ctpsp/save', {
|
||||
method: "POST",
|
||||
data: params
|
||||
});
|
||||
}
|
@ -18,6 +18,7 @@ import { btnAuthority } from "@/utils/authority";
|
||||
import { getApprProcessList } from "@/utils/SeleApprovalProcess/service"
|
||||
import SeleApprovalProcess from "@/utils/SeleApprovalProcess"
|
||||
import { releaseNoticeOffline } from "@/pages/Bid/BiddingAnnouncement/service"
|
||||
import { isEmpty } from "@/utils/CommonUtils"
|
||||
import { checkObjectId } from "@/utils/DownloadUtils"
|
||||
|
||||
/*
|
||||
@ -157,6 +158,7 @@ const BidPublicityResult: React.FC<{}> = (props) => {
|
||||
<>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => toEdit(record)}>编辑</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" disabled={pageloading} onClick={() => handleApproval(record)}>提交审批</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -166,6 +168,7 @@ const BidPublicityResult: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn3 = (
|
||||
@ -175,6 +178,7 @@ const BidPublicityResult: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn4 = (
|
||||
@ -184,6 +188,7 @@ const BidPublicityResult: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -193,6 +198,7 @@ const BidPublicityResult: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
<Popconfirm
|
||||
title={`确定要${name5}结束吗?`}
|
||||
onConfirm={async () => {
|
||||
@ -219,6 +225,7 @@ const BidPublicityResult: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { btnAuthority } from '@/utils/authority';
|
||||
import { isEmpty } from '@/utils/CommonUtils';
|
||||
import { checkObjectId } from '@/utils/DownloadUtils';
|
||||
import SeleApprovalProcess from '@/utils/SeleApprovalProcess';
|
||||
import { getApprProcessList } from '@/utils/SeleApprovalProcess/service';
|
||||
@ -351,6 +352,7 @@ const ExceptionHandling: React.FC<ExceptionHandlingProps> = (props) => {
|
||||
失败公告提交审批
|
||||
</Button>
|
||||
</Popconfirm>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.sendMessageId)}>公共服务平台</Button>
|
||||
<Popconfirm
|
||||
title="确定要删除吗?"
|
||||
onConfirm={() => toDelete(record)}
|
||||
@ -373,6 +375,7 @@ const ExceptionHandling: React.FC<ExceptionHandlingProps> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.sendMessageId)}>公共服务平台</Button>
|
||||
<Popconfirm
|
||||
title="确定要删除吗?"
|
||||
onConfirm={() => toDelete(record)}
|
||||
@ -405,6 +408,7 @@ const ExceptionHandling: React.FC<ExceptionHandlingProps> = (props) => {
|
||||
发布失败公告
|
||||
</Button>
|
||||
</Popconfirm>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.sendMessageId)}>公共服务平台</Button>
|
||||
<Popconfirm
|
||||
title="确定要删除吗?"
|
||||
onConfirm={() => toDelete(record)}
|
||||
@ -437,6 +441,7 @@ const ExceptionHandling: React.FC<ExceptionHandlingProps> = (props) => {
|
||||
失败公告提交审批
|
||||
</Button>
|
||||
</Popconfirm>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.sendMessageId)}>公共服务平台</Button>
|
||||
<Popconfirm
|
||||
title="确定要删除吗?"
|
||||
onConfirm={() => toDelete(record)}
|
||||
@ -462,6 +467,7 @@ const ExceptionHandling: React.FC<ExceptionHandlingProps> = (props) => {
|
||||
<Button type="text" key="4" onClick={() => toTakeEffect(record)} hidden={btnAuthority(["ebtp-agency-project-manager", "ebtp-purchase"])}>
|
||||
生效
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.sendMessageId)}>公共服务平台</Button>
|
||||
</>
|
||||
) : record.status == 0 && record.sendMessageStatus == 6 ? ( //草稿-公告发布失败
|
||||
<>
|
||||
@ -484,6 +490,7 @@ const ExceptionHandling: React.FC<ExceptionHandlingProps> = (props) => {
|
||||
发布失败公告
|
||||
</Button>
|
||||
</Popconfirm>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.sendMessageId)}>公共服务平台</Button>
|
||||
<Popconfirm
|
||||
title="确定要删除吗?"
|
||||
onConfirm={() => toDelete(record)}
|
||||
@ -506,6 +513,7 @@ const ExceptionHandling: React.FC<ExceptionHandlingProps> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.sendMessageId)}>公共服务平台</Button>
|
||||
</>
|
||||
) : null,
|
||||
},
|
||||
|
@ -19,6 +19,7 @@ import { checkConflict } from "@/pages/Bid/BiddingAnnouncement/service";
|
||||
import { btnAuthority } from "@/utils/authority";
|
||||
import { getApprProcessList } from "@/utils/SeleApprovalProcess/service"
|
||||
import SeleApprovalProcess from "@/utils/SeleApprovalProcess"
|
||||
import { isEmpty } from "@/utils/CommonUtils"
|
||||
import { checkObjectId } from "@/utils/DownloadUtils"
|
||||
|
||||
/*
|
||||
@ -127,6 +128,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => toEdit(record)}>编辑</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" disabled={pageloading} onClick={() => handleApproval(record)}>提交审批</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id + '&roomType=1')}>公共服务平台</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -136,6 +138,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id + '&roomType=1')}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn3 = (
|
||||
@ -145,6 +148,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id + '&roomType=1')}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn4 = (
|
||||
@ -154,6 +158,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id + '&roomType=1')}>公共服务平台</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -163,6 +168,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id + '&roomType=1')}>公共服务平台</Button>
|
||||
<Button type="text" onClick={() => toChange(record)}>变更</Button>
|
||||
</>
|
||||
);
|
||||
@ -174,6 +180,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id + '&roomType=1')}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
|
||||
@ -241,6 +248,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => toEdit4Change(record)}>编辑</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" disabled={pageloading} onClick={() => handleApproval(record)}>提交审批</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id + '&roomType=1')}>公共服务平台</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -250,6 +258,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id + '&roomType=1')}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn3 = (
|
||||
@ -259,6 +268,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id + '&roomType=1')}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn4 = (
|
||||
@ -268,6 +278,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id + '&roomType=1')}>公共服务平台</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -277,6 +288,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id + '&roomType=1')}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn6 = (
|
||||
@ -286,6 +298,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id + '&roomType=1')}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
|
||||
|
@ -19,6 +19,7 @@ import { checkConflict } from "@/pages/Bid/BiddingAnnouncement/service";
|
||||
import { btnAuthority } from "@/utils/authority";
|
||||
import { getApprProcessList } from "@/utils/SeleApprovalProcess/service"
|
||||
import SeleApprovalProcess from "@/utils/SeleApprovalProcess"
|
||||
import { isEmpty } from "@/utils/CommonUtils"
|
||||
import { checkObjectId } from "@/utils/DownloadUtils"
|
||||
|
||||
/*
|
||||
@ -119,6 +120,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => toEdit(record)}>编辑</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" disabled={pageloading} onClick={() => handleApproval(record)}>提交审批</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -128,6 +130,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn3 = (
|
||||
@ -137,6 +140,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn4 = (
|
||||
@ -146,6 +150,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
<Button type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -155,6 +160,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
<Button type="text" onClick={() => toChange(record)}>变更</Button>
|
||||
{getProMethod() == "procurement_mode_4" ?
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleReleaseAgain(record)}>再次发布</Button> : null}
|
||||
@ -168,6 +174,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
|
||||
@ -256,6 +263,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => toEdit4Change(record)}>编辑</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" disabled={pageloading} onClick={() => handleApproval(record)}>提交审批</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -265,6 +273,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn3 = (
|
||||
@ -274,6 +283,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn4 = (
|
||||
@ -283,6 +293,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -292,6 +303,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
{getProMethod() == "procurement_mode_4" ?
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleReleaseAgain(record)}>再次发布</Button> : null}
|
||||
</>
|
||||
@ -303,6 +315,7 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
|
||||
|
@ -17,6 +17,7 @@ import { getProId } from "@/utils/session";
|
||||
import { btnAuthority } from "@/utils/authority";
|
||||
import { getApprProcessList } from "@/utils/SeleApprovalProcess/service"
|
||||
import SeleApprovalProcess from "@/utils/SeleApprovalProcess"
|
||||
import { isEmpty } from "@/utils/CommonUtils"
|
||||
import { checkObjectId } from "@/utils/DownloadUtils"
|
||||
|
||||
/*
|
||||
@ -111,6 +112,7 @@ const BidPublicityResult: React.FC<{}> = (props) => {
|
||||
<>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => toEdit(record)}>编辑</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" disabled={pageloading} onClick={() => handleApproval(record)}>提交审批</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -120,6 +122,7 @@ const BidPublicityResult: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn3 = (
|
||||
@ -129,6 +132,7 @@ const BidPublicityResult: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn4 = (
|
||||
@ -138,6 +142,7 @@ const BidPublicityResult: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
<Button type="text" onClick={() => handleRemove(record)}>删除</Button>
|
||||
</>
|
||||
);
|
||||
@ -147,6 +152,7 @@ const BidPublicityResult: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
let btn6 = (
|
||||
@ -156,6 +162,7 @@ const BidPublicityResult: React.FC<{}> = (props) => {
|
||||
<Button type="text" key="9" onClick={() => toApprovalFor(record)} hidden={!checkObjectId(record.id)}>
|
||||
查看审批流程
|
||||
</Button>
|
||||
<Button hidden={isEmpty(record.hasCtpsp) || !record.hasCtpsp} type="text" key="common" onClick={() => window.open('/PublicPlatform' + '?id=' + record.id)}>公共服务平台</Button>
|
||||
</>
|
||||
);
|
||||
|
||||
|
@ -302,6 +302,18 @@ export const numberToChinese = (num: any) => {
|
||||
re = re.replace("一", "");
|
||||
return re;
|
||||
}
|
||||
/**
|
||||
* 页面内锚点滚动方法
|
||||
* @param anchorName
|
||||
*/
|
||||
export const scrollToAnchor = (anchorName: string) => {
|
||||
if (anchorName) {
|
||||
// 找到锚点
|
||||
let anchorElement = document.getElementById(anchorName);
|
||||
// 如果对应id的锚点存在,就跳转到锚点
|
||||
if (anchorElement) { anchorElement.scrollIntoView({ block: 'start', behavior: 'smooth' }); }
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 删除行首行尾的空白字符方法(包括空格、制表符、换页符等等)
|
||||
* @param str
|
||||
|
Reference in New Issue
Block a user