/*
* @Author: Sakura
* @LastEditors: Sakura
* @FilePath: \ebc-mes\src\mes\common\siderInfoComponent\index.js
* @Description: 生产执行内容块 --- 左侧收缩组件
*/
import React, { useEffect, useRef, useState, useContext } from "react";
import { Carousel, Row, Col, Spin, Button, Tooltip } from "antd";
import { LeftOutlined, RightOutlined } from "@ant-design/icons";
import classNames from "classnames/bind";
import moment from "moment";
import * as commonBusiness from "@/components/Common/commonBusiness";
import * as commonFunc from "@/components/Common/commonFunc";
import StaticEditTable from "@/components/Common/CommonTable";
import ShowType from "@/components/Common/CommonComponent";
import ClockComponent from "./clockComponent";
import * as commonUtils from "@/utils/utils";
import * as commonConfig from "@/utils/config";
import styles from "./index.less";
import { Space } from "antd";
const iocnObj = {
taskIcon: require("./assets/facilityIcon.png"),
facilityIcon: require("./assets/facilityIcon.png"),
groupIcon: require("./assets/groupIcon.png"),
userImg: require("./assets/user.jpg")
};
const { myContext } = commonUtils;
const cx = classNames.bind(styles);
const useSiderInfoComponentEvent = props => {
const { formData = [], app, refreshMachineDataFlag } = props;
const { userinfo = {} } = app;
const { iInterface } = userinfo;
const [pageloading1, setPagesLoading1] = useState(true);
// 初始化事件
useEffect(
async () => {
if (commonUtils.isEmptyArr(formData)) return;
let addState = {};
const list = [
{
sName: "workOrderInfo",
sGrd: iInterface === 0 ? "qz_machinedata" : "machinedata"
}, // 工单信息
{
sName: "deviceTargetInfo",
sGrd:
iInterface === 2
? "elemachine1"
: iInterface === 9
? "elemachine2"
: "elemachine"
}, // 设备及目标信息
{ sName: "employee", sGrd: "teamInfo" }, // 班组信息
{ sName: "teamShiftInfo", sGrd: "teamShiftInfo" } // 机长班次信息
];
for (let i = 0; i < list.length; i++) {
const item = list[i];
const { sName, sGrd } = item;
const config = formData.find(item => item.sGrd === sGrd);
if (config) {
addState = {
execListExtra: list,
...addState,
...handleGetColumnData(config, sName),
...(await handleGetData(config, sName))
};
}
}
addState.bFinish1 = true;
props.onSaveState(addState, () => {
setPagesLoading1(false);
});
},
[formData.length]
);
// 扫码后刷新工单信息
const { productionTableList = [] } = props;
useEffect(
async () => {
if (!refreshMachineDataFlag) return;
const tempList = {
sName: "workOrderInfo",
sGrd: iInterface === 0 ? "qz_machinedata" : "machinedata"
};
const { sName, sGrd } = tempList;
const config = formData.find(item => item.sGrd === sGrd);
const addState = {
...(await handleGetData(config, sName)),
refreshTableList: productionTableList
};
props.onSaveState(addState);
},
[refreshMachineDataFlag]
);
// 获取表头数据
const handleGetColumnData = (config, name) => {
const column = commonFunc.getHeaderConfig(config);
return {
[`${name}Column`]: column,
[`${name}Config`]: config
};
};
// 获取数据集
const handleGetData = async (config, name) => {
const conditonValues = props.onGetSqlConditionValues(config);
// 如果是设备及目标信息,则异步加载
if (name === "deviceTargetInfo") {
props.onGetDataSet({
name: name,
configData: config,
condition: { sSqlCondition: { ...conditonValues } },
isWait: false
});
return {};
}
try {
const addState =
(await props.onGetDataSet({
name: name,
configData: config,
condition: { sSqlCondition: { ...conditonValues } },
isWait: true
})) || {};
return addState;
} catch (error) {
console.log("=====error", error);
return {};
}
};
useEffect(() => {
window.bChangeMachineData = true;
return () => {
window.bChangeMachineData = false;
};
}, []);
const [changeExecInfo, setChangeExecInfo] = useState({});
const changeExecInfoRef = useRef({});
useEffect(() => {
const getValue = () => {
const changeExecInfoNew = commonUtils.getAppData("changeExecInfo");
const { sTime } = changeExecInfoNew;
delete changeExecInfoNew.sTime;
if (
JSON.stringify(changeExecInfoNew) !==
JSON.stringify(changeExecInfoRef.current)
) {
changeExecInfoRef.current = changeExecInfoNew;
setChangeExecInfo({ ...changeExecInfoNew, sTime });
}
};
getValue();
const timer = setInterval(() => {
getValue();
}, 1000);
return () => {
clearInterval(timer);
};
}, []);
// 将工单信息存到全局
const { workOrderInfoData = [] } = props;
const [workOrderInfoDataOne = {}] = workOrderInfoData;
const currentWorkOrderInfo = commonUtils.getAppData(
"globalData",
"currentWorkOrderInfo"
);
useEffect(
() => {
const globalData = commonUtils.getAppData(globalData);
globalData.currentWorkOrderInfo = {
...currentWorkOrderInfo,
...workOrderInfoDataOne,
...changeExecInfo
};
commonUtils.setAppData("globalData", globalData);
},
[JSON.stringify(workOrderInfoDataOne), changeExecInfo]
);
// 刷新设备及目标信息
const { refreshDeviceTargetInfo } = props;
useEffect(
() => {
if (refreshDeviceTargetInfo) {
handleRefreshDeviceTargetInfo();
}
},
[refreshDeviceTargetInfo]
);
const handleRefreshDeviceTargetInfo = async () => {
const { deviceTargetInfoConfig, deviceTargetInfoData = [{}] } = props;
const conditonValues = props.onGetSqlConditionValues(
deviceTargetInfoConfig
);
const addState = await props.onGetDataSet({
name: "deviceTargetInfo",
configData: deviceTargetInfoConfig,
condition: { sSqlCondition: { ...conditonValues } },
isWait: true
});
addState.deviceTargetInfoData = [
{ ...deviceTargetInfoData[0], ...addState.deviceTargetInfoData[0] }
];
addState.refreshDeviceTargetInfo = false;
props.onSaveState(addState);
};
return {
...props,
pageloading1,
changeExecInfo
};
};
const SiderInfoComponent = baseProps => {
const props = useSiderInfoComponentEvent(baseProps);
const leftClass = cx({
siderInfoComponent: true
});
return (