可视化大屏

This commit is contained in:
yunkexin 2026-04-29 11:11:23 +08:00
parent e3faa7549b
commit 9ed7b3b941
3 changed files with 179 additions and 369 deletions

View File

@ -76,7 +76,7 @@ class HiddenSolve extends React.Component {
if (hiddenList.length === 0) { if (hiddenList.length === 0) {
this.echartsInstances.hiddenBarChart.setOption({ this.echartsInstances.hiddenBarChart.setOption({
title: { title: {
text: '各公司隐患统计', text: '各公司累计隐患统计数据',
x: 'center', x: 'center',
y: '25%', y: '25%',
textStyle: { fontSize: 16, color: '#999' }, textStyle: { fontSize: 16, color: '#999' },
@ -101,7 +101,7 @@ class HiddenSolve extends React.Component {
const option = { const option = {
title: { title: {
text: '各公司隐患统计', text: '各公司累计隐患统计数据',
x: 'center', x: 'center',
y: '5%', y: '5%',
textStyle: { fontSize: 16, color: '#000', fontWeight: 'bold' }, textStyle: { fontSize: 16, color: '#000', fontWeight: 'bold' },
@ -227,7 +227,7 @@ class HiddenSolve extends React.Component {
if (hiddenRectifyList.length === 0) { if (hiddenRectifyList.length === 0) {
this.echartsInstances.hiddenRectifyChart.setOption({ this.echartsInstances.hiddenRectifyChart.setOption({
title: { title: {
text: '各公司隐患整改情况', text: '当月各公司隐患统计数据',
x: 'center', x: 'center',
y: '25%', y: '25%',
textStyle: { fontSize: 16, color: '#999' }, textStyle: { fontSize: 16, color: '#999' },
@ -254,7 +254,7 @@ class HiddenSolve extends React.Component {
const option = { const option = {
title: { title: {
text: '各公司隐患整改情况', text: '当月各公司隐患统计数据',
x: 'center', x: 'center',
y: '5%', y: '5%',
textStyle: { fontSize: 16, color: '#000', fontWeight: 'bold' }, textStyle: { fontSize: 16, color: '#000', fontWeight: 'bold' },
@ -271,7 +271,7 @@ class HiddenSolve extends React.Component {
}, },
}, },
legend: { legend: {
data: ['重大隐患总数', '重大隐患已整改', '一般隐患总数', '一般隐患已整改'], data: ['重大隐患量', '重大隐患未整改量', '一般隐患量', '一般隐患未整改量'],
orient: 'vertical', orient: 'vertical',
right: '3%', right: '3%',
top: '5%', top: '5%',
@ -318,7 +318,7 @@ class HiddenSolve extends React.Component {
], ],
series: [ series: [
{ {
name: '重大隐患总数', name: '重大隐患',
type: 'bar', type: 'bar',
data: majorTotal, data: majorTotal,
itemStyle: { itemStyle: {
@ -335,7 +335,7 @@ class HiddenSolve extends React.Component {
barWidth: '20%', barWidth: '20%',
}, },
{ {
name: '重大隐患已整改', name: '重大隐患未整改量',
type: 'bar', type: 'bar',
data: majorRectified, data: majorRectified,
itemStyle: { itemStyle: {
@ -352,7 +352,7 @@ class HiddenSolve extends React.Component {
barWidth: '20%', barWidth: '20%',
}, },
{ {
name: '一般隐患总数', name: '一般隐患',
type: 'bar', type: 'bar',
data: generalTotal, data: generalTotal,
itemStyle: { itemStyle: {
@ -369,7 +369,7 @@ class HiddenSolve extends React.Component {
barWidth: '20%', barWidth: '20%',
}, },
{ {
name: '一般隐患已整改', name: '一般隐患未整改量',
type: 'bar', type: 'bar',
data: generalRectified, data: generalRectified,
itemStyle: { itemStyle: {
@ -403,13 +403,13 @@ class HiddenSolve extends React.Component {
hiddenRanking = hiddenRanking.filter((item) => item.companyName === selectedCompanyName); hiddenRanking = hiddenRanking.filter((item) => item.companyName === selectedCompanyName);
} }
if (hiddenRanking.length === 0) { // if (hiddenRanking.length === 0) {
return ( // return (
<div style={{ textAlign: 'center', padding: '50px', color: '#999' }}> // <div style={{ textAlign: 'center', padding: '50px', color: '#999' }}>
{selectedCompanyName ? `${selectedCompanyName} 暂无隐患排名数据` : '暂无隐患排名数据'} // {selectedCompanyName ? `${selectedCompanyName} 暂无隐患排名数据` : '暂无隐患排名数据'}
</div> // </div>
); // );
} // }
return ( return (
<div style={{ height: '100%', display: 'flex', flexDirection: 'column' }}> <div style={{ height: '100%', display: 'flex', flexDirection: 'column' }}>
@ -422,9 +422,8 @@ class HiddenSolve extends React.Component {
color: '#000', color: '#000',
}} }}
> >
隐患排名 隐患次数排名列表
</div> </div>
{/* 公司筛选器 - 与 TrainingContent 样式保持一致 */}
<div style={{ textAlign: 'right', padding: '10px 20px' }}> <div style={{ textAlign: 'right', padding: '10px 20px' }}>
<span style={{ marginRight: '8px', fontSize: '14px', color: '#000' }}>选择公司</span> <span style={{ marginRight: '8px', fontSize: '14px', color: '#000' }}>选择公司</span>
<Select <Select
@ -437,12 +436,13 @@ class HiddenSolve extends React.Component {
{this.getCompanyOptions()} {this.getCompanyOptions()}
</Select> </Select>
</div> </div>
{/* 公司筛选器 - 与 TrainingContent 样式保持一致 */}
<div style={{ flex: 1, overflow: 'auto', padding: '0 20px 20px 20px' }}> <div style={{ flex: 1, overflow: 'auto', padding: '0 20px 20px 20px' }}>
<table style={{ width: '100%', borderCollapse: 'collapse' }}> <table style={{ width: '100%', borderCollapse: 'collapse' }}>
<thead> <thead>
<tr style={{ backgroundColor: '#f5f5f5', borderBottom: '2px solid #e8e8e8' }}> <tr style={{ backgroundColor: '#f5f5f5', borderBottom: '2px solid #e8e8e8' }}>
<th style={{ padding: '12px 8px', textAlign: 'center', fontWeight: 'bold', color: '#000' }}>排名</th> <th style={{ padding: '12px 8px', textAlign: 'center', fontWeight: 'bold', color: '#000' }}>序号</th>
<th style={{ padding: '12px 8px', textAlign: 'center', fontWeight: 'bold', color: '#000' }}>公司</th>
<th style={{ padding: '12px 8px', textAlign: 'center', fontWeight: 'bold', color: '#000' }}> <th style={{ padding: '12px 8px', textAlign: 'center', fontWeight: 'bold', color: '#000' }}>
隐患名称 隐患名称
</th> </th>
@ -450,39 +450,36 @@ class HiddenSolve extends React.Component {
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{hiddenRanking.map((item, index) => ( {hiddenRanking.length > 0 ? (
<tr hiddenRanking.map((item, index) => (
key={index} <tr
style={{ key={index}
borderBottom: '1px solid #e8e8e8', style={{
backgroundColor: index % 2 === 0 ? '#fafafa' : '#fff', borderBottom: '1px solid #e8e8e8',
}} backgroundColor: index % 2 === 0 ? '#fafafa' : '#fff',
> }}
<td style={{ padding: '10px 8px', textAlign: 'center', color: '#000' }}> >
<span <td style={{ padding: '10px 8px', textAlign: 'center', color: '#000' }}>
style={{ <span
display: 'inline-block', style={{
width: '24px', padding: '10px 8px',
height: '24px', textAlign: 'center',
lineHeight: '24px', color: '#000',
borderRadius: '12px', fontWeight: 'bold',
backgroundColor: index < 3 ? '#ffa500' : '#ccc', }}
color: '#fff', >
fontWeight: 'bold', {index + 1}
}} </span>
> </td>
{index + 1} <td style={{ padding: '10px 8px', textAlign: 'center', color: '#000' }}>{item.hiddenName}</td>
</span> <td style={{ padding: '10px 8px', textAlign: 'center', color: '#000' }}>
</td> <span style={{ color: '#4285F4', fontWeight: 'bold' }}>{item.qty}</span>
<td style={{ padding: '10px 8px', textAlign: 'center', color: '#000', fontWeight: 'bold' }}> </td>
{item.companyName} </tr>
</td> ))
<td style={{ padding: '10px 8px', textAlign: 'center', color: '#000' }}>{item.hiddenName}</td> ) : (
<td style={{ padding: '10px 8px', textAlign: 'center', color: '#000' }}> <div style={{ textAlign: 'center', padding: '50px', color: '#999' }}>{'暂无隐患排名数据'}</div>
<span style={{ color: '#4285F4', fontWeight: 'bold' }}>{item.qty}</span> )}
</td>
</tr>
))}
</tbody> </tbody>
</table> </table>
</div> </div>

View File

@ -817,7 +817,6 @@ class HomeContent extends React.Component {
muted: playSet.V_ISSILENT !== undefined ? playSet.V_ISSILENT : true, muted: playSet.V_ISSILENT !== undefined ? playSet.V_ISSILENT : true,
controls: playSet.V_ISSHOWCONTROL !== undefined ? playSet.V_ISSHOWCONTROL : false, controls: playSet.V_ISSHOWCONTROL !== undefined ? playSet.V_ISSHOWCONTROL : false,
}; };
console.log('视频配置:', videoConfig);
const isAutoplay = playSet.IMG_ISRE !== undefined ? playSet.IMG_ISRE : true; const isAutoplay = playSet.IMG_ISRE !== undefined ? playSet.IMG_ISRE : true;
const autoplaySpeed = playSet.IMG_TIMESPAN ? playSet.IMG_TIMESPAN * 1000 : 5000; const autoplaySpeed = playSet.IMG_TIMESPAN ? playSet.IMG_TIMESPAN * 1000 : 5000;

View File

@ -29,11 +29,7 @@ class FullScreen extends React.Component {
this.state = { this.state = {
nowDate: '', nowDate: '',
riskTypeRate: [], riskTypeRate: [],
riskTotal: [ riskTotal: [],
{ name: '年度重大隐患数', value: 1 },
{ name: '年度一般隐患数量', value: 89 },
{ name: '未整改隐患数量', value: 18 },
],
jobTodayQty: [], jobTodayQty: [],
hiddenSummary: [], hiddenSummary: [],
taskTop3: [], taskTop3: [],
@ -90,6 +86,7 @@ class FullScreen extends React.Component {
currentAnnouncement: null, currentAnnouncement: null,
}; };
this.isUnmounted = false; this.isUnmounted = false;
this.dataTimer = null; // 新增:用于数据定时请求
} }
setScale = debounce(() => { setScale = debounce(() => {
@ -104,15 +101,56 @@ class FullScreen extends React.Component {
document.exitFullscreen?.(); document.exitFullscreen?.();
} }
}; };
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毫秒
};
componentDidMount() { componentDidMount() {
this.isUnmounted = false; this.isUnmounted = false;
window.addEventListener('resize', this.setScale); window.addEventListener('resize', this.setScale);
this.getHomeDataArray(); this.getHomeDataArray();
this.getYearPXData(); this.getYearPXData();
this.loadMediaFiles(); // 启动定时刷新
this.getAnnouncementData(); this.startDataRefreshTimer();
this.timer = setInterval(() => { this.timer = setInterval(() => {
if (!this.isUnmounted) this.setState({ nowDate: this.getDate() }); if (!this.isUnmounted) this.setState({ nowDate: this.getDate() });
}, 1000); }, 1000);
@ -173,27 +211,6 @@ class FullScreen extends React.Component {
}); });
}; };
getAnnouncementData = () => {
this.setState({
announcementList: [
{ ID: 1, title: '关于2024年安全生产月活动的通知', publishTime: '2024-06-01', url: '' },
{ ID: 2, title: '公司第三季度安全培训安排', publishTime: '2024-05-28', url: '' },
{ ID: 3, title: '关于开展安全隐患排查整治工作的通知', publishTime: '2024-05-20', url: '' },
{ ID: 4, title: '安全生产标准化建设阶段性总结', publishTime: '2024-05-15', url: '' },
{ ID: 5, title: '关于表彰2024年第一季度安全生产先进单位的决定', publishTime: '2024-05-10', url: '' },
],
});
};
loadMediaFiles = () => {
this.setState({
mediaList: [
{ type: 'image', url: 'http://10.2.7.18:28028//WZ_Images/static/smyzw@2x.png' },
{ type: 'video', url: 'http://10.2.7.18:28028/WZ_Images/Img_JFSC/welcom/1.mp4' },
],
});
};
handleCarouselChange = (current) => { handleCarouselChange = (current) => {
this.setState({ currentMediaIndex: current }); this.setState({ currentMediaIndex: current });
}; };
@ -205,9 +222,8 @@ class FullScreen extends React.Component {
handleTabClick = (name) => { handleTabClick = (name) => {
this.setState({ activeTab: name }); this.setState({ activeTab: name });
if (name === '首页') { if (name === '首页') {
this.getHomeDataArray();
this.getYearPXData(); this.getYearPXData();
this.loadMediaFiles();
this.getAnnouncementData();
} }
// 安全培训 - 参考原有逻辑 // 安全培训 - 参考原有逻辑
if (name === '安全培训') { if (name === '安全培训') {
@ -242,6 +258,9 @@ class FullScreen extends React.Component {
this.isUnmounted = true; this.isUnmounted = true;
window.removeEventListener('resize', this.setScale); window.removeEventListener('resize', this.setScale);
if (this.timer) clearInterval(this.timer); if (this.timer) clearInterval(this.timer);
// 清除数据刷新定时器
if (this.dataTimer) clearInterval(this.dataTimer);
document.removeEventListener('fullscreenchange', this.handleFullscreenChange); document.removeEventListener('fullscreenchange', this.handleFullscreenChange);
} }
@ -260,7 +279,6 @@ class FullScreen extends React.Component {
}; };
getHomeDataArray = () => { getHomeDataArray = () => {
console.log('获取首页数据');
const orgId = storage('lacal').getItem('webOrgId')?.val; const orgId = storage('lacal').getItem('webOrgId')?.val;
const json = initFilter(orgId); const json = initFilter(orgId);
this.props.dispatch({ this.props.dispatch({
@ -489,244 +507,75 @@ class FullScreen extends React.Component {
// 隐患治理公司筛选变化处理 // 隐患治理公司筛选变化处理
handleHiddenCompanyChange = (company) => { handleHiddenCompanyChange = (company) => {
this.setState({ selectedHiddenCompany: company }); this.setState({ selectedHiddenCompany: company }, () => {
this.getHiddenSubData(); this.getHiddenSubData();
});
}; };
getHiddenSubData = () => { getHiddenSubData = () => {
let filteredData = {
hiddenList: [
{
companyName: '邦泰',
majorCount: 52,
generalCount: 128,
},
{
companyName: '宏源建设',
majorCount: 18,
generalCount: 94,
},
{
companyName: '中城建工',
majorCount: 31,
generalCount: 205,
},
],
hiddenRanking: [
// 邦泰 5 个
{
companyName: '邦泰',
hiddenName: '安全防护缺失',
qty: 42,
},
{
companyName: '邦泰',
hiddenName: '临时用电不规范',
qty: 38,
},
{
companyName: '邦泰',
hiddenName: '机械设备故障',
qty: 27,
},
{
companyName: '邦泰',
hiddenName: '特种设备未年检',
qty: 15,
},
{
companyName: '邦泰',
hiddenName: '消防器材过期',
qty: 12,
},
// 路源 6 个
{
companyName: '路源',
hiddenName: '消防通道堵塞',
qty: 29,
},
{
companyName: '路源',
hiddenName: '电气线路老化',
qty: 18,
},
{
companyName: '路源',
hiddenName: '应急照明故障',
qty: 8,
},
{
companyName: '路源',
hiddenName: '安全标识缺失',
qty: 7,
},
{
companyName: '路源',
hiddenName: '脚手架搭设不规范',
qty: 6,
},
{
companyName: '路源',
hiddenName: '劳保用品佩戴不规范',
qty: 5,
},
// 天山 7 个
{
companyName: '天山',
hiddenName: '脚手架搭设违规',
qty: 36,
},
{
companyName: '天山',
hiddenName: '高空抛物隐患',
qty: 22,
},
{
companyName: '天山',
hiddenName: '动火作业监护缺失',
qty: 14,
},
{
companyName: '天山',
hiddenName: '受限空间未审批',
qty: 11,
},
{
companyName: '天山',
hiddenName: '起重吊装违规操作',
qty: 9,
},
{
companyName: '天山',
hiddenName: '临时用电私拉乱接',
qty: 7,
},
{
companyName: '天山',
hiddenName: '高处作业安全带未挂',
qty: 5,
},
],
hiddenRectifyList: [
{
companyName: '邦泰',
majorCount: 52,
majorCountNo: 12,
generalCount: 128,
generalCountNo: 31,
},
{
companyName: '宏源建设',
majorCount: 18,
majorCountNo: 5,
generalCount: 94,
generalCountNo: 22,
},
{
companyName: '中城建工',
majorCount: 31,
majorCountNo: 9,
generalCount: 205,
generalCountNo: 47,
},
],
};
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,
});
// 以下是真实的API调用代码如需使用请取消注释 // 以下是真实的API调用代码如需使用请取消注释
// const orgId = storage('lacal').getItem('webOrgId')?.val; const orgId = storage('lacal').getItem('webOrgId')?.val;
// const json = initFilter(orgId); const json = initFilter(orgId);
// this.props.dispatch({ this.props.dispatch({
// type: 'app/getDataByPost', type: 'app/getDataByPost',
// payload: json, payload: json,
// url: 'BI/BIKanBanController/HiddenManage', url: 'BI/BIKanBanController/HiddenManage',
// onComplete: (ret) => { onComplete: (ret) => {
// if (ret && !this.isUnmounted) { if (ret && !this.isUnmounted) {
// this.setState({ let filteredData = ret;
// hiddenSubData: ret.Data, 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,
});
}
},
});
}; };
// ==================== 其他页面方法 ==================== // ==================== 其他页面方法 ====================
getRiskSubData = () => { getRiskSubData = () => {
this.setState({ const orgId = storage('lacal').getItem('webOrgId')?.val;
riskSubData: { const json = initFilter(orgId);
riskList: [ this.props.dispatch({
{ type: 'app/getDataByPost',
companyName: '邦泰', payload: json,
majorCount: 2, url: 'BI/BIKanBanController/RiskManage',
largerCount: 5, onComplete: (ret) => {
generalCount: 12, if (ret && !this.isUnmounted) {
lowCount: 33, this.setState({
totalCount: 52, riskSubData: ret,
}, });
{ }
companyName: '鸿源建设',
majorCount: 1,
largerCount: 3,
generalCount: 8,
lowCount: 20,
totalCount: 32,
},
{
companyName: '华安工程',
majorCount: 0,
largerCount: 2,
generalCount: 6,
lowCount: 15,
totalCount: 23,
},
{
companyName: '天达科技',
majorCount: 3,
largerCount: 4,
generalCount: 10,
lowCount: 18,
totalCount: 35,
},
],
riskTypeList: [
{ typeName: '动火作业', qty: 18 },
{ typeName: '高处作业', qty: 24 },
{ typeName: '临时用电', qty: 12 },
{ typeName: '起重吊装', qty: 9 },
{ typeName: '受限空间', qty: 7 },
],
}, },
}); });
}; };
getClassSubData = () => { getClassSubData = () => {
this.setState({ const orgId = storage('lacal').getItem('webOrgId')?.val;
classSubData: [ const json = initFilter(orgId);
{ companyName: '邦泰', rate: '52%' }, this.props.dispatch({
{ companyName: '路源', rate: '52%' }, type: 'app/getDataByPost',
{ companyName: '安达', rate: '78%' }, payload: json,
{ companyName: '迅捷', rate: '63%' }, url: 'BI/BIKanBanController/TeamManage',
{ companyName: '恒通', rate: '45%' }, onComplete: (ret) => {
{ companyName: '华威', rate: '91%' }, if (ret && !this.isUnmounted) {
{ companyName: '鼎盛', rate: '37%' }, this.setState({
], classSubData: ret,
});
}
},
}); });
}; };
@ -767,65 +616,30 @@ class FullScreen extends React.Component {
}; };
getDangerSubData = () => { getDangerSubData = () => {
let filteredData = [ const orgId = storage('lacal').getItem('webOrgId')?.val;
{ const json = initFilter(orgId);
companyName: '邦泰', this.props.dispatch({
startDate: '2025-01-01 08:30:00', type: 'app/getDataByPost',
endDate: '2025-01-01 17:00:00', payload: json,
jobName: '爆破作业', url: 'BI/BIKanBanController/JobManage',
areaName: '矿山采场', onComplete: (ret) => {
place: '东采区+320平台', if (ret && !this.isUnmounted) {
users: '张三,李四,王五', let filteredData = ret;
monitor: '赵正三', if (this.state.selectedDangerCompany) {
approveUsers: '刘安全,陈技术', const selectedCompanyObj = this.state.dangerCompanyData?.find(
}, (company) => company.ID === this.state.selectedDangerCompany
{ );
companyName: '邦泰', const selectedCompanyName = selectedCompanyObj?.NAME;
startDate: '2025-01-03 09:00:00', if (selectedCompanyName) {
endDate: '2025-01-03 18:00:00', filteredData = filteredData.filter((item) => item.companyName === selectedCompanyName);
jobName: '高处作业', }
areaName: '装置区', }
place: '脱硫塔顶部',
users: '王高空,李安全带,张监护',
monitor: '周正三',
approveUsers: '吴经理,郑安全',
},
{
companyName: '天山',
startDate: '2025-01-02 08:00:00',
endDate: '2025-01-02 17:30:00',
jobName: '高处作业',
areaName: '水泥生产线',
place: '预热器塔架',
users: '检修班组',
monitor: '天山-赵正',
approveUsers: '天山-刘经理,天山-王安全',
},
{
companyName: '天山',
startDate: '2025-01-04 09:30:00',
endDate: '2025-01-04 18:00:00',
jobName: '有限空间作业',
areaName: '均化库',
place: '库内底部',
users: '清库作业组',
monitor: '天山-钱正',
approveUsers: '天山-孙厂长,天山-李安全',
},
];
if (this.state.selectedDangerCompany) { this.setState({
const selectedCompanyObj = this.state.dangerCompanyData?.find( dangerSubData: filteredData,
(company) => company.ID === this.state.selectedDangerCompany });
); }
const selectedCompanyName = selectedCompanyObj?.NAME; },
if (selectedCompanyName) {
filteredData = filteredData.filter((item) => item.companyName === selectedCompanyName);
}
}
this.setState({
dangerSubData: filteredData,
}); });
}; };