import React, { useState, useEffect, useRef, Component } from "react";
import { connect } from "dva";
import storage from "../utils/storage";
import IconFont from "../utils/iconFont";
import {
initFilter,
addRuleAndGroups,
guid,
extendInclude,
extendRule,
extend,
extendOrder,
} from "../utils/common";
import "./home.less";
// 组件库
import {
Table,
Modal,
Row,
Col,
Icon,
Button,
Input,
DatePicker,
Form,
Select,
notification,
Popconfirm,
Divider,
Space,
Descriptions,
message,
Carousel,
} from "antd";
import FormPage from "../components/FormPage";
import backlog from "../assets/home/backlog.png";
import backlog_i from "../assets/home/backlog_icon.png";
import styles from "./dashboard.css";
import "slick-carousel/slick/slick.css";
import "slick-carousel/slick/slick-theme.css";
import moment from "moment";
import flow from "../assets/home/flow.png";
import flow_i from "../assets/home/remind_icon.png";
import finished from "../assets/home/finished.png";
import finished_i from "../assets/home/finished_icon.png";
import remind from "../assets/home/remind.png";
import remind_i from "../assets/home/red-err.png";
import echarts from "echarts";
import config from "../config";
import Toggle from "./toggle";
import RisiLevel from "../components/MainPage/RiskLevel";
import ClassCompletion from "../components/MainPage/ClassCompletion";
import WorkTicket from "../components/MainPage/WorkTicket";
import MonthDanger from "../components/MainPage/MonthDanger";
import SafeCheck from "../components/MainPage/SafeCheck";
const Option = Select.Option;
const RangePicker = DatePicker.RangePicker;
const formItemLayout = {
labelCol: { span: 6 },
wrapperCol: { span: 14 },
};
const openNotification = (placement) => {
notification.info({
duration: null,
top: 43,
message: `签名照上传提示:`,
description: "您还没上传自己的签名照片,请在我的资料中尽快上传您的签名照!",
placement,
});
};
const openNotificationMobile = (placement) => {
notification.info({
duration: 20,
message: `友情提示:`,
description: "您当前用的是手机在访问,为有更好体验,建议使用电脑访问!",
placement,
});
};
const contentStyle = {
height: "400px",
lineHeight: "400px",
textAlign: "center",
background: "#364d79",
};
class GroupHome extends React.Component {
_isMounted = false; // 标记组件是否已挂载
constructor(props) {
super(props);
this.state = {
noticeData: [], // 公告列表数据
currentNoticePage: 1, // 当前公告页码
noticePageSize: 4, // 每页公告数量(与图片一致,默认显示4条)
totalNoticeCount: 0, // 公告总数量
activeNoticeTab: "all", // 活跃公告标签(全部/集团发布/公司发布,参考图片)
isNaN: false,
scoreVisible: false,
scoreTotalVisible: false,
scoreNaVisible: false,
standardScore: [],
standardScoreTemp: [],
standardScoreNaN: [],
visible: false,
safetySloganOne: "",
animationDuration: 20,
sliderColor: '#de4e58',
sliderSize: '24px',
safetySloganTwo: "",
noticeTitle: "",
tmpData: {},
tableKey: "1",
pagination: {},
retData: [],
chartData: [],
displayStr: '',
displayNum: 16,
columnData: [],
columnFields: [],
delayData: [],
Workbench: {
StockDetail: [],
ApprovalCount: 0,
InComingCount: 0,
OutingCount: 0,
ProductingCount: 0,
}, //工作台模型
showLoading: false, //待办事项数据刷新提示
searchVisible: false, //弹窗显示
searchTodayVisible: false, //弹窗显示
columns: [],
searchColumns: [],
scoreColumns: [],
scoreTotalColumns: [],
tableData: [
{
//工作台四个展示模块
key: "1",
bgImg: backlog,
title:
window.navigator.userAgent.indexOf("Windows") < 1
? "待办"
: "待办事项",
total: "0",
iconImg: backlog_i,
iconDisplay: "block",
},
{
key: "4",
bgImg: remind,
title:
window.navigator.userAgent.indexOf("Windows") < 1
? "超时"
: "待办超时",
total: "0",
iconImg: remind_i,
iconDisplay: "none",
},
{
key: "2",
bgImg: flow,
title:
window.navigator.userAgent.indexOf("Windows") < 1
? "已办"
: "已办事项",
total: "0",
iconImg: flow_i,
iconDisplay: "none",
},
{
key: "3",
bgImg: finished,
title: "今日提醒",
total: "0",
iconImg: finished_i,
iconDisplay: "none",
},
],
visibleTitle: "", //点击title
isSearch: false, // 是否搜索
querySearch: {}, //搜索集合
visibleStartTime: [],
visibleEndTime: [],
currentpageIndex: "1",
departmentName: "",
stardardScoreQty: "0",
riskLevelPage: [],
departmentCompletionData: [],
workTicketData: [],
// 用户层级id
deparmentID: "",
deparmentType: 0,
dangerList: {},
//弹窗显示参数 wyw
detailForm: {
isShow: false,
formCode: "",
title: "",
},
taskSelects: [],
mineType:
localStorage.getItem("currentMineType") === "20"
? "10"
: localStorage.getItem("currentMineType"),
};
// this.enums = [];
this.reportType = "";
this.hiddenTop = 10;
this.jobTop = 10;
this.teamTop = 8;
this.tempTime = moment(new Date()).add(-3, "month").format("YYYY-MM-DD");
this.resizeRef = React.createRef();
}
componentDidMount() {
this._isMounted = true; // 组件挂载时设为true
// if (localStorage.getItem("webOrgId") !== '00300000-0000-0000-0000-000000000000' && currentPath !== '/home') {
// this.props.history.replace('/home')
// return
// }
if (window.navigator.userAgent.indexOf("Windows") < 1) {
window.location.replace(config.guideH5Host);
openNotificationMobile("bottomRight");
return; // 阻止后续代码执行
//alert('手机');
}
this.setState({
columns: [
{
width: "450px",
title: "任务名称",
dataIndex: "NOTICE_TITLE",
key: "NOTICE_TITLE",
render: (text, record) => (
this.showEditModal(
record.SOURCE_DATA_ID,
record.SOURCE_FORMCODE,
record.ID,
record.NOTICE_TITLE
)
}
>
{record.NOTICE_TITLE}
),
},
{
title: "开始时间",
dataIndex: "TASK_STARTDT",
key: "TASK_STARTDT",
},
{
title: "结束时间",
dataIndex: "TASK_ENDDT",
key: "TASK_ENDDT",
},
{
title: "预警状态",
dataIndex: "NOTICE_TYPE",
key: "NOTICE_TYPE",
render: (text, record) => this.ShowState(record),
},
],
scoreNoneColumns: [{
width: "80px",
title: "生产单元",
dataIndex: "Nav_ProductionUnit.NAME",
key: "Nav_ProductionUnit.NAME",
},
{
width: "80px",
title: "一级要素",
dataIndex: "Nav_Primary.NAME",
key: "Nav_Primary.NAME",
},
{
width: "80px",
title: "二级要素",
dataIndex: "Nav_Second.NAME",
key: "Nav_Second.NAME",
},
{
width: "50px",
title: "考评项目",
dataIndex: "EVALUATION_ITEM",
key: "EVALUATION_ITEM",
render: (text, record) => (
{
this.props.app.enums?.PEEvaluationItemEnum.enums[
record.EVALUATION_ITEM
]
}
),
},
{
// width: "450px",
title: "考评内容",
dataIndex: "CONTENTS",
key: "CONTENTS",
},
{
width: "50px",
title: "扣分分值",
dataIndex: "NON_STANDARDIZED_SCORE",
key: "NON_STANDARDIZED_SCORE",
},
{
width: "400px",
title: "不符合说明",
dataIndex: "NON_CONFORMANCE",
key: "NON_CONFORMANCE",
},
{
width: "100px",
title: "评价方法",
dataIndex: "Nav_EvaluationMethod",
key: "Nav_EvaluationMethod",
render: (text, record) => (
{record.Nav_EvaluationMethod &&
record.Nav_EvaluationMethod?.map((item, i) => {
return (
);
})}
),
}],
scoreColumns: [
{
width: "80px",
title: "生产单元",
dataIndex: "Nav_ProductionUnit.NAME",
key: "Nav_ProductionUnit.NAME",
},
{
width: "80px",
title: "一级要素",
dataIndex: "Nav_Primary.NAME",
key: "Nav_Primary.NAME",
},
{
width: "80px",
title: "二级要素",
dataIndex: "Nav_Second.NAME",
key: "Nav_Second.NAME",
},
{
width: "80px",
title: "三级要素",
dataIndex: "Nav_Three.NAME",
key: "Nav_Three.NAME",
},
{
width: "50px",
title: "考评项目",
dataIndex: "EVALUATION_ITEM",
key: "EVALUATION_ITEM",
render: (text, record) => (
{
this.props.app.enums?.PEEvaluationItemEnum.enums[
record.EVALUATION_ITEM
]
}
),
},
{
// width: "500px",
title: "考评内容",
dataIndex: "CONTENTS",
key: "CONTENTS",
},
{
width: "100px",
title: "评分办法",
dataIndex: "DESCRIPTION",
key: "DESCRIPTION",
},
{
width: "50px",
title: "标准分",
dataIndex: "STANDARDIZED_SCORE",
key: "STANDARDIZED_SCORE",
},
{
width: "50px",
title: "实得分",
dataIndex: "RESULT_SCORE",
key: "RESULT_SCORE",
},
{
width: "200px",
title: "不符合说明",
dataIndex: "NON_CONFORMANCE",
key: "NON_CONFORMANCE",
},
,
{
width: "80px",
title: "评价结论",
dataIndex: "EVALUATION_RESULT",
key: "EVALUATION_RESULT",
render: (text, record) => (
{
this.props.app.enums?.PEEvaluationResultEnum.enums[
record.EVALUATION_RESULT
]
}
),
},
{
width: "100px",
title: "评价方法",
dataIndex: "Nav_EvaluationMethod",
key: "Nav_EvaluationMethod",
render: (text, record) => (
{record.Nav_EvaluationMethod &&
record.Nav_EvaluationMethod?.map((item, i) => {
return (
);
})}
),
},
],
scoreTotalColumns: [
{
title: "生产单元",
dataIndex: "Nav_ProductionUnit.NAME",
key: "Nav_ProductionUnit.NAME",
},
{
title: "标准化得分",
dataIndex: "NON_STANDARDIZED_SCORE",
key: "NON_STANDARDIZED_SCORE",
},
{
title: "操作",
dataIndex: "",
key: "",
render: (text, record) => (
{
{" "}
}
),
},
]
})
this.getTeam();
this.getHomeTitle()
//定时器功能,暂时不开启
this.timerID = setInterval(
() => {
if (this._isMounted) {
this.getBaseInfoData(1, this.state.tableKey, 5)
}
},
120000
);
this.showModalSign();
this.getBaseInfoData(1, 1, 5);
this.setMessageData();
this.getNoticeData()
}
componentWillUnmount() {
this._isMounted = false; // 组件卸载时设为false
if (this.timerID) {
clearInterval(this.timerID);
this.timerID = null;
}
}
getNoticeData = () => {
const { currentNoticePage, noticePageSize, activeNoticeTab, mineType } = this.state;
const orgId = storage("lacal").getItem("webOrgId")?.val;
// 构建请求参数(按标签筛选:全部/集团/公司)
let json = initFilter(orgId, mineType);
extendRule(json, "pageNum", 1, currentNoticePage);
extendRule(json, "pageSize", 1, noticePageSize);
if (activeNoticeTab === "group") {
extendRule(json, "sourceType", 1, 1); // 1=集团发布
} else if (activeNoticeTab === "company") {
extendRule(json, "sourceType", 1, 2); // 2=公司发布
}
this.setState({
noticeData: [
{
id: "1",
title: "为表彰先进,树立榜样,激励广大员工积极进取,集团决定开展2023年度优秀员工评选工作...",
source: "集团发布",
date: "08-30",
readStatus: "未读", // 可选:未读/已读
isImportant: true // 是否重要提醒
},
{
id: "2",
title: "根据国家法定节假日安排,结合公司实际情况,现将2023年国庆节放假安排通知如下...",
source: "公司发布",
date: "08-28",
readStatus: "已读",
isImportant: false
},
{
id: "3",
title: "根据国家法定节假日安排,结合公司实际情况,现将2023年国庆节放假安排通知如下...",
source: "公司发布",
date: "08-28",
readStatus: "已读",
isImportant: false
},
{
id: "4",
title: "根据国家法定节假日安排,结合公司实际情况,现将2023年国庆节放假安排通知如下...",
source: "公司发布",
date: "08-28",
readStatus: "已读",
isImportant: false
},
{
id: "5",
title: "根据国家法定节假日安排,结合公司实际情况,现将2023年国庆节放假安排通知如下...",
source: "公司发布",
date: "08-28",
readStatus: "已读",
isImportant: false
},
{
id: "6",
title: "根据国家法定节假日安排,结合公司实际情况,现将2023年国庆节放假安排通知如下...",
source: "公司发布",
date: "08-28",
readStatus: "已读",
isImportant: false
}
// 更多公告...
],
totalNoticeCount: 10 // 公告总数
})
// this.props.dispatch({
// type: "app/getDataByPost",
// url: "PF/Notice/GetNoticeList", // 假设的公告列表接口,需替换为实际接口
// payload: json,
// onlyData: false,
// onComplete: (data) => {
// if (data && data.IsSuccessful) {
// this.setState({
// noticeData: data.Data.list, // 公告列表
// totalNoticeCount: data.Data.total, // 公告总数
// });
// }
// },
// });
};
// 公告页码切换
changeNoticePage = (page) => {
const { totalNoticeCount, noticePageSize } = this.state;
// 边界判断:页码不能小于1,不能大于总页数
if (page < 1 || page > Math.ceil(totalNoticeCount / noticePageSize)) return;
this.setState({ currentNoticePage: page }, () => {
this.getNoticeData(); // 切换页码后重新请求数据
});
};
// 公告标签切换(全部/集团发布/公司发布)
switchNoticeTab = (tabType) => {
this.setState({
activeNoticeTab: tabType,
currentNoticePage: 1, // 切换标签时重置为第1页
}, () => {
this.getNoticeData(); // 切换标签后重新请求数据
});
};
// 查看更多公告(跳转至公告详情页或展开全部)
viewMoreNotice = () => {
// 逻辑1:跳转至独立公告页面(推荐)
this.props.history.push({ pathname: "/noticeList", state: { tab: this.state.activeNoticeTab } });
// 逻辑2:在当前页展开全部公告(备选)
// this.setState({ noticePageSize: this.state.totalNoticeCount });
};
showModalSign = () => {
var userId = storage("lacal").getItem("userid")?.val; //登录后有存储登录信息
var orgId = storage("lacal").getItem("webOrgId")?.val; //登录后有存储登录信息
let json = initFilter(orgId);
this.props.dispatch({
type: "app/getDataByPost",
payload: json,
url: "FM/User/UserSign", //验证是否有签名照
onComplete: (ret) => {
//返回查询结果ret
if (this._isMounted && ret) {
//判断是否有记录
openNotification("topRight");
}
},
});
};
getHomeTitle = () => {
var orgId = storage("lacal").getItem("webOrgId")?.val; //登录后有存储登录信息
let json = initFilter(orgId);
this.props.dispatch({
type: "app/getDataByPost",
payload: json,
url: "PF/HomeTitle/OrderPaged",
onComplete: (ret) => {
if (this._isMounted && ret) {
this.setState({
safetySloganOne: ret[0].TITLE,
// safetySloganOne: "1.安全方针:以人为本、关注健康、依法治企、安全发展。 2.安全理念:一切风险皆可控,一切事故皆可防!3.安全方针:以人为本、关注健康、依法治企、安全发展。4.安全方针:以人为本、关注健康、依法治企、安全发展。5.安全方针:以人为本、关注健康、依法治企、安全发展。 6.安全理念:一切风险皆可控,一切事故皆可防!7.安全方针:以人为本、关注健康、依法治企、安全发展。8.安全方针:以人为本、关注健康、依法治企、安全发展。",
animationDuration: ret[0].SECOND,
sliderColor: ret[0].COCOR,
sliderSize: ret[0].FONTSIZE
});
}
},
});
}
getTeam = () => {
var userId = storage("lacal").getItem("userid")?.val; //登录后有存储登录信息
var orgId = storage("lacal").getItem("webOrgId")?.val; //登录后有存储登录信息
let json = initFilter(orgId);
extendRule(json, "ID", 1, userId);
extendInclude(json, "Nav_Department");
this.props.dispatch({
type: "app/getDataByPost",
payload: json,
url: "FM/User/Get",
onComplete: (ret) => {
if (this._isMounted && ret && ret.Nav_Department) {
this.setState({
departmentName: ret.Nav_Department.NAME,
deparmentType: ret.Nav_Department.DEPARTMENT_TYPE,
deparmentID: ret.DEPARTMENT_ID,
});
this.departmentCompletion();
this.workTicket(); //工作票完成率前十(统计图)
this.riskLevel(); //岗位风险等级(饼图)
this.getStandardScore(ret.MineType); //获取标准化评分
this.hiddenDanger();
}
},
});
};
getStandardScore = (MineType) => {
//标准化得分
var orgId = storage("lacal").getItem("webOrgId")?.val; //登录后有存储登录信息
let json = "";
if (this.state.mineType) {
json = initFilter(orgId, this.state.mineType);
} else {
json = initFilter(orgId, MineType);
}
this.props.dispatch({
type: "app/getDataByPost",
payload: json,
url: "PE/PESafetyEvaluationRecord/HomeGet",
onComplete: (ret) => {
if (ret && ret.Nav_Details) {
this.setState({
standardScore: ret,
stardardScoreQty: (
(ret.RESULT_TOTAL / ret.STAND_TOTAL) *
100
).toFixed(2),
});
}
},
});
};
getEnums = () => {
this.props.dispatch({
type: "app/getDataByGet",
url: "PF/Extend/GetAllEnum",
onComplete: (ret) => {
if (ret) {
this.enums = ret;
}
},
});
};
//班组作业完成率前八
departmentCompletion = () => {
const userInfo = storage("lacal").getItem("webUserInfo").val;
let json = initFilter(
this.props.login.OrgId,
this.state.mineType,
"NUM",
"desc"
);
this.props.dispatch({
type: "app/getDataByPost",
url: "BI/BIStatiscialAnalysisController/GetDepartmentCompletionSort",
payload: json,
onlyData: false,
onComplete: (data) => {
if (data && data.IsSuccessful) {
if (data.Data && data.Data.length > 0) {
this.setState({
departmentCompletionData: data.Data,
});
}
}
},
});
};
//工作票完成情况统计图
workTicket = () => {
const userInfo = storage("lacal").getItem("webUserInfo").val;
let json = initFilter(
this.props.login.OrgId,
this.state.mineType,
"NUM",
"desc"
);
this.props.dispatch({
type: "app/getDataByPost",
url: "BI/BIStatiscialAnalysisController/GetJobCompletionSort",
payload: json,
onlyData: false,
onComplete: (data) => {
if (data && data.IsSuccessful) {
if (data.Data && data.Data.length > 0) {
this.setState({
workTicketData: data.Data,
});
}
}
},
});
};
// hiddenDanger
hiddenDanger = () => {
const userInfo = storage("lacal").getItem("webUserInfo").val;
let json = initFilter(this.props.login.OrgId, this.state.mineType, "NUM");
this.props.dispatch({
type: "app/getDataByPost",
url: "BI/BIHome/GetHomeInfo",
payload: json,
onlyData: false,
onComplete: (data) => {
if (data && data.IsSuccessful) {
this.hiddenTop = data.Data.length;
this.setState({
dangerList: data.Data,
});
//图标2
}
},
});
};
//风险等级占比
riskLevel = () => {
const userInfo = storage("lacal").getItem("webUserInfo").val;
let json = initFilter(this.props.login.OrgId);
extendOrder(json, "NUM", 0);
extendRule(json, "COLOR", 1, this.state.mineType);
this.props.dispatch({
type: "app/getDataByPost",
url: "FM/RiskLevelProportion/OrderPaged",
payload: json,
onlyData: false,
onComplete: (data) => {
if (data && data.IsSuccessful) {
if (data.Data && data.Data.length > 0) {
this.setState({
riskLevelPage: data.Data,
});
}
}
},
});
};
//获取数据
getBaseInfoData = (pagination, key, limit) => {
const current = pagination ? pagination.current : 1;
const json = initFilter(this.props.login.OrgId, "", "CODE", 1, current);
//extendRule(json, "NOTICE_STATUS", 1, 0);
const querySearch = this.state.querySearch;
for (var item in querySearch) {
if (item == "searchName") {
extendRule(json, "NOTICE_TITLE", 9, querySearch[item]);
}
if (item == "searchCode") {
extendRule(json, "CODE", 9, querySearch[item]);
}
if (item == "startTime1") {
extendRule(json, "TASK_STARTDT", 6, querySearch[item]);
}
if (item == "startTime2") {
extendRule(json, "TASK_STARTDT", 4, querySearch[item]);
}
if (item == "endTime1") {
extendRule(json, "TASK_ENDDT", 6, querySearch[item]);
}
if (item == "endTime2") {
extendRule(json, "TASK_ENDDT", 4, querySearch[item]);
}
if (item == "searchStatus") {
extendRule(json, "NOTICE_STATUS", 1, querySearch[item]);
}
}
json.Limit = limit;
//json.Limit = 10;
json.Parameter1 = key; //1待办事项2已办事项3今日新增4待办超时
this.props.dispatch({
type: "app/getDataByPost",
url: "FM/FMNotificationTask/HomeOrderPaged",
payload: json,
onlyData: false,
onComplete: (re) => {
if (this._isMounted && re && re.IsSuccessful && re.Data.newData) {
this.state.tableData[0].total = re.Data.todoCount;
this.state.tableData[1].total = re.Data.timeOverCount;
this.state.tableData[2].total = re.Data.doneCount;
this.state.tableData[3].total = re.Data.todayNewCount;
if (limit != null || limit != undefined) {
this.setState({
retData: re.Data.newData,
});
} else {
var pageInfo = {};
pageInfo.current = current;
pageInfo.total = Math.ceil(re.Data.TotalCount, 10);
this.setState({
retDataAll: re.Data.newData,
pagination: pageInfo,
});
}
}
},
});
};
clearData = () => {
let newtmpData = { ...this.state.tmpData };
if (newtmpData["data"] != null) {
newtmpData["data"].id = "";
newtmpData["data"].homeReload = false;
}
newtmpData.formCode = "";
this.setState({
visible: false,
tmpData: [], //newtmpData
});
};
clearScoreData = () => {
this.setState({
scoreVisible: false,
// standardScore: [],//newtmpData
});
};
handleCancel = () => {
// 退出弹窗
this.getBaseInfoData(1, this.state.tableKey, 5);
this.clearData();
};
closeModal = () => {
// 退出弹窗
this.clearData();
};
showEditModal = (dataId, formCode, TaskID, title, taskCode) => {
// this.props.dispatch({
// type: "app/getDataByPost",
// url: "BI/BIController/getVersion",
// onComplete: (ret) => {
// if (ret > config.version) {
// window.localStorage.clear();
// message.success("清除成功,即将重新加载页面", 2, () => {
// setTimeout(() => window.location.reload(true), 500);
// });
// }
// },
// });
const newtmpData = {
data: {
id: dataId,
TaskID: TaskID,
onCancel: this.handleCancel,
taskCode: taskCode,
tableKey: this.state.tableKey,
homeReload: true,
},
formCode: formCode,
};
this.setState(
{
noticeTitle: title,
taskCode: taskCode,
tmpData: newtmpData,
currActivatedMenu: "",
},
() =>
this.setState({
visible: true,
})
);
};
showTodayModal = (
dataId,
formCode,
TaskID,
title,
taskCode,
taskStartdt,
taskStatus
) => {
const newtmpData = {
data: {
id: dataId,
TaskID: TaskID,
onCancel: this.handleCancel,
taskCode: taskCode,
tableKey: this.state.tableKey,
noticeTitle: title,
taskStartdt: taskStartdt,
taskStatus: taskStatus,
homeReload: true,
},
formCode: "PF135",
};
this.setState(
{
noticeTitle: "今日提醒",
taskCode: taskCode,
tmpData: newtmpData,
currActivatedMenu: "",
},
() =>
this.setState({
visible: true,
})
);
};
setMessageData = (dataSource) => {
const data = dataSource ? dataSource : this.props.taskData;
};
//点击切换四个统计模块更改列表数据
totalModuleClick = (item) => {
const { tableData } = this.state;
tableData.map((_item, i) => {
if (_item.key == item.key) {
if (item.key == "2") {
this.state.columns = [
{
width: "450px",
title: "任务名称",
dataIndex: "NOTICE_TITLE",
key: "NOTICE_TITLE",
render: (text, record) => (
this.showEditModal(
record.SOURCE_DATA_ID,
record.SOURCE_FORMCODE,
record.ID,
record.NOTICE_TITLE,
record.CODE
)
}
>
{record.NOTICE_TITLE}
),
},
{
title: "开始时间",
dataIndex: "TASK_STARTDT",
key: "TASK_STARTDT",
},
{
title: "结束时间",
dataIndex: "TASK_ENDDT",
key: "TASK_ENDDT",
},
{
title: "办结时间",
dataIndex: "TASK_DT",
key: "TASK_DT",
},
];
} else if (item.key == "3") {
this.state.columns = [
{
title: "提醒内容",
dataIndex: "NOTICE_TITLE",
key: "NOTICE_TITLE",
render: (text, record) => (
this.showTodayModal(
record.SOURCE_DATA_ID,
record.SOURCE_FORMCODE,
record.ID,
record.NOTICE_TITLE,
record.CODE,
record.TASK_STARTDT,
record.NOTICE_STATUS
)
}
>
{record.NOTICE_TITLE}
),
},
{
width: "150px",
title: "提醒时间",
dataIndex: "TASK_STARTDT",
key: "TASK_STARTDT",
},
{
width: "150px",
title: "状态",
dataIndex: "NOTICE_STATUS",
key: "NOTICE_STATUS",
render: (text, record) => this.ShowStatus(record),
},
];
} else {
this.state.columns = [
{
width: "450px",
title: "任务名称",
dataIndex: "NOTICE_TITLE",
key: "NOTICE_TITLE",
render: (text, record) => (
this.showEditModal(
record.SOURCE_DATA_ID,
record.SOURCE_FORMCODE,
record.ID,
record.NOTICE_TITLE,
record.CODE
)
}
>
{record.NOTICE_TITLE}
),
},
{
title: "开始时间",
dataIndex: "TASK_STARTDT",
key: "TASK_STARTDT",
},
{
title: "结束时间",
dataIndex: "TASK_ENDDT",
key: "TASK_ENDDT",
},
{
title: "预警状态",
dataIndex: "NOTICE_TYPE",
key: "NOTICE_TYPE",
render: (text, record) => this.ShowState(record),
},
];
}
_item.iconDisplay = "block";
this.setState({
tableKey: item.key,
});
if (window.navigator.userAgent.indexOf("Windows") < 1) {
this.getBaseInfoData(1, item.key, 10);
} else {
this.getBaseInfoData(1, item.key, 5);
}
} else {
_item.iconDisplay = "none";
}
});
};
// 双击切换四个统计模块获取全部信息
totalMoonDoubleClick = (item) => {
const { tableData } = this.state;
tableData.map((_item) => {
if (_item.key == item.key) {
if (item.key == "2") {
this.state.searchColumns = [
{
width: "450px",
title: "任务名称",
dataIndex: "NOTICE_TITLE",
key: "NOTICE_TITLE",
render: (text, record) => (
this.showEditModal(
record.SOURCE_DATA_ID,
record.SOURCE_FORMCODE,
record.ID,
record.NOTICE_TITLE,
record.CODE
)
}
>
{record.NOTICE_TITLE}
),
},
{
title: "开始时间",
dataIndex: "TASK_STARTDT",
key: "TASK_STARTDT",
},
{
title: "结束时间",
dataIndex: "TASK_ENDDT",
key: "TASK_ENDDT",
},
{
title: "办结时间",
dataIndex: "TASK_DT",
key: "TASK_DT",
},
];
this.setState({
searchVisible: true,
searchTodayVisible: false,
querySearch: {},
});
} else if (item.key === "3") {
this.state.searchColumns = [
{
width: "450px",
title: "提醒内容",
dataIndex: "NOTICE_TITLE",
key: "NOTICE_TITLE",
render: (text, record) => (
this.showTodayModal(
record.SOURCE_DATA_ID,
record.SOURCE_FORMCODE,
record.ID,
record.NOTICE_TITLE,
record.CODE,
record.TASK_STARTDT,
record.NOTICE_STATUS
)
}
>
{record.NOTICE_TITLE}
),
},
{
title: "提醒时间",
dataIndex: "TASK_STARTDT",
key: "TASK_STARTDT",
},
{
title: "状态",
dataIndex: "NOTICE_STATUS",
key: "NOTICE_STATUS",
render: (text, record) => this.ShowStatus(record),
},
];
this.setState({
searchVisible: false,
searchTodayVisible: true,
querySearch: {},
});
} else {
this.state.searchColumns = [
{
width: "450px",
title: "任务名称",
dataIndex: "NOTICE_TITLE",
key: "NOTICE_TITLE",
render: (text, record) => (
this.showEditModal(
record.SOURCE_DATA_ID,
record.SOURCE_FORMCODE,
record.ID,
record.NOTICE_TITLE,
record.CODE
)
}
>
{record.NOTICE_TITLE}
),
},
{
title: "开始时间",
dataIndex: "TASK_STARTDT",
key: "TASK_STARTDT",
},
{
title: "结束时间",
dataIndex: "TASK_ENDDT",
key: "TASK_ENDDT",
},
{
title: "预警状态",
dataIndex: "NOTICE_TYPE",
key: "NOTICE_TYPE",
render: (text, record) => this.ShowState(record),
},
];
this.setState({
searchVisible: true,
searchTodayVisible: false,
querySearch: {},
});
}
}
});
this.setState(
{
tableData,
currentpageIndex: item.key,
},
() => {
this.getBaseInfoData(1, item.key);
}
);
};
// 开始时间
selectChange = (value) => {
const { querySearch } = this.state;
querySearch.searchStatus = value;
this.setState(
{
querySearch,
},
() => { }
);
};
// 开始时间
startChange = (dates, dateStr) => {
const { querySearch } = this.state;
if (dates.length != 2) {
this.setState({
visibleStartTime: [],
querySearch: {},
});
return;
}
this.state.visibleStartTime = dates;
querySearch.startTime1 = this.state.visibleStartTime[0].format(
"YYYY-MM-DD HH:mm:ss"
);
querySearch.startTime2 = this.state.visibleStartTime[1].format(
"YYYY-MM-DD HH:mm:ss"
);
this.setState(
{
querySearch,
},
() => { }
);
};
// 结束时间
endChange = (dates, dateStr) => {
const { querySearch } = this.state;
if (dates.length != 2) {
this.setState({
visibleEndTime: [],
querySearch: {},
});
return;
}
this.state.visibleEndTime = dates;
querySearch.endTime1 = this.state.visibleEndTime[0].format(
"YYYY-MM-DD HH:mm:ss"
);
querySearch.endTime2 = this.state.visibleEndTime[1].format(
"YYYY-MM-DD HH:mm:ss"
);
this.setState({ querySearch });
};
// 搜索
handleSearch = (item) => {
this.getBaseInfoData(1, item, null);
};
closeTasks() {
const json = initFilter(this.props.login.OrgId, "", "CODE", 1);
let ids = [];
let names = [];
this.state.taskSelects.forEach(element => {
ids.push(element.ID);
names.push(
{
title: element.NOTICE_TITLE,
startTime: element.TASK_STARTDT,
endTime: element.TASK_ENDDT,
});
});
json.Parameter1 = ids.join(",");
json.Parameter2 = JSON.stringify(names);
this.props.dispatch({
type: "app/getDataByPost",
url: "BI/BITask/CloseTask",
payload: json,
onlyData: false,
onComplete: (ret) => {
message.success('申请成功!');
},
});
};
// input输入
vauleChange = (e) => {
const { querySearch } = this.state;
if (e.target.value) {
switch (e.target.name) {
case "searchName":
querySearch[e.target.name] = e.target.value;
this.setState({ querySearch });
break;
case "searchCode":
querySearch[e.target.name] = e.target.value;
this.setState({ querySearch });
break;
case "searchType":
querySearch[e.target.name] = e.target.value;
this.setState({ querySearch });
break;
case "searchContent":
querySearch[e.target.name] = e.target.value;
this.setState({ querySearch });
break;
}
} else {
this.setState({ querySearch: {} });
}
};
closeModal = () => {
this.setState({
searchVisible: false,
searchTodayVisible: false,
querySearch: {}
});
};
ShowState(obj) {
var thisResult =
(Date.parse(obj.TASK_ENDDT) - Date.parse(Date())) / 3600 / 1000;
if (thisResult > 0) {
return "正常";
} else {
return 超期;
}
}
ShowStatus(obj) {
if (obj.NOTICE_STATUS === 0) {
return 未读;
} else if (obj.NOTICE_STATUS === 3) {
return 已读;
} else {
return "已办";
}
}
handleSelect = (e) => {
const { querySearch } = this.state;
if (e != undefined) {
querySearch.status = e;
} else {
querySearch.status = "";
}
this.setState({ querySearch });
};
showStandardScoreTotalModal = () => {
this.setState({
scoreTotalVisible: true,
});
};
showStandardScoreModal = (item) => {
let temp = false;
if (this.state.standardScore && this.state.standardScore.Nav_Details) {
this.state.standardScore.Nav_Details.forEach((t) => {
if (t.THREE_ELEMENTS_ID) {
temp = true;
}
});
}
if (item) {
let dataTemp = this.state.standardScore.Nav_Details.filter(
(t) => t.NON_CONFORMANCE != null && t.NON_CONFORMANCE != ""
);
let tmpData = dataTemp.map((item, i) => {
item["ROW_NO"] = i + 1;
return item;
});
let aa = {
CONTENTS: "合计扣分:",
NON_STANDARDIZED_SCORE: this.state.standardScore.NON_STANDARDIZED_SCORE,
};
tmpData.push(aa);
this.setState({
isNaN: temp,
standardScoreNaN: tmpData,
scoreNaVisible: true,
});
} else {
let dataTemp = this.state.standardScore.Nav_Details;
let tmpData = dataTemp.map((item, i) => {
item["ROW_NO"] = i + 1;
return item;
});
let aa = {
DESCRIPTION: "合计:",
STANDARDIZED_SCORE: this.state.standardScore.STAND_TOTAL,
RESULT_SCORE: this.state.standardScore.RESULT_TOTAL,
NON_CONFORMANCE:
"标准化得分:" + this.state.standardScore.STANDARDIZED_RESULT,
};
tmpData.push(aa);
this.setState({
isNaN: temp,
standardScoreTemp: tmpData,
scoreVisible: true,
});
}
};
clearScoreTotalData = () => {
this.setState({
scoreTotalVisible: false,
});
};
clearScoreNaData = () => {
this.setState({
scoreNaVisible: false,
});
};
useEffect = () => {
// 监听的函数
const resize = new ResizeObserver((e) => {
if (!Array.isArray(e) || !e.length) return;
for (const ent of e) {
resizeChange(ent);
}
});
// 传入监听对象
resize.observe(resizeRef.current);
// 及时销毁监听函数(重要!!!)
return () => {
resize.unobserve(resizeRef?.current);
};
};
//显示详情弹窗
showDetailModal = (formCode) => {
var titleTemp =
this.state.mineType == 20
? "尾矿库"
: this.state.mineType == 10
? "选矿厂"
: this.state.mineType == 31
? "职能口" : this.state.mineType == 32 ? "非金属"
: "露天矿";
if (formCode == "BI054_HOMEDETAIL") {
titleTemp += "安全检查次数统计(近12月)";
} else if (formCode == "BI055_HOMEDETAIL") {
titleTemp += "月度隐患整改情况(近12月)";
} else if (formCode == "BI001_HOMEDETAIL") {
titleTemp += "班组活动任务完成详情(近12月)";
} else if (formCode == "BI002_HOMEDETAIL") {
titleTemp += "工作票完成详情(近12月)";
} else if (formCode == "BI013_RISKANALYSISMODEL") {
titleTemp += "风险管理统计分析";
}
const newtmpData = {
data: {
id: guid(),
mineType: this.state.mineType,
onCancel: this.handleCancel,
homeReload: true,
},
formCode: formCode,
};
this.setState({ tmpData: newtmpData }, () => {
var detailForm = {
isShow: true,
formCode: formCode,
title: titleTemp,
};
this.setState({
detailForm: detailForm,
});
});
};
//详情弹窗关闭(隐藏)
detailFormClose = () => {
var detailForm = {
isShow: false,
formCode: "",
title: "",
};
this.setState({
detailForm: detailForm,
});
};
render() {
const { tableData } = this.state;
const thingsData = this.state.delayData;
const settings = {
dots: false,
autoplay: false,
infinite: true,
speed: 500,
slidesToShow: 1,
slidesToScroll: 1,
className: styles.slideHeight,
fade: true,
};
// 在render方法中添加动态样式计算
const { safetySloganOne, animationDuration, sliderColor, sliderSize } = this.state;
const rowSelection = {
onChange: (selectedRowKeys, selectedRows) => {
this.state.taskSelects = selectedRows;
},
};
const empty =
{safetySloganOne || '暂无公告'}