Merge branch 'release_electronic_bid_evaluation_room' into 'release_20230102'
1.2 第八版修改 See merge request eshop/fe_service_ebtp_frontend!102
This commit is contained in:
@ -453,7 +453,7 @@ const MonitorException: React.FC<{}> = () => {
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<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">
|
||||
<ScrollTable dataSource={decryptData?.decryptExceptionList} columns={columnsSecond} ynum={266} />
|
||||
</div>
|
||||
@ -465,7 +465,7 @@ const MonitorException: React.FC<{}> = () => {
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<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">
|
||||
<ScrollTable dataSource={decryptData?.macSameList} columns={columnsFifth} ynum={266} />
|
||||
</div>
|
||||
|
@ -16,7 +16,7 @@ import './china';
|
||||
import * as echarts from 'echarts';
|
||||
import { getActiveSupplierAPI, getAnnoCountAPI, getAnnualAndTenderAgentAPI, getExpertNumberAPI, getMonitorListAPI, getOpeningListAPI, getReviewDistributionAPI, getSupplierCountAPI, getTodayOpeningAPI } from '../service';
|
||||
import moment from 'moment';
|
||||
import { isNotEmpty } from '@/utils/CommonUtils';
|
||||
import { isEmpty, isNotEmpty } from '@/utils/CommonUtils';
|
||||
import { getSessionUserData } from '@/utils/session';
|
||||
import { history } from 'umi';
|
||||
|
||||
@ -600,7 +600,7 @@ export const GraphChart = (props: { type: string, chartData: any[], chartColor?:
|
||||
},
|
||||
axisLabel: { color: '#FFFFFF' },
|
||||
// prettier-ignore
|
||||
data: ['2022-8', '2022-9', '2022-10', '2022-11', '2022-12'],
|
||||
data: chartData?.[3],
|
||||
}
|
||||
],
|
||||
yAxis: [
|
||||
@ -1260,8 +1260,11 @@ export const GraphChart = (props: { type: string, chartData: any[], chartColor?:
|
||||
//角色校验
|
||||
export const authCheck = () => {
|
||||
//获取角色列表
|
||||
const authorityList: any[] = getSessionUserData()?.authorityList;
|
||||
if (authorityList.findIndex(item => item.roleCode == "ebtp-watcher") == -1) {//监看人员校验
|
||||
const authorityList: any[] | undefined = getSessionUserData()?.authorityList;
|
||||
if (isEmpty(authorityList)) {
|
||||
return false;
|
||||
}
|
||||
if (authorityList?.findIndex(item => item.roleCode == "ebtp-watcher") == -1) {//监看人员校验
|
||||
history.replace({ pathname: "/401", query: { code: "405" } });
|
||||
return false;
|
||||
}
|
||||
@ -1288,11 +1291,11 @@ const MonitorHome: React.FC<{}> = () => {
|
||||
//年度&月度 year-年度 month-月度
|
||||
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 bidStatusMap = ["准备评标", "正在评标", "评标结束"];
|
||||
const statusColorMap = ["card-text-orange", "card-text-green", "card-text-purple"];
|
||||
const bidStatusMap = ["准备评标", "正在评标", "评标结束", "暂无数据"];
|
||||
const statusColorMap = ["card-text-orange", "card-text-green", "card-text-purple", "card-text-white"];
|
||||
const mapChart = useMemo(() => {
|
||||
return reviewDistributionData.length > 0 && <GraphChart type="map" chartData={reviewDistributionData} />
|
||||
}, [reviewDistributionData])
|
||||
@ -1391,6 +1394,9 @@ const MonitorHome: React.FC<{}> = () => {
|
||||
}
|
||||
//监控室点击事件
|
||||
const onCardClick = (item: any) => {
|
||||
if (item.status == "3") {
|
||||
return;
|
||||
}
|
||||
if (item.status == "0") {
|
||||
message.info("当前评标室未开启,请等待开启后查看");
|
||||
return;
|
||||
@ -1467,14 +1473,14 @@ const MonitorHome: React.FC<{}> = () => {
|
||||
{/* <div> */}
|
||||
<Row gutter={16}>
|
||||
{monitorList.map((item, index) => (
|
||||
<Col span={8}>
|
||||
<Col span={8} key={index}>
|
||||
{/* <div> */}
|
||||
<div className="card-default-01" onClick={() => onCardClick(item)}>
|
||||
<img src={default_play}></img>
|
||||
<div className={statusColorMap[item.status]}>{bidStatusMap[item.status]}</div>
|
||||
</div>
|
||||
<div className="evaluation-text">
|
||||
<span>{item.projectName}</span>
|
||||
<span>{item?.projectName}</span>
|
||||
</div>
|
||||
{/* </div> */}
|
||||
|
||||
|
@ -227,15 +227,15 @@ const OpenToday: React.FC<{}> = () => {
|
||||
</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(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(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(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?.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>
|
||||
</Col>
|
||||
<Col span={7}>
|
||||
<div className='monitor-tender-card'>
|
||||
<ScreenLabel title="评标阶段" />
|
||||
<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>
|
||||
</Col>
|
||||
|
@ -102,12 +102,14 @@ const TenderAgent: React.FC<{}> = () => {
|
||||
const wclList: any[] = [];
|
||||
const dlxmsList: 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)));
|
||||
dlxmsList.push(item.dlxms);
|
||||
dlxmysList.push(Number(item.dlxmys.toFixed(2)));
|
||||
monthList.push(item.monthDate);
|
||||
});
|
||||
const monthDataMap = [wclList, dlxmsList, dlxmysList];
|
||||
const monthDataMap = [wclList, dlxmsList, dlxmysList, monthList];
|
||||
setMonthData(monthDataMap)
|
||||
|
||||
const selectData: any[] = res?.data.agencyList.map((item: any) => ({ label: item.agencyName, value: item.agencyId }));//右侧代理机构下拉
|
||||
|
@ -288,6 +288,11 @@
|
||||
.card-text-orange;
|
||||
color: rgb(189, 16, 224);
|
||||
}
|
||||
|
||||
.card-text-white {
|
||||
.card-text-orange;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
.evaluation-text {
|
||||
@ -1007,6 +1012,12 @@
|
||||
}
|
||||
|
||||
.monitor-select-dropdown {
|
||||
|
||||
&>ul {
|
||||
height: 99vh;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
.ant-dropdown-menu {
|
||||
background-color: #081a30;
|
||||
}
|
||||
|
Reference in New Issue
Block a user