/*
* @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 iInterface = 1;
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 } = props;
const conditonValues = props.onGetSqlConditionValues(deviceTargetInfoConfig);
const addState = await props.onGetDataSet({
name: "deviceTargetInfo",
configData: deviceTargetInfoConfig,
condition: { sSqlCondition: { ...conditonValues } },
isWait: true,
});
addState.refreshDeviceTargetInfo = false;
props.onSaveState(addState);
};
return {
...props,
pageloading1,
changeExecInfo,
};
};
const SiderInfoComponent = baseProps => {
const props = useSiderInfoComponentEvent(baseProps);
const leftClass = cx({
siderInfoComponent: true,
});
return (