2.7 修改弹窗
This commit is contained in:
@ -14,9 +14,9 @@ const MonitorException: React.FC<{}> = () => {
|
||||
//开启评审后3日未结束评标-数量
|
||||
const [threeDayNoEndCount, setThreeDayNoEndCount] = useState<any>(0);
|
||||
//超过1小时未开标数量-列表
|
||||
const [noOpenListData, setNoOpenListData] = useState<any[]>([]);
|
||||
const [noOpenListData, setNoOpenListData] = useState<any>();
|
||||
//开标后超过6小时未开启评审室-列表
|
||||
const [noOpenAssessListData, setNoOpenAssessListData] = useState<any[]>([]);
|
||||
const [noOpenAssessListData, setNoOpenAssessListData] = useState<any>();
|
||||
//开标后超过6小时未开启评审室-数量
|
||||
const [noOpenAssessNumber, setNoOpenAssessNumber] = useState<string | number>(0);
|
||||
//异常监控-解密异常
|
||||
@ -60,18 +60,26 @@ const MonitorException: React.FC<{}> = () => {
|
||||
})
|
||||
}
|
||||
//超过1小时未开标数量-列表
|
||||
const getNoOpenList = () => {
|
||||
getNoOpenListAPI({ "timeLimit": "1", "dayNumber": "30" }).then(res => {
|
||||
const getNoOpenList = (params: any, type: number) => {
|
||||
getNoOpenListAPI({ "timeLimit": "1", "dayNumber": "30", ...params }).then(res => {
|
||||
if (res?.code == 200) {
|
||||
setNoOpenListData(res?.data?.records);
|
||||
if (type == 0) {
|
||||
setNoOpenListData(res?.data);
|
||||
} else {
|
||||
setModalListData(res?.data);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
//开标后超过6小时未开启评审室-列表
|
||||
const getNoOpenAssessList = () => {
|
||||
getNoOpenAssessListAPI({ "timeLimit": "6", "dayNumber": "30" }).then(res => {
|
||||
const getNoOpenAssessList = (params: any, type: number) => {
|
||||
getNoOpenAssessListAPI({ "timeLimit": "6", "dayNumber": "30", ...params }).then(res => {
|
||||
if (res?.code == 200) {
|
||||
setNoOpenAssessListData(res?.data);
|
||||
if (type == 0) {
|
||||
setNoOpenAssessListData(res?.data);
|
||||
} else {
|
||||
setModalListData(res?.data);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -171,8 +179,8 @@ const MonitorException: React.FC<{}> = () => {
|
||||
const params = { pageNo: 1, pageSize: 10 };
|
||||
getNoOpenNumber();
|
||||
getThreeDayNoEnd(params, 0);
|
||||
getNoOpenList();
|
||||
getNoOpenAssessList();
|
||||
getNoOpenList(params, 0);
|
||||
getNoOpenAssessList(params, 0);
|
||||
getNoOpenAssessNumber();
|
||||
getDecryptExceptionList(params, 0);
|
||||
getMacSameList(params, 0);
|
||||
@ -269,7 +277,7 @@ const MonitorException: React.FC<{}> = () => {
|
||||
onHeaderCell,
|
||||
render: (_: any, record: any) => {
|
||||
return (
|
||||
<a onClick={() => { setExceptionType(null); setModalListData([record]); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看</a>
|
||||
<a onClick={() => { setExceptionType(null); setModalListData({ records: [record] }); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看</a>
|
||||
)
|
||||
},
|
||||
},
|
||||
@ -332,7 +340,7 @@ const MonitorException: React.FC<{}> = () => {
|
||||
onHeaderCell,
|
||||
render: (_: any, record: any) => {
|
||||
return (
|
||||
<a onClick={() => { setExceptionType("解密异常"); setModalListData([record]); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看</a>
|
||||
<a onClick={() => { setExceptionType("解密异常"); setModalListData({ records: [record] }); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看</a>
|
||||
)
|
||||
},
|
||||
},
|
||||
@ -395,7 +403,7 @@ const MonitorException: React.FC<{}> = () => {
|
||||
onHeaderCell,
|
||||
render: (_: any, record: any) => {
|
||||
return (
|
||||
<a onClick={() => { setExceptionType("评标结束后3日内未发布公示"); setModalListData([record]); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看</a>
|
||||
<a onClick={() => { setExceptionType("评标结束后3日内未发布公示"); setModalListData({ records: [record] }); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看</a>
|
||||
)
|
||||
},
|
||||
},
|
||||
@ -458,7 +466,7 @@ const MonitorException: React.FC<{}> = () => {
|
||||
onHeaderCell,
|
||||
render: (_: any, record: any) => {
|
||||
return (
|
||||
<a onClick={() => { setExceptionType("开启评审后3日未结束评标"); setModalListData([record]); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看</a>
|
||||
<a onClick={() => { setExceptionType("开启评审后3日未结束评标"); setModalListData({ records: [record] }); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看</a>
|
||||
)
|
||||
},
|
||||
},
|
||||
@ -521,7 +529,7 @@ const MonitorException: React.FC<{}> = () => {
|
||||
onHeaderCell,
|
||||
render: (_: any, record: any) => {
|
||||
return (
|
||||
<a onClick={() => { setExceptionType("MAC地址重复"); setModalListData([record]); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看</a>
|
||||
<a onClick={() => { setExceptionType("MAC地址重复"); setModalListData({ records: [record] }); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看</a>
|
||||
)
|
||||
},
|
||||
},
|
||||
@ -544,11 +552,11 @@ const MonitorException: React.FC<{}> = () => {
|
||||
<div className="monitor-left-main">
|
||||
<ScreenLabel title="1小时未开标项目列表" extra={<span className='monitor-extra-pointer' onClick={() => { setExceptionType(null); setModalListData(noOpenListData); dataType.current = "1"; setModalListVisible(true); }}>more</span>} />
|
||||
<div className="monitor-exception-card">
|
||||
<ScrollTable dataSource={noOpenListData} columns={columns} ynum={260} rowKey="sectionId" rowClassName="scroll-select-bg0" tableKey={0} isScroll />
|
||||
<ScrollTable dataSource={noOpenListData?.records} columns={columns} ynum={260} rowKey="sectionId" rowClassName="scroll-select-bg0" tableKey={0} isScroll />
|
||||
</div>
|
||||
<ScreenLabel title="开标后六小时未开启评审" extra={<span className='monitor-extra-pointer' onClick={() => { setExceptionType(null); setModalListData(noOpenAssessListData); dataType.current = "4"; setModalListVisible(true); }}>more</span>} />
|
||||
<div className="monitor-exception-card">
|
||||
<ScrollTable dataSource={noOpenAssessListData} columns={columns} ynum={260} rowKey="sectionId" rowClassName="scroll-select-bg1" tableKey={1} isScroll />
|
||||
<ScrollTable dataSource={noOpenAssessListData?.records} columns={columns} ynum={260} rowKey="sectionId" rowClassName="scroll-select-bg1" tableKey={1} isScroll />
|
||||
</div>
|
||||
</div>
|
||||
</Col>
|
||||
@ -577,7 +585,7 @@ const MonitorException: React.FC<{}> = () => {
|
||||
</div>
|
||||
</Col>
|
||||
</Row>
|
||||
<ModalList modalVisible={modalListVisible} onCancel={() => { setModalListVisible(false); setModalListData([]); }} exceptionData={modalListData} exceptionType={exceptionType} onCallBack={(current, projectName, ownerContactName) => {
|
||||
<ModalList modalVisible={modalListVisible} onCancel={() => { setModalListVisible(false); setModalListData({}); }} exceptionData={modalListData} exceptionType={exceptionType} onCallBack={(current, projectName, ownerContactName) => {
|
||||
const params = {
|
||||
pageNo: current,
|
||||
pageSize: 10,
|
||||
@ -585,13 +593,13 @@ const MonitorException: React.FC<{}> = () => {
|
||||
projectName != "" ? params["projectName"] = projectName : null;
|
||||
ownerContactName != "" ? params["ownerContactName"] = ownerContactName : null;
|
||||
if (dataType.current == "1") {
|
||||
|
||||
getNoOpenList(params, 1);
|
||||
} else if (dataType.current == "2") {
|
||||
getDecryptExceptionList(params, 1);
|
||||
} else if (dataType.current == "3") {
|
||||
getMacSameList(params, 1);
|
||||
} else if (dataType.current == "4") {
|
||||
|
||||
getNoOpenAssessList(params, 1);
|
||||
} else if (dataType.current == "5") {
|
||||
getThreeDayNoEnd(params, 1);
|
||||
} else if (dataType.current == "6") {
|
||||
|
@ -14,7 +14,7 @@ import left from '@/assets/monitor/left.png';
|
||||
import right from '@/assets/monitor/right.png';
|
||||
import arrowLeftCircleFill from '@/assets/monitor/arrow-left-circle-fill.png'
|
||||
import arrowRightCircleFill from '@/assets/monitor/arrow-right-circle-fill.png'
|
||||
import { CaretRightOutlined, DownOutlined } from '@ant-design/icons';
|
||||
import { CaretRightOutlined, DownOutlined, LeftOutlined, RightOutlined } from '@ant-design/icons';
|
||||
import './china';
|
||||
import * as echarts from 'echarts';
|
||||
import { getActiveSupplierAPI, getAnnoCountAPI, getAnnualAndTenderAgentAPI, getExpertNumberAPI, getMonitorListAPI, getOpeningListAPI, getReviewDistributionAPI, getSupplierCountAPI, getTodayInfoAPI, getTodayOpeningAPI } from '../service';
|
||||
@ -696,11 +696,17 @@ export const ModalList = (props: { modalVisible: boolean, onCancel: () => void,
|
||||
onCallBack(page, project.current, owner.current);
|
||||
};
|
||||
const itemRender: PaginationProps['itemRender'] = (_, type, originalElement) => {
|
||||
// if (type === 'prev') {
|
||||
// return <a><img src={arrowLeftCircleFill} alt="" /></a>;
|
||||
// }
|
||||
// if (type === 'next') {
|
||||
// return <a><img src={arrowRightCircleFill} alt="" /></a>;
|
||||
// }
|
||||
if (type === 'prev') {
|
||||
return <a><img src={arrowLeftCircleFill} alt="" /></a>;
|
||||
return <a><LeftOutlined style={{ color: "#FFFFFF" }} /></a>;
|
||||
}
|
||||
if (type === 'next') {
|
||||
return <a><img src={arrowRightCircleFill} alt="" /></a>;
|
||||
return <a><RightOutlined style={{ color: "#FFFFFF" }} /></a>;
|
||||
}
|
||||
return originalElement;
|
||||
};
|
||||
@ -737,7 +743,7 @@ export const ModalList = (props: { modalVisible: boolean, onCancel: () => void,
|
||||
footer={null}
|
||||
>
|
||||
<h3 style={titleStyle}>{isNotEmpty(title) ? title : "重点监测异常明细单"}</h3>
|
||||
<div className='modal-list-search'>
|
||||
{exceptionData?.total && <div className='modal-list-search'>
|
||||
<div>
|
||||
项目名称:<Input style={{ width: 200 }} onChange={onProjectChange} />
|
||||
</div>
|
||||
@ -747,7 +753,7 @@ export const ModalList = (props: { modalVisible: boolean, onCancel: () => void,
|
||||
<div>
|
||||
<Button type="primary" onClick={() => { onSearchClick() }}>搜索</Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>}
|
||||
<div className='modal-list-content-g'>
|
||||
{exceptionData?.records?.length > 0 ? exceptionData?.records?.map((item: any, index: any) => {
|
||||
return (
|
||||
@ -780,9 +786,9 @@ export const ModalList = (props: { modalVisible: boolean, onCancel: () => void,
|
||||
)
|
||||
}) : <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} className="monitor-modal-empty" />}
|
||||
</div>
|
||||
<div className='modal-list-pagination'>
|
||||
<Pagination current={current} pageSize={10} showSizeChanger={false} onChange={onChange} total={total} itemRender={itemRender} />
|
||||
</div>
|
||||
{exceptionData?.total && <div className='modal-list-pagination'>
|
||||
<Pagination current={current} pageSize={10} showSizeChanger={false} onChange={onChange} total={total} itemRender={itemRender} showTotal={(total, range) => `共 ${total} 条`} />
|
||||
</div>}
|
||||
{/* <div className='monitor-modal-btn'>
|
||||
<div className='modal-list-btn' onClick={() => onCancel()}>
|
||||
<span>确 定</span>
|
||||
|
@ -24,13 +24,13 @@ const OpenToday: React.FC<{}> = () => {
|
||||
//超过5小时未开标数量
|
||||
const [noOpenNumberFive, setNoOpenNumberFive] = useState<string>("0");
|
||||
//超过2小时未开标列表
|
||||
const [noOpenListTwo, setNoOpenListTwo] = useState<any[]>([]);
|
||||
const [noOpenListTwo, setNoOpenListTwo] = useState<any>();
|
||||
//超过5小时未开标列表
|
||||
const [noOpenListFive, setNoOpenListFive] = useState<any[]>([]);
|
||||
const [noOpenListFive, setNoOpenListFive] = useState<any>();
|
||||
//ModalList visible
|
||||
const [modalListVisible, setModalListVisible] = useState<boolean>(false);
|
||||
//ModalList Data
|
||||
const [modalListData, setModalListData] = useState<any[]>([]);
|
||||
const [modalListData, setModalListData] = useState<any>();
|
||||
//ModalList Type
|
||||
const [exceptionType, setExceptionType] = useState<any>();
|
||||
//selectKey
|
||||
@ -41,6 +41,10 @@ const OpenToday: React.FC<{}> = () => {
|
||||
const auth = useRef<boolean>(authCheck(["ebtp-watcher"]));
|
||||
//定时器描述
|
||||
const _time = 60000;
|
||||
//modal弹窗数据类型
|
||||
const dataType = useRef<string>("");
|
||||
//
|
||||
const isInterval = useRef<boolean>(true);
|
||||
//初始化字典
|
||||
let dic: any = getDicData();
|
||||
let dicData: any = JSON.parse(dic);
|
||||
@ -157,23 +161,27 @@ const OpenToday: React.FC<{}> = () => {
|
||||
})
|
||||
}
|
||||
//今日开标-解密成功率
|
||||
const getDecryptSuccessRateToday = () => {
|
||||
getDecryptSuccessRateTodayAPI().then(res => {
|
||||
const getDecryptSuccessRateToday = (params: any, type: number) => {
|
||||
getDecryptSuccessRateTodayAPI({ ...params }).then(res => {
|
||||
if (res?.code == 200) {
|
||||
const data = res?.data;
|
||||
if (data?.decryptFailProjectList?.length > 0) {
|
||||
for (let i = 0, length = data.decryptFailProjectList.length; i < length; i++) {
|
||||
data.decryptFailProjectList[i]["regionDictName"] = data.decryptFailProjectList[i].projectRecord?.regionDictName;
|
||||
data.decryptFailProjectList[i]["projectName"] = data.decryptFailProjectList[i].projectRecord?.projectName;
|
||||
data.decryptFailProjectList[i]["ownerContactName"] = data.decryptFailProjectList[i].projectRecord?.ownerContactName;
|
||||
data.decryptFailProjectList[i]["ownerContactTel"] = data.decryptFailProjectList[i].projectRecord?.ownerContactTel;
|
||||
data.decryptFailProjectList[i]["appManagerName"] = data.decryptFailProjectList[i].projectRecord?.appManagerName;
|
||||
data.decryptFailProjectList[i]["appManagerTel"] = data.decryptFailProjectList[i].projectRecord?.appManagerTel;
|
||||
data.decryptFailProjectList[i]["recruitStartTime"] = data.decryptFailProjectList[i].projectRecord?.recruitStartTime;
|
||||
data.decryptFailProjectList[i]["bidMethodDict"] = data.decryptFailProjectList[i].projectRecord?.bidMethodDict;
|
||||
if (data?.decryptFailProjectList?.records?.length > 0) {
|
||||
for (let i = 0, length = data.decryptFailProjectList.records.length; i < length; i++) {
|
||||
data.decryptFailProjectList.records[i]["regionDictName"] = data.decryptFailProjectList.records[i].projectRecord?.regionDictName;
|
||||
data.decryptFailProjectList.records[i]["projectName"] = data.decryptFailProjectList.records[i].projectRecord?.projectName;
|
||||
data.decryptFailProjectList.records[i]["ownerContactName"] = data.decryptFailProjectList.records[i].projectRecord?.ownerContactName;
|
||||
data.decryptFailProjectList.records[i]["ownerContactTel"] = data.decryptFailProjectList.records[i].projectRecord?.ownerContactTel;
|
||||
data.decryptFailProjectList.records[i]["appManagerName"] = data.decryptFailProjectList.records[i].projectRecord?.appManagerName;
|
||||
data.decryptFailProjectList.records[i]["appManagerTel"] = data.decryptFailProjectList.records[i].projectRecord?.appManagerTel;
|
||||
data.decryptFailProjectList.records[i]["recruitStartTime"] = data.decryptFailProjectList.records[i].projectRecord?.recruitStartTime;
|
||||
data.decryptFailProjectList.records[i]["bidMethodDict"] = data.decryptFailProjectList.records[i].projectRecord?.bidMethodDict;
|
||||
}
|
||||
}
|
||||
setDecryptSuccessRateTodayData(data);
|
||||
if (type == 0) {
|
||||
setDecryptSuccessRateTodayData(data);
|
||||
} else {
|
||||
setModalListData(data?.decryptFailProjectList);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -186,18 +194,26 @@ const OpenToday: React.FC<{}> = () => {
|
||||
})
|
||||
}
|
||||
//评标阶段6小时未评标
|
||||
const getUnopenSix = () => {
|
||||
getUnopenSixAPI().then(res => {
|
||||
const getUnopenSix = (params: any, type: number) => {
|
||||
getUnopenSixAPI({ ...params }).then(res => {
|
||||
if (res?.code == 200) {
|
||||
setUnopenSixData(res?.data);
|
||||
if (type == 0) {
|
||||
setUnopenSixData(res?.data);
|
||||
} else {
|
||||
setModalListData(res?.data);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
//评标阶段10小时未评标
|
||||
const getUnopenTen = () => {
|
||||
getUnopenTenAPI().then(res => {
|
||||
const getUnopenTen = (params: any, type: number) => {
|
||||
getUnopenTenAPI({ ...params }).then(res => {
|
||||
if (res?.code == 200) {
|
||||
setUnopenTenData(res?.data);
|
||||
if (type == 0) {
|
||||
setUnopenTenData(res?.data);
|
||||
} else {
|
||||
setModalListData(res?.data);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -215,35 +231,59 @@ const OpenToday: React.FC<{}> = () => {
|
||||
})
|
||||
}
|
||||
//超n小时未开标列表
|
||||
const getNoOpenList = () => {
|
||||
getNoOpenListAPI({ "timeLimit": "2", "dayNumber": "1" }).then(res => {
|
||||
const getNoOpenListTwo = (params: any, type: number) => {
|
||||
getNoOpenListAPI({ "timeLimit": "2", "dayNumber": "1", ...params }).then(res => {
|
||||
if (res?.code == 200) {
|
||||
setNoOpenListTwo(res?.data?.records);
|
||||
if (type == 0) {
|
||||
setNoOpenListTwo(res?.data);
|
||||
} else {
|
||||
setModalListData(res?.data);
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
getNoOpenListAPI({ "timeLimit": "5", "dayNumber": "1" }).then(res => {
|
||||
}
|
||||
//超n小时未开标列表
|
||||
const getNoOpenListFive = (params: any, type: number) => {
|
||||
getNoOpenListAPI({ "timeLimit": "5", "dayNumber": "1", ...params }).then(res => {
|
||||
if (res?.code == 200) {
|
||||
setNoOpenListFive(res?.data?.records);
|
||||
if (type == 0) {
|
||||
setNoOpenListFive(res?.data);
|
||||
} else {
|
||||
setModalListData(res?.data);
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
//页面数据获取
|
||||
const getPageData = () => {
|
||||
getTodayInfo();
|
||||
getDecryptSuccessRateToday();
|
||||
getTodayOpening();
|
||||
getUnopenSix();
|
||||
getUnopenTen();
|
||||
|
||||
getNoOpenNumber();
|
||||
getNoOpenList();
|
||||
|
||||
}
|
||||
//分页数据
|
||||
const getCurrentData = () => {
|
||||
const params = { pageSize: 10, pageNo: 1 };
|
||||
getDecryptSuccessRateToday(params, 0);
|
||||
getNoOpenListTwo(params, 0);
|
||||
getNoOpenListFive(params, 0);
|
||||
getUnopenSix(params, 0);
|
||||
getUnopenTen(params, 0);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
let interval: any;
|
||||
if (auth.current) {
|
||||
getPageData();
|
||||
getCurrentData();
|
||||
interval = setInterval(() => {
|
||||
getPageData();
|
||||
if (isInterval.current) {
|
||||
getPageData();
|
||||
getCurrentData();
|
||||
}
|
||||
}, _time);
|
||||
}
|
||||
return () => {
|
||||
@ -296,9 +336,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("解密异常"); 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); }} />
|
||||
<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(decryptSuccessRateTodayData?.decryptFailProjectList); dataType.current = "1"; isInterval.current = false; 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?.records); dataType.current = "2"; isInterval.current = false; setModalListVisible(true); }} rightClick={() => { setExceptionType("5小时未开标"); setModalTitle(null); setModalListData(noOpenListFive?.records); dataType.current = "3"; isInterval.current = false; 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); dataType.current = "4"; isInterval.current = false; setModalListVisible(true); }} rightClick={() => { setExceptionType("10小时未评标"); setModalTitle(null); setModalListData(unopenTenData); dataType.current = "5"; isInterval.current = false; setModalListVisible(true); }} />
|
||||
</div>
|
||||
</Col>
|
||||
<Col span={7}>
|
||||
@ -315,17 +355,35 @@ const OpenToday: React.FC<{}> = () => {
|
||||
<Col span={12}>
|
||||
<ScreenLabel title="今日开标明细" />
|
||||
<div className='monitor-tender-card'>
|
||||
<ScrollTable dataSource={todayOpeningData?.todayList} columns={columns} ynum={540} rowKey="sectionId" isScroll tableKey={0} rollNum={14} onDoubleClick={(record: any) => { setModalTitle("今日开标明细"); setModalListData([record]); setModalListVisible(true); }} />
|
||||
<ScrollTable dataSource={todayOpeningData?.todayList} columns={columns} ynum={540} rowKey="sectionId" isScroll tableKey={0} rollNum={14} onDoubleClick={(record: any) => { setModalTitle("今日开标明细"); setModalListData({ records: [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" isScroll tableKey={1} rollNum={14} onDoubleClick={(record: any) => { setModalTitle("重保项目明细"); setModalListData([record]); setModalListVisible(true); }} />
|
||||
<ScrollTable dataSource={isNotEmpty(todayOpeningData?.importantList) ? todayOpeningData?.importantList : []} columns={reiColumns} ynum={540} rowKey="id" isScroll tableKey={1} rollNum={14} onDoubleClick={(record: any) => { setModalTitle("重保项目明细"); setModalListData({ records: [record] }); setModalListVisible(true); }} />
|
||||
</div>
|
||||
</Col>
|
||||
</Row>
|
||||
<ModalList modalVisible={modalListVisible} onCancel={() => { setModalListVisible(false); setModalListData([]); }} exceptionData={modalListData} exceptionType={exceptionType} title={modalTitle} />
|
||||
<ModalList modalVisible={modalListVisible} onCancel={() => { setModalListVisible(false); setModalListData({}); isInterval.current = true; }} exceptionData={modalListData} exceptionType={exceptionType} title={modalTitle} onCallBack={(current, projectName, ownerContactName) => {
|
||||
const params = {
|
||||
pageNo: current,
|
||||
pageSize: 10,
|
||||
}
|
||||
projectName != "" ? params["projectName"] = projectName : null;
|
||||
ownerContactName != "" ? params["ownerContactName"] = ownerContactName : null;
|
||||
if (dataType.current == "1") {
|
||||
getDecryptSuccessRateToday(params, 1);
|
||||
} else if (dataType.current == "2") {
|
||||
getNoOpenListTwo(params, 1);
|
||||
} else if (dataType.current == "3") {
|
||||
getNoOpenListFive(params, 1);
|
||||
} else if (dataType.current == "4") {
|
||||
getUnopenSix(params, 1);
|
||||
} else if (dataType.current == "5") {
|
||||
getUnopenTen(params, 1);
|
||||
}
|
||||
}} />
|
||||
</ScreenTitle>
|
||||
);
|
||||
};
|
||||
|
@ -193,25 +193,28 @@ export async function getTodayInfoAPI() {
|
||||
/**
|
||||
* 今日开标-评标阶段10小时未评标
|
||||
*/
|
||||
export async function getUnopenTenAPI() {
|
||||
export async function getUnopenTenAPI(data: any) {
|
||||
return request('/api/biz-service-ebtp-statistics/api/evaluation/today/unopen/ten', {
|
||||
method: 'GET',
|
||||
method: 'POST',
|
||||
data: { ...data },
|
||||
});
|
||||
}
|
||||
/**
|
||||
* 今日开标-评标阶段6小时未评标
|
||||
*/
|
||||
export async function getUnopenSixAPI() {
|
||||
export async function getUnopenSixAPI(data: any) {
|
||||
return request('/api/biz-service-ebtp-statistics/api/evaluation/today/unopen/six', {
|
||||
method: 'GET',
|
||||
method: 'POST',
|
||||
data: { ...data },
|
||||
});
|
||||
}
|
||||
/**
|
||||
* 今日开标-解密成功率
|
||||
*/
|
||||
export async function getDecryptSuccessRateTodayAPI() {
|
||||
export async function getDecryptSuccessRateTodayAPI(data: any) {
|
||||
return request('/api/biz-service-ebtp-statistics/exceptionMonitor/getDecryptSuccessRateToday', {
|
||||
method: 'GET',
|
||||
method: 'POST',
|
||||
data: { ...data }
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -2013,15 +2013,15 @@
|
||||
width: 200px;
|
||||
color: #FFFFFF;
|
||||
background-color: transparent;
|
||||
border: 1px solid #1B7DF2;
|
||||
border: 1px solid #01C2FF;
|
||||
|
||||
&:hover {
|
||||
border-color: #1B7DF2;
|
||||
border-color: #01C2FF;
|
||||
}
|
||||
|
||||
&:focus {
|
||||
border-color: #1B7DF2;
|
||||
box-shadow: 0 0 0 2px #1B7DF2;
|
||||
border-color: #01C2FF;
|
||||
box-shadow: 0 0 0 2px #01C2FF;
|
||||
}
|
||||
|
||||
&::-webkit-input-placeholder {
|
||||
@ -2034,18 +2034,19 @@
|
||||
}
|
||||
|
||||
.ant-btn-primary {
|
||||
background: #1B7EF2;
|
||||
border-color: #1B7EF2;
|
||||
background: #01C2FF;
|
||||
border-color: #01C2FF;
|
||||
|
||||
&:hover &:focus &:active {
|
||||
background: #1B7EF2;
|
||||
border-color: #1B7EF2;
|
||||
background: #01C2FF;
|
||||
border-color: #01C2FF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.modal-list-pagination {
|
||||
text-align: center;
|
||||
text-align: right;
|
||||
margin-top: 16px;
|
||||
|
||||
.ant-pagination-item {
|
||||
// border: none;
|
||||
@ -2055,33 +2056,33 @@
|
||||
margin: 0 0.5rem 0 0;
|
||||
|
||||
&>a {
|
||||
color: #45a2ff;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
&:hover>a {
|
||||
color: #ffd502;
|
||||
color: #45a2ff;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
.ant-pagination-item:hover {
|
||||
border-color: #ffd502;
|
||||
border-color: #45a2ff;
|
||||
}
|
||||
|
||||
.ant-pagination-item:focus-visible {
|
||||
border-color: #ffd502;
|
||||
border-color: #45a2ff;
|
||||
}
|
||||
|
||||
.ant-pagination-item-active {
|
||||
border-color: #ffd502;
|
||||
border-color: #45a2ff;
|
||||
|
||||
a {
|
||||
color: #ffd502;
|
||||
color: #45a2ff;
|
||||
}
|
||||
|
||||
&:hover &:focus-visible {
|
||||
border-color: #ffd502;
|
||||
border-color: #45a2ff;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2089,26 +2090,26 @@
|
||||
.ant-pagination-next:focus-visible .ant-pagination-item-link,
|
||||
.ant-pagination-prev:hover .ant-pagination-item-link,
|
||||
.ant-pagination-next:hover .ant-pagination-item-link {
|
||||
border-color: #45a2ff;
|
||||
color: #45a2ff;
|
||||
border-color: #FFFFFF;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.ant-pagination-prev .ant-pagination-item-link,
|
||||
.ant-pagination-next .ant-pagination-item-link {
|
||||
background: none;
|
||||
border-color: #45a2ff;
|
||||
color: #45a2ff;
|
||||
border-color: #FFFFFF;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.pagination-icon {
|
||||
font-size: 20px;
|
||||
vertical-align: middle;
|
||||
color: #45a2ff;
|
||||
color: #FFFFFF;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.ant-pagination-total-text {
|
||||
color: #45a2ff;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.ant-pagination-prev {
|
||||
@ -2128,12 +2129,12 @@
|
||||
}
|
||||
|
||||
.ant-pagination-item-ellipsis {
|
||||
color: #45a2ff;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon,
|
||||
.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon {
|
||||
color: #45a2ff;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.ant-pagination-jump-prev .ant-pagination-item-container,
|
||||
|
Reference in New Issue
Block a user