1.2 第八版修改
This commit is contained in:
@ -453,7 +453,7 @@ const MonitorException: React.FC<{}> = () => {
|
|||||||
</Col>
|
</Col>
|
||||||
<Col span={8}>
|
<Col span={8}>
|
||||||
<div className="monitor-center-main">
|
<div className="monitor-center-main">
|
||||||
<ScreenLabel title="解密异常项目列表" extra={<span className='monitor-extra-pointer' onClick={() => { setExceptionType("解密异常"); setModalListData(decryptData?.decryptExceptionList); setModalListVisible(true); }}>more</span>} />
|
<ScreenLabel title="解密异常项目列表" extra={<span className='monitor-extra-pointer' onClick={() => { setExceptionType("解密异常"); setModalListData(decryptData?.decryptExceptionList ? decryptData?.decryptExceptionList : []); setModalListVisible(true); }}>more</span>} />
|
||||||
<div className="monitor-exception-card">
|
<div className="monitor-exception-card">
|
||||||
<ScrollTable dataSource={decryptData?.decryptExceptionList} columns={columnsSecond} ynum={266} />
|
<ScrollTable dataSource={decryptData?.decryptExceptionList} columns={columnsSecond} ynum={266} />
|
||||||
</div>
|
</div>
|
||||||
@ -465,7 +465,7 @@ const MonitorException: React.FC<{}> = () => {
|
|||||||
</Col>
|
</Col>
|
||||||
<Col span={8}>
|
<Col span={8}>
|
||||||
<div className="monitor-right-main">
|
<div className="monitor-right-main">
|
||||||
<ScreenLabel title="MAC地址重复项目列表" extra={<span className='monitor-extra-pointer' onClick={() => { setExceptionType("MAC地址重复"); setModalListData(decryptData?.macSameList); setModalListVisible(true); }}>more</span>} />
|
<ScreenLabel title="MAC地址重复项目列表" extra={<span className='monitor-extra-pointer' onClick={() => { setExceptionType("MAC地址重复"); setModalListData(decryptData?.macSameList ? decryptData?.macSameList : []); setModalListVisible(true); }}>more</span>} />
|
||||||
<div className="monitor-exception-card">
|
<div className="monitor-exception-card">
|
||||||
<ScrollTable dataSource={decryptData?.macSameList} columns={columnsFifth} ynum={266} />
|
<ScrollTable dataSource={decryptData?.macSameList} columns={columnsFifth} ynum={266} />
|
||||||
</div>
|
</div>
|
||||||
|
@ -16,7 +16,7 @@ import './china';
|
|||||||
import * as echarts from 'echarts';
|
import * as echarts from 'echarts';
|
||||||
import { getActiveSupplierAPI, getAnnoCountAPI, getAnnualAndTenderAgentAPI, getExpertNumberAPI, getMonitorListAPI, getOpeningListAPI, getReviewDistributionAPI, getSupplierCountAPI, getTodayOpeningAPI } from '../service';
|
import { getActiveSupplierAPI, getAnnoCountAPI, getAnnualAndTenderAgentAPI, getExpertNumberAPI, getMonitorListAPI, getOpeningListAPI, getReviewDistributionAPI, getSupplierCountAPI, getTodayOpeningAPI } from '../service';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import { isNotEmpty } from '@/utils/CommonUtils';
|
import { isEmpty, isNotEmpty } from '@/utils/CommonUtils';
|
||||||
import { getSessionUserData } from '@/utils/session';
|
import { getSessionUserData } from '@/utils/session';
|
||||||
import { history } from 'umi';
|
import { history } from 'umi';
|
||||||
|
|
||||||
@ -600,7 +600,7 @@ export const GraphChart = (props: { type: string, chartData: any[], chartColor?:
|
|||||||
},
|
},
|
||||||
axisLabel: { color: '#FFFFFF' },
|
axisLabel: { color: '#FFFFFF' },
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
data: ['2022-8', '2022-9', '2022-10', '2022-11', '2022-12'],
|
data: chartData?.[3],
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
yAxis: [
|
yAxis: [
|
||||||
@ -1260,8 +1260,11 @@ export const GraphChart = (props: { type: string, chartData: any[], chartColor?:
|
|||||||
//角色校验
|
//角色校验
|
||||||
export const authCheck = () => {
|
export const authCheck = () => {
|
||||||
//获取角色列表
|
//获取角色列表
|
||||||
const authorityList: any[] = getSessionUserData()?.authorityList;
|
const authorityList: any[] | undefined = getSessionUserData()?.authorityList;
|
||||||
if (authorityList.findIndex(item => item.roleCode == "ebtp-watcher") == -1) {//监看人员校验
|
if (isEmpty(authorityList)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (authorityList?.findIndex(item => item.roleCode == "ebtp-watcher") == -1) {//监看人员校验
|
||||||
history.replace({ pathname: "/401", query: { code: "405" } });
|
history.replace({ pathname: "/401", query: { code: "405" } });
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1288,11 +1291,11 @@ const MonitorHome: React.FC<{}> = () => {
|
|||||||
//年度&月度 year-年度 month-月度
|
//年度&月度 year-年度 month-月度
|
||||||
const [ymChange, setYmChange] = useState<string>("year");
|
const [ymChange, setYmChange] = useState<string>("year");
|
||||||
//评标室监控
|
//评标室监控
|
||||||
const [monitorList, setMonitorList] = useState<any[]>([]);
|
const [monitorList, setMonitorList] = useState<any[]>([{ status: "3" }, { status: "3" }, { status: "3" }]);
|
||||||
//权限校验
|
//权限校验
|
||||||
const auth = useRef<boolean>(authCheck());
|
const auth = useRef<boolean>(authCheck());
|
||||||
const bidStatusMap = ["准备评标", "正在评标", "评标结束"];
|
const bidStatusMap = ["准备评标", "正在评标", "评标结束", "暂无数据"];
|
||||||
const statusColorMap = ["card-text-orange", "card-text-green", "card-text-purple"];
|
const statusColorMap = ["card-text-orange", "card-text-green", "card-text-purple", "card-text-white"];
|
||||||
const mapChart = useMemo(() => {
|
const mapChart = useMemo(() => {
|
||||||
return reviewDistributionData.length > 0 && <GraphChart type="map" chartData={reviewDistributionData} />
|
return reviewDistributionData.length > 0 && <GraphChart type="map" chartData={reviewDistributionData} />
|
||||||
}, [reviewDistributionData])
|
}, [reviewDistributionData])
|
||||||
@ -1391,6 +1394,9 @@ const MonitorHome: React.FC<{}> = () => {
|
|||||||
}
|
}
|
||||||
//监控室点击事件
|
//监控室点击事件
|
||||||
const onCardClick = (item: any) => {
|
const onCardClick = (item: any) => {
|
||||||
|
if (item.status == "3") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (item.status == "0") {
|
if (item.status == "0") {
|
||||||
message.info("当前评标室未开启,请等待开启后查看");
|
message.info("当前评标室未开启,请等待开启后查看");
|
||||||
return;
|
return;
|
||||||
@ -1467,14 +1473,14 @@ const MonitorHome: React.FC<{}> = () => {
|
|||||||
{/* <div> */}
|
{/* <div> */}
|
||||||
<Row gutter={16}>
|
<Row gutter={16}>
|
||||||
{monitorList.map((item, index) => (
|
{monitorList.map((item, index) => (
|
||||||
<Col span={8}>
|
<Col span={8} key={index}>
|
||||||
{/* <div> */}
|
{/* <div> */}
|
||||||
<div className="card-default-01" onClick={() => onCardClick(item)}>
|
<div className="card-default-01" onClick={() => onCardClick(item)}>
|
||||||
<img src={default_play}></img>
|
<img src={default_play}></img>
|
||||||
<div className={statusColorMap[item.status]}>{bidStatusMap[item.status]}</div>
|
<div className={statusColorMap[item.status]}>{bidStatusMap[item.status]}</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="evaluation-text">
|
<div className="evaluation-text">
|
||||||
<span>{item.projectName}</span>
|
<span>{item?.projectName}</span>
|
||||||
</div>
|
</div>
|
||||||
{/* </div> */}
|
{/* </div> */}
|
||||||
|
|
||||||
|
@ -227,15 +227,15 @@ const OpenToday: React.FC<{}> = () => {
|
|||||||
</div>
|
</div>
|
||||||
<div className="monitor-top-space-flex">
|
<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(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(noOpenNumberFive)) / Number(todayOpeningData?.sectionNumber)) * 100).toFixed(0)) : 100 : 100} title="开标及时率" leftTitle='2小时未开标' rightTitle='5小时未开标' leftNumber={noOpenNumberTwo} rightNumber={noOpenNumberFive} leftClick={() => { setExceptionType(null); setModalListData(noOpenListTwo); setModalListVisible(true); }} rightClick={() => { setExceptionType(null); setModalListData(noOpenListFive); 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(null); setModalListData(noOpenListTwo); setModalListVisible(true); }} rightClick={() => { setExceptionType(null); setModalListData(noOpenListFive); setModalListVisible(true); }} />
|
||||||
<ProgressItem progress={isNotEmpty(todayInfoData?.sectionNumber) ? todayInfoData?.sectionNumber != 0 ? Number((((todayInfoData?.sectionNumber - Number(todayInfoData?.sixTimelyRate) - Number(todayInfoData?.tenTimelyRate)) / Number(todayInfoData?.sectionNumber)) * 100).toFixed(0)) : 100 : 100} title="评标及时率" leftTitle='6小时未评标' rightTitle='10小时未评标' leftNumber={todayInfoData?.sixTimelyRate} rightNumber={todayInfoData?.tenTimelyRate} leftClick={() => { setExceptionType(null); setModalListData(unopenSixData); setModalListVisible(true); }} rightClick={() => { setExceptionType(null); setModalListData(unopenTenData); 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(null); setModalListData(unopenSixData); setModalListVisible(true); }} rightClick={() => { setExceptionType(null); setModalListData(unopenTenData); setModalListVisible(true); }} />
|
||||||
</div>
|
</div>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={7}>
|
<Col span={7}>
|
||||||
<div className='monitor-tender-card'>
|
<div className='monitor-tender-card'>
|
||||||
<ScreenLabel title="评标阶段" />
|
<ScreenLabel title="评标阶段" />
|
||||||
<div className='monitor-tender-card'>
|
<div className='monitor-tender-card'>
|
||||||
<StageCard percentage={isNotEmpty(todayInfoData?.timelyRate) ? Number(todayInfoData?.timelyRate) : 0} total={isNotEmpty(todayInfoData?.sectionNumber) ? todayInfoData?.sectionNumber : 0} firstTitle="开启评审" firstNumber={`${isNotEmpty(todayInfoData?.openAssessNumber) ? todayInfoData?.openAssessNumber : 0}个`} secondTitle="专家签到" secondNumber={`${isNotEmpty(todayInfoData?.signExpertNumber) ? todayInfoData?.signExpertNumber : 0}/${isNotEmpty(todayInfoData?.totalExpertNumber) ? todayInfoData?.totalExpertNumber : 0}`} thirdTitle="评审汇总" thirdNumber={`${isNotEmpty(todayInfoData?.resultNumber) ? todayInfoData?.resultNumber : 0}个`} />
|
<StageCard percentage={isNotEmpty(todayInfoData?.sectionNumber) && todayInfoData?.sectionNumber != "0" ? Number(((Number(todayInfoData?.resultNumber) / todayInfoData?.sectionNumber) * 100).toFixed(0)) : 0} total={isNotEmpty(todayInfoData?.sectionNumber) ? todayInfoData?.sectionNumber : 0} firstTitle="开启评审" firstNumber={`${isNotEmpty(todayInfoData?.openAssessNumber) ? todayInfoData?.openAssessNumber : 0}个`} secondTitle="专家签到" secondNumber={`${isNotEmpty(todayInfoData?.signExpertNumber) ? todayInfoData?.signExpertNumber : 0}/${isNotEmpty(todayInfoData?.totalExpertNumber) ? todayInfoData?.totalExpertNumber : 0}`} thirdTitle="评审汇总" thirdNumber={`${isNotEmpty(todayInfoData?.resultNumber) ? todayInfoData?.resultNumber : 0}个`} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Col>
|
</Col>
|
||||||
|
@ -102,12 +102,14 @@ const TenderAgent: React.FC<{}> = () => {
|
|||||||
const wclList: any[] = [];
|
const wclList: any[] = [];
|
||||||
const dlxmsList: any[] = [];
|
const dlxmsList: any[] = [];
|
||||||
const dlxmysList: any[] = [];
|
const dlxmysList: any[] = [];
|
||||||
data.slice(7, 12).forEach((item: any) => {
|
const monthList: any[] = [];
|
||||||
|
data.slice(1, 6).forEach((item: any) => {
|
||||||
wclList.push(Number((item.wcl * 100).toFixed(1)));
|
wclList.push(Number((item.wcl * 100).toFixed(1)));
|
||||||
dlxmsList.push(item.dlxms);
|
dlxmsList.push(item.dlxms);
|
||||||
dlxmysList.push(Number(item.dlxmys.toFixed(2)));
|
dlxmysList.push(Number(item.dlxmys.toFixed(2)));
|
||||||
|
monthList.push(item.monthDate);
|
||||||
});
|
});
|
||||||
const monthDataMap = [wclList, dlxmsList, dlxmysList];
|
const monthDataMap = [wclList, dlxmsList, dlxmysList, monthList];
|
||||||
setMonthData(monthDataMap)
|
setMonthData(monthDataMap)
|
||||||
|
|
||||||
const selectData: any[] = res?.data.agencyList.map((item: any) => ({ label: item.agencyName, value: item.agencyId }));//右侧代理机构下拉
|
const selectData: any[] = res?.data.agencyList.map((item: any) => ({ label: item.agencyName, value: item.agencyId }));//右侧代理机构下拉
|
||||||
|
@ -288,6 +288,11 @@
|
|||||||
.card-text-orange;
|
.card-text-orange;
|
||||||
color: rgb(189, 16, 224);
|
color: rgb(189, 16, 224);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-text-white {
|
||||||
|
.card-text-orange;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.evaluation-text {
|
.evaluation-text {
|
||||||
@ -1007,6 +1012,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.monitor-select-dropdown {
|
.monitor-select-dropdown {
|
||||||
|
|
||||||
|
&>ul {
|
||||||
|
height: 99vh;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
.ant-dropdown-menu {
|
.ant-dropdown-menu {
|
||||||
background-color: #081a30;
|
background-color: #081a30;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user