200 lines
5.1 KiB
JavaScript
200 lines
5.1 KiB
JavaScript
|
import React, { useCallback, useEffect, useState, useRef } from "react";
|
||
|
import { message } from "antd";
|
||
|
import { request, getQueryVariable } from "../utils";
|
||
|
|
||
|
export const isDev = false;
|
||
|
|
||
|
let rules = (function () {
|
||
|
let data = [];
|
||
|
let callback = () => {};
|
||
|
let setData = (res) => {
|
||
|
setData = () => {};
|
||
|
data = res;
|
||
|
callback({ success: true, data: res });
|
||
|
};
|
||
|
return {
|
||
|
setData,
|
||
|
getData: () => data,
|
||
|
loaded: new Promise((resolve, reject) => {
|
||
|
callback = resolve;
|
||
|
}),
|
||
|
};
|
||
|
})();
|
||
|
|
||
|
let getRule = () => {
|
||
|
getRule = () => rules.loaded;
|
||
|
return request({
|
||
|
method: "get",
|
||
|
url: `${window.config.mesUrl}/console/getpermissions`,
|
||
|
});
|
||
|
};
|
||
|
|
||
|
export const useRule = (code) => {
|
||
|
const [ruleList, setRuleList] = useState(rules.getData());
|
||
|
useEffect(() => {
|
||
|
getRule().then(({ success, data } = {}) => {
|
||
|
if (success) {
|
||
|
setRuleList(data);
|
||
|
rules.setData(data);
|
||
|
}
|
||
|
});
|
||
|
}, []);
|
||
|
|
||
|
if (code) return ruleList.includes(code);
|
||
|
return true;
|
||
|
};
|
||
|
|
||
|
export const useUser = () => {
|
||
|
const [data, setData] = useState();
|
||
|
const getUser = useCallback(() => {
|
||
|
// let user = localStorage.getItem("userInfo");
|
||
|
// try {
|
||
|
// user = JSON.parse(user)
|
||
|
// } catch (e) {
|
||
|
// console.log(e);
|
||
|
// user = {};
|
||
|
// }
|
||
|
// console.log("user", user, localStorage.getItem("userInfo"))
|
||
|
// setData(user);
|
||
|
request({
|
||
|
method: "get",
|
||
|
url: `${window.config.mesUrl}/console/currentinfo`,
|
||
|
}).then(({ success, data } = {}) => {
|
||
|
if (success) {
|
||
|
setData(data);
|
||
|
} else setData();
|
||
|
});
|
||
|
}, [])
|
||
|
// useEffect(() => {
|
||
|
// getUser();
|
||
|
// }, [getUser]);
|
||
|
return [data, getUser];
|
||
|
};
|
||
|
|
||
|
export const useEquipKey = () => {
|
||
|
const [equipKey, setEquipKey] = useState();
|
||
|
const getEquipKey = useCallback(() => {
|
||
|
let ip = getQueryVariable("ip");
|
||
|
console.log("ip", ip);
|
||
|
if (!ip || ip === "null") {
|
||
|
message.error("获取 ip 失败!");
|
||
|
} else {
|
||
|
setEquipKey(ip);
|
||
|
}
|
||
|
}, []);
|
||
|
useEffect(() => {
|
||
|
getEquipKey();
|
||
|
}, [getEquipKey]);
|
||
|
return { equipKey, getEquipKey };
|
||
|
};
|
||
|
|
||
|
export const useSetting = (equipKey) => {
|
||
|
const [settingData, setSettingData] = useState({});
|
||
|
|
||
|
const getSettingData = useCallback(() => {
|
||
|
if (equipKey) {
|
||
|
request({
|
||
|
method: "post",
|
||
|
url: `${window.config.mesUrl}/prodexec/prodexec/packageEquipment/getPackInfoByKey?equipKey=${equipKey}`,
|
||
|
}).then(({ success, data } = {}) => {
|
||
|
if (success) setSettingData(data || {});
|
||
|
});
|
||
|
} else setSettingData({});
|
||
|
}, [equipKey]);
|
||
|
|
||
|
useEffect(() => {
|
||
|
getSettingData();
|
||
|
}, [getSettingData]);
|
||
|
return { settingData, getSettingData };
|
||
|
};
|
||
|
|
||
|
export const useMetaInfo = (equipCode) => {
|
||
|
const [data, setData] = useState({}); // bagNo outBagNo
|
||
|
const timmerRef = useRef();
|
||
|
const getData = useCallback(() => {
|
||
|
if (timmerRef.current) {
|
||
|
clearTimeout(timmerRef.current);
|
||
|
timmerRef.current = undefined;
|
||
|
}
|
||
|
if (equipCode) {
|
||
|
request({
|
||
|
method: "post",
|
||
|
url: `${window.config.mesUrl}/prodexec/prodexec/packageEquipment/getEquipRecord?equipCode=${equipCode}`,
|
||
|
}).then(({ success, data, message: msg } = {}) => {
|
||
|
if (success) {
|
||
|
let { status } = data || {};
|
||
|
// 没有数据,或者数据为中断状态,尝试定时重复请求
|
||
|
if (!data || status === "INTERRUPT") {
|
||
|
if (!data) {
|
||
|
data = { status: "no_job" };
|
||
|
message.error("请先分配任务!");
|
||
|
}
|
||
|
let { reloadTime } = window.config.packagingOperaConfig || {};
|
||
|
if (reloadTime !== undefined) {
|
||
|
timmerRef.current = setTimeout(getData, reloadTime);
|
||
|
}
|
||
|
}
|
||
|
setData(data);
|
||
|
} else {
|
||
|
message.error(msg);
|
||
|
}
|
||
|
});
|
||
|
} else setData({});
|
||
|
}, [equipCode]);
|
||
|
|
||
|
useEffect(() => {
|
||
|
getData();
|
||
|
}, [getData]);
|
||
|
return [data, getData];
|
||
|
};
|
||
|
|
||
|
export const useWsInfo = (equipCode, isEdit) => {
|
||
|
const [data, setData] = useState({});
|
||
|
useEffect(() => {
|
||
|
if (equipCode) {
|
||
|
let url = window.config.edgewsUrl;
|
||
|
if (isDev) {
|
||
|
url = "ws://120.202.38.15:8081/rongtong-edge-application-ws/";
|
||
|
}
|
||
|
if (!isEdit) {
|
||
|
console.log("link: ", url);
|
||
|
let ws = new WebSocket(url);
|
||
|
ws.onmessage = (evt) => {
|
||
|
let res = evt.data;
|
||
|
// if (isDev) {
|
||
|
// res = {
|
||
|
// czzl: 1.11,
|
||
|
// fczl: 2.22,
|
||
|
// }
|
||
|
// }
|
||
|
if (typeof res === "string") {
|
||
|
try {
|
||
|
res = JSON.parse(res);
|
||
|
} catch (e) {
|
||
|
console.log("ws", res);
|
||
|
res = {};
|
||
|
}
|
||
|
}
|
||
|
console.log("ws res:", res);
|
||
|
setData(res);
|
||
|
};
|
||
|
ws.onopen = () => {
|
||
|
if (isDev) {
|
||
|
// 01 02 03
|
||
|
equipCode = "L5-BZ-02";
|
||
|
}
|
||
|
console.log("Connection open ... send:", equipCode);
|
||
|
ws.send(equipCode);
|
||
|
};
|
||
|
}
|
||
|
return () => {
|
||
|
if (!isEdit) {
|
||
|
console.log("ws close:", equipCode);
|
||
|
ws.close();
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
}, [equipCode, isEdit]);
|
||
|
return [data];
|
||
|
};
|