mh_jy_safe_web/src/layout/FullScreenInter.js

814 lines
26 KiB
JavaScript
Raw Normal View History

// FullScreenInter.js - 主文件保持简洁
import React from 'react';
2026-01-19 08:56:29 +08:00
import { connect } from 'dva';
import { withRouter } from 'dva/router';
2026-04-28 16:52:44 +08:00
import { Icon, Row, Col, message } from 'antd';
2026-01-19 08:56:29 +08:00
import styles from './fullinter.less';
import logo from '../assets/layout/headerno-logo-new.png';
import debounce from 'lodash.debounce';
import storage from '../utils/storage';
2026-04-28 16:52:44 +08:00
import { initFilter, extendRule } from '../utils/common';
import HomeContent from './FullOther/HomeContent';
2026-04-28 16:52:44 +08:00
import TrainingContent from './FullOther/TrainingContent';
import RiskControl from './FullOther/RiskControl';
import ClassBuild from './FullOther/ClassBuild';
import DangerJob from './FullOther/DangerJob';
import HiddenSolve from './FullOther/HiddenSolve';
2026-01-19 08:56:29 +08:00
const getScale = () => {
const width = 1920,
height = 1080;
2026-01-19 08:56:29 +08:00
let ww = window.innerWidth / width;
let wh = window.innerHeight / height;
return ww < wh ? ww : wh;
};
class FullScreen extends React.Component {
constructor(props) {
super(props);
this.state = {
nowDate: '',
riskTypeRate: [],
2026-04-29 11:11:23 +08:00
riskTotal: [],
2026-04-28 16:52:44 +08:00
jobTodayQty: [],
hiddenSummary: [],
taskTop3: [],
2026-01-19 08:56:29 +08:00
scale: getScale(),
configBanner: ['首页', '风险管控', '隐患治理', '班组建设', '危险作业', '安全培训'],
mediaList: [],
currentMediaIndex: 0,
announcementList: [],
activeTab: '首页',
2026-04-28 16:52:44 +08:00
// 安全培训相关数据
2026-04-22 16:14:55 +08:00
trainingData: {
listNAME: [],
YearCount: [],
MonthRecordCount: [],
MonthPersonCount: [],
2026-04-28 16:52:44 +08:00
listAnnourcement: [],
TITLE: '',
listVideoImg: [],
playSet: [],
2026-04-22 16:14:55 +08:00
},
trainingSubData: {
listNAME: [],
YearCount: [],
MonthRecordCount: [],
MonthPersonCount: [],
},
trainingSubDataMonth: {
listNAME: [],
YearCount: [],
MonthRecordCount: [],
MonthPersonCount: [],
},
2026-04-23 17:06:40 +08:00
trainingSubIDCard: [],
2026-04-23 09:13:20 +08:00
trainingSubBSType: {},
2026-04-28 16:52:44 +08:00
trainingCompanyData: [], // 安全培训专用公司数据
selectedTrainingMonth: new Date().getMonth() + 1,
selectedTrainingCompany: '',
// 隐患治理相关数据
hiddenSubData: {}, // 隐患治理数据
hiddenCompanyData: [], // 隐患治理专用公司数据
selectedHiddenCompany: '', // 隐患治理选中的公司
// 其他页面数据
riskSubData: {},
classSubData: {},
dangerSubData: {},
dangerCompanyData: [],
selectedDangerCompany: '',
announcementDetail: null,
announcementDetailLoading: false,
announcementModalVisible: false,
currentAnnouncement: null,
2026-01-19 08:56:29 +08:00
};
this.isUnmounted = false;
2026-04-29 11:11:23 +08:00
this.dataTimer = null; // 新增:用于数据定时请求
2026-01-19 08:56:29 +08:00
}
setScale = debounce(() => {
if (this.isUnmounted) return;
this.setState({ scale: getScale() });
2026-01-19 08:56:29 +08:00
}, 500);
toggleFullscreen = () => {
if (!document.fullscreenElement) {
document.documentElement.requestFullscreen?.();
} else {
document.exitFullscreen?.();
}
};
2026-04-29 11:11:23 +08:00
startDataRefreshTimer = () => {
// 清除已有定时器
if (this.dataTimer) {
clearInterval(this.dataTimer);
}
// 设置新的定时器每5分钟执行一次
this.dataTimer = setInterval(
() => {
if (!this.isUnmounted) {
if (this.state.activeTab === '首页') {
this.getHomeDataArray();
this.getYearPXData();
}
// 安全培训 - 参考原有逻辑
else if (this.state.activeTab === '安全培训') {
this.getTrainingCompanyData(); // 先获取公司列表
this.getHomeSESubYearData();
this.getHomeSESubYearMonthData();
this.getHomeSESubIDCardData();
}
// 隐患治理 - 参考安全培训的调用顺序
else if (this.state.activeTab === '隐患治理') {
this.getHiddenCompanyData(); // 先获取公司列表(与安全培训独立)
}
// 风险管控
else if (this.state.activeTab === '风险管控') {
this.getRiskSubData();
}
// 班组建设
else if (this.state.activeTab === '班组建设') {
this.getClassSubData();
}
// 危险作业
else if (this.state.activeTab === '危险作业') {
this.getDangerCompanyData();
}
}
},
1 * 60 * 1000
); // 5分钟 = 300000毫秒
};
2026-01-19 08:56:29 +08:00
componentDidMount() {
this.isUnmounted = false;
window.addEventListener('resize', this.setScale);
2026-04-24 11:14:41 +08:00
this.getHomeDataArray();
2026-04-22 16:14:55 +08:00
this.getYearPXData();
2026-04-29 11:11:23 +08:00
// 启动定时刷新
this.startDataRefreshTimer();
2026-01-19 08:56:29 +08:00
this.timer = setInterval(() => {
if (!this.isUnmounted) this.setState({ nowDate: this.getDate() });
2026-01-19 08:56:29 +08:00
}, 1000);
document.addEventListener('fullscreenchange', this.handleFullscreenChange);
2026-01-21 14:05:35 +08:00
}
2026-04-28 16:52:44 +08:00
getAnnouncementDetail = (announcement) => {
return new Promise((resolve, reject) => {
const orgId = storage('lacal').getItem('webOrgId')?.val;
const json = initFilter(orgId);
extendRule(json, 'ID', 1, announcement.ID);
json.Include = ['Nav_Orgs', 'Nav_Orgs.Nav_OrgSub', 'Nav_Files.Nav_ImgFile'];
this.setState({ announcementDetailLoading: true, announcementDetail: null });
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'PF/Annourcement/Get',
onComplete: (ret) => {
if (ret && !this.isUnmounted) {
this.setState({
announcementDetail: ret,
announcementDetailLoading: false,
});
resolve(ret);
} else {
message.error('暂无公告详情');
this.setState({ announcementDetailLoading: false });
reject(new Error('获取公告详情失败'));
}
},
onError: (error) => {
this.setState({ announcementDetailLoading: false });
reject(error);
},
});
});
};
handleAnnouncementClick = async (announcement) => {
try {
const detail = await this.getAnnouncementDetail(announcement);
this.setState({
currentAnnouncement: detail,
announcementModalVisible: true,
});
} catch (error) {
console.error('获取公告详情失败:', error);
}
};
handleAnnouncementModalClose = () => {
this.setState({
announcementModalVisible: false,
currentAnnouncement: null,
});
};
handleCarouselChange = (current) => {
this.setState({ currentMediaIndex: current });
2026-01-21 14:05:35 +08:00
};
handleDotClick = (index) => {
this.setState({ currentMediaIndex: index });
2026-01-19 08:56:29 +08:00
};
handleTabClick = (name) => {
this.setState({ activeTab: name });
2026-04-23 17:06:40 +08:00
if (name === '首页') {
2026-04-29 11:11:23 +08:00
this.getHomeDataArray();
2026-04-23 17:06:40 +08:00
this.getYearPXData();
}
2026-04-28 16:52:44 +08:00
// 安全培训 - 参考原有逻辑
2026-04-22 16:14:55 +08:00
if (name === '安全培训') {
2026-04-28 16:52:44 +08:00
this.getTrainingCompanyData(); // 先获取公司列表
2026-04-22 16:14:55 +08:00
this.getHomeSESubYearData();
this.getHomeSESubYearMonthData();
2026-04-23 09:13:20 +08:00
this.getHomeSESubIDCardData();
2026-04-28 16:52:44 +08:00
}
// 隐患治理 - 参考安全培训的调用顺序
if (name === '隐患治理') {
this.getHiddenCompanyData(); // 先获取公司列表(与安全培训独立)
}
// 风险管控
if (name === '风险管控') {
this.getRiskSubData();
}
// 班组建设
if (name === '班组建设') {
this.getClassSubData();
}
// 危险作业
if (name === '危险作业') {
this.getDangerCompanyData();
2026-04-22 16:14:55 +08:00
}
2026-01-19 08:56:29 +08:00
};
handleFullscreenChange = () => {
this.forceUpdate();
};
2026-01-19 08:56:29 +08:00
componentWillUnmount() {
this.isUnmounted = true;
window.removeEventListener('resize', this.setScale);
if (this.timer) clearInterval(this.timer);
2026-04-29 11:11:23 +08:00
// 清除数据刷新定时器
if (this.dataTimer) clearInterval(this.dataTimer);
document.removeEventListener('fullscreenchange', this.handleFullscreenChange);
}
2026-01-19 08:56:29 +08:00
getDate = () => {
const myDate = new Date();
const year = myDate.getFullYear();
const mon = myDate.getMonth() + 1;
const date = myDate.getDate();
let hours = myDate.getHours();
let minutes = myDate.getMinutes();
let seconds = myDate.getSeconds();
hours = hours < 10 ? '0' + hours : hours;
minutes = minutes < 10 ? '0' + minutes : minutes;
seconds = seconds < 10 ? '0' + seconds : seconds;
return `${year}${mon}${date}\t\t\t${hours} : ${minutes} : ${seconds}`;
};
2026-01-19 08:56:29 +08:00
getHomeDataArray = () => {
const orgId = storage('lacal').getItem('webOrgId')?.val;
const json = initFilter(orgId);
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'BI/BIKanBanController/ReturnAllData',
onComplete: (ret) => {
if (ret && !this.isUnmounted) {
this.setState({
riskTypeRate: ret.riskTypeRate || [],
2026-04-28 16:52:44 +08:00
jobTodayQty: ret.jobTodayQty || [],
hiddenSummary: ret.hiddenSummary || [],
taskTop3: ret.taskTop3 || [],
2026-01-19 08:56:29 +08:00
});
}
2026-01-19 08:56:29 +08:00
},
});
};
2026-04-28 16:52:44 +08:00
2026-04-22 16:14:55 +08:00
getYearPXData = () => {
const orgId = storage('lacal').getItem('webOrgId')?.val;
const json = initFilter(orgId);
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'BI/BIHeadSE/SEtrInfo',
onComplete: (ret) => {
if (ret && !this.isUnmounted) {
this.setState({
trainingData: {
listNAME: ret.listNAME || [],
YearCount: ret.YearCount || [],
MonthRecordCount: ret.MonthRecordCount || [],
MonthPersonCount: ret.MonthPersonCount || [],
2026-04-28 16:52:44 +08:00
listAnnourcement: ret.listAnnourcement || [],
TITLE: ret.TITLE || '',
listVideoImg: ret.listVideoImg || [],
playSet: ret.playSet || [],
2026-04-22 16:14:55 +08:00
},
});
}
},
});
};
2026-04-28 16:52:44 +08:00
// ==================== 安全培训相关方法 ====================
getTrainingCompanyData = () => {
const orgId = storage('lacal').getItem('webOrgId')?.val;
const json = initFilter(orgId);
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'FM/Organization/OrderPaged',
onComplete: (ret) => {
if (ret && !this.isUnmounted) {
// 默认选中邦泰公司
const defaultCompany = ret.find((company) => company.ID === '00500000-0000-0000-0000-000000000000');
this.setState({
trainingCompanyData: ret,
});
if (defaultCompany && !this.state.selectedTrainingCompany) {
this.setState(
{
selectedTrainingCompany: defaultCompany.ID,
},
() => {
this.getBSTypeMonthData(); // 公司设置完成后获取培训类型数据
}
);
} else {
this.getBSTypeMonthData();
}
}
},
});
};
2026-04-22 16:14:55 +08:00
getHomeSESubYearData = () => {
const orgId = storage('lacal').getItem('webOrgId')?.val;
const json = initFilter(orgId);
2026-04-28 16:52:44 +08:00
const currentYear = new Date().getFullYear();
json.Parameter1 = currentYear.toString();
2026-04-22 16:14:55 +08:00
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'BI/BIHeadSE/HomeSESubYear',
onComplete: (ret) => {
if (ret && !this.isUnmounted) {
const listNAME = ret.map((item) => item.CName);
2026-04-28 16:52:44 +08:00
const MonthPersonCount = ret.map((item) => item.PCount);
const MonthRecordCount = ret.map((item) => item.RCount);
2026-04-22 16:14:55 +08:00
const YearCount = ret.map((item) => item.PCount);
this.setState({
trainingSubData: {
listNAME: listNAME,
YearCount: YearCount,
MonthRecordCount: MonthRecordCount,
MonthPersonCount: MonthPersonCount,
},
});
}
},
});
};
2026-04-28 16:52:44 +08:00
handleTrainingMonthChange = (month) => {
this.setState({ selectedTrainingMonth: month }, () => {
2026-04-22 16:14:55 +08:00
this.getHomeSESubYearMonthData();
});
};
2026-04-28 16:52:44 +08:00
handleTrainingCompanyChange = (company) => {
this.setState({ selectedTrainingCompany: company }, () => {
2026-04-23 11:29:34 +08:00
this.getBSTypeMonthData();
});
};
2026-04-28 16:52:44 +08:00
2026-04-22 16:14:55 +08:00
getHomeSESubYearMonthData = () => {
const orgId = storage('lacal').getItem('webOrgId')?.val;
const json = initFilter(orgId);
2026-04-28 16:52:44 +08:00
const currentYear = new Date().getFullYear();
json.Parameter1 = currentYear.toString();
json.Parameter2 = this.state.selectedTrainingMonth.toString();
2026-04-22 16:14:55 +08:00
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'BI/BIHeadSE/HomeSESubYear',
onComplete: (ret) => {
if (ret && !this.isUnmounted) {
const listNAME = ret.map((item) => item.CName);
2026-04-28 16:52:44 +08:00
const MonthPersonCount = ret.map((item) => item.PCount);
const MonthRecordCount = ret.map((item) => item.RCount);
2026-04-22 16:14:55 +08:00
const YearCount = ret.map((item) => item.PCount);
this.setState({
trainingSubDataMonth: {
listNAME: listNAME,
YearCount: YearCount,
MonthRecordCount: MonthRecordCount,
MonthPersonCount: MonthPersonCount,
},
});
}
},
});
};
2026-04-28 16:52:44 +08:00
2026-04-23 09:13:20 +08:00
getHomeSESubIDCardData = () => {
const orgId = storage('lacal').getItem('webOrgId')?.val;
const json = initFilter(orgId);
const currentDate = new Date();
const year = currentDate.getFullYear();
const month = String(currentDate.getMonth() + 1).padStart(2, '0');
const day = String(currentDate.getDate()).padStart(2, '0');
2026-04-28 16:52:44 +08:00
const currentDateStr = `${year}-${month}-${day}`;
2026-04-23 09:13:20 +08:00
2026-04-28 16:52:44 +08:00
json.Parameter1 = currentDateStr;
2026-04-23 09:13:20 +08:00
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'BI/BIHeadSE/SubCertificateType',
onComplete: (ret) => {
if (ret && !this.isUnmounted) {
this.setState({
trainingSubIDCard: ret,
});
}
},
});
};
2026-04-28 16:52:44 +08:00
2026-04-23 09:13:20 +08:00
getBSTypeMonthData = () => {
const orgId = storage('lacal').getItem('webOrgId')?.val;
const json = initFilter(orgId);
const currentDate = new Date();
const year = currentDate.getFullYear();
const month = String(currentDate.getMonth() + 1).padStart(2, '0');
const day = String(currentDate.getDate()).padStart(2, '0');
2026-04-28 16:52:44 +08:00
const currentDateStr = `${year}-${month}-${day}`;
2026-04-23 09:13:20 +08:00
2026-04-28 16:52:44 +08:00
json.Parameter1 = currentDateStr;
if (this.state.selectedTrainingCompany) {
json.Parameter2 = this.state.selectedTrainingCompany;
2026-04-23 17:06:40 +08:00
}
2026-04-23 09:13:20 +08:00
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'BI/BIHeadSE/SubTypeMonth',
onComplete: (ret) => {
if (ret && !this.isUnmounted) {
this.setState({
trainingSubBSType: ret,
});
}
},
});
};
2026-04-28 16:52:44 +08:00
// ==================== 隐患治理相关方法 ====================
// 获取隐患治理的公司列表(独立于安全培训)
getHiddenCompanyData = () => {
2026-04-23 11:29:34 +08:00
const orgId = storage('lacal').getItem('webOrgId')?.val;
const json = initFilter(orgId);
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'FM/Organization/OrderPaged',
onComplete: (ret) => {
if (ret && !this.isUnmounted) {
2026-04-28 16:52:44 +08:00
// 默认选中邦泰公司
2026-04-24 11:14:41 +08:00
const defaultCompany = ret.find((company) => company.ID === '00500000-0000-0000-0000-000000000000');
2026-04-23 11:29:34 +08:00
this.setState({
2026-04-28 16:52:44 +08:00
hiddenCompanyData: ret,
2026-04-23 11:29:34 +08:00
});
2026-04-28 16:52:44 +08:00
if (defaultCompany && !this.state.selectedHiddenCompany) {
2026-04-24 11:14:41 +08:00
this.setState({
2026-04-28 16:52:44 +08:00
selectedHiddenCompany: defaultCompany.ID,
2026-04-24 11:14:41 +08:00
});
}
2026-04-28 16:52:44 +08:00
this.getHiddenSubData();
}
},
});
};
// 隐患治理公司筛选变化处理
handleHiddenCompanyChange = (company) => {
2026-04-29 11:11:23 +08:00
this.setState({ selectedHiddenCompany: company }, () => {
this.getHiddenSubData();
});
2026-04-28 16:52:44 +08:00
};
getHiddenSubData = () => {
// 以下是真实的API调用代码如需使用请取消注释
2026-04-29 11:11:23 +08:00
const orgId = storage('lacal').getItem('webOrgId')?.val;
const json = initFilter(orgId);
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'BI/BIKanBanController/HiddenManage',
onComplete: (ret) => {
if (ret && !this.isUnmounted) {
let filteredData = ret;
if (this.state.selectedHiddenCompany) {
const selectedCompanyObj = this.state.hiddenCompanyData?.find(
(company) => company.ID === this.state.selectedHiddenCompany
);
const selectedCompanyName = selectedCompanyObj?.NAME;
if (selectedCompanyName) {
// 筛选 hiddenRanking
filteredData.hiddenRanking = filteredData.hiddenRanking.filter(
(item) => item.companyName === selectedCompanyName
);
}
}
this.setState({
hiddenSubData: filteredData,
});
}
},
});
2026-04-28 16:52:44 +08:00
};
// ==================== 其他页面方法 ====================
getRiskSubData = () => {
2026-04-29 11:11:23 +08:00
const orgId = storage('lacal').getItem('webOrgId')?.val;
const json = initFilter(orgId);
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'BI/BIKanBanController/RiskManage',
onComplete: (ret) => {
if (ret && !this.isUnmounted) {
this.setState({
riskSubData: ret,
});
}
2026-04-28 16:52:44 +08:00
},
});
};
getClassSubData = () => {
2026-04-29 11:11:23 +08:00
const orgId = storage('lacal').getItem('webOrgId')?.val;
const json = initFilter(orgId);
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'BI/BIKanBanController/TeamManage',
onComplete: (ret) => {
if (ret && !this.isUnmounted) {
this.setState({
classSubData: ret,
});
}
},
2026-04-28 16:52:44 +08:00
});
};
getDangerCompanyData = () => {
const orgId = storage('lacal').getItem('webOrgId')?.val;
const json = initFilter(orgId);
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'FM/Organization/OrderPaged',
onComplete: (ret) => {
if (ret && !this.isUnmounted) {
const defaultCompany = ret.find((company) => company.ID === '00500000-0000-0000-0000-000000000000');
this.setState({
dangerCompanyData: ret,
});
if (defaultCompany && !this.state.selectedDangerCompany) {
this.setState(
{
selectedDangerCompany: defaultCompany.ID,
},
() => {
this.getDangerSubData();
}
);
} else {
this.getDangerSubData();
}
2026-04-23 11:29:34 +08:00
}
},
});
};
2026-01-19 08:56:29 +08:00
2026-04-28 16:52:44 +08:00
handleDangerCompanyChange = (company) => {
this.setState({ selectedDangerCompany: company }, () => {
this.getDangerSubData();
});
};
getDangerSubData = () => {
2026-04-29 11:11:23 +08:00
const orgId = storage('lacal').getItem('webOrgId')?.val;
const json = initFilter(orgId);
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'BI/BIKanBanController/JobManage',
onComplete: (ret) => {
if (ret && !this.isUnmounted) {
let filteredData = ret;
if (this.state.selectedDangerCompany) {
const selectedCompanyObj = this.state.dangerCompanyData?.find(
(company) => company.ID === this.state.selectedDangerCompany
);
const selectedCompanyName = selectedCompanyObj?.NAME;
if (selectedCompanyName) {
filteredData = filteredData.filter((item) => item.companyName === selectedCompanyName);
}
}
2026-04-28 16:52:44 +08:00
2026-04-29 11:11:23 +08:00
this.setState({
dangerSubData: filteredData,
});
}
},
2026-04-28 16:52:44 +08:00
});
};
renderOtherTabContent = () => {
2026-04-23 11:29:34 +08:00
const {
activeTab,
trainingSubData,
trainingSubBSType,
2026-04-28 16:52:44 +08:00
trainingCompanyData,
trainingSubDataMonth,
selectedTrainingMonth,
selectedTrainingCompany,
2026-04-23 17:06:40 +08:00
trainingSubIDCard,
2026-04-28 16:52:44 +08:00
riskSubData,
classSubData,
hiddenSubData,
hiddenCompanyData,
selectedHiddenCompany,
2026-04-23 11:29:34 +08:00
} = this.state;
2026-04-28 16:52:44 +08:00
2026-04-22 16:14:55 +08:00
if (activeTab === '安全培训') {
return (
<TrainingContent
trainingSubData={trainingSubData}
2026-04-23 11:29:34 +08:00
trainingSubBSType={trainingSubBSType}
2026-04-28 16:52:44 +08:00
companyData={trainingCompanyData}
2026-04-22 16:14:55 +08:00
trainingSubDataMonth={trainingSubDataMonth}
2026-04-28 16:52:44 +08:00
selectedMonth={selectedTrainingMonth}
selectedCompany={selectedTrainingCompany}
onMonthChange={this.handleTrainingMonthChange}
onCompanyChange={this.handleTrainingCompanyChange}
2026-04-23 17:06:40 +08:00
trainingSubIDCard={trainingSubIDCard}
2026-04-22 16:14:55 +08:00
/>
);
}
2026-04-28 16:52:44 +08:00
if (activeTab === '风险管控') {
return <RiskControl riskSubData={riskSubData} />;
}
if (activeTab === '隐患治理') {
return (
<HiddenSolve
hiddenSubData={hiddenSubData}
companyData={hiddenCompanyData}
selectedCompany={selectedHiddenCompany}
onCompanyChange={this.handleHiddenCompanyChange}
/>
);
}
if (activeTab === '班组建设') {
return <ClassBuild classSubData={classSubData} />;
}
if (activeTab === '危险作业') {
return (
<DangerJob
dangerSubData={this.state.dangerSubData}
companyData={this.state.dangerCompanyData}
selectedCompany={this.state.selectedDangerCompany}
onCompanyChange={this.handleDangerCompanyChange}
/>
);
}
return (
<div className={styles.otherTabContent}>
<div style={{ textAlign: 'center', color: '#fff' }}>
<div style={{ fontSize: '32px', fontWeight: 'bold', marginBottom: '20px' }}>{activeTab} 页面</div>
<div style={{ fontSize: '18px', opacity: 0.8 }}>这里是 {activeTab} 的内容展示区域</div>
<div style={{ marginTop: '30px', fontSize: '16px', opacity: 0.6 }}>请根据实际需求替换此内容</div>
</div>
</div>
);
2026-01-19 08:56:29 +08:00
};
render() {
const width = 1920,
2026-01-26 09:12:04 +08:00
height = 1080;
const {
scale,
activeTab,
riskTypeRate,
riskTotal,
2026-04-28 16:52:44 +08:00
hiddenSummary,
jobTodayQty,
taskTop3,
mediaList,
announcementList,
currentMediaIndex,
2026-04-22 16:14:55 +08:00
trainingData,
2026-04-28 16:52:44 +08:00
announcementModalVisible,
currentAnnouncement,
announcementDetailLoading,
} = this.state;
2026-01-19 08:56:29 +08:00
return (
<div className={styles.box} style={{ transform: `scale(${scale}) translate(-50%, -50%)`, width, height }}>
<div className={styles.blackBack}>
<div className={styles.backImage}>
{/* 头部 */}
<div className={styles.header}>
<Row style={{ width: '100%', height: '100%', display: 'flex', alignItems: 'center' }}>
<Col span={9} style={{ display: 'flex', alignItems: 'center' }}>
<img src={logo} alt="logo" style={{ height: '50px', marginLeft: '50px' }} />
<div style={{ display: 'flex', marginLeft: 'auto' }}>
{this.state.configBanner.slice(0, 3).map((item, index) => (
2026-01-19 08:56:29 +08:00
<div
key={index}
className={`${styles.configBanners} ${activeTab === item ? styles.active : ''}`}
onClick={() => this.handleTabClick(item)}
2026-01-19 08:56:29 +08:00
>
{item}
2026-01-19 08:56:29 +08:00
</div>
))}
2026-01-19 08:56:29 +08:00
</div>
</Col>
<Col span={6} style={{ display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
<div className={styles.headerText}>金源公司安全生产管控平台</div>
2026-01-19 08:56:29 +08:00
</Col>
<Col span={9} style={{ display: 'flex', alignItems: 'center', justifyContent: 'flex-end' }}>
<div style={{ display: 'flex' }}>
{this.state.configBanner.slice(3, 6).map((item, index) => (
2026-01-19 08:56:29 +08:00
<div
key={index}
className={`${styles.configBanners} ${activeTab === item ? styles.active : ''}`}
onClick={() => this.handleTabClick(item)}
2026-01-19 08:56:29 +08:00
>
{item}
2026-01-19 08:56:29 +08:00
</div>
))}
2026-01-19 08:56:29 +08:00
</div>
<Icon
type={document.fullscreenElement ? 'fullscreen-exit' : 'fullscreen'}
style={{ fontSize: '26px', color: '#000', cursor: 'pointer', margin: '0 20px' }}
onClick={this.toggleFullscreen}
/>
<div style={{ color: '#000', fontSize: '14px', marginRight: '20px', fontWeight: 'bold' }}>
{this.state.nowDate}
2026-01-19 08:56:29 +08:00
</div>
</Col>
</Row>
</div>
{/* 内容区域 */}
{activeTab === '首页' ? (
<HomeContent
riskTypeRate={riskTypeRate}
riskTotal={riskTotal}
2026-04-28 16:52:44 +08:00
hiddenSummary={hiddenSummary}
jobTodayQty={jobTodayQty}
taskTop3={taskTop3}
mediaList={mediaList}
announcementList={announcementList}
currentMediaIndex={currentMediaIndex}
onCarouselChange={this.handleCarouselChange}
onDotClick={this.handleDotClick}
2026-04-28 16:52:44 +08:00
trainingData={trainingData}
onAnnouncementClick={this.handleAnnouncementClick}
announcementModalVisible={announcementModalVisible}
currentAnnouncement={currentAnnouncement}
announcementDetailLoading={announcementDetailLoading}
onAnnouncementModalClose={this.handleAnnouncementModalClose}
/>
) : (
this.renderOtherTabContent()
)}
2026-01-19 08:56:29 +08:00
</div>
</div>
</div>
2026-01-19 08:56:29 +08:00
);
}
}
export default withRouter(connect(({ login }) => ({ login }))(FullScreen));