1.12 第十六版
This commit is contained in:
@ -282,7 +282,7 @@ const MonitorException: React.FC<{}> = () => {
|
||||
width: '25%',
|
||||
onCell,
|
||||
onHeaderCell,
|
||||
// render: (_: any, record: any) => isNotEmpty(record.budgetAmount) ? record.budgetAmount.toFixed(2) : 0,
|
||||
render: (_: any, record: any) => isNotEmpty(record.bidSectContractPrice) ? record.bidSectContractPrice.toFixed(2) : 0,
|
||||
},
|
||||
{
|
||||
title: '采购经理',
|
||||
@ -345,7 +345,7 @@ const MonitorException: React.FC<{}> = () => {
|
||||
width: '25%',
|
||||
onCell,
|
||||
onHeaderCell,
|
||||
// render: (_: any, record: any) => isNotEmpty(record.bidSectContractPrice) ? record.bidSectContractPrice.toFixed(2) : 0,
|
||||
render: (_: any, record: any) => isNotEmpty(record.bidSectContractPrice) ? record.bidSectContractPrice.toFixed(2) : 0,
|
||||
},
|
||||
{
|
||||
title: '采购经理',
|
||||
@ -471,7 +471,7 @@ const MonitorException: React.FC<{}> = () => {
|
||||
width: '25%',
|
||||
onCell,
|
||||
onHeaderCell,
|
||||
// render: (_: any, record: any) => isNotEmpty(record.budgetAmount) ? record.budgetAmount.toFixed(2) : 0,
|
||||
render: (_: any, record: any) => isNotEmpty(record.bidSectContractPrice) ? record.bidSectContractPrice.toFixed(2) : 0,
|
||||
},
|
||||
{
|
||||
title: '采购经理',
|
||||
|
@ -459,8 +459,8 @@ export const StageCard = (props: { percentage: string | number, total: string |
|
||||
)
|
||||
}
|
||||
//滚动列表
|
||||
export const ScrollTable = (props: { dataSource: any[], columns: any[], rollTime?: number, rollNum?: number, ynum?: number, rowKey?: string, selectKey?: number }) => {
|
||||
const { dataSource, columns, rollTime = 10, rollNum = 5, ynum = 300, rowKey = "id", selectKey = -1 } = props;
|
||||
export const ScrollTable = (props: { dataSource: any[], columns: any[], ynum?: number, rowKey?: string, selectKey?: number, onDoubleClick?: (record: any) => void }) => {
|
||||
const { dataSource, columns, ynum = 300, rowKey = "id", selectKey = -1, onDoubleClick = () => { } } = props;
|
||||
return (
|
||||
<div style={{ ["--monitor-table-height" as any]: `${ynum}px` }}>
|
||||
<Table
|
||||
@ -483,7 +483,7 @@ export const ScrollTable = (props: { dataSource: any[], columns: any[], rollTime
|
||||
columns={columns}
|
||||
onRow={record => {
|
||||
return {
|
||||
onClick: () => { },
|
||||
onDoubleClick: () => { onDoubleClick(record) },
|
||||
}
|
||||
}}
|
||||
/>
|
||||
@ -491,8 +491,8 @@ export const ScrollTable = (props: { dataSource: any[], columns: any[], rollTime
|
||||
)
|
||||
}
|
||||
//统计列表
|
||||
export const StatisticTable = (props: { dataSource: any[], columns: any[], rollTime?: number, rollNum?: number, ynum?: number, rowKey?: string }) => {
|
||||
const { dataSource, columns, rollTime = 50, rollNum = 5, ynum = 300, rowKey = "id" } = props;
|
||||
export const StatisticTable = (props: { dataSource: any[], columns: any[], ynum?: number, rowKey?: string }) => {
|
||||
const { dataSource, columns, ynum = 300, rowKey = "id" } = props;
|
||||
return (
|
||||
<div style={{ ["--monitor-table-height" as any]: `${ynum}px` }}>
|
||||
<Table
|
||||
@ -581,8 +581,8 @@ export const ScreenTitle = (props: { title: string, children: any }) => {
|
||||
}
|
||||
|
||||
//modal大弹窗
|
||||
export const ModalList = (props: { modalVisible: boolean, onCancel: () => void, exceptionType?: string, exceptionData: any[] }) => {
|
||||
const { modalVisible, onCancel, exceptionType, exceptionData } = props;
|
||||
export const ModalList = (props: { modalVisible: boolean, onCancel: () => void, exceptionType?: string, exceptionData: any[], title?: string | null }) => {
|
||||
const { modalVisible, onCancel, exceptionType, exceptionData, title } = props;
|
||||
const modalHeight = window.innerHeight * 96 / 100;
|
||||
const labelStyle = { color: "#29F0F9", fontWeight: "bold", width: "100px" };
|
||||
const contentStyle = { color: "#fff", paddingLeft: "14px" };
|
||||
@ -603,23 +603,30 @@ export const ModalList = (props: { modalVisible: boolean, onCancel: () => void,
|
||||
centered
|
||||
footer={null}
|
||||
>
|
||||
<h3 style={titleStyle}>重点监测异常明细单</h3>
|
||||
<h3 style={titleStyle}>{isNotEmpty(title) ? title : "重点监测异常明细单"}</h3>
|
||||
{exceptionData.length > 0 ? exceptionData.map((item, index) => {
|
||||
return (
|
||||
<div key={index} className={exceptionData.length > 1 ? 'modal-list-block' : 'modal-list-block modal-list-block-border0'}>
|
||||
<div className='modal-list-pname'>
|
||||
<div className='modal-list-left'>
|
||||
<img src={titleIcon} /><span>{item?.projectName}</span>
|
||||
<div>{item?.bidSectName || item?.sectionName}</div>
|
||||
</div>
|
||||
{isEmpty(title) && <div className='modal-list-right'>
|
||||
<div className='modal-list-proc'>
|
||||
<span>采购方式:{changeDict(dicData['procurement_mode=entrust'], item?.bidMethodDict)}</span>
|
||||
</div>
|
||||
</div>}
|
||||
</div>
|
||||
<div className='modal-list-desc'>
|
||||
<Descriptions>
|
||||
<Descriptions.Item label="异常类型" labelStyle={labelStyle} contentStyle={contentStyle}>{isNotEmpty(exceptionType) ? exceptionType : item?.exType}</Descriptions.Item>
|
||||
<Descriptions.Item label={isNotEmpty(title) ? "采购方式" : "异常类型"} labelStyle={labelStyle} contentStyle={contentStyle}>{isNotEmpty(title) ? changeDict(dicData['procurement_mode=entrust'], item?.bidMethodDict) : isNotEmpty(exceptionType) ? exceptionType : item?.exType}</Descriptions.Item>
|
||||
<Descriptions.Item label="开标时间" labelStyle={labelStyle} contentStyle={contentStyle}>{item?.openTime || item?.recruitStartTime || item?.openingTime}</Descriptions.Item>
|
||||
<Descriptions.Item label="采购预算" labelStyle={labelStyle} contentStyle={contentStyle}>{isNotEmpty(item?.budgetAmount) ? Number(item?.budgetAmount).toFixed(2) : isNotEmpty(item?.bidSectContractPrice) ? Number(item?.bidSectContractPrice).toFixed(2) : "0"}元</Descriptions.Item>
|
||||
<Descriptions.Item label="采购预算" labelStyle={labelStyle} contentStyle={contentStyle}>{isNotEmpty(item?.budgetAmount) ? Number(item?.budgetAmount).toFixed(2) : isNotEmpty(item?.bidSectContractPrice) ? typeof item?.bidSectContractPrice == "number" ? Number(item?.bidSectContractPrice).toFixed(2) : item?.bidSectContractPrice : "0"}元</Descriptions.Item>
|
||||
<Descriptions.Item label="省分" labelStyle={labelStyle} contentStyle={contentStyle}>{item?.provinceName || item?.regionDictName || item?.province}</Descriptions.Item>
|
||||
<Descriptions.Item label="采购经理" labelStyle={labelStyle} contentStyle={contentStyle}>{item?.ownerContactName}</Descriptions.Item>
|
||||
<Descriptions.Item label="采购经理电话" labelStyle={labelStyle} contentStyle={contentStyle}>{item?.ownerContactTel}</Descriptions.Item>
|
||||
<Descriptions.Item label="标段状态" labelStyle={labelStyle} contentStyle={contentStyle}>{(item?.state || item?.sectionState || item?.sectionStatus) == 9 ? "异常处理" : changeDict(item?.bidMethodDict ? dicData[`business_module=${item?.bidMethodDict}`] : [], item?.businessModule)}</Descriptions.Item>
|
||||
<Descriptions.Item label="标段状态" labelStyle={labelStyle} contentStyle={contentStyle}>{(item?.sectionState || item?.sectionStatus || item?.state) == 9 ? "异常处理" : changeDict(item?.bidMethodDict ? dicData[`business_module=${item?.bidMethodDict}`] : [], item?.businessModule)}</Descriptions.Item>
|
||||
<Descriptions.Item label="招标代理" labelStyle={labelStyle} contentStyle={contentStyle}>{item?.appManagerName}</Descriptions.Item>
|
||||
<Descriptions.Item label="代理机构电话" labelStyle={labelStyle} contentStyle={contentStyle}>{item?.appManagerTel}</Descriptions.Item>
|
||||
</Descriptions>
|
||||
|
@ -35,6 +35,8 @@ const OpenToday: React.FC<{}> = () => {
|
||||
const [exceptionType, setExceptionType] = useState<any>();
|
||||
//selectKey
|
||||
const [selectKey, setSelectKey] = useState<number>(-1);
|
||||
//modal title
|
||||
const [modalTitle, setModalTitle] = useState<string | null>(null);
|
||||
//权限校验
|
||||
const auth = useRef<boolean>(authCheck());
|
||||
//定时器描述
|
||||
@ -294,9 +296,9 @@ const OpenToday: React.FC<{}> = () => {
|
||||
<OverviewItem icon={Circle3199} title="已评标" number={isNotEmpty(todayInfoData?.openAssessNumber) ? todayInfoData?.openAssessNumber : 0} unit="个" />
|
||||
</div>
|
||||
<div className="monitor-top-space-flex">
|
||||
<ProgressItem progress={isNotEmpty(decryptSuccessRateTodayData?.successRate) ? Number(Number(decryptSuccessRateTodayData?.successRate).toFixed(0)) : 100} title="解密成功率" leftTitle='解密成功' rightTitle='解密失败' leftNumber={isNotEmpty(decryptSuccessRateTodayData?.successNum) ? Number(decryptSuccessRateTodayData?.successNum) : 0} rightNumber={isNotEmpty(decryptSuccessRateTodayData?.failNum) ? Number(decryptSuccessRateTodayData?.failNum) : 0} leftClick={() => { }} rightClick={() => { setExceptionType("解密异常"); setModalListData(isNotEmpty(decryptSuccessRateTodayData?.decryptFailProjectList) ? decryptSuccessRateTodayData?.decryptFailProjectList : []); setModalListVisible(true); }} />
|
||||
<ProgressItem progress={isNotEmpty(todayOpeningData?.sectionNumber) ? todayOpeningData?.sectionNumber != 0 ? Number((((todayOpeningData?.sectionNumber - Number(noOpenNumberTwo)) / Number(todayOpeningData?.sectionNumber)) * 100).toFixed(0)) : 100 : 100} title="开标及时率" leftTitle='2小时未开标' rightTitle='5小时未开标' leftNumber={noOpenNumberTwo} rightNumber={noOpenNumberFive} leftClick={() => { setExceptionType("2小时未开标"); setModalListData(noOpenListTwo); setModalListVisible(true); }} rightClick={() => { setExceptionType("5小时未开标"); setModalListData(noOpenListFive); setModalListVisible(true); }} />
|
||||
<ProgressItem progress={isNotEmpty(todayInfoData?.sectionNumber) ? todayInfoData?.sectionNumber != 0 ? Number((((todayInfoData?.sectionNumber - Number(todayInfoData?.sixTimelyRate)) / Number(todayInfoData?.sectionNumber)) * 100).toFixed(0)) : 100 : 100} title="评标及时率" leftTitle='6小时未评标' rightTitle='10小时未评标' leftNumber={todayInfoData?.sixTimelyRate} rightNumber={todayInfoData?.tenTimelyRate} leftClick={() => { setExceptionType("6小时未评标"); setModalListData(unopenSixData); setModalListVisible(true); }} rightClick={() => { setExceptionType("10小时未评标"); setModalListData(unopenTenData); setModalListVisible(true); }} />
|
||||
<ProgressItem progress={isNotEmpty(decryptSuccessRateTodayData?.successRate) ? Number(Number(decryptSuccessRateTodayData?.successRate).toFixed(0)) : 100} title="解密成功率" leftTitle='解密成功' rightTitle='解密失败' leftNumber={isNotEmpty(decryptSuccessRateTodayData?.successNum) ? Number(decryptSuccessRateTodayData?.successNum) : 0} rightNumber={isNotEmpty(decryptSuccessRateTodayData?.failNum) ? Number(decryptSuccessRateTodayData?.failNum) : 0} leftClick={() => { }} rightClick={() => { setExceptionType("解密异常"); setModalTitle(null); setModalListData(isNotEmpty(decryptSuccessRateTodayData?.decryptFailProjectList) ? decryptSuccessRateTodayData?.decryptFailProjectList : []); setModalListVisible(true); }} />
|
||||
<ProgressItem progress={isNotEmpty(todayOpeningData?.sectionNumber) ? todayOpeningData?.sectionNumber != 0 ? Number((((todayOpeningData?.sectionNumber - Number(noOpenNumberTwo)) / Number(todayOpeningData?.sectionNumber)) * 100).toFixed(0)) : 100 : 100} title="开标及时率" leftTitle='2小时未开标' rightTitle='5小时未开标' leftNumber={noOpenNumberTwo} rightNumber={noOpenNumberFive} leftClick={() => { setExceptionType("2小时未开标"); setModalTitle(null); setModalListData(noOpenListTwo); setModalListVisible(true); }} rightClick={() => { setExceptionType("5小时未开标"); setModalTitle(null); setModalListData(noOpenListFive); setModalListVisible(true); }} />
|
||||
<ProgressItem progress={isNotEmpty(todayInfoData?.sectionNumber) ? todayInfoData?.sectionNumber != 0 ? Number((((todayInfoData?.sectionNumber - Number(todayInfoData?.sixTimelyRate)) / Number(todayInfoData?.sectionNumber)) * 100).toFixed(0)) : 100 : 100} title="评标及时率" leftTitle='6小时未评标' rightTitle='10小时未评标' leftNumber={todayInfoData?.sixTimelyRate} rightNumber={todayInfoData?.tenTimelyRate} leftClick={() => { setExceptionType("6小时未评标"); setModalTitle(null); setModalListData(unopenSixData); setModalListVisible(true); }} rightClick={() => { setExceptionType("10小时未评标"); setModalTitle(null); setModalListData(unopenTenData); setModalListVisible(true); }} />
|
||||
</div>
|
||||
</Col>
|
||||
<Col span={7}>
|
||||
@ -313,17 +315,17 @@ const OpenToday: React.FC<{}> = () => {
|
||||
<Col span={12}>
|
||||
<ScreenLabel title="今日开标明细" />
|
||||
<div className='monitor-tender-card'>
|
||||
<ScrollTable dataSource={todayOpeningData?.todayList} columns={columns} ynum={540} rowKey="sectionId" selectKey={selectKey} />
|
||||
<ScrollTable dataSource={todayOpeningData?.todayList} columns={columns} ynum={540} rowKey="sectionId" selectKey={selectKey} onDoubleClick={(record: any) => { setModalTitle("今日开标明细"); setModalListData([record]); setModalListVisible(true); }} />
|
||||
</div>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<ScreenLabel title="重保项目" />
|
||||
<div className='monitor-tender-card'>
|
||||
<ScrollTable dataSource={isNotEmpty(todayOpeningData?.importantList) ? todayOpeningData?.importantList : []} columns={reiColumns} ynum={540} rowKey="id" selectKey={selectKey} />
|
||||
<ScrollTable dataSource={isNotEmpty(todayOpeningData?.importantList) ? todayOpeningData?.importantList : []} columns={reiColumns} ynum={540} rowKey="id" selectKey={selectKey} onDoubleClick={(record: any) => { setModalTitle("重保项目明细"); setModalListData([record]); setModalListVisible(true); }} />
|
||||
</div>
|
||||
</Col>
|
||||
</Row>
|
||||
<ModalList modalVisible={modalListVisible} onCancel={() => { setModalListVisible(false); setModalListData([]); }} exceptionData={modalListData} exceptionType={exceptionType} />
|
||||
<ModalList modalVisible={modalListVisible} onCancel={() => { setModalListVisible(false); setModalListData([]); }} exceptionData={modalListData} exceptionType={exceptionType} title={modalTitle} />
|
||||
</ScreenTitle>
|
||||
);
|
||||
};
|
||||
|
@ -1143,6 +1143,11 @@
|
||||
}
|
||||
|
||||
.modal-list-pname {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
.modal-list-left {
|
||||
&>span {
|
||||
font-size: 16px;
|
||||
font-weight: normal;
|
||||
@ -1162,6 +1167,27 @@
|
||||
}
|
||||
}
|
||||
|
||||
.modal-list-right {
|
||||
.modal-list-proc {
|
||||
align-items: center;
|
||||
padding: 2px 12px;
|
||||
background: rgba(25, 198, 255, 0.17);
|
||||
box-sizing: border-box;
|
||||
border: 1px solid #29F0F9;
|
||||
border-radius: 3px;
|
||||
|
||||
&>span {
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
line-height: 20px;
|
||||
letter-spacing: 0px;
|
||||
color: #29F0F9;
|
||||
z-index: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.modal-list-desc {
|
||||
padding-top: 24px;
|
||||
}
|
||||
|
Reference in New Issue
Block a user