Commit d1fbb993455b9ce7e820f3eb10a77bfe74e9d7ad

Authored by Min
1 parent 198ee074

1.MES增加多语言翻译

src/components/Common/CommonTable/index.js
@@ -4719,7 +4719,7 @@ class CommonTableRc extends React.Component { @@ -4719,7 +4719,7 @@ class CommonTableRc extends React.Component {
4719 } 4719 }
4720 tableBtnsWidth += "px"; 4720 tableBtnsWidth += "px";
4721 } 4721 }
4722 - 4722 + const setOperation = commonFunc.showMessage(props.app.commonConst, 'operation') || '操作';
4723 const operationCol = { 4723 const operationCol = {
4724 dataIndex: "operation", 4724 dataIndex: "operation",
4725 render: (text, record, index) => { 4725 render: (text, record, index) => {
@@ -4826,7 +4826,7 @@ class CommonTableRc extends React.Component { @@ -4826,7 +4826,7 @@ class CommonTableRc extends React.Component {
4826 }, 4826 },
4827 title: () => ( 4827 title: () => (
4828 <div> 4828 <div>
4829 - 操作 4829 + {setOperation}
4830 <div className={styles.mesOpr}> 4830 <div className={styles.mesOpr}>
4831 {/* 班组报工行车记录 */} 4831 {/* 班组报工行车记录 */}
4832 {["12710101117087404588200", "12710101117260270570210"].includes( 4832 {["12710101117087404588200", "12710101117260270570210"].includes(
@@ -5061,6 +5061,7 @@ class CommonTableRc extends React.Component { @@ -5061,6 +5061,7 @@ class CommonTableRc extends React.Component {
5061 const delIcon = props.tableProps.setDelete; /* 删除操作 */ 5061 const delIcon = props.tableProps.setDelete; /* 删除操作 */
5062 const materialIcon = props.tableProps.setMaterial; /* 材料操作 */ 5062 const materialIcon = props.tableProps.setMaterial; /* 材料操作 */
5063 const processIcon = props.tableProps.setProcess; /* 工序操作 */ 5063 const processIcon = props.tableProps.setProcess; /* 工序操作 */
  5064 + const setOperation = commonFunc.showMessage(props.app.commonConst, 'operation') || '操作';
5064 const materailremarkIcon = 5065 const materailremarkIcon =
5065 props.tableProps.setMaterialRemark; /* 材料备注 */ 5066 props.tableProps.setMaterialRemark; /* 材料备注 */
5066 let uploadIcon = props.tableProps.setUpload; /* 上传 */ 5067 let uploadIcon = props.tableProps.setUpload; /* 上传 */
@@ -5935,7 +5936,7 @@ class CommonTableRc extends React.Component { @@ -5935,7 +5936,7 @@ class CommonTableRc extends React.Component {
5935 textDecoration: "none" 5936 textDecoration: "none"
5936 }} 5937 }}
5937 > 5938 >
5938 - 操作{" "} 5939 + {setOperation}{" "}
5939 {uploadIcon ? ( 5940 {uploadIcon ? (
5940 <Upload {...divProps} disabled={!this.props.enabled}> 5941 <Upload {...divProps} disabled={!this.props.enabled}>
5941 <a 5942 <a
@@ -6062,7 +6063,7 @@ class CommonTableRc extends React.Component { @@ -6062,7 +6063,7 @@ class CommonTableRc extends React.Component {
6062 ) : ( 6063 ) : (
6063 <span> 6064 <span>
6064 {" "} 6065 {" "}
6065 - 操作{" "} 6066 + {setOperation}{" "}
6066 {headPopup ? ( 6067 {headPopup ? (
6067 <a 6068 <a
6068 {...headProps} 6069 {...headProps}
@@ -6942,7 +6943,7 @@ class CommonTableRc extends React.Component { @@ -6942,7 +6943,7 @@ class CommonTableRc extends React.Component {
6942 if ( this.props.parentProps.slaveConfig.sId == "12710101117056272345580" && tbName === "slave" ) { 6943 if ( this.props.parentProps.slaveConfig.sId == "12710101117056272345580" && tbName === "slave" ) {
6943 let newTableData = tableData.filter(e => e.sBoardName) || []; 6944 let newTableData = tableData.filter(e => e.sBoardName) || [];
6944 6945
6945 - 6946 +
6946 // 如果版号已存在则过滤 6947 // 如果版号已存在则过滤
6947 // const result = selectData.filter(item1 =>!newTableData.some(item2 => item2.sBoardName === item1.sBoardName)); 6948 // const result = selectData.filter(item1 =>!newTableData.some(item2 => item2.sBoardName === item1.sBoardName));
6948 let newSelectData = selectData.map((item, index) => { 6949 let newSelectData = selectData.map((item, index) => {
@@ -6974,7 +6975,7 @@ class CommonTableRc extends React.Component { @@ -6974,7 +6975,7 @@ class CommonTableRc extends React.Component {
6974 6975
6975 6976
6976 6977
6977 - 6978 +
6978 6979
6979 selectData.forEach((item, index) => { 6980 selectData.forEach((item, index) => {
6980 const newCopyTo = {}; 6981 const newCopyTo = {};
src/components/Common/commonFunc.js
@@ -509,7 +509,19 @@ export function showMessage(gdsformconst, sName) { @@ -509,7 +509,19 @@ export function showMessage(gdsformconst, sName) {
509 } 509 }
510 return ''; 510 return '';
511 } 511 }
512 - 512 +export function showLocalMessage(props, sName, sChineseName) {
  513 + let sTitle = '';
  514 + if(commonUtils.isNotEmptyObject(props) && commonUtils.isNotEmptyObject(props.app) && commonUtils.isNotEmptyArr(props.app.commonConst)) {
  515 + const gdsformconst = props.app.commonConst;
  516 + sTitle = showMessage(gdsformconst, sName)
  517 + } else {
  518 + sTitle = sChineseName;
  519 + }
  520 + if (sTitle === '') {
  521 + sTitle = sChineseName
  522 + }
  523 + return sTitle;
  524 +}
513 /** 获取配置showName */ 525 /** 获取配置showName */
514 export function getConfigShowName(config, sName) { 526 export function getConfigShowName(config, sName) {
515 const iIndex = config.gdsconfigformslave.findIndex(item => item.sName === sName); 527 const iIndex = config.gdsconfigformslave.findIndex(item => item.sName === sName);
src/mes/common/buttonComponent/index.js
@@ -3,6 +3,7 @@ import { Image, Badge, Modal } from &quot;antd&quot;; @@ -3,6 +3,7 @@ import { Image, Badge, Modal } from &quot;antd&quot;;
3 import termClass from "classnames/bind"; 3 import termClass from "classnames/bind";
4 import { DoubleRightOutlined } from "@ant-design/icons"; 4 import { DoubleRightOutlined } from "@ant-design/icons";
5 import styles from "./index.less"; 5 import styles from "./index.less";
  6 +import * as commonFunc from "@/components/Common/commonFunc";
6 // 通用方法 7 // 通用方法
7 import * as commonUtils from "@/utils/utils"; 8 import * as commonUtils from "@/utils/utils";
8 // 菜单图标 9 // 菜单图标
@@ -14,6 +15,7 @@ const getNavIcon = (bActive, iconName = 2) =&gt; { @@ -14,6 +15,7 @@ const getNavIcon = (bActive, iconName = 2) =&gt; {
14 const ButtonComponent = props => { 15 const ButtonComponent = props => {
15 const { app, sModelsId, currentContent, menuMap } = props; 16 const { app, sModelsId, currentContent, menuMap } = props;
16 const { managementData, userinfo = {} } = app; 17 const { managementData, userinfo = {} } = app;
  18 + console.log('3managementData3', managementData);
17 const { iTeamType, sWorkshopId } = userinfo; 19 const { iTeamType, sWorkshopId } = userinfo;
18 20
19 if ([3, 4, 5, 6].includes(iTeamType)) { 21 if ([3, 4, 5, 6].includes(iTeamType)) {
@@ -126,7 +128,7 @@ const ButtonComponent = props =&gt; { @@ -126,7 +128,7 @@ const ButtonComponent = props =&gt; {
126 // 是否为维修保养模块和查询追踪模块 128 // 是否为维修保养模块和查询追踪模块
127 setProcessReport( 129 setProcessReport(
128 props.currentContent === 'queryTracking' || 130 props.currentContent === 'queryTracking' ||
129 - props.currentContent === "serviceUpkeep" || 131 + props.currentContent === "serviceUpkeep" ||
130 (props.currentContent === "productionExec" && [3, 4, 5, 6].includes(iTeamType)) 132 (props.currentContent === "productionExec" && [3, 4, 5, 6].includes(iTeamType))
131 ); 133 );
132 }, 134 },
@@ -272,7 +274,7 @@ const ButtonComponent = props =&gt; { @@ -272,7 +274,7 @@ const ButtonComponent = props =&gt; {
272 } else if (e.name === "其它机台日报") { 274 } else if (e.name === "其它机台日报") {
273 count = table3; 275 count = table3;
274 } 276 }
275 - 277 + const workFirst = commonFunc.showLocalMessage(props, 'workFirst!', '请先上班后再操作');
276 return ( 278 return (
277 <div 279 <div
278 key={e.id} 280 key={e.id}
@@ -280,7 +282,7 @@ const ButtonComponent = props =&gt; { @@ -280,7 +282,7 @@ const ButtonComponent = props =&gt; {
280 if (bStartWorkLimit) { 282 if (bStartWorkLimit) {
281 Modal.warning({ 283 Modal.warning({
282 title: "温馨提示:", 284 title: "温馨提示:",
283 - content: <div>请先上班后再操作!</div>, 285 + content: <div>{workFirst}</div>,
284 okText: "确认" 286 okText: "确认"
285 }); 287 });
286 return; 288 return;
@@ -321,7 +323,7 @@ const ButtonComponent = props =&gt; { @@ -321,7 +323,7 @@ const ButtonComponent = props =&gt; {
321 </div> 323 </div>
322 ); 324 );
323 }; 325 };
324 - 326 + console.log(menuList, '1menuList ');
325 return ( 327 return (
326 <div 328 <div
327 className={`${styles.buttonComponent} ${ 329 className={`${styles.buttonComponent} ${
src/mes/common/commonModelComponent/index.js
@@ -276,6 +276,7 @@ const useCommonModelEvent = props =&gt; { @@ -276,6 +276,7 @@ const useCommonModelEvent = props =&gt; {
276 const pageLayoutConfig = gdsconfigformslave.find( 276 const pageLayoutConfig = gdsconfigformslave.find(
277 item => item.sControlName === "pageLayout" 277 item => item.sControlName === "pageLayout"
278 ); 278 );
  279 + console.log('pageLayoutConfig', pageLayoutConfig);
279 if (pageLayoutConfig) { 280 if (pageLayoutConfig) {
280 pageLayout = commonUtils.convertStrToObj( 281 pageLayout = commonUtils.convertStrToObj(
281 pageLayoutConfig.sDefault, 282 pageLayoutConfig.sDefault,
@@ -677,7 +678,6 @@ const useCommonModelEvent = props =&gt; { @@ -677,7 +678,6 @@ const useCommonModelEvent = props =&gt; {
677 const { refreshTableListCount = 0 } = props; 678 const { refreshTableListCount = 0 } = props;
678 let addState = { 679 let addState = {
679 refreshTableList: [], 680 refreshTableList: [],
680 - refreshTableListCount: refreshTableListCount + 1,  
681 ...(await handleGetData(refreshTableList, true)) 681 ...(await handleGetData(refreshTableList, true))
682 }; 682 };
683 683
@@ -1211,7 +1211,9 @@ const CommonModel = baseProps =&gt; { @@ -1211,7 +1211,9 @@ const CommonModel = baseProps =&gt; {
1211 }; 1211 };
1212 1212
1213 const CommonModelComponent = props => { 1213 const CommonModelComponent = props => {
1214 - const { tabConfig = [], level, modelStyle } = props; 1214 + const { tabConfig = [], level, modelStyle, app } = props;
  1215 + const { userinfo } = app;
  1216 + const sLanguage = userinfo.sLanguage;
1215 const getComponent = (config, index = 0) => { 1217 const getComponent = (config, index = 0) => {
1216 const { 1218 const {
1217 sName, 1219 sName,
@@ -1273,10 +1275,14 @@ const CommonModelComponent = props =&gt; { @@ -1273,10 +1275,14 @@ const CommonModelComponent = props =&gt; {
1273 const { 1275 const {
1274 configList = [], 1276 configList = [],
1275 sEntireTabName, 1277 sEntireTabName,
  1278 + sEnglishEntireTabName,
  1279 + sBig5EntireTabName,
1276 mode, 1280 mode,
1277 width = "100%", 1281 width = "100%",
1278 height = "100%" 1282 height = "100%"
1279 } = item; 1283 } = item;
  1284 + const sEntireTabNameNew = sLanguage === 'sEnglish' ? sEnglishEntireTabName :
  1285 + sLanguage === 'sBig5EntireTabName' ? sBig5EntireTabName : sEntireTabName;
1280 const advancedStyle = 1286 const advancedStyle =
1281 mode === "advanced" 1287 mode === "advanced"
1282 ? { 1288 ? {
@@ -1345,7 +1351,7 @@ const CommonModelComponent = props =&gt; { @@ -1345,7 +1351,7 @@ const CommonModelComponent = props =&gt; {
1345 style={advancedStyle} 1351 style={advancedStyle}
1346 > 1352 >
1347 {sEntireTabName && ( 1353 {sEntireTabName && (
1348 - <TabTitleComponent {...props} sTabName={sEntireTabName} /> 1354 + <TabTitleComponent {...props} sTabName={sEntireTabNameNew} />
1349 )} 1355 )}
1350 <Tabs 1356 <Tabs
1351 destroyInactiveTabPane 1357 destroyInactiveTabPane
@@ -1371,7 +1377,9 @@ const CommonModelComponent = props =&gt; { @@ -1371,7 +1377,9 @@ const CommonModelComponent = props =&gt; {
1371 !props.hideTabList.includes(item.sName) 1377 !props.hideTabList.includes(item.sName)
1372 ) 1378 )
1373 .map((config, index) => { 1379 .map((config, index) => {
1374 - const { sName, sTabName } = config; 1380 + const { sName, sEnglishTabName, sBig5TabName, sTabName } = config;
  1381 + const sTabNewName = sLanguage ==='sEnglish' ? sEnglishTabName : sLanguage ==='sBig5' ?
  1382 + sBig5TabName : sTabName;
1375 let disabled = false; 1383 let disabled = false;
1376 1384
1377 if (sTabName === "拼接列表" && sName === "slaveWypj3") { 1385 if (sTabName === "拼接列表" && sName === "slaveWypj3") {
@@ -1419,7 +1427,7 @@ const CommonModelComponent = props =&gt; { @@ -1419,7 +1427,7 @@ const CommonModelComponent = props =&gt; {
1419 1427
1420 return ( 1428 return (
1421 <TabPane 1429 <TabPane
1422 - tab={tabName} 1430 + tab={sTabNewName}
1423 key={`${sName}_${sTabName}`} 1431 key={`${sName}_${sTabName}`}
1424 disabled={disabled} 1432 disabled={disabled}
1425 > 1433 >
@@ -1576,7 +1584,7 @@ const CommonViewTableComponent = props =&gt; { @@ -1576,7 +1584,7 @@ const CommonViewTableComponent = props =&gt; {
1576 const handleReportInfo = (config = null) => { 1584 const handleReportInfo = (config = null) => {
1577 reportRef.current = config; 1585 reportRef.current = config;
1578 setReportInfoVisible(!reportInfoVisible); 1586 setReportInfoVisible(!reportInfoVisible);
1579 - }; 1587 + };
1580 1588
1581 return ( 1589 return (
1582 <> 1590 <>
src/mes/common/commonOperationBarComponent/index.js
@@ -78,26 +78,6 @@ const useCommonOperationBarComponentEvent = props =&gt; { @@ -78,26 +78,6 @@ const useCommonOperationBarComponentEvent = props =&gt; {
78 // 按钮点击事件 78 // 按钮点击事件
79 const clickRef = useRef(null); 79 const clickRef = useRef(null);
80 const handleBtnClick = async (config, searchField) => { 80 const handleBtnClick = async (config, searchField) => {
81 - if (config?.sMinValue === "99") { // 二次确认  
82 - const result = await new Promise(resolve => {  
83 - Modal.confirm({  
84 - title: "温馨提示:",  
85 - content: "是否确认此操作?",  
86 - okText: "确认",  
87 - cancelText: "取消",  
88 - onOk() {  
89 - setTimeout(() => {  
90 - resolve(true);  
91 - }, 500);  
92 - },  
93 - onCancel() {  
94 - resolve(false);  
95 - }  
96 - });  
97 - });  
98 - if (!result) return;  
99 - }  
100 -  
101 // 限制半秒内只能点一次 81 // 限制半秒内只能点一次
102 if (clickRef.current) return; 82 if (clickRef.current) return;
103 clickRef.current = true; 83 clickRef.current = true;
@@ -109,6 +89,9 @@ const useCommonOperationBarComponentEvent = props =&gt; { @@ -109,6 +89,9 @@ const useCommonOperationBarComponentEvent = props =&gt; {
109 const { sName } = props; 89 const { sName } = props;
110 const { sActiveId, sButtonParam, sInstruct, sControlName } = config; 90 const { sActiveId, sButtonParam, sInstruct, sControlName } = config;
111 91
  92 + const delayedOvertime = commonFunc.showLocalMessage(props, 'delayedOvertime', '延迟加班');
  93 + const cancelDelayedOvertime = commonFunc.showLocalMessage(props, 'cancelDelayedOvertime', '取消延迟加班');
  94 +
112 // 自定义按钮事件 95 // 自定义按钮事件
113 if ( 96 if (
114 costomPageFun({ 97 costomPageFun({
@@ -254,7 +237,7 @@ const useCommonOperationBarComponentEvent = props =&gt; { @@ -254,7 +237,7 @@ const useCommonOperationBarComponentEvent = props =&gt; {
254 }, 237 },
255 btnConfig: { 238 btnConfig: {
256 sId: config.sId, 239 sId: config.sId,
257 - showName: !bDelayedOvertime ? "延迟加班" : "取消延迟加班", 240 + showName: !bDelayedOvertime ? delayedOvertime : cancelDelayedOvertime,
258 sInstruct: JSON.stringify([ 241 sInstruct: JSON.stringify([
259 { 242 {
260 opr: "procedure", 243 opr: "procedure",
@@ -491,6 +474,10 @@ const useCommonOperationBarComponentEvent = props =&gt; { @@ -491,6 +474,10 @@ const useCommonOperationBarComponentEvent = props =&gt; {
491 474
492 const { sDefault } = config; 475 const { sDefault } = config;
493 476
  477 + const delayedOvertime = commonFunc.showLocalMessage(props, 'delayedOvertime', '延迟加班');
  478 + const cancelDelayedOvertime = commonFunc.showLocalMessage(props, 'cancelDelayedOvertime', '取消延迟加班');
  479 +
  480 +
494 // 根据sDefault配置控制按钮是否可以操作 481 // 根据sDefault配置控制按钮是否可以操作
495 if (sDefault && sDefault.includes("${")) { 482 if (sDefault && sDefault.includes("${")) {
496 // 当前页面全部数据 483 // 当前页面全部数据
@@ -617,7 +604,6 @@ const useCommonOperationBarComponentEvent = props =&gt; { @@ -617,7 +604,6 @@ const useCommonOperationBarComponentEvent = props =&gt; {
617 } 604 }
618 defaultProps.style = style; 605 defaultProps.style = style;
619 } 606 }
620 -  
621 // 隐藏salveWydm2表的新增托盘 607 // 隐藏salveWydm2表的新增托盘
622 if (props.sName === "salveWydm2" && config.sControlName === "BtnLeft.Add") { 608 if (props.sName === "salveWydm2" && config.sControlName === "BtnLeft.Add") {
623 defaultProps.style = defaultProps.style || {}; 609 defaultProps.style = defaultProps.style || {};
@@ -651,7 +637,7 @@ const useCommonOperationBarComponentEvent = props =&gt; { @@ -651,7 +637,7 @@ const useCommonOperationBarComponentEvent = props =&gt; {
651 defaultProps.id = "salveWybz2Print1"; 637 defaultProps.id = "salveWybz2Print1";
652 } else if (config.sControlName === "BtnRight.DelayWork") { 638 } else if (config.sControlName === "BtnRight.DelayWork") {
653 const { bDelayedOvertime } = commonUtils.getAppData("userinfo"); 639 const { bDelayedOvertime } = commonUtils.getAppData("userinfo");
654 - config.showName = bDelayedOvertime ? "取消延迟加班" : "延迟加班"; 640 + config.showName = bDelayedOvertime ? cancelDelayedOvertime : delayedOvertime;
655 let style = { width: "150px" }; 641 let style = { width: "150px" };
656 defaultProps.style = style; 642 defaultProps.style = style;
657 } 643 }
@@ -1007,8 +993,9 @@ const CommonOperationBarComponent = basProps =&gt; { @@ -1007,8 +993,9 @@ const CommonOperationBarComponent = basProps =&gt; {
1007 return ""; 993 return "";
1008 } 994 }
1009 995
  996 + const btnSearch = commonFunc.showLocalMessage(props, 'btnSearch', '查询');
1010 return ( 997 return (
1011 - <div className={`${styles.commonOperationBar} commonOperationBar2`}> 998 + <div className={styles.commonOperationBar}>
1012 <div className="leftBar"> 999 <div className="leftBar">
1013 <Space> 1000 <Space>
1014 {btnLeftConfig.map(item => { 1001 {btnLeftConfig.map(item => {
@@ -1078,7 +1065,7 @@ const CommonOperationBarComponent = basProps =&gt; { @@ -1078,7 +1065,7 @@ const CommonOperationBarComponent = basProps =&gt; {
1078 <> 1065 <>
1079 <ShowType {...showTypeProps} /> 1066 <ShowType {...showTypeProps} />
1080 <Button type="primary" size="large" onClick={handleBtnSearch}> 1067 <Button type="primary" size="large" onClick={handleBtnSearch}>
1081 - 查询 1068 + {btnSearch}
1082 </Button> 1069 </Button>
1083 </> 1070 </>
1084 )} 1071 )}
src/mes/common/faceCollectionComponent/index.js
@@ -4,6 +4,7 @@ import * as commonUtils from &quot;@/utils/utils&quot;; @@ -4,6 +4,7 @@ import * as commonUtils from &quot;@/utils/utils&quot;;
4 import FaceDetect from "@/components/FaceDetect"; 4 import FaceDetect from "@/components/FaceDetect";
5 import ShowType from "@/components/Common/CommonComponent"; 5 import ShowType from "@/components/Common/CommonComponent";
6 import useCommonBase from "@/components/Common/CommonHooks/useCommonBase"; 6 import useCommonBase from "@/components/Common/CommonHooks/useCommonBase";
  7 +import * as commonFunc from "@/components/Common/commonFunc";
7 8
8 import styles from "./index.less"; 9 import styles from "./index.less";
9 10
@@ -50,6 +51,15 @@ const FaceCollectionComponent = baseProps =&gt; { @@ -50,6 +51,15 @@ const FaceCollectionComponent = baseProps =&gt; {
50 ); 51 );
51 52
52 const { faceCollectionData = [] } = props; 53 const { faceCollectionData = [] } = props;
  54 + const faceCollection = commonFunc.showLocalMessage(props, 'faceCollection', '人脸采集');
  55 +
  56 + const faceCollectionSucess = commonFunc.showLocalMessage(props, 'faceCollectionSucess', '人脸采集成功');
  57 +
  58 + const selectUser = commonFunc.showLocalMessage(props, 'selectUser', '请选择用户');
  59 +
  60 + const BtnCancel = commonFunc.showLocalMessage(props, 'BtnCancel', '取消');
  61 + const BtnNext = commonFunc.showLocalMessage(props, 'BtnNext', '下一步');
  62 +
53 63
54 const showDropDown = faceCollectionData.reduce((pre, item) => { 64 const showDropDown = faceCollectionData.reduce((pre, item) => {
55 return { 65 return {
@@ -94,7 +104,7 @@ const FaceCollectionComponent = baseProps =&gt; { @@ -94,7 +104,7 @@ const FaceCollectionComponent = baseProps =&gt; {
94 104
95 const handleNexStep = async () => { 105 const handleNexStep = async () => {
96 if (!dataValue) { 106 if (!dataValue) {
97 - message.error("请先选择用户!"); 107 + message.error({selectUser});
98 return; 108 return;
99 } 109 }
100 110
@@ -104,7 +114,7 @@ const FaceCollectionComponent = baseProps =&gt; { @@ -104,7 +114,7 @@ const FaceCollectionComponent = baseProps =&gt; {
104 ); 114 );
105 115
106 const modal = Modal.info({ 116 const modal = Modal.info({
107 - title: "人脸识别", 117 + title: faceCollection,
108 keyboard: false, 118 keyboard: false,
109 content: ( 119 content: (
110 <FaceDetect 120 <FaceDetect
@@ -116,7 +126,7 @@ const FaceCollectionComponent = baseProps =&gt; { @@ -116,7 +126,7 @@ const FaceCollectionComponent = baseProps =&gt; {
116 }} 126 }}
117 loginAfterInit 127 loginAfterInit
118 onSaveFaceSuccess={() => { 128 onSaveFaceSuccess={() => {
119 - message.success("人脸采集成功!"); 129 + message.success(faceCollectionSucess);
120 modal.destroy(); 130 modal.destroy();
121 onCancel(); 131 onCancel();
122 }} 132 }}
@@ -124,7 +134,7 @@ const FaceCollectionComponent = baseProps =&gt; { @@ -124,7 +134,7 @@ const FaceCollectionComponent = baseProps =&gt; {
124 /> 134 />
125 ), 135 ),
126 wrapClassName: "xlyFaceAuthModal", 136 wrapClassName: "xlyFaceAuthModal",
127 - okText: "取消", 137 + okText: BtnCancel,
128 onOk() { 138 onOk() {
129 modal.destroy(); 139 modal.destroy();
130 } 140 }
@@ -134,20 +144,20 @@ const FaceCollectionComponent = baseProps =&gt; { @@ -134,20 +144,20 @@ const FaceCollectionComponent = baseProps =&gt; {
134 return ( 144 return (
135 <Modal 145 <Modal
136 open={visible} 146 open={visible}
137 - title="人脸采集" 147 + title={faceCollection}
138 width={400} 148 width={400}
139 height={250} 149 height={250}
140 className="mesCommonModal mesLoginForm" 150 className="mesCommonModal mesLoginForm"
141 footer={ 151 footer={
142 <Button type="primary" size="large" onClick={handleNexStep}> 152 <Button type="primary" size="large" onClick={handleNexStep}>
143 - 下一步 153 + {BtnNext}
144 </Button> 154 </Button>
145 } 155 }
146 onCancel={onCancel} 156 onCancel={onCancel}
147 > 157 >
148 <div className={styles.faceCollection}> 158 <div className={styles.faceCollection}>
149 <Form layout="vertical" size="large"> 159 <Form layout="vertical" size="large">
150 - <Form.Item label={"请选择用户"}> 160 + <Form.Item label={selectUser}>
151 <ShowType {...showTypeProps} /> 161 <ShowType {...showTypeProps} />
152 </Form.Item> 162 </Form.Item>
153 </Form> 163 </Form>
src/mes/common/siderInfoComponent/index.js
@@ -239,6 +239,8 @@ const useSiderInfoComponentEvent = props =&gt; { @@ -239,6 +239,8 @@ const useSiderInfoComponentEvent = props =&gt; {
239 239
240 const SiderInfoComponent = baseProps => { 240 const SiderInfoComponent = baseProps => {
241 const props = useSiderInfoComponentEvent(baseProps); 241 const props = useSiderInfoComponentEvent(baseProps);
  242 + const workLoading = commonFunc.showLocalMessage(props, 'workLoading', '工单数据加载中...');
  243 + const waitWorkLoading = commonFunc.showLocalMessage(props, 'waitWorkLoading', '工单数据加载中...');
242 const leftClass = cx({ 244 const leftClass = cx({
243 siderInfoComponent: true 245 siderInfoComponent: true
244 }); 246 });
@@ -255,7 +257,7 @@ const SiderInfoComponent = baseProps =&gt; { @@ -255,7 +257,7 @@ const SiderInfoComponent = baseProps =&gt; {
255 <Spin 257 <Spin
256 spinning={props.pageloading1} 258 spinning={props.pageloading1}
257 size="large" 259 size="large"
258 - tip="工单数据加载中..." 260 + tip={workLoading}
259 /> 261 />
260 </div> 262 </div>
261 ) : ( 263 ) : (
@@ -350,12 +352,14 @@ const WorkOrderTypeComponent = () =&gt; { @@ -350,12 +352,14 @@ const WorkOrderTypeComponent = () =&gt; {
350 const [productionDivId] = useState( 352 const [productionDivId] = useState(
351 `productionDivId_${commonUtils.createSid()}` 353 `productionDivId_${commonUtils.createSid()}`
352 ); 354 );
  355 + const task= commonFunc.showLocalMessage(props, 'task', '任务:工单信息');
  356 + const specialFocus= commonFunc.showLocalMessage(props, 'specialFocus', '任务:工单信息');
353 357
354 return ( 358 return (
355 <div className={styles.workOrdertype} ref={ref}> 359 <div className={styles.workOrdertype} ref={ref}>
356 <div className="mesTitle"> 360 <div className="mesTitle">
357 <img src={iocnObj.taskIcon} /> 361 <img src={iocnObj.taskIcon} />
358 - 任务:工单信息 362 + {task}
359 </div> 363 </div>
360 <Carousel ref={carouselRef}> 364 <Carousel ref={carouselRef}>
361 {/* { 365 {/* {
@@ -488,7 +492,7 @@ const WorkOrderTypeComponent = () =&gt; { @@ -488,7 +492,7 @@ const WorkOrderTypeComponent = () =&gt; {
488 flex={"160px"} 492 flex={"160px"}
489 className={styles.productionTitle} 493 className={styles.productionTitle}
490 > 494 >
491 - 特别关注: 495 + {specialFocus}
492 </Col> 496 </Col>
493 <Col 497 <Col
494 flex={1} 498 flex={1}
@@ -633,12 +637,13 @@ const DeviceTargetInfoComponent = () =&gt; { @@ -633,12 +637,13 @@ const DeviceTargetInfoComponent = () =&gt; {
633 enabled: false 637 enabled: false
634 }; 638 };
635 }; 639 };
  640 + const equipmentTargetInformation = commonFunc.showLocalMessage(props, 'equipmentTargetInformation', '设备及目标信息');
636 641
637 return ( 642 return (
638 <div className={styles.deviceTargetInfo}> 643 <div className={styles.deviceTargetInfo}>
639 <div className="mesTitle" style={{ padding: "10px 10px 5px" }}> 644 <div className="mesTitle" style={{ padding: "10px 10px 5px" }}>
640 <img src={iocnObj.facilityIcon} /> 645 <img src={iocnObj.facilityIcon} />
641 - 设备及目标信息 646 + {equipmentTargetInformation}
642 </div> 647 </div>
643 {showConfig.map((config, index) => { 648 {showConfig.map((config, index) => {
644 if (index > 4) return ""; 649 if (index > 4) return "";
@@ -756,6 +761,13 @@ const TeamInfoComponent = () =&gt; { @@ -756,6 +761,13 @@ const TeamInfoComponent = () =&gt; {
756 const teamShiftInfo = props.teamShiftInfoData?.[0] || {}; 761 const teamShiftInfo = props.teamShiftInfoData?.[0] || {};
757 const { sEmployeeName = "", sEmployeeNo = "" } = teamShiftInfo; 762 const { sEmployeeName = "", sEmployeeNo = "" } = teamShiftInfo;
758 763
  764 + const teamInformation= commonFunc.showLocalMessage(props, 'teamInformation', '班组信息');
  765 +
  766 + const captain = commonFunc.showLocalMessage(props, 'captain', '机长');
  767 +
  768 + const shift = commonFunc.showLocalMessage(props, 'shift', '班次');
  769 +
  770 + const classGroup = commonFunc.showLocalMessage(props, 'classGroup', '班组');
759 // 当前上班机长人员 771 // 当前上班机长人员
760 const { sActualEmployeeName, sActualEmployeeNo } = tableProps.data[0] || {}; 772 const { sActualEmployeeName, sActualEmployeeNo } = tableProps.data[0] || {};
761 773
@@ -765,7 +777,7 @@ const TeamInfoComponent = () =&gt; { @@ -765,7 +777,7 @@ const TeamInfoComponent = () =&gt; {
765 <div className={styles.teamInfo}> 777 <div className={styles.teamInfo}>
766 <div className="mesTitle"> 778 <div className="mesTitle">
767 <img src={iocnObj.groupIcon} /> 779 <img src={iocnObj.groupIcon} />
768 - 班组信息 780 + {teamInformation}
769 </div> 781 </div>
770 <Row gutter="5" wrap={false}> 782 <Row gutter="5" wrap={false}>
771 <Col flex={"160px"}> 783 <Col flex={"160px"}>
@@ -784,15 +796,15 @@ const TeamInfoComponent = () =&gt; { @@ -784,15 +796,15 @@ const TeamInfoComponent = () =&gt; {
784 <img src={iocnObj.userImg} /> 796 <img src={iocnObj.userImg} />
785 )} 797 )}
786 <div className="user"> 798 <div className="user">
787 - <span>机长:</span> 799 + <span>{captain}:</span>
788 <span>{sActualEmployeeName || sEmployeeName}</span> 800 <span>{sActualEmployeeName || sEmployeeName}</span>
789 </div> 801 </div>
790 <div> 802 <div>
791 - <span>班组:</span> 803 + <span>{classGroup}:</span>
792 <span>{sTeamNo}</span> 804 <span>{sTeamNo}</span>
793 </div> 805 </div>
794 <div> 806 <div>
795 - <span>班次:</span> 807 + <span>{shift}:</span>
796 <span>{sShift == 1 ? "白班" : "夜班"}</span> 808 <span>{sShift == 1 ? "白班" : "夜班"}</span>
797 </div> 809 </div>
798 </Col> 810 </Col>
src/mes/indexMes/index.js
@@ -30,7 +30,10 @@ import { @@ -30,7 +30,10 @@ import {
30 SwapOutlined, 30 SwapOutlined,
31 AppstoreOutlined 31 AppstoreOutlined
32 } from "@ant-design/icons"; 32 } from "@ant-design/icons";
  33 +import * as commonFunc from "@/components/Common/commonFunc";
33 import zhCN from "antd/lib/locale-provider/zh_CN"; 34 import zhCN from "antd/lib/locale-provider/zh_CN";
  35 +import enUS from 'antd/lib/locale-provider/en_US'; // 导入英文语言包
  36 +import zhTW from 'antd/lib/locale-provider/zh_TW'; // 导入繁体中文语言包
34 import Draggable from 'react-draggable'; 37 import Draggable from 'react-draggable';
35 38
36 39
@@ -100,6 +103,10 @@ const OpenModalEditPwd = props =&gt; { @@ -100,6 +103,10 @@ const OpenModalEditPwd = props =&gt; {
100 sUserPwdAgain: "", 103 sUserPwdAgain: "",
101 sId: props.app.userinfo.sId 104 sId: props.app.userinfo.sId
102 }); 105 });
  106 + const oldPassword = commonFunc.showLocalMessage(props, 'oldPassword', '请输入原密码');
  107 + const newPassword = commonFunc.showLocalMessage(props, 'newPassword', '请输入新密码');
  108 + const passswordAgain = commonFunc.showLocalMessage(props, 'passswordAgain', '请再次输入密码');
  109 + const ModifyPassword = commonFunc.showLocalMessage(props, 'ModifyPassword','修改密码');/* 修改 */
103 // 确认修改密码 110 // 确认修改密码
104 const handleOk = () => { 111 const handleOk = () => {
105 const url = `${ 112 const url = `${
@@ -127,24 +134,24 @@ const OpenModalEditPwd = props =&gt; { @@ -127,24 +134,24 @@ const OpenModalEditPwd = props =&gt; {
127 return ( 134 return (
128 <Modal 135 <Modal
129 className="mesCommonModal mesComfirm" 136 className="mesCommonModal mesComfirm"
130 - title="修改密码" 137 + title={ModifyPassword}
131 open={hooksProps.isEditPwd} 138 open={hooksProps.isEditPwd}
132 onOk={handleOk} 139 onOk={handleOk}
133 onCancel={() => dispatch(["saveState", { isEditPwd: false }])} 140 onCancel={() => dispatch(["saveState", { isEditPwd: false }])}
134 > 141 >
135 <Input 142 <Input
136 style={{ ...inputStyle, marginTop: 0 }} 143 style={{ ...inputStyle, marginTop: 0 }}
137 - placeholder="请输入原密码" 144 + placeholder={oldPassword}
138 onChange={e => setPwdForm({ ...pwdForm, sOldPwd: e.target.value })} 145 onChange={e => setPwdForm({ ...pwdForm, sOldPwd: e.target.value })}
139 /> 146 />
140 <Input 147 <Input
141 style={inputStyle} 148 style={inputStyle}
142 - placeholder="请输入新密码" 149 + placeholder={newPassword}
143 onChange={e => setPwdForm({ ...pwdForm, sUserPwd: e.target.value })} 150 onChange={e => setPwdForm({ ...pwdForm, sUserPwd: e.target.value })}
144 /> 151 />
145 <Input 152 <Input
146 style={inputStyle} 153 style={inputStyle}
147 - placeholder="请再次确认密码" 154 + placeholder={passswordAgain}
148 onChange={e => 155 onChange={e =>
149 setPwdForm({ ...pwdForm, sUserPwdAgain: e.target.value }) 156 setPwdForm({ ...pwdForm, sUserPwdAgain: e.target.value })
150 } 157 }
@@ -431,9 +438,24 @@ const IndexMes = baseProps =&gt; { @@ -431,9 +438,24 @@ const IndexMes = baseProps =&gt; {
431 const getServiceError = async returnData => { 438 const getServiceError = async returnData => {
432 props.dispatch({ type: "app/throwErrorMes", payload: returnData }); 439 props.dispatch({ type: "app/throwErrorMes", payload: returnData });
433 }; 440 };
  441 + const currentLanguage = props?.app?.userinfo?.sLanguage || 'zhCN'; // 默认为中文
  442 + const getLocale = () => {
  443 + switch(currentLanguage) {
  444 + case 'sEnglish':
  445 + return enUS;
  446 + case 'sBig5':
  447 + return zhTW;
  448 + default:
  449 + {
  450 + moment.locale('zh-cn');
  451 + return zhCN;
  452 + }
  453 + }
  454 + };
  455 + const bExsitLogin = commonFunc.showLocalMessage(props, 'bExsitLogin', '是否退出登录');
434 456
435 return ( 457 return (
436 - <ConfigProvider locale={zhCN}> 458 + <ConfigProvider locale={getLocale()}>
437 <myContext.Provider 459 <myContext.Provider
438 value={{ 460 value={{
439 props, 461 props,
@@ -454,7 +476,7 @@ const IndexMes = baseProps =&gt; { @@ -454,7 +476,7 @@ const IndexMes = baseProps =&gt; {
454 {logoutShow && ( 476 {logoutShow && (
455 <DraggableConfirmModal 477 <DraggableConfirmModal
456 btnShow={false} 478 btnShow={false}
457 - content={"是否退出登录"} 479 + content={bExsitLogin}
458 onOk={() => { 480 onOk={() => {
459 handleColseOee(); 481 handleColseOee();
460 setLogoutShow(false); 482 setLogoutShow(false);
@@ -474,15 +496,20 @@ const IndexMes = baseProps =&gt; { @@ -474,15 +496,20 @@ const IndexMes = baseProps =&gt; {
474 // 头部 496 // 头部
475 const HeaderConponent = () => { 497 const HeaderConponent = () => {
476 const { props } = useContext(myContext); 498 const { props } = useContext(myContext);
  499 + const { app } = props;
  500 + const { userinfo, sMachineNameStr, sTeamNameSName } = app;
  501 + const { sUserNameBak: sUserName, sShift } = userinfo;
477 502
478 - const weekday = ["日", "一", "二", "三", "四", "五", "六"]; 503 + const sLanguage = userinfo.sLanguage;
  504 + let weekday = ["日", "一", "二", "三", "四", "五", "六"];
  505 + const sunTitle = sLanguage ==='sChinese' ? '星期' : '';
479 const [time, setTime] = useState("0000-00-00 00:00:00"); 506 const [time, setTime] = useState("0000-00-00 00:00:00");
480 const { logout } = useContext(myContext); 507 const { logout } = useContext(myContext);
481 useEffect(() => { 508 useEffect(() => {
482 const getTime = () => { 509 const getTime = () => {
483 const currentTime = moment().format("YYYY-MM-DD HH:mm:ss"); 510 const currentTime = moment().format("YYYY-MM-DD HH:mm:ss");
484 const currentWeek = moment().weekday(); 511 const currentWeek = moment().weekday();
485 - setTime(`${currentTime}${" "}${" "}星期${weekday[currentWeek]}`); 512 + setTime(`${currentTime}${" "}${" "}${sunTitle}${weekday[currentWeek]}`);
486 }; 513 };
487 514
488 getTime(); 515 getTime();
@@ -495,9 +522,50 @@ const HeaderConponent = () =&gt; { @@ -495,9 +522,50 @@ const HeaderConponent = () =&gt; {
495 }; 522 };
496 }, []); 523 }, []);
497 524
498 - const { app } = props;  
499 - const { userinfo, sMachineNameStr, sTeamNameSName } = app;  
500 - const { sUserNameBak: sUserName, sShift } = userinfo; 525 +
  526 + const logoTitle = commonFunc.showLocalMessage(props, 'EBC-MES', '小羚羊生产执行系统');
  527 + const account= commonFunc.showLocalMessage(props, 'account', '账号');
  528 + const machine= commonFunc.showLocalMessage(props, 'machine', '机台');
  529 + const classGroup = commonFunc.showLocalMessage(props, 'classGroup', '班组');
  530 + const dayShift = commonFunc.showLocalMessage(props, 'dayShift', '白班');
  531 + const nightShift = commonFunc.showLocalMessage(props, 'nightShift', '夜班');
  532 + const delayedOvertime = commonFunc.showLocalMessage(props, 'delayedOvertime', '延迟加班');
  533 +
  534 + function translateWeekdays() {
  535 + // 中文星期数组
  536 + let weekday = ["日", "一", "二", "三", "四", "五", "六"];
  537 +
  538 + // 定义中英文和繁体中文星期的映射关系
  539 + const translations = {
  540 + sEnglish: {
  541 + "日": "Sunday",
  542 + "一": "Monday",
  543 + "二": "Tuesday",
  544 + "三": "Wednesday",
  545 + "四": "Thursday",
  546 + "五": "Friday",
  547 + "六": "Saturday"
  548 + },
  549 + sBig5: {
  550 + "日": "日",
  551 + "一": "一",
  552 + "二": "二",
  553 + "三": "三",
  554 + "四": "四",
  555 + "五": "五",
  556 + "六": "六"
  557 + }
  558 + };
  559 +
  560 + // 根据用户语言设置进行转换(默认为中文)
  561 + if (userinfo.sLanguage === 'sEnglish' || userinfo.sLanguage === 'sBig5') {
  562 + return weekday.map(day => translations[userinfo.sLanguage][day] || day);
  563 + }
  564 +
  565 + return weekday;
  566 + }
  567 + weekday = translateWeekdays(sLanguage);
  568 +
501 569
502 570
503 571
@@ -521,25 +589,25 @@ const HeaderConponent = () =&gt; { @@ -521,25 +589,25 @@ const HeaderConponent = () =&gt; {
521 <img src={logo} alt="logo" /> 589 <img src={logo} alt="logo" />
522 </div> 590 </div>
523 <div className="title"> 591 <div className="title">
524 - <span>劲嘉生产执行系统(EBC-MES)</span> 592 + <span>{logoTitle}</span>
525 </div> 593 </div>
526 <div className="userInfo"> 594 <div className="userInfo">
527 <Space size={30}> 595 <Space size={30}>
528 <div> 596 <div>
529 - <span>账号:</span> 597 + <span>{account}:</span>
530 <span>{sUserName}</span> 598 <span>{sUserName}</span>
531 </div> 599 </div>
532 <div> 600 <div>
533 - <span>机台:</span> 601 + <span>{machine}:</span>
534 <span>{sMachineNameStr}</span> 602 <span>{sMachineNameStr}</span>
535 </div> 603 </div>
536 <div> 604 <div>
537 - <span>班组:</span> 605 + <span>{classGroup}:</span>
538 <span>{sTeamNameSName}</span> 606 <span>{sTeamNameSName}</span>
539 - <span>({sShift == 1 ? "白班" : "夜班"})</span> 607 + <span>({sShift == 1 ? dayShift : nightShift})</span>
540 </div> 608 </div>
541 <div> 609 <div>
542 - <span>{userinfo.bDelayedOvertime ? "延时加班" : ""}</span> 610 + <span>{userinfo.bDelayedOvertime ? delayedOvertime : ""}</span>
543 </div> 611 </div>
544 </Space> 612 </Space>
545 </div> 613 </div>
@@ -550,17 +618,17 @@ const HeaderConponent = () =&gt; { @@ -550,17 +618,17 @@ const HeaderConponent = () =&gt; {
550 <div className="logout" onClick={logout} /> 618 <div className="logout" onClick={logout} />
551 </div> 619 </div>
552 620
553 - <Modal  
554 - title="Basic Modal"  
555 - open={isModalOpen} 621 + <Modal
  622 + title="Basic Modal"
  623 + open={isModalOpen}
556 width={'100vw'} 624 width={'100vw'}
557 height={'100vh'} 625 height={'100vh'}
558 - onCancel={handleCancel}  
559 - footer={null} 626 + onCancel={handleCancel}
  627 + footer={null}
560 mask={false} 628 mask={false}
561 closable={false} 629 closable={false}
562 destroyOnClose={true} 630 destroyOnClose={true}
563 - maskClosable={false} 631 + maskClosable={false}
564 wrapClassName={ styles.ztwwwww }> 632 wrapClassName={ styles.ztwwwww }>
565 <MachineMessageComponent e={objRef.current} shutDown={handleCancel} /> 633 <MachineMessageComponent e={objRef.current} shutDown={handleCancel} />
566 </Modal> 634 </Modal>
@@ -583,30 +651,30 @@ const MachineMessageComponent = ({ e , shutDown }) =&gt; { @@ -583,30 +651,30 @@ const MachineMessageComponent = ({ e , shutDown }) =&gt; {
583 const getTime = () => { 651 const getTime = () => {
584 const currentTimeNew = moment().format("YYYY-MM-DD HH:mm:ss"); 652 const currentTimeNew = moment().format("YYYY-MM-DD HH:mm:ss");
585 setCurrentTime(currentTimeNew); 653 setCurrentTime(currentTimeNew);
586 - 654 +
587 const duration = moment.duration( 655 const duration = moment.duration(
588 moment(currentTimeNew).diff(moment(startTime)) 656 moment(currentTimeNew).diff(moment(startTime))
589 ); 657 );
590 const hours = duration.asHours().toString().split(".")[0]; 658 const hours = duration.asHours().toString().split(".")[0];
591 const minutes = (duration.asMinutes() % 60).toString().split(".")[0]; 659 const minutes = (duration.asMinutes() % 60).toString().split(".")[0];
592 const seconds = duration.asSeconds() % 60; 660 const seconds = duration.asSeconds() % 60;
593 - 661 +
594 setDiffHours(hours<=9? `0${hours}`: hours); 662 setDiffHours(hours<=9? `0${hours}`: hours);
595 setDiffMins(minutes<=9? `0${minutes}`: minutes ); 663 setDiffMins(minutes<=9? `0${minutes}`: minutes );
596 setDiffSecs(seconds<=9? `0${seconds}`: seconds); 664 setDiffSecs(seconds<=9? `0${seconds}`: seconds);
597 }; 665 };
598 - 666 +
599 getTime(); 667 getTime();
600 const timer = setInterval(() => { 668 const timer = setInterval(() => {
601 console.log('定时器状态') 669 console.log('定时器状态')
602 getTime(); 670 getTime();
603 }, 1000); 671 }, 1000);
604 - 672 +
605 return () => { 673 return () => {
606 clearInterval(timer); 674 clearInterval(timer);
607 }; 675 };
608 }, []); 676 }, []);
609 - 677 +
610 const handleMenuClose = () => { 678 const handleMenuClose = () => {
611 Modal.confirm({ 679 Modal.confirm({
612 title: "温馨提示:", 680 title: "温馨提示:",
@@ -621,7 +689,7 @@ const MachineMessageComponent = ({ e , shutDown }) =&gt; { @@ -621,7 +689,7 @@ const MachineMessageComponent = ({ e , shutDown }) =&gt; {
621 }); 689 });
622 }; 690 };
623 691
624 - 692 +
625 const isMinMax = useRef('max'); 693 const isMinMax = useRef('max');
626 const draggleRef = useRef(null); 694 const draggleRef = useRef(null);
627 const [bounds, setBounds] = useState({ left: 0, top: 0, bottom: 0, right: 0 }); 695 const [bounds, setBounds] = useState({ left: 0, top: 0, bottom: 0, right: 0 });
@@ -639,7 +707,7 @@ const MachineMessageComponent = ({ e , shutDown }) =&gt; { @@ -639,7 +707,7 @@ const MachineMessageComponent = ({ e , shutDown }) =&gt; {
639 }); 707 });
640 }; 708 };
641 709
642 - 710 +
643 return ( 711 return (
644 <div className={`${styles.modalBoxStyle} ${isMinMax.current}`}> 712 <div className={`${styles.modalBoxStyle} ${isMinMax.current}`}>
645 713
@@ -689,53 +757,67 @@ const MachineMessageComponent = ({ e , shutDown }) =&gt; { @@ -689,53 +757,67 @@ const MachineMessageComponent = ({ e , shutDown }) =&gt; {
689 </div> 757 </div>
690 ); 758 );
691 }; 759 };
692 -  
693 760
694 761
695 762
696 -// 左侧侧边栏 763 +
  764 + // 左侧侧边栏
697 const SiderComponent = () => { 765 const SiderComponent = () => {
698 const { dispatch, hooksProps, props, ...rest } = useContext(myContext); 766 const { dispatch, hooksProps, props, ...rest } = useContext(myContext);
699 const { currentContent, menuMap } = hooksProps; 767 const { currentContent, menuMap } = hooksProps;
  768 +
  769 + const teamInformation= commonFunc.showLocalMessage(props, 'teamInformation', '班组信息');
  770 + console.log('2222', teamInformation);
  771 +
  772 + const scheduledTask= commonFunc.showLocalMessage(props, 'scheduledTask', '计划任务');
  773 +
  774 + const productionExecution= commonFunc.showLocalMessage(props, 'productionExecution', '生产执行');
  775 +
  776 + const maintenanceRepair= commonFunc.showLocalMessage(props, 'maintenanceRepair', '维修保养');
  777 +
  778 + const queryTracing= commonFunc.showLocalMessage(props, 'queryTracing', '查询追踪');
  779 +
  780 + const operationGuide= commonFunc.showLocalMessage(props, 'teamInformation', '操作指南');
  781 +
700 const menuList = [ 782 const menuList = [
701 { 783 {
702 id: "teamInfo", 784 id: "teamInfo",
703 - title: "班组信息", 785 + title: teamInformation,
704 path: "/indexMes/teamInfo", 786 path: "/indexMes/teamInfo",
705 icon: teamIcon, 787 icon: teamIcon,
706 c_icon: c_teamIcon 788 c_icon: c_teamIcon
707 }, 789 },
708 { 790 {
709 id: "scheduledTasks", 791 id: "scheduledTasks",
710 - title: "计划任务", 792 + title: scheduledTask,
711 path: "/indexMes/scheduledTasks", 793 path: "/indexMes/scheduledTasks",
712 icon: planTaskIcon, 794 icon: planTaskIcon,
713 c_icon: c_planTaskIcon 795 c_icon: c_planTaskIcon
714 }, 796 },
715 { 797 {
716 id: "productionExec", 798 id: "productionExec",
717 - title: "生产执行", 799 + title: productionExecution,
718 path: "/indexMes/productionExec", 800 path: "/indexMes/productionExec",
719 icon: proExeIcon, 801 icon: proExeIcon,
720 c_icon: c_proExeIcon 802 c_icon: c_proExeIcon
721 }, 803 },
722 { 804 {
723 id: "serviceUpkeep", 805 id: "serviceUpkeep",
724 - title: "维修保养", 806 + title: maintenanceRepair,
725 path: "/indexMes/serviceUpkeep", 807 path: "/indexMes/serviceUpkeep",
726 icon: serviceIcon, 808 icon: serviceIcon,
727 c_icon: c_serviceIcon 809 c_icon: c_serviceIcon
728 }, 810 },
729 { 811 {
730 id: "queryTracking", 812 id: "queryTracking",
731 - title: "查询追踪", 813 + title: queryTracing,
732 path: "/indexMes/queryTracking", 814 path: "/indexMes/queryTracking",
733 icon: queryTraceIcon, 815 icon: queryTraceIcon,
734 c_icon: c_queryTraceIcon 816 c_icon: c_queryTraceIcon
735 }, 817 },
736 { 818 {
737 id: "operationGuide", 819 id: "operationGuide",
738 - title: "操作指南", 820 + title: operationGuide,
739 path: "/indexMes/operationGuide", 821 path: "/indexMes/operationGuide",
740 icon: guideIcon, 822 icon: guideIcon,
741 c_icon: c_guideIcon 823 c_icon: c_guideIcon
@@ -805,6 +887,7 @@ const SystemFunComponent = () =&gt; { @@ -805,6 +887,7 @@ const SystemFunComponent = () =&gt; {
805 const [popoverVisible, setPopoverVisible] = useState(false); 887 const [popoverVisible, setPopoverVisible] = useState(false);
806 const [popoverVisible1, setPopoverVisible1] = useState(false); 888 const [popoverVisible1, setPopoverVisible1] = useState(false);
807 const { props, dispatch } = useContext(myContext); 889 const { props, dispatch } = useContext(myContext);
  890 + const systemFunctions = commonFunc.showLocalMessage(props, 'systemFunctions', '系统功能');
808 891
809 const stopRef = useRef(false); 892 const stopRef = useRef(false);
810 const stopClose = useRef(false); 893 const stopClose = useRef(false);
@@ -841,7 +924,7 @@ const SystemFunComponent = () =&gt; { @@ -841,7 +924,7 @@ const SystemFunComponent = () =&gt; {
841 const handleProcedureCall = async (params, iFlag) => { 924 const handleProcedureCall = async (params, iFlag) => {
842 const { onSuccess } = params; 925 const { onSuccess } = params;
843 const { app } = props; 926 const { app } = props;
844 - 927 + const FriendlyReminder = commonFunc.showLocalMessage(this.props, 'FriendlyReminder', '温馨提示');
845 const { sMachineNameSId, sTeamNameSId, sShift, token, sModelsId } = app; 928 const { sMachineNameSId, sTeamNameSId, sShift, token, sModelsId } = app;
846 929
847 const value = { 930 const value = {
@@ -888,10 +971,8 @@ const SystemFunComponent = () =&gt; { @@ -888,10 +971,8 @@ const SystemFunComponent = () =&gt; {
888 onSuccess && onSuccess(); 971 onSuccess && onSuccess();
889 } else if (code === -7) { 972 } else if (code === -7) {
890 Modal.confirm({ 973 Modal.confirm({
891 - title: "温馨提示:", 974 + title: FriendlyReminder,
892 content: <div>{handleGetMsg(msg)}</div>, 975 content: <div>{handleGetMsg(msg)}</div>,
893 - okText: "确认",  
894 - cancelText: "取消",  
895 onOk() { 976 onOk() {
896 handleProcedureCall(params, 1); 977 handleProcedureCall(params, 1);
897 }, 978 },
@@ -899,9 +980,8 @@ const SystemFunComponent = () =&gt; { @@ -899,9 +980,8 @@ const SystemFunComponent = () =&gt; {
899 }); 980 });
900 } else if (code === -8) { 981 } else if (code === -8) {
901 Modal.info({ 982 Modal.info({
902 - title: "温馨提示:", 983 + title: FriendlyReminder,
903 content: <div>{handleGetMsg(msg)}</div>, 984 content: <div>{handleGetMsg(msg)}</div>,
904 - okText: "确认",  
905 onOk() { 985 onOk() {
906 onSuccess && onSuccess(); 986 onSuccess && onSuccess();
907 } 987 }
@@ -917,6 +997,8 @@ const SystemFunComponent = () =&gt; { @@ -917,6 +997,8 @@ const SystemFunComponent = () =&gt; {
917 const { onSuccess } = params; 997 const { onSuccess } = params;
918 const { app } = props; 998 const { app } = props;
919 999
  1000 + const FriendlyReminder = commonFunc.showLocalMessage(props, 'FriendlyReminder', '温馨提示');
  1001 +
920 const { sMachineNameSId, sTeamNameSId, sShift, token, sModelsId } = app; 1002 const { sMachineNameSId, sTeamNameSId, sShift, token, sModelsId } = app;
921 const userinfo = commonUtils.getAppData("userinfo"); 1003 const userinfo = commonUtils.getAppData("userinfo");
922 1004
@@ -965,10 +1047,8 @@ const SystemFunComponent = () =&gt; { @@ -965,10 +1047,8 @@ const SystemFunComponent = () =&gt; {
965 onSuccess && onSuccess(); 1047 onSuccess && onSuccess();
966 } else if (code === -7) { 1048 } else if (code === -7) {
967 Modal.confirm({ 1049 Modal.confirm({
968 - title: "温馨提示:", 1050 + title: FriendlyReminder,
969 content: <div>{handleGetMsg(msg)}</div>, 1051 content: <div>{handleGetMsg(msg)}</div>,
970 - okText: "确认",  
971 - cancelText: "取消",  
972 onOk() { 1052 onOk() {
973 handleProcedureCall1(params, 1); 1053 handleProcedureCall1(params, 1);
974 }, 1054 },
@@ -976,9 +1056,8 @@ const SystemFunComponent = () =&gt; { @@ -976,9 +1056,8 @@ const SystemFunComponent = () =&gt; {
976 }); 1056 });
977 } else if (code === -8) { 1057 } else if (code === -8) {
978 Modal.info({ 1058 Modal.info({
979 - title: "温馨提示:", 1059 + title: FriendlyReminder,
980 content: <div>{handleGetMsg(msg)}</div>, 1060 content: <div>{handleGetMsg(msg)}</div>,
981 - okText: "确认",  
982 onOk() { 1061 onOk() {
983 onSuccess && onSuccess(); 1062 onSuccess && onSuccess();
984 } 1063 }
@@ -990,6 +1069,7 @@ const SystemFunComponent = () =&gt; { @@ -990,6 +1069,7 @@ const SystemFunComponent = () =&gt; {
990 }; 1069 };
991 1070
992 const handleSystemFunClick = type => { 1071 const handleSystemFunClick = type => {
  1072 + const underDevelop = commonFunc.showLocalMessage(props, 'underDevelop', '功能开发中,敬请期待!');
993 switch (type) { 1073 switch (type) {
994 case "changePwd": 1074 case "changePwd":
995 dispatch(["saveState", { isEditPwd: true }]); 1075 dispatch(["saveState", { isEditPwd: true }]);
@@ -1000,7 +1080,7 @@ const SystemFunComponent = () =&gt; { @@ -1000,7 +1080,7 @@ const SystemFunComponent = () =&gt; {
1000 case "logout": 1080 case "logout":
1001 break; 1081 break;
1002 case "shutdown": 1082 case "shutdown":
1003 - message.info("功能开发中,敬请期待..."); 1083 + message.info(underDevelop);
1004 break; 1084 break;
1005 case "restDailyReport": 1085 case "restDailyReport":
1006 handleProcedureCall({ 1086 handleProcedureCall({
@@ -1030,6 +1110,16 @@ const SystemFunComponent = () =&gt; { @@ -1030,6 +1110,16 @@ const SystemFunComponent = () =&gt; {
1030 1110
1031 const getSystemFunContent = () => { 1111 const getSystemFunContent = () => {
1032 const userinfo = commonUtils.getAppData("userinfo"); 1112 const userinfo = commonUtils.getAppData("userinfo");
  1113 + const ModifyPassword = commonFunc.showLocalMessage(props, 'ModifyPassword','修改密码');/* 修改密码 */
  1114 + const faceCollection = commonFunc.showLocalMessage(props, 'faceCollection', '人脸采集');
  1115 + const moreFunctions = commonFunc.showLocalMessage(props, 'moreFunctions', '更多功能');
  1116 + const Logout = commonFunc.showLocalMessage(props, 'Logout', '退出登录');
  1117 + const shutDown= commonFunc.showLocalMessage(props, 'shutDown', '关机');
  1118 + const resetDailyReport= commonFunc.showLocalMessage(props, 'resetDailyReport', '关机');
  1119 + const switchToManual= commonFunc.showLocalMessage(props, 'switchToManual', '切换手动');
  1120 + const SwitchAuto= commonFunc.showLocalMessage(props, 'SwitchAuto', '切换自动');
  1121 +
  1122 +
1033 const { bPlcSd } = userinfo; 1123 const { bPlcSd } = userinfo;
1034 return ( 1124 return (
1035 <div className="systemFunContent"> 1125 <div className="systemFunContent">
@@ -1040,7 +1130,7 @@ const SystemFunComponent = () =&gt; { @@ -1040,7 +1130,7 @@ const SystemFunComponent = () =&gt; {
1040 }} 1130 }}
1041 > 1131 >
1042 <UserAddOutlined /> 1132 <UserAddOutlined />
1043 - <span>人脸采集</span> 1133 + <span>{faceCollection}</span>
1044 </div> 1134 </div>
1045 <div 1135 <div
1046 className="changePwd" 1136 className="changePwd"
@@ -1048,7 +1138,7 @@ const SystemFunComponent = () =&gt; { @@ -1048,7 +1138,7 @@ const SystemFunComponent = () =&gt; {
1048 handleSystemFunClick("changePwd"); 1138 handleSystemFunClick("changePwd");
1049 }} 1139 }}
1050 > 1140 >
1051 - <span>修改密码</span> 1141 + <span>{ModifyPassword}</span>
1052 </div> 1142 </div>
1053 <div 1143 <div
1054 className="logout" 1144 className="logout"
@@ -1056,7 +1146,7 @@ const SystemFunComponent = () =&gt; { @@ -1056,7 +1146,7 @@ const SystemFunComponent = () =&gt; {
1056 handleSystemFunClick("logout"); 1146 handleSystemFunClick("logout");
1057 }} 1147 }}
1058 > 1148 >
1059 - <span>退出登录</span> 1149 + <span>{Logout}</span>
1060 </div> 1150 </div>
1061 <div 1151 <div
1062 className="shutdown" 1152 className="shutdown"
@@ -1064,7 +1154,7 @@ const SystemFunComponent = () =&gt; { @@ -1064,7 +1154,7 @@ const SystemFunComponent = () =&gt; {
1064 handleSystemFunClick("shutdown"); 1154 handleSystemFunClick("shutdown");
1065 }} 1155 }}
1066 > 1156 >
1067 - <span>关机</span> 1157 + <span>{shutDown}</span>
1068 </div> 1158 </div>
1069 <Popover 1159 <Popover
1070 placement="rightBottom" 1160 placement="rightBottom"
@@ -1079,7 +1169,7 @@ const SystemFunComponent = () =&gt; { @@ -1079,7 +1169,7 @@ const SystemFunComponent = () =&gt; {
1079 }} 1169 }}
1080 > 1170 >
1081 <UndoOutlined /> 1171 <UndoOutlined />
1082 - <span>重置日报</span> 1172 + <span>{resetDailyReport}</span>
1083 </div> 1173 </div>
1084 <div 1174 <div
1085 className="restDailyReport" 1175 className="restDailyReport"
@@ -1088,7 +1178,7 @@ const SystemFunComponent = () =&gt; { @@ -1088,7 +1178,7 @@ const SystemFunComponent = () =&gt; {
1088 }} 1178 }}
1089 > 1179 >
1090 <SwapOutlined /> 1180 <SwapOutlined />
1091 - <span>{bPlcSd ? "切换自动" : "切换手动"}</span> 1181 + <span>{bPlcSd ? SwitchAuto : switchToManual}</span>
1092 </div> 1182 </div>
1093 </div> 1183 </div>
1094 } 1184 }
@@ -1108,7 +1198,7 @@ const SystemFunComponent = () =&gt; { @@ -1108,7 +1198,7 @@ const SystemFunComponent = () =&gt; {
1108 }} 1198 }}
1109 > 1199 >
1110 <AppstoreOutlined /> 1200 <AppstoreOutlined />
1111 - <span>更多功能</span> 1201 + <span>{moreFunctions}</span>
1112 </div> 1202 </div>
1113 </Popover> 1203 </Popover>
1114 </div> 1204 </div>
@@ -1138,7 +1228,7 @@ const SystemFunComponent = () =&gt; { @@ -1138,7 +1228,7 @@ const SystemFunComponent = () =&gt; {
1138 <div className="icon"> 1228 <div className="icon">
1139 <img src={popoverVisible || hoverState ? c_systemIcon : systemIcon} /> 1229 <img src={popoverVisible || hoverState ? c_systemIcon : systemIcon} />
1140 </div> 1230 </div>
1141 - <div className="title">系统功能</div> 1231 + <div className="title">{systemFunctions}</div>
1142 </div> 1232 </div>
1143 </Popover> 1233 </Popover>
1144 ); 1234 );
src/mes/login/index.js
@@ -19,6 +19,7 @@ const initValue = { @@ -19,6 +19,7 @@ const initValue = {
19 19
20 // 事件层 20 // 事件层
21 const useLoginEvent = props => { 21 const useLoginEvent = props => {
  22 + const [companys, setCompanys] = useState([]); // 添加这行
22 // 清除浏览器缓存 23 // 清除浏览器缓存
23 useEffect(() => { 24 useEffect(() => {
24 const ipAddress = localStorage.ipAddress; 25 const ipAddress = localStorage.ipAddress;
@@ -91,6 +92,12 @@ const useLoginEvent = props =&gt; { @@ -91,6 +92,12 @@ const useLoginEvent = props =&gt; {
91 "mesSysbrands", 92 "mesSysbrands",
92 JSON.stringify({ sBrandsId: sParentId, sSubsidiaryId: sId }) 93 JSON.stringify({ sBrandsId: sParentId, sSubsidiaryId: sId })
93 ); 94 );
  95 + /* 测试英文版本 默认英文 */
  96 + if(companysConfigReturn.dataset.rows) {
  97 + companysConfigReturn.dataset.rows[0].sLanguage = 'sEnglish';
  98 + }
  99 + setCompanys(companysConfigReturn.dataset.rows); // 修改这行2
  100 +
94 props.onSaveState({ 101 props.onSaveState({
95 masterData: { sBrandsId: sParentId, sSubsidiaryId: sId } 102 masterData: { sBrandsId: sParentId, sSubsidiaryId: sId }
96 }); 103 });
@@ -125,13 +132,32 @@ const useLoginEvent = props =&gt; { @@ -125,13 +132,32 @@ const useLoginEvent = props =&gt; {
125 }; 132 };
126 133
127 // 登录事件 134 // 登录事件
128 - const handleSubmit = async ({ faceLoginValue = {}, sEmployeeNo } = {}) => { 135 + const handleSubmit = async ({ faceLoginValue = {}, sEmployeeNo } = {}, configsData) => {
129 const bFaceLogin = commonUtils.isNotEmptyObject(faceLoginValue); 136 const bFaceLogin = commonUtils.isNotEmptyObject(faceLoginValue);
130 137
131 let dataReturn = {}; 138 let dataReturn = {};
132 if (!bFaceLogin) { 139 if (!bFaceLogin) {
133 // 账号密码登录 140 // 账号密码登录
134 - const { masterData } = props; 141 + const { masterData, companys } = props;
  142 + // 新增方法:根据sName过滤configs
  143 + const getConfigByName = (name, configs, sLanguage) => {
  144 + const configObj = configs.find(item => item.sName === name);
  145 + const showName = sLanguage === 'sChinese' ? configObj.sChinese : sLanguage ==='sEnglish' ? configObj.sEnglish :
  146 + sLanguage === 'sBig5' ? configObj.sBig5 : configObj.sChinese;
  147 + return showName;
  148 + };
  149 + const sLanguage = commonUtils.isNotEmptyArr(companys) ? companys[0].sLanguage : 'sEnglish';
  150 +
  151 + const pleaseSelectUser = getConfigByName('pleaseSelectUser', configsData, sLanguage);
  152 +
  153 + const pleaseInputPassword = getConfigByName('pleaseInputPassword', configsData, sLanguage);
  154 +
  155 + const pleaseSelectTeam = getConfigByName('pleaseSelectTeam', configsData, sLanguage);
  156 +
  157 + const pleaseselectShift = getConfigByName('pleaseselectShift', configsData, sLanguage);
  158 +
  159 + const pleaseSelectMachine = getConfigByName('pleaseSelectMachine', configsData, sLanguage);
  160 +
135 161
136 const { 162 const {
137 sUserId: userId, 163 sUserId: userId,
@@ -172,23 +198,23 @@ const useLoginEvent = props =&gt; { @@ -172,23 +198,23 @@ const useLoginEvent = props =&gt; {
172 } 198 }
173 199
174 if (!username) { 200 if (!username) {
175 - message.error("请选择用户!"); 201 + message.error(pleaseSelectUser);
176 return; 202 return;
177 } 203 }
178 if (!sEmployeeNo && !password) { 204 if (!sEmployeeNo && !password) {
179 - message.error("请输入密码!"); 205 + message.error(pleaseInputPassword);
180 return; 206 return;
181 } 207 }
182 if (sShift === undefined) { 208 if (sShift === undefined) {
183 - message.error("请选择班次!"); 209 + message.error(pleaseselectShift);
184 return; 210 return;
185 } 211 }
186 if (!sTeamId) { 212 if (!sTeamId) {
187 - message.error("请选择班组!"); 213 + message.error(pleaseSelectTeam);
188 return; 214 return;
189 } 215 }
190 if (!sMachineId) { 216 if (!sMachineId) {
191 - message.error("请选择机台!"); 217 + message.error(pleaseSelectMachine);
192 return; 218 return;
193 } 219 }
194 220
@@ -321,6 +347,7 @@ const useLoginEvent = props =&gt; { @@ -321,6 +347,7 @@ const useLoginEvent = props =&gt; {
321 347
322 return { 348 return {
323 ...props, 349 ...props,
  350 + companys, // 确保返回companys
324 configs, 351 configs,
325 onSubmit: handleSubmit, 352 onSubmit: handleSubmit,
326 onFaceLogin: handleFaceLogin, 353 onFaceLogin: handleFaceLogin,
@@ -331,8 +358,12 @@ const useLoginEvent = props =&gt; { @@ -331,8 +358,12 @@ const useLoginEvent = props =&gt; {
331 // 遍历登录文本组件 358 // 遍历登录文本组件
332 const handleGetFormItem = (props, item) => { 359 const handleGetFormItem = (props, item) => {
333 const { sModelsId } = initValue; 360 const { sModelsId } = initValue;
334 - const { masterData = {} } = props; 361 + const { masterData = {}, companys } = props;
  362 + const sLanguage = commonUtils.isNotEmptyArr(companys) && companys[0].sLanguage || 'sEnglish';
335 let enabledNew = true; 363 let enabledNew = true;
  364 + if(item.sName?.includes('please') || item.sName?.includes('请')) {
  365 + return;
  366 + }
336 if (item.iTag === 1) { 367 if (item.iTag === 1) {
337 enabledNew = false; 368 enabledNew = false;
338 } else if (item.iTag === 3) { 369 } else if (item.iTag === 3) {
@@ -374,8 +405,10 @@ const handleGetFormItem = (props, item) =&gt; { @@ -374,8 +405,10 @@ const handleGetFormItem = (props, item) =&gt; {
374 bPassWord: item.sName === "sPassWord", 405 bPassWord: item.sName === "sPassWord",
375 style: { backgroundColor: "#eaeaea" } 406 style: { backgroundColor: "#eaeaea" }
376 }; 407 };
  408 + const showName = sLanguage === 'sChinese' ? item.sChinese : sLanguage ==='sEnglish' ? item.sEnglish
  409 + : item.sBig5;
377 return ( 410 return (
378 - <Form.Item label={item.showName} key={item.sName}> 411 + <Form.Item label={showName} key={item.sName}>
379 <ShowType {...showTypeProps} /> 412 <ShowType {...showTypeProps} />
380 </Form.Item> 413 </Form.Item>
381 ); 414 );
@@ -384,14 +417,82 @@ const handleGetFormItem = (props, item) =&gt; { @@ -384,14 +417,82 @@ const handleGetFormItem = (props, item) =&gt; {
384 // 主入口 417 // 主入口
385 const login = baseProps => { 418 const login = baseProps => {
386 const props = useLoginEvent(useCommonBase(baseProps)); 419 const props = useLoginEvent(useCommonBase(baseProps));
387 - const { configs } = props; 420 + const { configs , app, companys } = props;
  421 + const sysObj = commonUtils.isNotEmptyArr(companys) ? companys[0] : [];
  422 + console.log('222', sysObj);
  423 + const sLanguage = sysObj?.sLanguage || 'sEnglish';
  424 +
  425 + const oeeTitle =
  426 + sLanguage === "sChinese" ? "小羚羊生产执行系统" : sLanguage === "sEnglish" ? "Manufacturing Execution System" : "小羚羊生產執行系統";
  427 +
  428 + const bannerTitle =
  429 + sLanguage === "sChinese" ? "小羚羊生产执行系统" : sLanguage === "sEnglish" ? "XLY Manufacturing Execution System" : "小羚羊生產執行系統";
  430 +
  431 + const pleaseInputUserName =
  432 + sLanguage === "sChinese"
  433 + ? "用户名"
  434 + : sLanguage === "sEnglish"
  435 + ? "UserName"
  436 + : "用戶名"; /* 用戶名 */
  437 + const pleaseInputPassword =
  438 + sLanguage === "sChinese"
  439 + ? "密码"
  440 + : sLanguage === "sEnglish"
  441 + ? "Password"
  442 + : "密碼"; /* 密码 */
  443 + const teamName =
  444 + sLanguage === "sChinese"
  445 + ? "班组名称"
  446 + : sLanguage === "sEnglish"
  447 + ? "Team Name"
  448 + : "班組名稱"; /* 班组名称 */
  449 + const equipmentName =
  450 + sLanguage === "sChinese"
  451 + ? "设备名称"
  452 + : sLanguage === "sEnglish"
  453 + ? "Equipment Name"
  454 + : "設備名稱"; /* 班组名称 */
  455 + const btnLogin =
  456 + sLanguage === "sChinese"
  457 + ? "登 录"
  458 + : sLanguage === "sEnglish"
  459 + ? "Login"
  460 + : "登 錄"; /* 登 陆 */
  461 + const btnClose =
  462 + sLanguage === "sChinese"
  463 + ? "关 闭"
  464 + : sLanguage === "sEnglish"
  465 + ? "Close"
  466 + : "關 閉"; /* 关 闭 */
  467 + const btnFace = sLanguage === "sChinese"? "人 脸 登 录" : sLanguage === "sEnglish" ? "FaceLogin" : "人 臉 登 錄"; /* 人 脸 */
  468 +
  469 + const btnNormal =
  470 + sLanguage === "sChinese"
  471 + ? "普 通 登 录"
  472 + : sLanguage === "sEnglish"
  473 + ? "CommonLogin"
  474 + : "普 通 人 臉"; /* 普 通 */
  475 +
  476 + const chooseBranchCompany =
  477 + sLanguage === "sChinese"
  478 + ? "请选择分公司名称"
  479 + : sLanguage === "sEnglish"
  480 + ? "Please select branch name"
  481 + : "請選擇分公司名稱"; /* 请选择分公司名称 */
  482 +
  483 +
388 484
389 const [form] = Form.useForm(); 485 const [form] = Form.useForm();
390 486
391 return ( 487 return (
392 <div className={styles.login}> 488 <div className={styles.login}>
  489 + {/*<div className="loginTitle">*/}
  490 + {/* <div className="loginTitle1">Enterprise Business Capability MES</div>*/}
  491 + {/* <div className="loginTitle2">{bannerTitle}</div>*/}
  492 + {/* <div className="loginTitle3">EBC-MES</div>*/}
  493 + {/*</div>*/}
393 <div className="loginBox"> 494 <div className="loginBox">
394 - <div className="logo">劲嘉生产执行系统(EBC-MES)</div> 495 + <div className="logo">{oeeTitle}</div>
395 <Form form={form} layout="vertical" size="large"> 496 <Form form={form} layout="vertical" size="large">
396 {configs.map(item => handleGetFormItem(props, item))} 497 {configs.map(item => handleGetFormItem(props, item))}
397 <Form.Item> 498 <Form.Item>
@@ -400,10 +501,10 @@ const login = baseProps =&gt; { @@ -400,10 +501,10 @@ const login = baseProps =&gt; {
400 type="primary" 501 type="primary"
401 block 502 block
402 onClick={() => { 503 onClick={() => {
403 - props.onSubmit(); 504 + props.onSubmit({}, configs);
404 }} 505 }}
405 > 506 >
406 - 登录 507 + {btnLogin}
407 </Button> 508 </Button>
408 </Form.Item> 509 </Form.Item>
409 </Form> 510 </Form>
@@ -420,7 +521,7 @@ const login = baseProps =&gt; { @@ -420,7 +521,7 @@ const login = baseProps =&gt; {
420 props.onFaceLogin(); 521 props.onFaceLogin();
421 }} 522 }}
422 > 523 >
423 - 人脸登录 524 + {btnFace}
424 </div> 525 </div>
425 </div> 526 </div>
426 {/* <div style={{ width: "100%", height: 60 }} /> */} 527 {/* <div style={{ width: "100%", height: 60 }} /> */}
@@ -436,10 +537,13 @@ const FaceLoginModal = props =&gt; { @@ -436,10 +537,13 @@ const FaceLoginModal = props =&gt; {
436 const { faceLoginModalVisible } = props; 537 const { faceLoginModalVisible } = props;
437 538
438 if (!faceLoginModalVisible) return ""; 539 if (!faceLoginModalVisible) return "";
  540 + const { companys } = props;
  541 + const sLanguage = commonUtils.isNotEmptyArr(companys) ? companys[0].sLanguage : 'English';
  542 + const btnFace = sLanguage === "sChinese"? "人 脸 登 录" : sLanguage === "sEnglish" ? "FaceLogin" : "人 臉 登 錄"; /* 人 脸 */
439 543
440 return ( 544 return (
441 <Modal 545 <Modal
442 - title="人脸登录" 546 + title={btnFace}
443 open={faceLoginModalVisible} 547 open={faceLoginModalVisible}
444 width={800} 548 width={800}
445 height={800} 549 height={800}
@@ -467,9 +571,15 @@ const FaceLoginModal = props =&gt; { @@ -467,9 +571,15 @@ const FaceLoginModal = props =&gt; {
467 571
468 // 人脸弹窗后选择其他内容 572 // 人脸弹窗后选择其他内容
469 const FaceLoginAfterModal = props => { 573 const FaceLoginAfterModal = props => {
470 - const { faceLoginAfterModalVisible } = props; 574 + const { faceLoginAfterModalVisible , companys } = props;
471 575
472 if (!faceLoginAfterModalVisible) return ""; 576 if (!faceLoginAfterModalVisible) return "";
  577 + const sLanguage = commonUtils.isNotEmptyArr(companys) ? companys[0].sLanguage : 'English';
  578 + const sLoginConfirm = sLanguage === "sChinese"? "登陆信息确认" : sLanguage === "sEnglish" ? "Login Information Confirmation" : "登陸信息確認"; /* 人 脸 */
  579 + const btnConfirm = sLanguage === "sChinese"? "确认" : sLanguage === "sEnglish" ? "Confirm" : "確認"; /* 人 脸 */
  580 + const btnCancel = sLanguage === "sChinese"? "确认" : sLanguage === "sEnglish" ? "Cancel" : "取消"; /* 取消 */
  581 +
  582 +
473 const { 583 const {
474 configs: configOld = [], 584 configs: configOld = [],
475 masterData = {}, 585 masterData = {},
@@ -522,7 +632,7 @@ const FaceLoginAfterModal = props =&gt; { @@ -522,7 +632,7 @@ const FaceLoginAfterModal = props =&gt; {
522 const [form] = Form.useForm(); 632 const [form] = Form.useForm();
523 return ( 633 return (
524 <Modal 634 <Modal
525 - title="登陆信息确认" 635 + title={sLoginConfirm}
526 open={faceLoginAfterModalVisible} 636 open={faceLoginAfterModalVisible}
527 width={500} 637 width={500}
528 height={800} 638 height={800}
@@ -539,7 +649,7 @@ const FaceLoginAfterModal = props =&gt; { @@ -539,7 +649,7 @@ const FaceLoginAfterModal = props =&gt; {
539 props.onSubmit({ sEmployeeNo }); 649 props.onSubmit({ sEmployeeNo });
540 }} 650 }}
541 > 651 >
542 - 确认 652 + {btnConfirm}
543 </Button> 653 </Button>
544 <Button 654 <Button
545 size="large" 655 size="large"
@@ -553,7 +663,7 @@ const FaceLoginAfterModal = props =&gt; { @@ -553,7 +663,7 @@ const FaceLoginAfterModal = props =&gt; {
553 }); 663 });
554 }} 664 }}
555 > 665 >
556 - 取消 666 + {btnCancel}
557 </Button> 667 </Button>
558 </> 668 </>
559 } 669 }
src/mes/login/index.less
@@ -13,6 +13,34 @@ @@ -13,6 +13,34 @@
13 font-family: Microsoft YaHei, Microsoft YaHei; 13 font-family: Microsoft YaHei, Microsoft YaHei;
14 } 14 }
15 15
  16 + .loginTitle {
  17 + position: absolute;
  18 + top: 0;
  19 + left: 0;
  20 + .size(auto, 100%);
  21 + display: flex;
  22 + flex-direction: column;
  23 + // align-items: center;
  24 + justify-content: center;
  25 + color: #FFF;
  26 + font-weight: bold;
  27 + padding-left: 6%;
  28 +
  29 + .loginTitle1 {
  30 + font-size: 34px;
  31 + }
  32 +
  33 + .loginTitle2 {
  34 + font-size: 60px;
  35 + margin-top: -8px;
  36 + }
  37 +
  38 + .loginTitle3 {
  39 + font-size: 116px;
  40 + margin-top: -57px;
  41 + }
  42 + }
  43 +
16 .loginBox { 44 .loginBox {
17 width: 35%; 45 width: 35%;
18 height: auto; 46 height: auto;
src/mes/operationGuide/component/BroadsideCard.js
1 import React from "react"; 1 import React from "react";
2 import { Tooltip } from "antd"; 2 import { Tooltip } from "antd";
  3 +import * as commonFunc from "@/components/Common/commonFunc";
3 import styles from "../index.less"; 4 import styles from "../index.less";
4 5
5 const OperationGuide = props => { 6 const OperationGuide = props => {
@@ -10,13 +11,18 @@ const OperationGuide = props =&gt; { @@ -10,13 +11,18 @@ const OperationGuide = props =&gt; {
10 }); 11 });
11 }; 12 };
12 13
  14 + const operationGuide = commonFunc.showLocalMessage(props, 'operationGuide', '操作指引');
  15 + const digitalFactoryMES = commonFunc.showLocalMessage(props, 'digitalFactoryMES', '数字工厂MES系统操作指引.pdf');
  16 + const keyOperationMES = commonFunc.showLocalMessage(props, 'keyOperationMES', 'MES关键操作说明.xlsx');
  17 + const MESPrinterSolutions = commonFunc.showLocalMessage(props, 'MESPrinterSolutions', 'MES打印机更换纸张后亮红灯解决方法.pdf');
  18 + const workshopMESPrinters = commonFunc.showLocalMessage(props, 'workshopMESPrinters', '车间MES打印机更换纸张.pdf');
13 return ( 19 return (
14 <div className={styles.broadsideCardBox}> 20 <div className={styles.broadsideCardBox}>
15 - <div className="title1">操作指引</div> 21 + <div className="title1">{operationGuide}</div>
16 <div className="part1"> 22 <div className="part1">
17 <Tooltip 23 <Tooltip
18 title={ 24 title={
19 - <div style={{ fontSize: 18 }}>数字工厂MES系统操作指引.pdf</div> 25 + <div style={{ fontSize: 18 }}>{digitalFactoryMES}</div>
20 } 26 }
21 placement="left" 27 placement="left"
22 > 28 >
@@ -28,7 +34,7 @@ const OperationGuide = props =&gt; { @@ -28,7 +34,7 @@ const OperationGuide = props =&gt; {
28 /> 34 />
29 </Tooltip> 35 </Tooltip>
30 <Tooltip 36 <Tooltip
31 - title={<div style={{ fontSize: 18 }}>MES关键操作说明.xlsx</div>} 37 + title={<div style={{ fontSize: 18 }}>{keyOperationMES}</div>}
32 placement="left" 38 placement="left"
33 > 39 >
34 <div 40 <div
@@ -43,23 +49,23 @@ const OperationGuide = props =&gt; { @@ -43,23 +49,23 @@ const OperationGuide = props =&gt; {
43 <Tooltip 49 <Tooltip
44 placement="left" 50 placement="left"
45 title={ 51 title={
46 - <div style={{ fontSize: 18 }}>数字工厂MES系统操作指引.pdf</div> 52 + <div style={{ fontSize: 18 }}>{digitalFactoryMES}</div>
47 } 53 }
48 > 54 >
49 - <div>数字工厂MES系统操作指引.pdf</div> 55 + <div>{digitalFactoryMES}</div>
50 </Tooltip> 56 </Tooltip>
51 <Tooltip 57 <Tooltip
52 placement="left" 58 placement="left"
53 - title={<div style={{ fontSize: 18 }}>MES关键操作说明.xlsx</div>} 59 + title={<div style={{ fontSize: 18 }}>{keyOperationMES}</div>}
54 > 60 >
55 - <div>MES关键操作说明.xlsx</div> 61 + <div>{keyOperationMES}</div>
56 </Tooltip> 62 </Tooltip>
57 </div> 63 </div>
58 <div className="part1"> 64 <div className="part1">
59 <Tooltip 65 <Tooltip
60 title={ 66 title={
61 <div style={{ fontSize: 18 }}> 67 <div style={{ fontSize: 18 }}>
62 - MES打印机更换纸张后亮红灯解决方法.pdf 68 + {MESPrinterSolutions}
63 </div> 69 </div>
64 } 70 }
65 placement="left" 71 placement="left"
@@ -72,7 +78,7 @@ const OperationGuide = props =&gt; { @@ -72,7 +78,7 @@ const OperationGuide = props =&gt; {
72 /> 78 />
73 </Tooltip> 79 </Tooltip>
74 <Tooltip 80 <Tooltip
75 - title={<div style={{ fontSize: 18 }}>车间MES打印机更换纸张.pdf</div>} 81 + title={<div style={{ fontSize: 18 }}>{workshopMESPrinters}</div>}
76 placement="left" 82 placement="left"
77 > 83 >
78 <div 84 <div
@@ -88,17 +94,17 @@ const OperationGuide = props =&gt; { @@ -88,17 +94,17 @@ const OperationGuide = props =&gt; {
88 placement="left" 94 placement="left"
89 title={ 95 title={
90 <div style={{ fontSize: 18 }}> 96 <div style={{ fontSize: 18 }}>
91 - MES打印机更换纸张后亮红灯解决方法.pdf 97 + {MESPrinterSolutions }
92 </div> 98 </div>
93 } 99 }
94 > 100 >
95 - <div>MES打印机更换纸张后亮红灯解决方法.pdf</div> 101 + <div>{MESPrinterSolutions}</div>
96 </Tooltip> 102 </Tooltip>
97 <Tooltip 103 <Tooltip
98 placement="left" 104 placement="left"
99 - title={<div style={{ fontSize: 18 }}>车间MES打印机更换纸张.pdf</div>} 105 + title={<div style={{ fontSize: 18 }}>{workshopMESPrinters}</div>}
100 > 106 >
101 - <div>车间MES打印机更换纸张.pdf</div> 107 + <div>{workshopMESPrinters}</div>
102 </Tooltip> 108 </Tooltip>
103 </div> 109 </div>
104 </div> 110 </div>
src/mes/operationGuide/component/FlowChart.js
@@ -4,14 +4,84 @@ import styles from &quot;../index.less&quot;; @@ -4,14 +4,84 @@ import styles from &quot;../index.less&quot;;
4 import { setTimeout } from "core-js"; 4 import { setTimeout } from "core-js";
5 5
6 6
  7 +const resources = {
  8 + sChinese: {
  9 + teamLogin: "班组登录",
  10 + registerWork: "登记上班",
  11 + teamHandover: "班组交接",
  12 + planTask: "计划任务",
  13 + productionExec: "生产执行",
  14 + qualityInspection: "质量巡检",
  15 + processInspection: "工艺巡检",
  16 + equipmentInspection: "设备巡检",
  17 + disassembleBoard: "拆合板",
  18 + currentTask: "当前任务",
  19 + taskCompletion: "任务完工",
  20 + trayScan: "托盘扫码",
  21 + trayUnloading: "托盘下料",
  22 + completionClearance: "完工清场",
  23 + teamReport: "班组报工",
  24 + registerOffWork: "登记下班",
  25 + working: "作业中",
  26 + afterWork: "作业后"
  27 + },
  28 + sEnglish: {
  29 + teamLogin: "Team Login",
  30 + registerWork: "Register Work",
  31 + teamHandover: "Team Handover",
  32 + planTask: "Plan Task",
  33 + productionExec: "Production Execution",
  34 + qualityInspection: "Quality Inspection",
  35 + processInspection: "Process Inspection",
  36 + equipmentInspection: "Equipment Inspection",
  37 + disassembleBoard: "Disassemble Board",
  38 + currentTask: "Current Task",
  39 + taskCompletion: "Task Completion",
  40 + trayScan: "Tray Scan",
  41 + trayUnloading: "Tray Unloading",
  42 + completionClearance: "Completion Clearance",
  43 + teamReport: "Team Report",
  44 + registerOffWork: "Register Off Work",
  45 + beforeWork: "BeforeWork",
  46 + working: "Working",
  47 + afterWork: "After Work"
  48 + },
  49 + sBig5: {
  50 + teamLogin: "班組登錄",
  51 + registerWork: "登記上班",
  52 + teamHandover: "班組交接",
  53 + planTask: "計劃任務",
  54 + productionExec: "生產執行",
  55 + qualityInspection: "質量巡檢",
  56 + processInspection: "工藝巡檢",
  57 + equipmentInspection: "設備巡檢",
  58 + disassembleBoard: "拆合板",
  59 + currentTask: "當前任務",
  60 + taskCompletion: "任務完工",
  61 + trayScan: "托盤掃碼",
  62 + trayUnloading: "托盤下料",
  63 + completionClearance: "完工清場",
  64 + teamReport: "班組報工",
  65 + registerOffWork: "登記下班",
  66 + beforeWork: "作業中",
  67 + working: "作業中",
  68 + afterWork: "作業後"
  69 + }
  70 +};
7 71
8 -const BroadsideCardRender = () => { 72 +const BroadsideCardRender = (props) => {
  73 + // 获取语言设置,默认为中文
  74 + const sLanguage = props?.app?.userinfo?.sLanguage || 'sChinese';
  75 + console.log(sLanguage, sLanguage);
  76 + console.log(3888, props);
  77 + const teamLogin = resources[sLanguage].teamLogin;
  78 + console.log(teamLogin, 'teamLogin');
9 79
10 const [ loading , setloading ] = useState(true) 80 const [ loading , setloading ] = useState(true)
11 const [ flowData , setFlowData ] = useState([ 81 const [ flowData , setFlowData ] = useState([
12 { 82 {
13 work:"front", 83 work:"front",
14 - name:"班组登录", 84 + name:resources[sLanguage].teamLogin,
15 cellSite:"1-1", 85 cellSite:"1-1",
16 x6:[ 86 x6:[
17 ()=>({ 87 ()=>({
@@ -19,11 +89,11 @@ const BroadsideCardRender = () =&gt; { @@ -19,11 +89,11 @@ const BroadsideCardRender = () =&gt; {
19 target: { x: getOffset('front-2-1' , 'x-domStart') , y: getOffset('front-2-1' , 'y-domCenter') }, 89 target: { x: getOffset('front-2-1' , 'x-domStart') , y: getOffset('front-2-1' , 'y-domCenter') },
20 }) 90 })
21 ] 91 ]
22 - 92 +
23 }, 93 },
24 { 94 {
25 work:"front", 95 work:"front",
26 - name:"登记上班", 96 + name:resources[sLanguage].registerWork,
27 cellSite:"2-1", 97 cellSite:"2-1",
28 x6:[ 98 x6:[
29 ()=>({ 99 ()=>({
@@ -34,13 +104,13 @@ const BroadsideCardRender = () =&gt; { @@ -34,13 +104,13 @@ const BroadsideCardRender = () =&gt; {
34 }, 104 },
35 { 105 {
36 work:"front", 106 work:"front",
37 - name:"班组交接", 107 + name:resources[sLanguage].teamHandover,
38 cellSite:"4-1", 108 cellSite:"4-1",
39 x6:[] 109 x6:[]
40 }, 110 },
41 { 111 {
42 work:"front", 112 work:"front",
43 - name:"计划任务", 113 + name:resources[sLanguage].planTask,
44 cellSite:"2-2", 114 cellSite:"2-2",
45 x6:[ 115 x6:[
46 ()=>({ 116 ()=>({
@@ -52,7 +122,7 @@ const BroadsideCardRender = () =&gt; { @@ -52,7 +122,7 @@ const BroadsideCardRender = () =&gt; {
52 122
53 { 123 {
54 work:"centre", 124 work:"centre",
55 - name:"生产执行", 125 + name:resources[sLanguage].productionExec,
56 cellSite:"2-2", 126 cellSite:"2-2",
57 x6:[ 127 x6:[
58 ()=>({ 128 ()=>({
@@ -63,27 +133,27 @@ const BroadsideCardRender = () =&gt; { @@ -63,27 +133,27 @@ const BroadsideCardRender = () =&gt; {
63 source: { x: getOffset('centre-2-2' , 'x-domStart') , y: getOffset('centre-2-2' , 'y-domCenter') }, 133 source: { x: getOffset('centre-2-2' , 'x-domStart') , y: getOffset('centre-2-2' , 'y-domCenter') },
64 target: { x: getOffset('centre-1-1' , 'x-domEnd') , y: getOffset('centre-1-1' , 'y-domCenter') }, 134 target: { x: getOffset('centre-1-1' , 'x-domEnd') , y: getOffset('centre-1-1' , 'y-domCenter') },
65 vertices: [ 135 vertices: [
66 - {  
67 - x: getOffset('centre-2-2' , 'x-domStart') - ((getOffset('centre-2-2' , 'x-domStart') - getOffset('centre-1-1' , 'x-domEnd'))/2),  
68 - y: getOffset('centre-2-2' , 'y-domCenter') 136 + {
  137 + x: getOffset('centre-2-2' , 'x-domStart') - ((getOffset('centre-2-2' , 'x-domStart') - getOffset('centre-1-1' , 'x-domEnd'))/2),
  138 + y: getOffset('centre-2-2' , 'y-domCenter')
69 }, 139 },
70 - {  
71 - x: getOffset('centre-2-2' , 'x-domStart') - ((getOffset('centre-2-2' , 'x-domStart') - getOffset('centre-1-1' , 'x-domEnd'))/2), 140 + {
  141 + x: getOffset('centre-2-2' , 'x-domStart') - ((getOffset('centre-2-2' , 'x-domStart') - getOffset('centre-1-1' , 'x-domEnd'))/2),
72 y: getOffset('centre-1-1' , 'y-domCenter') 142 y: getOffset('centre-1-1' , 'y-domCenter')
73 }, 143 },
74 ], 144 ],
75 }), 145 }),
76 ()=>({ 146 ()=>({
77 - source: {  
78 - x: getOffset('centre-2-2' , 'x-domStart') - ((getOffset('centre-2-2' , 'x-domStart') - getOffset('centre-1-2' , 'x-domEnd'))/2) ,  
79 - y: getOffset('centre-1-2' , 'y-domCenter') 147 + source: {
  148 + x: getOffset('centre-2-2' , 'x-domStart') - ((getOffset('centre-2-2' , 'x-domStart') - getOffset('centre-1-2' , 'x-domEnd'))/2) ,
  149 + y: getOffset('centre-1-2' , 'y-domCenter')
80 }, 150 },
81 target: { x: getOffset('centre-1-2' , 'x-domEnd') , y: getOffset('centre-1-2' , 'y-domCenter') }, 151 target: { x: getOffset('centre-1-2' , 'x-domEnd') , y: getOffset('centre-1-2' , 'y-domCenter') },
82 }), 152 }),
83 ()=>({ 153 ()=>({
84 - source: {  
85 - x: getOffset('centre-2-2' , 'x-domStart') - ((getOffset('centre-2-2' , 'x-domStart') - getOffset('centre-1-3' , 'x-domEnd'))/2) ,  
86 - y: getOffset('centre-1-3' , 'y-domCenter') 154 + source: {
  155 + x: getOffset('centre-2-2' , 'x-domStart') - ((getOffset('centre-2-2' , 'x-domStart') - getOffset('centre-1-3' , 'x-domEnd'))/2) ,
  156 + y: getOffset('centre-1-3' , 'y-domCenter')
87 }, 157 },
88 target: { x: getOffset('centre-1-3' , 'x-domEnd') , y: getOffset('centre-1-3' , 'y-domCenter') }, 158 target: { x: getOffset('centre-1-3' , 'x-domEnd') , y: getOffset('centre-1-3' , 'y-domCenter') },
89 }), 159 }),
@@ -91,13 +161,13 @@ const BroadsideCardRender = () =&gt; { @@ -91,13 +161,13 @@ const BroadsideCardRender = () =&gt; {
91 source: { x: getOffset('centre-2-2' , 'x-domStart') , y: getOffset('centre-2-2' , 'y-domCenter') }, 161 source: { x: getOffset('centre-2-2' , 'x-domStart') , y: getOffset('centre-2-2' , 'y-domCenter') },
92 target: { x: getOffset('centre-1-4' , 'x-domEnd') , y: getOffset('centre-1-4' , 'y-domCenter') }, 162 target: { x: getOffset('centre-1-4' , 'x-domEnd') , y: getOffset('centre-1-4' , 'y-domCenter') },
93 vertices: [ 163 vertices: [
94 - {  
95 - x: getOffset('centre-2-2' , 'x-domStart') - ((getOffset('centre-2-2' , 'x-domStart') - getOffset('centre-1-4' , 'x-domEnd'))/2),  
96 - y: getOffset('centre-2-2' , 'y-domCenter') 164 + {
  165 + x: getOffset('centre-2-2' , 'x-domStart') - ((getOffset('centre-2-2' , 'x-domStart') - getOffset('centre-1-4' , 'x-domEnd'))/2),
  166 + y: getOffset('centre-2-2' , 'y-domCenter')
97 }, 167 },
98 - {  
99 - x: getOffset('centre-2-2' , 'x-domStart') - ((getOffset('centre-2-2' , 'x-domStart') - getOffset('centre-1-4' , 'x-domEnd'))/2) ,  
100 - y: getOffset('centre-1-4' , 'y-domCenter') 168 + {
  169 + x: getOffset('centre-2-2' , 'x-domStart') - ((getOffset('centre-2-2' , 'x-domStart') - getOffset('centre-1-4' , 'x-domEnd'))/2) ,
  170 + y: getOffset('centre-1-4' , 'y-domCenter')
101 }, 171 },
102 ], 172 ],
103 }) 173 })
@@ -106,31 +176,31 @@ const BroadsideCardRender = () =&gt; { @@ -106,31 +176,31 @@ const BroadsideCardRender = () =&gt; {
106 176
107 { 177 {
108 work:"centre", 178 work:"centre",
109 - name:"质量巡检", 179 + name:resources[sLanguage].qualityInspection,
110 cellSite:"1-1", 180 cellSite:"1-1",
111 x6:[] 181 x6:[]
112 }, 182 },
113 { 183 {
114 work:"centre", 184 work:"centre",
115 - name:"工艺巡检", 185 + name:resources[sLanguage].processInspection,
116 cellSite:"1-2", 186 cellSite:"1-2",
117 x6:[] 187 x6:[]
118 }, 188 },
119 { 189 {
120 work:"centre", 190 work:"centre",
121 - name:"设备巡检", 191 + name:resources[sLanguage].equipmentInspection,
122 cellSite:"1-3", 192 cellSite:"1-3",
123 x6:[] 193 x6:[]
124 }, 194 },
125 { 195 {
126 work:"centre", 196 work:"centre",
127 - name:"拆合板", 197 + name:resources[sLanguage].disassembleBoard,
128 cellSite:"1-4", 198 cellSite:"1-4",
129 x6:[] 199 x6:[]
130 }, 200 },
131 { 201 {
132 work:"centre", 202 work:"centre",
133 - name:"当前任务", 203 + name:resources[sLanguage].currentTask,
134 cellSite:"2-1", 204 cellSite:"2-1",
135 x6:[ 205 x6:[
136 ()=>({ 206 ()=>({
@@ -139,10 +209,10 @@ const BroadsideCardRender = () =&gt; { @@ -139,10 +209,10 @@ const BroadsideCardRender = () =&gt; {
139 }) 209 })
140 ] 210 ]
141 }, 211 },
142 - 212 +
143 { 213 {
144 work:"centre", 214 work:"centre",
145 - name:"任务完工", 215 + name:resources[sLanguage].taskCompletion,
146 cellSite:"2-3", 216 cellSite:"2-3",
147 x6:[ 217 x6:[
148 ()=>({ 218 ()=>({
@@ -153,7 +223,7 @@ const BroadsideCardRender = () =&gt; { @@ -153,7 +223,7 @@ const BroadsideCardRender = () =&gt; {
153 }, 223 },
154 { 224 {
155 work:"centre", 225 work:"centre",
156 - name:"托盘扫码", 226 + name:resources[sLanguage].trayScan,
157 cellSite:"3-2", 227 cellSite:"3-2",
158 x6:[ 228 x6:[
159 ()=>({ 229 ()=>({
@@ -164,7 +234,7 @@ const BroadsideCardRender = () =&gt; { @@ -164,7 +234,7 @@ const BroadsideCardRender = () =&gt; {
164 }, 234 },
165 { 235 {
166 work:"centre", 236 work:"centre",
167 - name:"托盘下料", 237 + name:resources[sLanguage].trayUnloading,
168 cellSite:"3-3", 238 cellSite:"3-3",
169 x6:[ 239 x6:[
170 ()=>({ 240 ()=>({
@@ -180,7 +250,7 @@ const BroadsideCardRender = () =&gt; { @@ -180,7 +250,7 @@ const BroadsideCardRender = () =&gt; {
180 250
181 { 251 {
182 work:"later", 252 work:"later",
183 - name:"完工清场", 253 + name:resources[sLanguage].completionClearance,
184 cellSite:"2-1", 254 cellSite:"2-1",
185 x6:[ 255 x6:[
186 ()=>({ 256 ()=>({
@@ -191,7 +261,7 @@ const BroadsideCardRender = () =&gt; { @@ -191,7 +261,7 @@ const BroadsideCardRender = () =&gt; {
191 }, 261 },
192 { 262 {
193 work:"later", 263 work:"later",
194 - name:"班组报工", 264 + name:resources[sLanguage].teamReport,
195 cellSite:"3-1", 265 cellSite:"3-1",
196 x6:[ 266 x6:[
197 ()=>({ 267 ()=>({
@@ -202,7 +272,7 @@ const BroadsideCardRender = () =&gt; { @@ -202,7 +272,7 @@ const BroadsideCardRender = () =&gt; {
202 }, 272 },
203 { 273 {
204 work:"later", 274 work:"later",
205 - name:"登记下班", 275 + name:resources[sLanguage].registerOffWork,
206 cellSite:"4-1", 276 cellSite:"4-1",
207 x6:[ 277 x6:[
208 ()=>({ 278 ()=>({
@@ -262,7 +332,7 @@ const BroadsideCardRender = () =&gt; { @@ -262,7 +332,7 @@ const BroadsideCardRender = () =&gt; {
262 332
263 // 渲染x6线条 333 // 渲染x6线条
264 const lineRender = () =>{ 334 const lineRender = () =>{
265 - 335 +
266 const graph = new window.X6.Graph({ 336 const graph = new window.X6.Graph({
267 container:document.getElementById('container'), 337 container:document.getElementById('container'),
268 width: document.querySelector('#flowBody').offsetWidth, 338 width: document.querySelector('#flowBody').offsetWidth,
@@ -298,7 +368,7 @@ const BroadsideCardRender = () =&gt; { @@ -298,7 +368,7 @@ const BroadsideCardRender = () =&gt; {
298 }, 368 },
299 } 369 }
300 }) 370 })
301 - 371 +
302 }) 372 })
303 373
304 374
@@ -319,8 +389,8 @@ const BroadsideCardRender = () =&gt; { @@ -319,8 +389,8 @@ const BroadsideCardRender = () =&gt; {
319 return ( 389 return (
320 <div 390 <div
321 key={'k'+ri} 391 key={'k'+ri}
322 - onClick={()=>itemClickEvent(rows)}  
323 - className="cellBox hasShow" 392 + onClick={()=>itemClickEvent(rows)}
  393 + className="cellBox hasShow"
324 cell={cell}> 394 cell={cell}>
325 {rows.name} 395 {rows.name}
326 {/* {rows.cellSite} */} 396 {/* {rows.cellSite} */}
@@ -338,10 +408,10 @@ const BroadsideCardRender = () =&gt; { @@ -338,10 +408,10 @@ const BroadsideCardRender = () =&gt; {
338 <div className="colExpire"> 408 <div className="colExpire">
339 { 409 {
340 newList.map((e,i)=>( 410 newList.map((e,i)=>(
341 - <div  
342 - key={'i'+i}  
343 - onClick={()=>itemClickEvent(e)}  
344 - className="cellBox hasShow" 411 + <div
  412 + key={'i'+i}
  413 + onClick={()=>itemClickEvent(e)}
  414 + className="cellBox hasShow"
345 cell={`${work}-${e.cellSite}`}> 415 cell={`${work}-${e.cellSite}`}>
346 {e.name} 416 {e.name}
347 {/* {e.cellSite} */} 417 {/* {e.cellSite} */}
@@ -377,7 +447,7 @@ const BroadsideCardRender = () =&gt; { @@ -377,7 +447,7 @@ const BroadsideCardRender = () =&gt; {
377 <Spin spinning={loading} wrapperClassName={"loadingBox"}> 447 <Spin spinning={loading} wrapperClassName={"loadingBox"}>
378 <div id="flowBody" className="flowBody"> 448 <div id="flowBody" className="flowBody">
379 <div className="workFront"> 449 <div className="workFront">
380 - <div className="texts">作业前</div> 450 + <div className="texts">{resources[sLanguage].beforeWork}</div>
381 <div className="boxs"> 451 <div className="boxs">
382 { 452 {
383 itemRender(2,'front') 453 itemRender(2,'front')
@@ -385,7 +455,7 @@ const BroadsideCardRender = () =&gt; { @@ -385,7 +455,7 @@ const BroadsideCardRender = () =&gt; {
385 </div> 455 </div>
386 </div> 456 </div>
387 <div className="workCentre"> 457 <div className="workCentre">
388 - <div className="texts">作业中</div> 458 + <div className="texts">{resources[sLanguage].working}</div>
389 <div className="boxs"> 459 <div className="boxs">
390 { 460 {
391 itemRender(3,'centre') 461 itemRender(3,'centre')
@@ -393,12 +463,12 @@ const BroadsideCardRender = () =&gt; { @@ -393,12 +463,12 @@ const BroadsideCardRender = () =&gt; {
393 </div> 463 </div>
394 </div> 464 </div>
395 <div className="workLater"> 465 <div className="workLater">
396 - <div className="texts">作业后</div> 466 + <div className="texts">{resources[sLanguage].afterWork}</div>
397 <div className="boxs"> 467 <div className="boxs">
398 { 468 {
399 itemRender(1,'later') 469 itemRender(1,'later')
400 } 470 }
401 - </div> 471 + </div>
402 </div> 472 </div>
403 </div> 473 </div>
404 <div id="container"></div> 474 <div id="container"></div>
src/mes/operationGuide/index.js
@@ -6,7 +6,7 @@ import BroadsideCard from &quot;./component/BroadsideCard&quot;; @@ -6,7 +6,7 @@ import BroadsideCard from &quot;./component/BroadsideCard&quot;;
6 const OperationGuide = props => { 6 const OperationGuide = props => {
7 return ( 7 return (
8 <div className={styles.operationGuide}> 8 <div className={styles.operationGuide}>
9 - <FlowChart /> 9 + <FlowChart {...props} />
10 <BroadsideCard {...props} /> 10 <BroadsideCard {...props} />
11 </div> 11 </div>
12 ); 12 );
src/mes/productionExec/productionExecMain/index.js
@@ -36,6 +36,12 @@ const list = [ @@ -36,6 +36,12 @@ const list = [
36 36
37 const useProductionExecMainEvent = props => { 37 const useProductionExecMainEvent = props => {
38 const { formData = [] } = props; 38 const { formData = [] } = props;
  39 + const noProduction= commonFunc.showLocalMessage(props, 'noProduction', '暂无生产执行数据,请先开工一条任务!');
  40 +
  41 + const waitWorkLoading = commonFunc.showLocalMessage(props, 'waitWorkLoading', '等待工单数据加载中...');
  42 +
  43 + const productionLoading = commonFunc.showLocalMessage(props, 'productionLoading', '生产执行数据加载中...');
  44 +
39 const [refreshCount, setRefreshCount] = useState(0); 45 const [refreshCount, setRefreshCount] = useState(0);
40 const [pageloading, setPagesLoading] = useState(true); 46 const [pageloading, setPagesLoading] = useState(true);
41 47
@@ -44,10 +50,10 @@ const useProductionExecMainEvent = props =&gt; { @@ -44,10 +50,10 @@ const useProductionExecMainEvent = props =&gt; {
44 const { sSrcSlaveId, iInterface: iInterfaceOld } = workOrderInfoRowData; 50 const { sSrcSlaveId, iInterface: iInterfaceOld } = workOrderInfoRowData;
45 const bNoWorkOrderInfo = props.bFinish1 && !sSrcSlaveId; 51 const bNoWorkOrderInfo = props.bFinish1 && !sSrcSlaveId;
46 const pageloadingMsg = sSrcSlaveId 52 const pageloadingMsg = sSrcSlaveId
47 - ? "生产执行数据加载中..." 53 + ? productionLoading
48 : props.bFinish1 54 : props.bFinish1
49 - ? "暂无生产执行数据,请先开工一条任务!"  
50 - : "等待工单数据加载中..."; 55 + ? noProduction
  56 + : waitWorkLoading;
51 57
52 const { app } = props; 58 const { app } = props;
53 const { userinfo = {} } = app; 59 const { userinfo = {} } = app;
@@ -395,8 +401,9 @@ const useProductionExecMainEvent = props =&gt; { @@ -395,8 +401,9 @@ const useProductionExecMainEvent = props =&gt; {
395 401
396 const ProductionExecMain = baseProps => { 402 const ProductionExecMain = baseProps => {
397 const bStartWork = commonUtils.getAppData("userinfo", "bStartWork"); 403 const bStartWork = commonUtils.getAppData("userinfo", "bStartWork");
  404 + const workFirst = commonFunc.showLocalMessage(baseProps, 'workFirst', '请先上班后再操作');
398 if (!bStartWork) { 405 if (!bStartWork) {
399 - return <div className={styles.noStartWork}>请先上班后再操作!</div>; 406 + return <div className={styles.noStartWork}>{workFirst}</div>;
400 } 407 }
401 408
402 const props = useProductionExecMainEvent(useCommonBase(baseProps)); 409 const props = useProductionExecMainEvent(useCommonBase(baseProps));
@@ -939,6 +946,9 @@ const ProductionExecContent0 = props =&gt; { @@ -939,6 +946,9 @@ const ProductionExecContent0 = props =&gt; {
939 config.gdsconfigformslave.find( 946 config.gdsconfigformslave.find(
940 item => item.sControlName === sControlName 947 item => item.sControlName === sControlName
941 ) || {}; 948 ) || {};
  949 + if (!btnConfig.bVisible) {
  950 + btnConfig.style = { display: "none" };
  951 + }
942 return { 952 return {
943 ...btnConfig, 953 ...btnConfig,
944 disabled: props.onGetBtnStatus(tableName, btnConfig), 954 disabled: props.onGetBtnStatus(tableName, btnConfig),
src/mes/productionExec/quickSwitchTabComponent/index.js
@@ -63,7 +63,7 @@ const QuickSwitchTabComponent = baseProps =&gt; { @@ -63,7 +63,7 @@ const QuickSwitchTabComponent = baseProps =&gt; {
63 } 63 }
64 }, []); 64 }, []);
65 65
66 - const list = ["生产执行", "质量巡检", "拼版图", "产品图", "报工任务"]; 66 + let list = ["生产执行", "质量巡检", "拼版图", "产品图", "报工任务"];
67 const listId = [ 67 const listId = [
68 "12710101117087374661080", 68 "12710101117087374661080",
69 "12710101117089395856660", 69 "12710101117089395856660",
@@ -71,6 +71,37 @@ const QuickSwitchTabComponent = baseProps =&gt; { @@ -71,6 +71,37 @@ const QuickSwitchTabComponent = baseProps =&gt; {
71 "", 71 "",
72 "12710101117087404588200" 72 "12710101117087404588200"
73 ]; 73 ];
  74 + function translateList(language) {
  75 + // 原始中文列表
  76 + const list = ["生产执行", "质量巡检", "拼版图", "产品图", "报工任务"];
  77 +
  78 + // 定义多语言映射
  79 + const translations = {
  80 + sEnglish: {
  81 + "生产执行": "Production Execution",
  82 + "质量巡检": "Quality Inspection",
  83 + "拼版图": "Assembly Drawing",
  84 + "产品图": "Product Drawing",
  85 + "报工任务": "Work Reporting Task"
  86 + },
  87 + sBig5: {
  88 + "生产执行": "生產執行",
  89 + "质量巡检": "質量巡檢",
  90 + "拼版图": "拼版圖",
  91 + "产品图": "產品圖",
  92 + "报工任务": "報工任務"
  93 + }
  94 + };
  95 +
  96 + // 根据语言设置进行转换
  97 + if (translations[language]) {
  98 + return list.map(item => translations[language][item] || item);
  99 + }
  100 + // 默认返回原始列表
  101 + return list;
  102 + }
  103 + const sLanguage = props.app.userinfo.sLanguage || 'sChinese';
  104 + list = translateList(sLanguage);
74 105
75 return ( 106 return (
76 <div className={styles.quickSwitchTabComponent} ref={ref}> 107 <div className={styles.quickSwitchTabComponent} ref={ref}>
src/mes/queryTracking/index.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 * @Author: varcms 2 * @Author: varcms
3 * @LastEditors: varcms 3 * @LastEditors: varcms
4 * @Date: 2025-06-04 11:06:14 4 * @Date: 2025-06-04 11:06:14
5 - * @Description: 5 + * @Description:
6 */ 6 */
7 import React from "react"; 7 import React from "react";
8 import styles from "./index.less"; 8 import styles from "./index.less";
src/mes/scheduledTasks/machineTasks/index.js
@@ -4,1161 +4,1115 @@ @@ -4,1161 +4,1115 @@
4 * @Date: 2024-02-28 9:55:04 4 * @Date: 2024-02-28 9:55:04
5 * @Description: 计划任务 ---- 机台任务 5 * @Description: 计划任务 ---- 机台任务
6 */ 6 */
7 - import React, { useEffect, useRef, useState } from "react";  
8 - import moment from "moment";  
9 - import {  
10 - Carousel,  
11 - Col,  
12 - Row,  
13 - Button,  
14 - Input,  
15 - Modal,  
16 - Space,  
17 - Dropdown,  
18 - message,  
19 - Tooltip  
20 - } from "antd";  
21 - import { SettingTwoTone } from "@ant-design/icons";  
22 - import * as commonFunc from "@/components/Common/commonFunc";  
23 - import * as commonUtils from "@/utils/utils";  
24 - import * as commonConfig from "@/utils/config";  
25 - import * as commonBusiness from "@/components/Common/commonBusiness";  
26 - import * as commonServices from "@/services/services";  
27 - import useCommonBase from "@/components/Common/CommonHooks/useCommonBase";  
28 - import StaticEditTable from "@/components/Common/CommonTable";  
29 - import CommonViewTable from "@/components/Common/CommonViewTable";  
30 - import styles from "./index.less";  
31 - import taskInfoIcon from "../assets/taskInfo2.png";  
32 - import statusIcon from "../assets/status.png";  
33 - import taskIcon from "../assets/task.png";  
34 - import timeIcon from "../assets/time.png";  
35 - import { handleOeeBtnEent } from "./common/handlePause";  
36 - import { operationFetch } from "../../productionExec/productionExecMain/operationFetch";  
37 -  
38 - // 业务层  
39 - const useInfoEvent = props => {  
40 - const { formData } = props;  
41 - const [refreshCount, setRefreshCount] = useState(0);  
42 -  
43 - useEffect(  
44 - async () => {  
45 - if (commonUtils.isNotEmptyArr(formData)) {  
46 - const colunmData = handleGetColumnData(formData, true);  
47 - const result = await handleGetData(formData, true);  
48 - const addState = {  
49 - ...colunmData,  
50 - ...result  
51 - };  
52 - props.onSaveState(addState);  
53 - }  
54 - },  
55 - [formData, refreshCount]  
56 - );  
57 -  
58 - // 获取表头数据  
59 - const handleGetColumnData = (formData = [], isWait) => {  
60 - let addState = {};  
61 - for (let i = 0; i < formData.length; i++) {  
62 - const config = formData[i];  
63 - const column = commonFunc.getHeaderConfig(config);  
64 - addState = {  
65 - ...addState,  
66 - [`slave${i}Column`]: column,  
67 - [`slave${i}Config`]: config  
68 - };  
69 - }  
70 - if (isWait) {  
71 - return addState;  
72 - } else {  
73 - props.onSaveState(addState);  
74 - }  
75 - };  
76 -  
77 - // 获取数据集  
78 - const handleGetData = async (formData = [], isWait, filter) => {  
79 - let addState = {};  
80 - for (let i = 0; i < formData.length; i++) {  
81 - const config = formData[i];  
82 - if (!config) continue;  
83 -  
84 - const conditonValues = props.onGetSqlConditionValues(config);  
85 -  
86 - if (config.sSqlStr === "Sp_OEE_ProductionReport") {  
87 - conditonValues.sMachineId_s_pro = props.app.sMachineNameSId;  
88 - }  
89 -  
90 - // 前期生产或反馈问题表必须有非空过滤条件  
91 - if (  
92 - (i === 1 && Object.values(conditonValues).includes("")) ||  
93 - Object.values(conditonValues).includes(undefined)  
94 - ) {  
95 - continue;  
96 - }  
97 -  
98 - const bFilter = [];  
99 - if (filter) {  
100 - Object.keys(filter).forEach(key => {  
101 - bFilter.push({  
102 - bFilterName: key,  
103 - bFilterCondition: "like",  
104 - bFilterValue: filter[key]  
105 - });  
106 - });  
107 - }  
108 -  
109 - const result =  
110 - (await props.onGetDataSet({  
111 - name: `slave${i}`,  
112 - configData: config,  
113 - condition: {  
114 - bFilter,  
115 - sSqlCondition: { ...conditonValues }  
116 - },  
117 - isWait: true  
118 - })) || {};  
119 - props.setTempRef(result);  
120 - addState = { ...addState, ...result };  
121 - }  
122 - props.setTempRef({}, true);  
123 - if (isWait) {  
124 - return addState;  
125 - } else {  
126 - props.onSaveState(addState);  
127 - } 7 +import React, { useEffect, useRef, useState } from "react";
  8 +import moment from "moment";
  9 +import {
  10 + Carousel,
  11 + Col,
  12 + Row,
  13 + Button,
  14 + Input,
  15 + Modal,
  16 + Space,
  17 + Dropdown,
  18 + message,
  19 + Tooltip
  20 +} from "antd";
  21 +import { SettingTwoTone } from "@ant-design/icons";
  22 +import * as commonFunc from "@/components/Common/commonFunc";
  23 +import * as commonUtils from "@/utils/utils";
  24 +import * as commonConfig from "@/utils/config";
  25 +import * as commonBusiness from "@/components/Common/commonBusiness";
  26 +import * as commonServices from "@/services/services";
  27 +import useCommonBase from "@/components/Common/CommonHooks/useCommonBase";
  28 +import StaticEditTable from "@/components/Common/CommonTable";
  29 +import styles from "./index.less";
  30 +import taskInfoIcon from "../assets/taskInfo2.png";
  31 +import statusIcon from "../assets/status.png";
  32 +import taskIcon from "../assets/task.png";
  33 +import timeIcon from "../assets/time.png";
  34 +import { handleOeeBtnEent } from "./common/handlePause";
  35 +import { operationFetch } from "../../productionExec/productionExecMain/operationFetch";
  36 +
  37 +// 业务层
  38 +const useInfoEvent = props => {
  39 + const { formData } = props;
  40 + const [refreshCount, setRefreshCount] = useState(0);
  41 +
  42 + useEffect(
  43 + async () => {
  44 + if (commonUtils.isNotEmptyArr(formData)) {
  45 + const colunmData = handleGetColumnData(formData, true);
  46 + const result = await handleGetData(formData, true);
  47 + const addState = {
  48 + ...colunmData,
  49 + ...result
  50 + };
  51 + props.onSaveState(addState);
  52 + }
  53 + },
  54 + [formData, refreshCount]
  55 + );
  56 +
  57 + // 获取表头数据
  58 + const handleGetColumnData = (formData = [], isWait) => {
  59 + let addState = {};
  60 + for (let i = 0; i < formData.length; i++) {
  61 + const config = formData[i];
  62 + const column = commonFunc.getHeaderConfig(config);
  63 + addState = {
  64 + ...addState,
  65 + [`slave${i}Column`]: column,
  66 + [`slave${i}Config`]: config
128 }; 67 };
129 -  
130 - // 查询  
131 - const handleSearch = sWorkOrderNo => {  
132 - handleGetData([formData[0]], false, {  
133 - sWorkOrderNo 68 + }
  69 + if (isWait) {
  70 + return addState;
  71 + } else {
  72 + props.onSaveState(addState);
  73 + }
  74 + };
  75 +
  76 + // 获取数据集
  77 + const handleGetData = async (formData = [], isWait, filter) => {
  78 + let addState = {};
  79 + for (let i = 0; i < formData.length; i++) {
  80 + const config = formData[i];
  81 + if (!config) continue;
  82 +
  83 + const conditonValues = props.onGetSqlConditionValues(config);
  84 +
  85 + if (config.sSqlStr === "Sp_OEE_ProductionReport") {
  86 + conditonValues.sMachineId_s_pro = props.app.sMachineNameSId;
  87 + }
  88 +
  89 + // 前期生产或反馈问题表必须有非空过滤条件
  90 + if (
  91 + (i === 1 && Object.values(conditonValues).includes("")) ||
  92 + Object.values(conditonValues).includes(undefined)
  93 + ) {
  94 + continue;
  95 + }
  96 +
  97 + const bFilter = [];
  98 + if (filter) {
  99 + Object.keys(filter).forEach(key => {
  100 + bFilter.push({
  101 + bFilterName: key,
  102 + bFilterCondition: "like",
  103 + bFilterValue: filter[key]
  104 + });
134 }); 105 });
135 - };  
136 -  
137 - // 开工事件  
138 - const handleStartWork = async params => {  
139 - const { sModelsId, token, app } = props;  
140 - const { name, record, config, tableData, iFlag, pauseValue } = params;  
141 - const { sMachineId, sId, sSlaveId } = record;  
142 -  
143 - // /* 若设置了禁止跳单 选择数据不是第一条时进行提示 */  
144 - // const iIndex = app.systemData.findIndex(item => item.sName === "CkxNoSkip");  
145 - // if (iIndex > -1) {  
146 - // const sValue = app.systemData[iIndex].sValue;  
147 - // if (sValue === "1") {  
148 - // /* 如果设置了进制跳单 */  
149 - // const indexFirst = tableData.findIndex(  
150 - // item => sId === item.sId || sSlaveId === item.sSlaveId  
151 - // );  
152 - // if (indexFirst > 0) {  
153 - // message.warn("禁止跳单!");  
154 - // return;  
155 - // }  
156 - // }  
157 - // }  
158 - // // 验证是否单据是否被使用  
159 - // const dataUrl = `${  
160 - // commonConfig.server_host  
161 - // }bill/billCopyToCheckWork?sModelsId=${sModelsId}`;  
162 - // const values = { sMachineId };  
163 - // const dataReturn = (await commonServices.postValueService(  
164 - // token,  
165 - // values,  
166 - // dataUrl  
167 - // )).data;  
168 - // if (dataReturn.code !== 1) {  
169 - // props.getServiceError(dataReturn);  
170 - // return;  
171 - // }  
172 -  
173 - // 单据可以使用  
174 - const { startWorkConfig = {} } = config;  
175 - const { sAssignField } = startWorkConfig;  
176 - const allTableData = {  
177 - [name]: record  
178 - };  
179 - let rowData = commonFunc.getDefaultData(config, allTableData); // 取默认值  
180 - rowData = {  
181 - ...rowData,  
182 - ...commonFunc.getAssignFieldValue(sAssignField, record, allTableData),  
183 - handleType: "add",  
184 - sId: commonUtils.createSid(),  
185 - sTeamId: app.sTeamNameSId,  
186 - sMachineId: app.sMachineNameSId,  
187 - sParentId: record.sId,  
188 - tCreateDate: new Date()  
189 - };  
190 -  
191 - const valuesNew = {};  
192 - valuesNew.data = [];  
193 - valuesNew.data.push(  
194 - commonBusiness.mergeData(name, "plc_machinedata", [rowData], [])  
195 - );  
196 -  
197 - if ((iFlag || Object.is(iFlag, 0)) && valuesNew.data[0]) {  
198 - valuesNew.data[0].iFlag = iFlag; 106 + }
  107 +
  108 + const result =
  109 + (await props.onGetDataSet({
  110 + name: `slave${i}`,
  111 + configData: config,
  112 + condition: {
  113 + bFilter,
  114 + sSqlCondition: { ...conditonValues }
  115 + },
  116 + isWait: true
  117 + })) || {};
  118 + props.setTempRef(result);
  119 + addState = { ...addState, ...result };
  120 + }
  121 + props.setTempRef({}, true);
  122 + if (isWait) {
  123 + return addState;
  124 + } else {
  125 + props.onSaveState(addState);
  126 + }
  127 + };
  128 +
  129 + // 查询
  130 + const handleSearch = sWorkOrderNo => {
  131 + handleGetData([formData[0]], false, {
  132 + sWorkOrderNo
  133 + });
  134 + };
  135 +
  136 + // 开工事件
  137 + const handleStartWork = async params => {
  138 + const { sModelsId, token, app } = props;
  139 + const { name, record, config, tableData, iFlag, pauseValue } = params;
  140 + const { sMachineId, sId, sSlaveId } = record;
  141 +
  142 + // /* 若设置了禁止跳单 选择数据不是第一条时进行提示 */
  143 + // const iIndex = app.systemData.findIndex(item => item.sName === "CkxNoSkip");
  144 + // if (iIndex > -1) {
  145 + // const sValue = app.systemData[iIndex].sValue;
  146 + // if (sValue === "1") {
  147 + // /* 如果设置了进制跳单 */
  148 + // const indexFirst = tableData.findIndex(
  149 + // item => sId === item.sId || sSlaveId === item.sSlaveId
  150 + // );
  151 + // if (indexFirst > 0) {
  152 + // message.warn("禁止跳单!");
  153 + // return;
  154 + // }
  155 + // }
  156 + // }
  157 + // // 验证是否单据是否被使用
  158 + // const dataUrl = `${
  159 + // commonConfig.server_host
  160 + // }bill/billCopyToCheckWork?sModelsId=${sModelsId}`;
  161 + // const values = { sMachineId };
  162 + // const dataReturn = (await commonServices.postValueService(
  163 + // token,
  164 + // values,
  165 + // dataUrl
  166 + // )).data;
  167 + // if (dataReturn.code !== 1) {
  168 + // props.getServiceError(dataReturn);
  169 + // return;
  170 + // }
  171 +
  172 + // 单据可以使用
  173 + const { startWorkConfig = {} } = config;
  174 + const { sAssignField } = startWorkConfig;
  175 + const allTableData = {
  176 + [name]: record
  177 + };
  178 + let rowData = commonFunc.getDefaultData(config, allTableData); // 取默认值
  179 + rowData = {
  180 + ...rowData,
  181 + ...commonFunc.getAssignFieldValue(sAssignField, record, allTableData),
  182 + handleType: "add",
  183 + sId: commonUtils.createSid(),
  184 + sTeamId: app.sTeamNameSId,
  185 + sMachineId: app.sMachineNameSId,
  186 + sParentId: record.sId,
  187 + tCreateDate: new Date()
  188 + };
  189 +
  190 + const valuesNew = {};
  191 + valuesNew.data = [];
  192 + valuesNew.data.push(
  193 + commonBusiness.mergeData(name, "plc_machinedata", [rowData], [])
  194 + );
  195 +
  196 + if ((iFlag || Object.is(iFlag, 0)) && valuesNew.data[0]) {
  197 + valuesNew.data[0].iFlag = iFlag;
  198 + }
  199 +
  200 + if (pauseValue) {
  201 + valuesNew.data[0].sWorkOrderChangeMemo = pauseValue;
  202 + }
  203 +
  204 + const BtnSave = commonFunc.showMessage(
  205 + app.commonConst,
  206 + "BtnSave"
  207 + ); /* 保存 */
  208 + params.optName = BtnSave;
  209 + params.sClientType = "1";
  210 + const returnData = await commonBusiness.saveData({
  211 + token,
  212 + value: valuesNew,
  213 + sModelsId,
  214 + bMachineTask: true
  215 + });
  216 +
  217 + return returnData;
  218 + // if (commonUtils.isEmptyObject(returnData)) return;
  219 +
  220 + // props.onSaveState(
  221 + // {
  222 + // [`${name}SelectedRowKeys`]: [record.sId]
  223 + // },
  224 + // () => {
  225 + // props.dispatch({
  226 + // type: "app/saveGlobalData",
  227 + // payload: {
  228 + // currentStartWorkMachineTaskDataRow: rowData
  229 + // }
  230 + // });
  231 + // handleRefresh();
  232 + // setTimeout(() => {
  233 + // props.onChangeRouter({
  234 + // type: "name",
  235 + // path: ["生产执行", "生产执行"]
  236 + // });
  237 + // }, 500);
  238 + // }
  239 + // );
  240 + // this.props.onSaveCurrentState(slaveData, true, undefined, undefined, 1);
  241 + };
  242 +
  243 + // 更新工单状态
  244 + const handleUpdateStatus = async params => {
  245 + const { doWorkState, record } = params;
  246 +
  247 + const { sModelsId, app } = props;
  248 +
  249 + const value = {
  250 + plcMachinedata: record
  251 + };
  252 +
  253 + const url = `${
  254 + commonConfig.server_host
  255 + }oee/doUpdateStatus/${doWorkState}?sModelsId=${sModelsId}&sMachineId=${
  256 + record.sMachineId
  257 + }`;
  258 + const returnData = (await commonServices.postValueService(
  259 + app.token,
  260 + value,
  261 + url
  262 + )).data;
  263 +
  264 + if (returnData.code !== 1) {
  265 + props.getServiceError(returnData);
  266 + return false;
  267 + }
  268 +
  269 + return true;
  270 + };
  271 +
  272 + // 监听机台任务选中行变化
  273 + const { slave0SelectedRowKeys = [], slave0Data = [], sModelsId } = props;
  274 + useEffect(
  275 + () => {
  276 + if (!slave0Data.length) return;
  277 +
  278 + const globalData = commonUtils.convertStrToObj(
  279 + localStorage.xlybusinessglobalData
  280 + );
  281 + const { currentSelectedMachineTaskDataRow = {} } = globalData;
  282 +
  283 + // 当前选中行sId,默认取缓存数据
  284 + let currentSelectedRowKey = slave0SelectedRowKeys[0];
  285 + if (
  286 + !currentSelectedRowKey &&
  287 + sModelsId === currentSelectedMachineTaskDataRow?.sModelsId
  288 + ) {
  289 + currentSelectedRowKey = currentSelectedMachineTaskDataRow.sId;
  290 + }
  291 + if (!currentSelectedRowKey) {
  292 + currentSelectedRowKey = slave0Data[0].sId;
  293 + }
  294 +
  295 + // 默认选中第一行
  296 + if (!slave0SelectedRowKeys.length) {
  297 + props.onSaveState({
  298 + slave0SelectedRowKeys: [currentSelectedRowKey]
  299 + });
  300 + }
  301 +
  302 + // 将当前选中行保存到全局
  303 + props.dispatch({
  304 + type: "app/saveGlobalData",
  305 + payload: {
  306 + currentSelectedMachineTaskDataRow: {
  307 + ...(slave0Data.find(item => item.sId === currentSelectedRowKey) ||
  308 + {}),
  309 + sModelsId
  310 + }
199 } 311 }
200 -  
201 - if (pauseValue) {  
202 - valuesNew.data[0].sWorkOrderChangeMemo = pauseValue; 312 + });
  313 +
  314 + // 前期生产或反馈问题数据根据机台任务选中行变化
  315 + handleGetData(["", formData[1]], false);
  316 + },
  317 + [slave0SelectedRowKeys[0], slave0Data.length]
  318 + );
  319 +
  320 + // 监听开工任务变化
  321 + useEffect(
  322 + () => {
  323 + if (commonUtils.isEmptyObject(props.slave0Data)) return;
  324 + const startRowData = props.slave0Data.find(item => item.iStar === 1);
  325 + if (!startRowData) return;
  326 + props.dispatch({
  327 + type: "app/saveGlobalData",
  328 + payload: {
  329 + currentStartWorkMachineTaskDataRow: startRowData
203 } 330 }
204 -  
205 - const BtnSave = commonFunc.showMessage(  
206 - app.commonConst,  
207 - "BtnSave"  
208 - ); /* 保存 */  
209 - params.optName = BtnSave;  
210 - params.sClientType = "1";  
211 - const returnData = await commonBusiness.saveData({  
212 - token,  
213 - value: valuesNew,  
214 - sModelsId,  
215 - bMachineTask: true  
216 - });  
217 -  
218 - return returnData;  
219 - // if (commonUtils.isEmptyObject(returnData)) return;  
220 -  
221 - // props.onSaveState(  
222 - // {  
223 - // [`${name}SelectedRowKeys`]: [record.sId]  
224 - // },  
225 - // () => {  
226 - // props.dispatch({  
227 - // type: "app/saveGlobalData",  
228 - // payload: {  
229 - // currentStartWorkMachineTaskDataRow: rowData  
230 - // }  
231 - // });  
232 - // handleRefresh();  
233 - // setTimeout(() => {  
234 - // props.onChangeRouter({  
235 - // type: "name",  
236 - // path: ["生产执行", "生产执行"]  
237 - // });  
238 - // }, 500);  
239 - // }  
240 - // );  
241 - // this.props.onSaveCurrentState(slaveData, true, undefined, undefined, 1);  
242 - };  
243 -  
244 - // 更新工单状态  
245 - const handleUpdateStatus = async params => {  
246 - const { doWorkState, record } = params;  
247 -  
248 - const { sModelsId, app } = props;  
249 -  
250 - const value = {  
251 - plcMachinedata: record  
252 - };  
253 -  
254 - const url = `${  
255 - commonConfig.server_host  
256 - }oee/doUpdateStatus/${doWorkState}?sModelsId=${sModelsId}&sMachineId=${  
257 - record.sMachineId  
258 - }`;  
259 - const returnData = (await commonServices.postValueService(  
260 - app.token,  
261 - value,  
262 - url  
263 - )).data;  
264 -  
265 - if (returnData.code !== 1) {  
266 - props.getServiceError(returnData);  
267 - return false; 331 + });
  332 + },
  333 + [JSON.stringify(props.slave0Data)]
  334 + );
  335 +
  336 + // 刷新页面
  337 + const handleRefresh = () => {
  338 + setRefreshCount(refreshCount + 1);
  339 + };
  340 +
  341 + const itemClickRef = useRef();
  342 +
  343 + // 开工、暂停事件
  344 + const handleTableBtnClick = async item => {
  345 + const { tableName, index, record, tableData, config, iFlag } = item;
  346 + const { showName } = config;
  347 + if (showName === "完工") {
  348 + Modal.confirm({
  349 + title: "温馨提示:",
  350 + content: <div>确认完工?</div>,
  351 + okText: "确认",
  352 + cancelText: "取消",
  353 + onOk() {
  354 + handleUpdateProductionplan({ item, iFlag: 4 });
268 } 355 }
269 -  
270 - return true;  
271 - };  
272 -  
273 - // 监听机台任务选中行变化  
274 - const { slave0SelectedRowKeys = [], slave0Data = [], sModelsId } = props;  
275 - useEffect(  
276 - () => {  
277 - if (!slave0Data.length) return;  
278 -  
279 - const globalData = commonUtils.convertStrToObj(  
280 - localStorage.xlybusinessglobalData  
281 - );  
282 - const { currentSelectedMachineTaskDataRow = {} } = globalData;  
283 -  
284 - // 当前选中行sId,默认取缓存数据  
285 - let currentSelectedRowKey = slave0SelectedRowKeys[0];  
286 - if (  
287 - !currentSelectedRowKey &&  
288 - sModelsId === currentSelectedMachineTaskDataRow?.sModelsId  
289 - ) {  
290 - currentSelectedRowKey = currentSelectedMachineTaskDataRow.sId;  
291 - }  
292 - if (!currentSelectedRowKey) {  
293 - currentSelectedRowKey = slave0Data[0].sId;  
294 - }  
295 -  
296 - // 默认选中第一行  
297 - if (!slave0SelectedRowKeys.length) {  
298 - props.onSaveState({  
299 - slave0SelectedRowKeys: [currentSelectedRowKey]  
300 - });  
301 - }  
302 -  
303 - // 将当前选中行保存到全局  
304 - props.dispatch({  
305 - type: "app/saveGlobalData",  
306 - payload: {  
307 - currentSelectedMachineTaskDataRow: {  
308 - ...(slave0Data.find(item => item.sId === currentSelectedRowKey) ||  
309 - {}),  
310 - sModelsId  
311 - }  
312 - }  
313 - });  
314 -  
315 - // 前期生产或反馈问题数据根据机台任务选中行变化  
316 - handleGetData(["", formData[1]], false);  
317 - },  
318 - [slave0SelectedRowKeys[0], slave0Data.length]  
319 - );  
320 -  
321 - // 监听开工任务变化  
322 - useEffect(  
323 - () => {  
324 - if (commonUtils.isEmptyObject(props.slave0Data)) return;  
325 - const startRowData = props.slave0Data.find(item => item.iStar === 1);  
326 - if (!startRowData) return;  
327 - props.dispatch({  
328 - type: "app/saveGlobalData",  
329 - payload: {  
330 - currentStartWorkMachineTaskDataRow: startRowData  
331 - }  
332 - });  
333 - },  
334 - [JSON.stringify(props.slave0Data)]  
335 - );  
336 -  
337 - // 刷新页面  
338 - const handleRefresh = () => {  
339 - setRefreshCount(pre => pre + 1);  
340 - };  
341 -  
342 - const itemClickRef = useRef();  
343 -  
344 - // 开工、暂停事件  
345 - const handleTableBtnClick = async item => {  
346 - const { tableName, index, record, tableData, config, iFlag } = item;  
347 - const { showName } = config;  
348 - if (showName === "完工") { 356 + });
  357 + return;
  358 + }
  359 + // const iStar = index === 0 ? 1 : 2;
  360 + const { iStar } = record;
  361 +
  362 + if (iStar === 1) {
  363 + // 如果只剩一条数据,询问是暂停还是完工
  364 + if (tableData.length === 1) {
  365 + const result = await new Promise(resolve => {
349 Modal.confirm({ 366 Modal.confirm({
350 title: "温馨提示:", 367 title: "温馨提示:",
351 - content: <div>确认完工?</div>,  
352 - okText: "确认",  
353 - cancelText: "取消", 368 + content: <div>请选择要变更的状态</div>,
  369 + okText: "完工",
  370 + cancelText: "暂停",
354 onOk() { 371 onOk() {
355 - handleUpdateProductionplan({ item, iFlag: 4 }); 372 + resolve(true);
  373 + },
  374 + onCancel() {
  375 + resolve(false);
356 } 376 }
357 }); 377 });
  378 + });
  379 + if (result) {
  380 + // 走完工接口
  381 + handleUpdateProductionplan({ item, iFlag: 4 });
358 return; 382 return;
359 } 383 }
360 - // const iStar = index === 0 ? 1 : 2;  
361 - const { iStar } = record;  
362 -  
363 - if (iStar === 1) {  
364 - // 如果只剩一条数据,询问是暂停还是完工  
365 - if (tableData.length === 1) {  
366 - const result = await new Promise(resolve => {  
367 - Modal.confirm({  
368 - title: "温馨提示:",  
369 - content: <div>请选择要变更的状态</div>,  
370 - okText: "完工",  
371 - cancelText: "暂停",  
372 - onOk() {  
373 - resolve(true);  
374 - },  
375 - onCancel() {  
376 - resolve(false);  
377 - }  
378 - });  
379 - });  
380 - if (result) {  
381 - // 走完工接口  
382 - handleUpdateProductionplan({ item, iFlag: 4 });  
383 - return;  
384 - }  
385 - }  
386 -  
387 - // 开工中,走暂停接口 384 + }
  385 +
  386 + // 开工中,走暂停接口
  387 + props.onSaveState({
  388 + taskConfirmModalVisible: true,
  389 + taskConfirmModalMsg: "请填写暂停原因",
  390 + tempTaskId: record.sId,
  391 + bPauseOnly: true,
  392 + pauseCallback: pauseValue => {
388 props.onSaveState({ 393 props.onSaveState({
389 - taskConfirmModalVisible: true,  
390 - taskConfirmModalMsg: "请选择暂停原因",  
391 - tempTaskId: record.sId,  
392 - bPauseOnly: true,  
393 - pauseCallback: pauseValue => {  
394 - props.onSaveState({  
395 - taskConfirmModalVisible: false,  
396 - taskConfirmModalMsg: "",  
397 - tempTaskId: "",  
398 - bPauseOnly: false,  
399 - pauseCallback: null  
400 - });  
401 - handleUpdateProductionplan({ item, iFlag: 3, pauseValue });  
402 - } 394 + taskConfirmModalVisible: false,
  395 + taskConfirmModalMsg: "",
  396 + tempTaskId: "",
  397 + bPauseOnly: false,
  398 + pauseCallback: null
403 }); 399 });
404 - } else if (iStar === 2 || iStar === 3) {  
405 - // 暂停中,走开工接口  
406 - const dataReturn = await handleStartWork(item);  
407 - const { code, msg } = dataReturn;  
408 - if (code === 1) {  
409 - // 成功开工  
410 - itemClickRef.current = null;  
411 - message.success(dataReturn.msg);  
412 - if (props.taskConfirmModalVisible) {  
413 - props.onSaveState({  
414 - taskConfirmModalVisible: false,  
415 - taskConfirmModalMsg: "",  
416 - tempTaskId: ""  
417 - });  
418 - }  
419 - props.onChangeRouter({  
420 - type: "name",  
421 - path: ["生产执行", "生产执行"]  
422 - });  
423 - } else if (code === -7) {  
424 - // 如果有开工中的任务,即接口返回-7,弹出确认窗体  
425 - itemClickRef.current = { data: item };  
426 - props.onSaveState({  
427 - taskConfirmModalVisible: true,  
428 - taskConfirmModalMsg: msg,  
429 - tempTaskId: record.sId  
430 - });  
431 - } else {  
432 - // 报错  
433 - message.error(msg);  
434 - }  
435 - }  
436 - };  
437 -  
438 - // 更新机台状态  
439 - const handleUpdateProductionplan = async ({ item, iFlag, pauseValue }) => {  
440 - const { app } = props;  
441 - const { sId } = item.record;  
442 - const { token } = app;  
443 - const url = `${  
444 - commonConfig.server_host  
445 - }oee/updateProductionplan/${sId}/${iFlag}${  
446 - pauseValue  
447 - ? `?sWorkOrderChangeMemo=${encodeURIComponent(pauseValue)}`  
448 - : ""  
449 - }`;  
450 - const dataReturn = (await commonServices.getService(token, url)).data;  
451 - if (dataReturn.code === 1) {  
452 - dataReturn.msg && message.success(dataReturn.msg, 3);  
453 - handleRefresh();  
454 - } else {  
455 - message.error(dataReturn.msg, 3); 400 + handleUpdateProductionplan({ item, iFlag: 3, pauseValue });
456 } 401 }
457 - };  
458 -  
459 - return {  
460 - ...props,  
461 - // 其他对象  
462 - itemClickRef,  
463 - onSearch: handleSearch,  
464 - onStartWork: handleStartWork, // 开工事件  
465 - onRefresh: handleRefresh, // 刷新页面  
466 - onTableBtnClick: handleTableBtnClick, // 开工、暂停事件  
467 - onUpdateProductionplan: handleUpdateProductionplan // 更新机台状态  
468 - };  
469 - };  
470 -  
471 - /**  
472 - * 暂停按钮  
473 - * @param {*} params  
474 - */  
475 - const handlePause = async params => {  
476 - const { item, props } = params;  
477 - const { record, config } = item;  
478 - await operationFetch(  
479 - { ...props, workOrderInfoData: [record] },  
480 - config,  
481 - config.sName || "fileError"  
482 - );  
483 - await handleOeeBtnEent({ props, item });  
484 - };  
485 -  
486 - const MachineTasks = baseProps => {  
487 - const props = useInfoEvent(useCommonBase({ ...baseProps }));  
488 - const {  
489 - app,  
490 - slave0Config,  
491 - slave1Column,  
492 - slave1Data = [],  
493 - slave2Column,  
494 - slave2Data = []  
495 - } = props;  
496 -  
497 - const bStartWork = commonUtils.getAppData("userinfo", "bStartWork");  
498 -  
499 - const [isTableLoading, setTableLoading] = useState(false);  
500 -  
501 - // const BtnTableCopyTo.startWork  
502 - // 开工按钮配置  
503 - const startWorkConfig =  
504 - slave0Config?.gdsconfigformslave?.find(  
505 - item => item.sControlName === "BtnTableCopyTo.startWork"  
506 - ) || {};  
507 - const pauseWorkConfig =  
508 - slave0Config?.gdsconfigformslave?.find(  
509 - item => item.sControlName === "BtnTableCopyTo.pauseWork"  
510 - ) || {};  
511 -  
512 - // 表格业务  
513 - const [sSrcNo, setSSrcNo] = useState("");  
514 - // 顶部表格配置  
515 - const tableProps = {  
516 - ...commonBusiness.getTableTypes("slave0", props),  
517 - tableProps: {  
518 - onChange: () => {},  
519 - loading: isTableLoading  
520 - },  
521 - tableBtnsConfig: params => {  
522 - const { record, index } = params;  
523 - const { iStar } = record;  
524 - // const iStar = index === 0 ? 1 : 2;  
525 -  
526 - // const bStart = iStar === 1;  
527 - // const bPause = iStar === 2;  
528 -  
529 - // 1 :开工状态(显示暂停) 2: 暂停状态(显示开工) 3: 完工状态(显示完工,灰色)  
530 - // 开工:开工接口(现在)1:正常, -7:有开工,要有提示, -1: 错误提示  
531 - // -7 :完工: iFlag:3 (完工上一条) 暂停:iFlag:2 (暂停上一条)  
532 - // 暂停:新接口  
533 -  
534 - let showName, btnBgColor, sDefault;  
535 - if (iStar === 1) {  
536 - showName = "暂停";  
537 - btnBgColor = "#FAAD14";  
538 - } else if (iStar === 2 || iStar === 3) {  
539 - showName = "开工";  
540 - btnBgColor = "#1890FF";  
541 - } else {  
542 - showName = "完工";  
543 - btnBgColor = "#AAA";  
544 - sDefault = "${false}";  
545 - }  
546 -  
547 - if (!bStartWork) {  
548 - sDefault = "${false}";  
549 - }  
550 -  
551 - return [  
552 - { showName, btnBgColor, sDefault, startWorkConfig, pauseWorkConfig },  
553 - { showName: "完工", btnBgColor: "#1890FF", sDefault }  
554 - ];  
555 -  
556 - // return [  
557 - // {  
558 - // ...startWorkConfig,  
559 - // showName: "开工",  
560 - // btnBgColor: bStart ? "#1890FF" : "#AAA"  
561 - // },  
562 - // {  
563 - // ...pauseWorkConfig,  
564 - // showName: "暂停",  
565 - // btnBgColor: bPause ? "#FAAD14" : "#AAA"  
566 - // }  
567 - // ];  
568 - },  
569 - onTableBtnClick: item => {  
570 - props.onTableBtnClick(item);  
571 - return;  
572 - // 通用按钮操作  
573 - // props.onTableBtnClick(item);  
574 - const { tableName, index, record, tableData, config } = item;  
575 - const { iStar } = record;  
576 - const { showName } = config;  
577 - if (iStar === 1 && showName === "开工") {  
578 - setTableLoading(true);  
579 - props.onStartWork(item).finally(() => {  
580 - setTableLoading(false);  
581 - });  
582 - } else if (iStar === 2 && showName === "暂停") {  
583 - setTableLoading(true);  
584 - handlePause({ item, props }).finally(() => {  
585 - setTableLoading(false);  
586 - props.onRefresh();  
587 - });  
588 - }  
589 - },  
590 - tableBtnsWidth: "190px",  
591 - fixedHeight: "335px"  
592 - };  
593 - // 全部按钮事件  
594 - const tableAll = () => {  
595 - setSSrcNo("");  
596 - props.onSearch();  
597 - };  
598 - // 查询按钮事件  
599 - const tableQuery = () => {  
600 - props.onSearch(sSrcNo);  
601 - };  
602 -  
603 - // 前期生产或反馈问题业务  
604 - const [issueType, setIssueType] = useState(4);  
605 - const issueObj = slave1Column?.reduce((acc, item) => {  
606 - const chineseKey = item.title.replace(/[0-9]/g, "");  
607 - if (acc[chineseKey]) {  
608 - acc[chineseKey].push(item);  
609 - } else {  
610 - acc[chineseKey] = [item]; 402 + });
  403 + } else if (iStar === 2 || iStar === 3) {
  404 + // 暂停中,走开工接口
  405 + const dataReturn = await handleStartWork(item);
  406 + const { code, msg } = dataReturn;
  407 + if (code === 1) {
  408 + // 成功开工
  409 + itemClickRef.current = null;
  410 + message.success(dataReturn.msg);
  411 + if (props.taskConfirmModalVisible) {
  412 + props.onSaveState({
  413 + taskConfirmModalVisible: false,
  414 + taskConfirmModalMsg: "",
  415 + tempTaskId: ""
  416 + });
611 } 417 }
612 - return acc;  
613 - }, {});  
614 -  
615 - let issue = [];  
616 -  
617 - if (issueObj) {  
618 - issue = Object.keys(issueObj)?.map((key, i) => {  
619 - return { name: key, items: issueObj[key], id: i }; 418 + props.onChangeRouter({
  419 + type: "name",
  420 + path: ["生产执行", "生产执行"]
  421 + });
  422 + } else if (code === -7) {
  423 + // 如果有开工中的任务,即接口返回-7,弹出确认窗体
  424 + itemClickRef.current = { data: item };
  425 + props.onSaveState({
  426 + taskConfirmModalVisible: true,
  427 + taskConfirmModalMsg: msg,
  428 + tempTaskId: record.sId
620 }); 429 });
  430 + } else {
  431 + // 报错
  432 + message.error(msg);
621 } 433 }
622 -  
623 - const component = id => {  
624 - if (issue?.length > 0) {  
625 - return (  
626 - <div className="marginTop componentBox">  
627 - {issue[id].items.map(item => (  
628 - <p>  
629 - <span>{item.title}:</span>  
630 - {slave1Data[0] ? (  
631 - <Tooltip  
632 - placement="topLeft"  
633 - title={  
634 - <span style={{ fontSize: 20 }}>  
635 - {slave1Data[0][item.dataIndex]}  
636 - </span>  
637 - }  
638 - >  
639 - <span>{slave1Data[0][item.dataIndex]}</span>  
640 - </Tooltip>  
641 - ) : (  
642 - ""  
643 - )}  
644 - </p>  
645 - ))}  
646 - </div>  
647 - );  
648 - }  
649 - };  
650 -  
651 - const [carouselData, setCarouselData] = useState([  
652 - {  
653 - title: "暂无通告",  
654 - content: "暂无通告",  
655 - id: 999  
656 - }  
657 - ]);  
658 -  
659 - const { slave3Data = [] } = props;  
660 -  
661 - useEffect(  
662 - () => {  
663 - if (!slave3Data.length) return;  
664 -  
665 - const tempData = slave3Data.map((item, index) => ({  
666 - title: `车间通告${index + 1}`,  
667 - content: item.sNoticeMemo,  
668 - id: index  
669 - }));  
670 -  
671 - setCarouselData(tempData);  
672 - },  
673 - [slave3Data.length]  
674 - );  
675 -  
676 - // 设备信息业务  
677 - const slave2OneData = slave2Data[0] || {};  
678 - const { countMapJsON } = slave2OneData;  
679 - const countMap = commonUtils.convertStrToObj(countMapJsON);  
680 -  
681 - const taskInfoData = {};  
682 - slave2Column?.forEach(obj => {  
683 - taskInfoData[`${obj.dataIndex}Title`] = obj.title;  
684 - taskInfoData[`${obj.dataIndex}Conent`] = countMap[obj.dataIndex];  
685 - });  
686 - 434 + }
  435 + };
  436 +
  437 + // 更新机台状态
  438 + const handleUpdateProductionplan = async ({ item, iFlag, pauseValue }) => {
  439 + const { app } = props;
  440 + const { sId } = item.record;
  441 + const { token } = app;
  442 + const url = `${
  443 + commonConfig.server_host
  444 + }oee/updateProductionplan/${sId}/${iFlag}${
  445 + pauseValue
  446 + ? `?sWorkOrderChangeMemo=${encodeURIComponent(pauseValue)}`
  447 + : ""
  448 + }`;
  449 + const dataReturn = (await commonServices.getService(token, url)).data;
  450 + if (dataReturn.code === 1) {
  451 + handleRefresh();
  452 + } else {
  453 + message.error(dataReturn.msg);
  454 + }
  455 + };
  456 +
  457 + return {
  458 + ...props,
  459 + // 其他对象
  460 + itemClickRef,
  461 + onSearch: handleSearch,
  462 + onStartWork: handleStartWork, // 开工事件
  463 + onRefresh: handleRefresh, // 刷新页面
  464 + onTableBtnClick: handleTableBtnClick, // 开工、暂停事件
  465 + onUpdateProductionplan: handleUpdateProductionplan // 更新机台状态
  466 + };
  467 +};
  468 +
  469 +/**
  470 + * 暂停按钮
  471 + * @param {*} params
  472 + */
  473 +const handlePause = async params => {
  474 + const { item, props } = params;
  475 + const { record, config } = item;
  476 + await operationFetch(
  477 + { ...props, workOrderInfoData: [record] },
  478 + config,
  479 + config.sName || "fileError"
  480 + );
  481 + await handleOeeBtnEent({ props, item });
  482 +};
  483 +
  484 +const MachineTasks = baseProps => {
  485 + const props = useInfoEvent(useCommonBase({ ...baseProps }));
  486 + const {
  487 + app,
  488 + slave0Config,
  489 + slave1Column,
  490 + slave1Data = [],
  491 + slave2Column,
  492 + slave2Data = []
  493 + } = props;
  494 +
  495 + const bStartWork = commonUtils.getAppData("userinfo", "bStartWork");
  496 +
  497 + const [isTableLoading, setTableLoading] = useState(false);
  498 +
  499 + // const BtnTableCopyTo.startWork
  500 + // 开工按钮配置
  501 + const startWorkConfig =
  502 + slave0Config?.gdsconfigformslave?.find(
  503 + item => item.sControlName === "BtnTableCopyTo.startWork"
  504 + ) || {};
  505 + const pauseWorkConfig =
  506 + slave0Config?.gdsconfigformslave?.find(
  507 + item => item.sControlName === "BtnTableCopyTo.pauseWork"
  508 + ) || {};
  509 +
  510 + // 表格业务
  511 + const [sSrcNo, setSSrcNo] = useState("");
  512 + // 顶部表格配置
  513 + const tableProps = {
  514 + ...commonBusiness.getTableTypes("slave0", props),
  515 + tableProps: {
  516 + onChange: () => {},
  517 + loading: isTableLoading
  518 + },
  519 + tableBtnsConfig: params => {
  520 + const { record, index } = params;
  521 + const { iStar } = record;
  522 + // const iStar = index === 0 ? 1 : 2;
  523 +
  524 + // const bStart = iStar === 1;
  525 + // const bPause = iStar === 2;
  526 +
  527 + // 1 :开工状态(显示暂停) 2: 暂停状态(显示开工) 3: 完工状态(显示完工,灰色)
  528 + // 开工:开工接口(现在)1:正常, -7:有开工,要有提示, -1: 错误提示
  529 + // -7 :完工: iFlag:3 (完工上一条) 暂停:iFlag:2 (暂停上一条)
  530 + // 暂停:新接口
  531 +
  532 + let showName, btnBgColor, sDefault;
  533 + if (iStar === 1) {
  534 + showName = "暂1停";
  535 + btnBgColor = "#FAAD14";
  536 + } else if (iStar === 2 || iStar === 3) {
  537 + showName = "开1工";
  538 + btnBgColor = "#1890FF";
  539 + } else {
  540 + showName = "完1工";
  541 + btnBgColor = "#AAA";
  542 + sDefault = "${false}";
  543 + }
  544 +
  545 + if (!bStartWork) {
  546 + sDefault = "${false}";
  547 + }
  548 +
  549 + return [
  550 + { showName, btnBgColor, sDefault, startWorkConfig, pauseWorkConfig },
  551 + { showName: "完工", btnBgColor: "#1890FF", sDefault }
  552 + ];
  553 +
  554 + // return [
  555 + // {
  556 + // ...startWorkConfig,
  557 + // showName: "开工",
  558 + // btnBgColor: bStart ? "#1890FF" : "#AAA"
  559 + // },
  560 + // {
  561 + // ...pauseWorkConfig,
  562 + // showName: "暂停",
  563 + // btnBgColor: bPause ? "#FAAD14" : "#AAA"
  564 + // }
  565 + // ];
  566 + },
  567 + onTableBtnClick: item => {
  568 + props.onTableBtnClick(item);
  569 + return;
  570 + // 通用按钮操作
  571 + // props.onTableBtnClick(item);
  572 + const { tableName, index, record, tableData, config } = item;
  573 + const { iStar } = record;
  574 + const { showName } = config;
  575 + if (iStar === 1 && showName === "开工") {
  576 + setTableLoading(true);
  577 + props.onStartWork(item).finally(() => {
  578 + setTableLoading(false);
  579 + });
  580 + } else if (iStar === 2 && showName === "暂停") {
  581 + setTableLoading(true);
  582 + handlePause({ item, props }).finally(() => {
  583 + setTableLoading(false);
  584 + props.onRefresh();
  585 + });
  586 + }
  587 + },
  588 + tableBtnsWidth: "190px",
  589 + fixedHeight: "335px"
  590 + };
  591 + // 全部按钮事件
  592 + const tableAll = () => {
  593 + setSSrcNo("");
  594 + props.onSearch();
  595 + };
  596 + // 查询按钮事件
  597 + const tableQuery = () => {
  598 + props.onSearch(sSrcNo);
  599 + };
  600 +
  601 + // 前期生产或反馈问题业务
  602 + const [issueType, setIssueType] = useState(4);
  603 + const issueObj = slave1Column?.reduce((acc, item) => {
  604 + const chineseKey = item.title.replace(/[0-9]/g, "");
  605 + if (acc[chineseKey]) {
  606 + acc[chineseKey].push(item);
  607 + } else {
  608 + acc[chineseKey] = [item];
  609 + }
  610 + return acc;
  611 + }, {});
  612 +
  613 + let issue = [];
  614 +
  615 + if (issueObj) {
  616 + issue = Object.keys(issueObj)?.map((key, i) => {
  617 + return { name: key, items: issueObj[key], id: i };
  618 + });
  619 + }
  620 +
  621 + const component = id => {
  622 + if (issue?.length > 0) {
687 return ( 623 return (
688 - <div className={styles.tasksBox}>  
689 - <Row className={`tasksBg tasksTable`}>  
690 - <Col span={24}>  
691 - <div className="table">  
692 - <StaticEditTable {...tableProps} />  
693 - </div>  
694 - <div className="tableSearch">  
695 - <Button type="primary" size="large" onClick={tableAll}>  
696 - {" "}  
697 - 全部{" "}  
698 - </Button>  
699 - <Input  
700 - allowClear  
701 - placeholder="工单编号"  
702 - value={sSrcNo}  
703 - onChange={e => setSSrcNo(e.target.value)}  
704 - />  
705 - <Button type="primary" size="large" onClick={tableQuery}>  
706 - {" "}  
707 - 查询{" "}  
708 - </Button>  
709 - </div>  
710 - </Col>  
711 - </Row>  
712 - <Row gutter={[15, 0]} className={`marginTop`}>  
713 - <Col span={18}>  
714 - <div className={`tasksBg taskIssue`}>  
715 - <h2>前期生产或反馈问题</h2>  
716 - {issue?.map(item => (  
717 - <Button  
718 - className="taskBtn"  
719 - key={item.id}  
720 - type={issueType === item.id ? "primary" : ""}  
721 - ghost={issueType === item.id ? false : true}  
722 - onClick={() => setIssueType(item.id)}  
723 - >  
724 - {item.name}  
725 - </Button>  
726 - ))}  
727 - {component(issueType)}  
728 - </div>  
729 - </Col>  
730 - <Col span={6}>  
731 - <div className={`tasksBg taskIssue`} style={{ maxWidth: "434px" }}>  
732 - <Carousel autoplay>  
733 - {carouselData.map(item => (  
734 - <div key={item.id} className={`tasksCarousel`}>  
735 - <h2>{item.title}</h2>  
736 - <p>{item.content}</p>  
737 - </div>  
738 - ))}  
739 - </Carousel>  
740 - </div>  
741 - </Col>  
742 - </Row>  
743 - <Row gutter={[15, 0]} className={`tasksBg marginTop taskInfo`}>  
744 - <h2>设备信息</h2>  
745 - <Col span={4} className="taskInfoBox">  
746 - <div className={"leftBox"}>  
747 - <img src={taskInfoIcon} alt={taskInfoData.sMachineNameTitle} />  
748 - <div>  
749 - <h3>{taskInfoData.sMachineNameTitle}:</h3>  
750 - <p>{taskInfoData.sMachineNameConent}</p> 624 + <div className="marginTop componentBox">
  625 + {issue[id].items.map(item => (
  626 + <p>
  627 + <span>{item.title}:</span>
  628 + {slave1Data[0] ? (
  629 + <Tooltip
  630 + placement="topLeft"
  631 + title={
  632 + <span style={{ fontSize: 20 }}>
  633 + {slave1Data[0][item.dataIndex]}
  634 + </span>
  635 + }
  636 + >
  637 + <span>{slave1Data[0][item.dataIndex]}</span>
  638 + </Tooltip>
  639 + ) : (
  640 + ""
  641 + )}
  642 + </p>
  643 + ))}
  644 + </div>
  645 + );
  646 + }
  647 + };
  648 + const NoAnnouncements = commonFunc.showLocalMessage(props, 'NoAnnouncements', '暂无通告');
  649 +
  650 + const [carouselData, setCarouselData] = useState([
  651 + {
  652 + title: NoAnnouncements,
  653 + content: NoAnnouncements,
  654 + id: 999
  655 + }
  656 + ]);
  657 +
  658 + const { slave3Data = [] } = props;
  659 +
  660 + useEffect(
  661 + () => {
  662 + if (!slave3Data.length) return;
  663 +
  664 + const tempData = slave3Data.map((item, index) => ({
  665 + title: `车间通告${index + 1}`,
  666 + content: item.sNoticeMemo,
  667 + id: index
  668 + }));
  669 +
  670 + setCarouselData(tempData);
  671 + },
  672 + [slave3Data.length]
  673 + );
  674 +
  675 + // 设备信息业务
  676 + const slave2OneData = slave2Data[0] || {};
  677 + const { countMapJsON } = slave2OneData;
  678 + const countMap = commonUtils.convertStrToObj(countMapJsON);
  679 +
  680 + const taskInfoData = {};
  681 + slave2Column?.forEach(obj => {
  682 + taskInfoData[`${obj.dataIndex}Title`] = obj.title;
  683 + taskInfoData[`${obj.dataIndex}Conent`] = countMap[obj.dataIndex];
  684 + });
  685 + const feedbackIssues = commonFunc.showLocalMessage(props, 'feedbackIssues', '前期生产或反馈问题');
  686 + const btnsearch = commonFunc.showLocalMessage(props, 'BtnSearch', '查询111');
  687 + console.log('3333', btnsearch);
  688 + const btnAll = commonFunc.showLocalMessage(props, 'btnAll', '全部');
  689 + const sWorkOrderNo = commonFunc.showLocalMessage(props, 'sWorkOrderNo', '工单编号');
  690 +
  691 +
  692 + return (
  693 + <div className={styles.tasksBox}>
  694 + <Row className={`tasksBg tasksTable`}>
  695 + <Col span={24}>
  696 + <div className="table">
  697 + <StaticEditTable {...tableProps} />
  698 + </div>
  699 + <div className="tableSearch">
  700 + <Button type="primary" size="large" onClick={tableAll}>
  701 + {" "}
  702 + {btnAll}{" "}
  703 + </Button>
  704 + <Input
  705 + allowClear
  706 + placeholder={sWorkOrderNo}
  707 + value={sSrcNo}
  708 + onChange={e => setSSrcNo(e.target.value)}
  709 + />
  710 + <Button type="primary" size="large" onClick={tableQuery}>
  711 + {" "}
  712 + {btnsearch}{" "}
  713 + </Button>
  714 + </div>
  715 + </Col>
  716 + </Row>
  717 + <Row gutter={[15, 0]} className={`marginTop`}>
  718 + <Col span={18}>
  719 + <div className={`tasksBg taskIssue`}>
  720 + <h2>{feedbackIssues}</h2>
  721 + {issue?.map(item => (
  722 + <Button
  723 + className="taskBtn"
  724 + key={item.id}
  725 + type={issueType === item.id ? "primary" : ""}
  726 + ghost={issueType === item.id ? false : true}
  727 + onClick={() => setIssueType(item.id)}
  728 + >
  729 + {item.name}
  730 + </Button>
  731 + ))}
  732 + {component(issueType)}
  733 + </div>
  734 + </Col>
  735 + <Col span={6}>
  736 + <div className={`tasksBg taskIssue`} style={{ maxWidth: "434px" }}>
  737 + <Carousel autoplay>
  738 + {carouselData.map(item => (
  739 + <div key={item.id} className={`tasksCarousel`}>
  740 + <h2>{item.title}</h2>
  741 + <p>{item.content}</p>
751 </div> 742 </div>
  743 + ))}
  744 + </Carousel>
  745 + </div>
  746 + </Col>
  747 + </Row>
  748 + <Row gutter={[15, 0]} className={`tasksBg marginTop taskInfo`}>
  749 + <h2>设备信息</h2>
  750 + <Col span={4} className="taskInfoBox">
  751 + <div className={"leftBox"}>
  752 + <img src={taskInfoIcon} alt={taskInfoData.sMachineNameTitle} />
  753 + <div>
  754 + <h3>{taskInfoData.sMachineNameTitle}:</h3>
  755 + <p>{taskInfoData.sMachineNameConent}</p>
  756 + </div>
  757 + </div>
  758 + </Col>
  759 + <Col span={4} className="taskInfoBox">
  760 + <div className={"leftBox"}>
  761 + <img src={statusIcon} alt={taskInfoData.sStatusNameTitle} />
  762 + <div>
  763 + <h3>{taskInfoData.sStatusNameTitle}:</h3>
  764 + <p>{taskInfoData.sStatusNameConent}</p>
  765 + </div>
  766 + <StatusBtnComponent />
  767 + </div>
  768 + </Col>
  769 + <Col span={10} className="taskInfoBox">
  770 + <div className={"centerBox"}>
  771 + <img src={timeIcon} alt={taskInfoData.tStartingUpTimeTitle} />
  772 + <div className="timeBox">
  773 + <h3>{taskInfoData.tStartingUpTimeTitle}:</h3>
  774 + <p>{taskInfoData.tStartingUpTimeConent}</p>
  775 + </div>
  776 + <div className="timeBox">
  777 + <div className="bothEndsAlign">
  778 + <p>{taskInfoData.tNorRunTimeTitle}:</p>
  779 + <span>{taskInfoData.tNorRunTimeConent}</span>
752 </div> 780 </div>
753 - </Col>  
754 - <Col span={4} className="taskInfoBox">  
755 - <div className={"leftBox"}>  
756 - <img src={statusIcon} alt={taskInfoData.sStatusNameTitle} />  
757 - <div>  
758 - <h3>{taskInfoData.sStatusNameTitle}:</h3>  
759 - <p>{taskInfoData.sStatusNameConent}</p>  
760 - </div>  
761 - <StatusBtnComponent /> 781 + <div className="bothEndsAlign">
  782 + <p>{taskInfoData.tExeWaitTimeTitle}:</p>
  783 + <span>{taskInfoData.tExeWaitTimeConent}</span>
762 </div> 784 </div>
763 - </Col>  
764 - <Col span={10} className="taskInfoBox">  
765 - <div className={"centerBox"}>  
766 - <img src={timeIcon} alt={taskInfoData.tStartingUpTimeTitle} />  
767 - <div className="timeBox">  
768 - <h3>{taskInfoData.tStartingUpTimeTitle}:</h3>  
769 - <p>{taskInfoData.tStartingUpTimeConent}</p>  
770 - </div>  
771 - <div className="timeBox">  
772 - <div className="bothEndsAlign">  
773 - <p>{taskInfoData.tNorRunTimeTitle}:</p>  
774 - <span>{taskInfoData.tNorRunTimeConent}</span>  
775 - </div>  
776 - <div className="bothEndsAlign">  
777 - <p>{taskInfoData.tExeWaitTimeTitle}:</p>  
778 - <span>{taskInfoData.tExeWaitTimeConent}</span>  
779 - </div>  
780 - </div>  
781 - <div className="timeBox">  
782 - <div className="bothEndsAlign">  
783 - <p>{taskInfoData.tNorWaitTimeTitle}:</p>  
784 - <span>{taskInfoData.tNorWaitTimeConent}</span>  
785 - </div>  
786 - <div className="bothEndsAlign">  
787 - <p>{taskInfoData.tMaintenceTimeTitle}:</p>  
788 - <span>{taskInfoData.tMaintenceTimeConent}</span>  
789 - </div>  
790 - </div> 785 + </div>
  786 + <div className="timeBox">
  787 + <div className="bothEndsAlign">
  788 + <p>{taskInfoData.tNorWaitTimeTitle}:</p>
  789 + <span>{taskInfoData.tNorWaitTimeConent}</span>
791 </div> 790 </div>
792 - </Col>  
793 - <Col span={6} className="taskInfoBox">  
794 - <div className={"leftBox"}>  
795 - <img src={taskIcon} alt={taskInfoData.tStartingUpTimeTitle} />  
796 - <div>  
797 - <h3>今日完成任务批次/产量(个):</h3>  
798 - <p>  
799 - {taskInfoData.iFinishTaskBatchConent} /{" "}  
800 - {taskInfoData.iFinishProductionNumConent}  
801 - </p>  
802 - </div> 791 + <div className="bothEndsAlign">
  792 + <p>{taskInfoData.tMaintenceTimeTitle}:</p>
  793 + <span>{taskInfoData.tMaintenceTimeConent}</span>
803 </div> 794 </div>
804 - </Col>  
805 - </Row>  
806 - <TaskConfirmModal {...props} />  
807 - </div>  
808 - );  
809 - };  
810 -  
811 - const TaskConfirmModal = props => {  
812 - const {  
813 - taskConfirmModalVisible,  
814 - taskConfirmModalMsg,  
815 - bPauseOnly,  
816 - slave0Config  
817 - } = props;  
818 - if (!taskConfirmModalVisible) return "";  
819 -  
820 - const handleClose = () => {  
821 - props.itemClickRef.current = null;  
822 - props.onSaveState({  
823 - taskConfirmModalVisible: false,  
824 - bPauseOnly: false,  
825 - pauseCallback: null  
826 - });  
827 - };  
828 -  
829 - const [pauseValue, setPauseValue] = useState("");  
830 -  
831 - const viewConfigs = slave0Config?.gdsconfigformslave.filter(  
832 - item => item.sName === "sPausereason"  
833 - ); 795 + </div>
  796 + </div>
  797 + </Col>
  798 + <Col span={6} className="taskInfoBox">
  799 + <div className={"leftBox"}>
  800 + <img src={taskIcon} alt={taskInfoData.tStartingUpTimeTitle} />
  801 + <div>
  802 + <h3>今日完成任务批次/产量(个):</h3>
  803 + <p>
  804 + {taskInfoData.iFinishTaskBatchConent} /{" "}
  805 + {taskInfoData.iFinishProductionNumConent}
  806 + </p>
  807 + </div>
  808 + </div>
  809 + </Col>
  810 + </Row>
  811 + <TaskConfirmModal {...props} />
  812 + </div>
  813 + );
  814 +};
834 815
835 - const sIdRef = useRef(commonUtils.createSid());  
836 -  
837 - const viewProps = {  
838 - ...props,  
839 - viewConfigs,  
840 - tableConfig: { ...slave0Config, gdsconfigformslave: viewConfigs },  
841 - iColValueView: 24,  
842 - viewRow: { sId: sIdRef.current, sPausereason: pauseValue },  
843 - tableName: "slave0",  
844 - enabled: true,  
845 - onDataChange: (...args) => {  
846 - setPauseValue(args[2].sPausereason);  
847 - }  
848 - };  
849 -  
850 - return (  
851 - <Modal  
852 - title={<span style={{ fontSize: 22 }}>提示!</span>}  
853 - open={taskConfirmModalVisible}  
854 - width={500}  
855 - height={320}  
856 - className="mesCommonModal"  
857 - footer={ 816 +const TaskConfirmModal = props => {
  817 + const { taskConfirmModalVisible, taskConfirmModalMsg, bPauseOnly } = props;
  818 + if (!taskConfirmModalVisible) return "";
  819 +
  820 + const handleClose = () => {
  821 + props.itemClickRef.current = null;
  822 + props.onSaveState({
  823 + taskConfirmModalVisible: false,
  824 + bPauseOnly: false,
  825 + pauseCallback: null
  826 + });
  827 + };
  828 +
  829 + const [pauseValue, setPauseValue] = useState("");
  830 +
  831 + return (
  832 + <Modal
  833 + title={<span style={{ fontSize: 22 }}>提示!</span>}
  834 + open={taskConfirmModalVisible}
  835 + width={500}
  836 + height={370}
  837 + className="mesCommonModal"
  838 + footer={
  839 + <Space>
  840 + {bPauseOnly ? (
  841 + <Button
  842 + size="large"
  843 + type="primary"
  844 + className={styles.btnZt}
  845 + onClick={() => {
  846 + if (!pauseValue.trim()) {
  847 + message.warning("请先输入暂停原因!");
  848 + return;
  849 + }
  850 + props.pauseCallback(pauseValue.trim());
  851 + }}
  852 + >
  853 + 暂停
  854 + </Button>
  855 + ) : (
858 <> 856 <>
859 - {bPauseOnly ? (  
860 - <Space>  
861 - <Button  
862 - size="large"  
863 - type="primary"  
864 - className={styles.btnZt}  
865 - onClick={() => {  
866 - if (!pauseValue.trim()) {  
867 - message.warning("请先选择暂停原因!");  
868 - return;  
869 - }  
870 - props.pauseCallback(pauseValue.trim());  
871 - }}  
872 - >  
873 - 暂停  
874 - </Button>  
875 - </Space>  
876 - ) : (  
877 - <Space style={{ width: "100%" , 'justify-content': 'space-between' }}>  
878 - <Button  
879 - size="large"  
880 - type="primary"  
881 - className={styles.btnWg}  
882 - onClick={() => {  
883 - if (props.itemClickRef.current?.data)  
884 - props.onTableBtnClick({  
885 - ...(props.itemClickRef.current?.data || {}),  
886 - iFlag: 4  
887 - });  
888 - // handleClose();  
889 - }}  
890 - >  
891 - 完工  
892 - </Button>  
893 - <Button  
894 - size="large"  
895 - type="primary"  
896 - className={styles.btnZt}  
897 - onClick={() => {  
898 - if (!pauseValue.trim()) {  
899 - message.warning("请先选择暂停原因!");  
900 - return;  
901 - }  
902 - if (props.itemClickRef.current?.data)  
903 - props.onTableBtnClick({  
904 - ...(props.itemClickRef.current?.data || {}),  
905 - iFlag: 3,  
906 - pauseValue: pauseValue.trim()  
907 - });  
908 - // handleClose();  
909 - }}  
910 - >  
911 - 暂停  
912 - </Button>  
913 - </Space>  
914 - )} 857 + <Button
  858 + size="large"
  859 + type="primary"
  860 + className={styles.btnWg}
  861 + onClick={() => {
  862 + if (props.itemClickRef.current?.data)
  863 + props.onTableBtnClick({
  864 + ...(props.itemClickRef.current?.data || {}),
  865 + iFlag: 4
  866 + });
  867 + // handleClose();
  868 + }}
  869 + >
  870 + 完工
  871 + </Button>
  872 + <Button
  873 + size="large"
  874 + type="primary"
  875 + className={styles.btnZt}
  876 + onClick={() => {
  877 + if (!pauseValue.trim()) {
  878 + message.warning("请先输入暂停原因!");
  879 + return;
  880 + }
  881 + if (props.itemClickRef.current?.data)
  882 + props.onTableBtnClick({
  883 + ...(props.itemClickRef.current?.data || {}),
  884 + iFlag: 3,
  885 + pauseValue: pauseValue.trim()
  886 + });
  887 + // handleClose();
  888 + }}
  889 + >
  890 + 暂停
  891 + </Button>
915 </> 892 </>
  893 + )}
  894 + </Space>
  895 + }
  896 + onCancel={handleClose}
  897 + >
  898 + <div className={styles.taskConfirmModal}>{taskConfirmModalMsg}</div>
  899 + <div className={styles.pauseReason}>
  900 + <div className={styles.pauseTitle}>暂停原因</div>
  901 + <Input.TextArea
  902 + placeholder="请输入暂停原因"
  903 + autoSize={{ minRows: 3, maxRows: 3 }}
  904 + style={{ width: "100%" }}
  905 + value={pauseValue}
  906 + onChange={e => setPauseValue(e.target.value)}
  907 + />
  908 + </div>
  909 + </Modal>
  910 + );
  911 +};
  912 +
  913 +// 全屏状态
  914 +const StatusBtnComponent = () => {
  915 + const items = [
  916 + {
  917 + key: "4",
  918 + label: <span className={styles.statusDropdown}>转产</span>,
  919 + value: {
  920 + conent2: "转产",
  921 + backgroundColor: "#752AFE"
  922 + }
  923 + },
  924 + {
  925 + key: "1",
  926 + label: <span className={styles.statusDropdown}>测试</span>,
  927 + value: {
  928 + conent2: "转产",
  929 + backgroundColor: "#21C9FE"
  930 + },
  931 + children: [
  932 + {
  933 + key: "1-1",
  934 + label: <span className={styles.statusDropdown}>产品打样</span>,
  935 + value: {
  936 + conent2: "产品打样",
  937 + backgroundColor: "#21C9FE"
916 } 938 }
917 - onCancel={handleClose}  
918 - >  
919 - <div className={styles.taskConfirmModal}>{taskConfirmModalMsg}</div>  
920 - <div className={styles.pauseReason}>  
921 - {/* <div className={styles.pauseTitle}>暂停原因</div> */}  
922 - <CommonViewTable {...viewProps} />  
923 - {/* <Input.TextArea  
924 - placeholder="请输入暂停原因"  
925 - autoSize={{ minRows: 3, maxRows: 3 }}  
926 - style={{ width: "100%" }}  
927 - value={pauseValue}  
928 - onChange={e => setPauseValue(e.target.value)}  
929 - /> */}  
930 - </div>  
931 - </Modal> 939 + },
  940 + {
  941 + key: "1-2",
  942 + label: <span className={styles.statusDropdown}>工艺测试</span>,
  943 + value: {
  944 + conent2: "工艺测试",
  945 + backgroundColor: "#21C9FE"
  946 + }
  947 + }
  948 + ]
  949 + },
  950 + {
  951 + key: "2",
  952 + label: <span className={styles.statusDropdown}>保养</span>,
  953 + value: {
  954 + conent2: "保养",
  955 + backgroundColor: "#FF6600"
  956 + },
  957 + children: [
  958 + {
  959 + key: "2-1",
  960 + label: <span className={styles.statusDropdown}>日常保养</span>,
  961 + value: {
  962 + conent2: "日常保养",
  963 + backgroundColor: "#FF6600"
  964 + }
  965 + },
  966 + {
  967 + key: "2-2",
  968 + label: <span className={styles.statusDropdown}>一级保养</span>,
  969 + value: {
  970 + conent2: "一级保养",
  971 + backgroundColor: "#FF6600"
  972 + }
  973 + },
  974 + {
  975 + key: "2-3",
  976 + label: <span className={styles.statusDropdown}>二级保养</span>,
  977 + value: {
  978 + conent2: "二级保养",
  979 + backgroundColor: "#FF6600"
  980 + }
  981 + },
  982 + {
  983 + key: "2-4",
  984 + label: <span className={styles.statusDropdown}>一级+二级保养</span>,
  985 + value: {
  986 + conent2: "一级+二级保养",
  987 + backgroundColor: "#FF6600",
  988 + fontSize: 130
  989 + }
  990 + },
  991 + {
  992 + key: "2-5",
  993 + label: <span className={styles.statusDropdown}>年度保养</span>,
  994 + value: {
  995 + conent2: "年度保养",
  996 + backgroundColor: "#FF6600"
  997 + }
  998 + }
  999 + ]
  1000 + }
  1001 + ];
  1002 +
  1003 + const handleMenuClick = e => {
  1004 + message.success({
  1005 + top: 0,
  1006 + duration: 0,
  1007 + className: styles.machineStatus,
  1008 + content: <MachineMessageComponent e={e} />
  1009 + });
  1010 + };
  1011 +
  1012 + return (
  1013 + <div className={styles.statusBtn}>
  1014 + <Dropdown
  1015 + menu={{ items, onClick: handleMenuClick }}
  1016 + trigger={["click"]}
  1017 + placement="top"
  1018 + overlayClassName={styles.statusDropdown}
  1019 + >
  1020 + <Button type="link" size="large" style={{ fontSize: 26 }}>
  1021 + <SettingTwoTone />
  1022 + </Button>
  1023 + </Dropdown>
  1024 + </div>
  1025 + );
  1026 +};
  1027 +
  1028 +const MachineMessageComponent = ({ e }) => {
  1029 + const value = e.item?.props?.value || {};
  1030 + const { current: startTime } = useRef(moment().format("YYYY-MM-DD HH:mm:ss"));
  1031 + const { backgroundColor, conent2, fontSize } = value;
  1032 +
  1033 + const [currentTime, setCurrentTime] = useState("");
  1034 + const [diffHours, setDiffHours] = useState(0);
  1035 + const [diffMins, setDiffMins] = useState(0);
  1036 + const [diffSecs, setDiffSecs] = useState(0);
  1037 + const flagRef = useRef(0);
  1038 + useEffect(() => {
  1039 + const getTime = () => {
  1040 + const currentTimeNew = moment().format("YYYY-MM-DD HH:mm:ss");
  1041 + setCurrentTime(currentTimeNew);
  1042 +
  1043 + const duration = moment.duration(
  1044 + moment(currentTimeNew).diff(moment(startTime))
932 ); 1045 );
  1046 + const hours = duration
  1047 + .asHours()
  1048 + .toString()
  1049 + .split(".")[0];
  1050 + const minutes = (duration.asMinutes() % 60).toString().split(".")[0];
  1051 + const seconds = duration.asSeconds() % 60;
  1052 +
  1053 + setDiffHours(hours);
  1054 + setDiffMins(minutes);
  1055 + setDiffSecs(seconds);
933 }; 1056 };
934 -  
935 - // 全屏状态  
936 - const StatusBtnComponent = () => {  
937 -  
938 - const items = [  
939 - {  
940 - key: "4",  
941 - label: <span className={styles.statusDropdown}>转产</span>,  
942 - value: {  
943 - conent2: "转产",  
944 - backgroundColor: "#752AFE"  
945 - }  
946 - },  
947 - {  
948 - key: "1",  
949 - label: <span className={styles.statusDropdown}>测试</span>,  
950 - value: {  
951 - conent2: "转产",  
952 - backgroundColor: "#21C9FE"  
953 - },  
954 - children: [  
955 - {  
956 - key: "1-1",  
957 - label: <span className={styles.statusDropdown}>产品打样</span>,  
958 - value: {  
959 - conent2: "产品打样",  
960 - backgroundColor: "#21C9FE"  
961 - }  
962 - },  
963 - {  
964 - key: "1-2",  
965 - label: <span className={styles.statusDropdown}>工艺测试</span>,  
966 - value: {  
967 - conent2: "工艺测试",  
968 - backgroundColor: "#21C9FE"  
969 - }  
970 - }  
971 - ]  
972 - },  
973 - {  
974 - key: "2",  
975 - label: <span className={styles.statusDropdown}>保养</span>,  
976 - value: {  
977 - conent2: "保养",  
978 - backgroundColor: "#FF6600"  
979 - },  
980 - children: [  
981 - {  
982 - key: "2-1",  
983 - label: <span className={styles.statusDropdown}>日常保养</span>,  
984 - value: {  
985 - conent2: "日常保养",  
986 - backgroundColor: "#FF6600"  
987 - }  
988 - },  
989 - {  
990 - key: "2-2",  
991 - label: <span className={styles.statusDropdown}>一级保养</span>,  
992 - value: {  
993 - conent2: "一级保养",  
994 - backgroundColor: "#FF6600"  
995 - }  
996 - },  
997 - {  
998 - key: "2-3",  
999 - label: <span className={styles.statusDropdown}>二级保养</span>,  
1000 - value: {  
1001 - conent2: "二级保养",  
1002 - backgroundColor: "#FF6600"  
1003 - }  
1004 - },  
1005 - {  
1006 - key: "2-4",  
1007 - label: <span className={styles.statusDropdown}>一级+二级保养</span>,  
1008 - value: {  
1009 - conent2: "一级+二级保养",  
1010 - backgroundColor: "#FF6600",  
1011 - fontSize: 130  
1012 - }  
1013 - },  
1014 - {  
1015 - key: "2-5",  
1016 - label: <span className={styles.statusDropdown}>年度保养</span>,  
1017 - value: {  
1018 - conent2: "年度保养",  
1019 - backgroundColor: "#FF6600"  
1020 - }  
1021 - }  
1022 - ]  
1023 - }  
1024 - ];  
1025 -  
1026 - // 全屏  
1027 - const handleMenuClick = item2 => {  
1028 - const newObj = {  
1029 - ...item2,  
1030 - item: item2.item  
1031 - };  
1032 - window.$wkcFullStatus(newObj , true)  
1033 - };  
1034 -  
1035 -  
1036 - return (  
1037 - <>  
1038 - <div className={styles.statusBtn}>  
1039 - <Dropdown menu={{ items, onClick: handleMenuClick }} trigger={["click"]} placement="top" overlayClassName={styles.statusDropdown} >  
1040 - <Button type="link" size="large" style={{ fontSize: 26 }}>  
1041 - <SettingTwoTone />  
1042 - </Button>  
1043 - </Dropdown>  
1044 - </div>  
1045 - </>  
1046 - ); 1057 +
  1058 + getTime();
  1059 + const timer = setInterval(() => {
  1060 + getTime();
  1061 + }, 1000);
  1062 +
  1063 + const handleMenuClose = () => {
  1064 + if (flagRef.current) return;
  1065 + flagRef.current++;
  1066 + Modal.confirm({
  1067 + title: "温馨提示:",
  1068 + content: <div>确认退出该页面?</div>,
  1069 + okText: "确认",
  1070 + cancelText: "取消",
  1071 + zIndex: 2000,
  1072 + onOk() {
  1073 + message.destroy();
  1074 + },
  1075 + onCancel() {
  1076 + setTimeout(() => {
  1077 + flagRef.current = 0;
  1078 + }, 500);
  1079 + }
  1080 + });
1047 }; 1081 };
1048 -  
1049 - // const MachineMessageComponent = ({ e , shutDown , minimize}) => {  
1050 - // const value = e.item?.props?.value || {};  
1051 - // const { current: startTime } = useRef(moment().format("YYYY-MM-DD HH:mm:ss"));  
1052 - // const { backgroundColor, conent2, fontSize } = value;  
1053 - // const [currentTime, setCurrentTime] = useState("");  
1054 - // const [diffHours, setDiffHours] = useState(0);  
1055 - // const [diffMins, setDiffMins] = useState(0);  
1056 - // const [diffSecs, setDiffSecs] = useState(0);  
1057 - // const flagRef = useRef(0);  
1058 - // useEffect(() => {  
1059 - // const getTime = () => {  
1060 - // const currentTimeNew = moment().format("YYYY-MM-DD HH:mm:ss");  
1061 - // setCurrentTime(currentTimeNew);  
1062 -  
1063 - // const duration = moment.duration(  
1064 - // moment(currentTimeNew).diff(moment(startTime))  
1065 - // );  
1066 - // const hours = duration  
1067 - // .asHours()  
1068 - // .toString()  
1069 - // .split(".")[0];  
1070 - // const minutes = (duration.asMinutes() % 60).toString().split(".")[0];  
1071 - // const seconds = duration.asSeconds() % 60;  
1072 -  
1073 - // setDiffHours(hours);  
1074 - // setDiffMins(minutes);  
1075 - // setDiffSecs(seconds);  
1076 - // };  
1077 -  
1078 - // getTime();  
1079 - // const timer = setInterval(() => {  
1080 - // getTime();  
1081 - // }, 1000);  
1082 -  
1083 - // // const handleMenuClose = () => {  
1084 - // // if (flagRef.current) return;  
1085 - // // flagRef.current++;  
1086 - // // Modal.confirm({  
1087 - // // title: "温馨提示:",  
1088 - // // content: <div>确认退出该页面?</div>,  
1089 - // // okText: "确认",  
1090 - // // cancelText: "取消",  
1091 - // // zIndex: 2000,  
1092 - // // onOk() {  
1093 - // // message.destroy();  
1094 - // // },  
1095 - // // onCancel() {  
1096 - // // setTimeout(() => {  
1097 - // // flagRef.current = 0;  
1098 - // // }, 500);  
1099 - // // }  
1100 - // // });  
1101 - // // };  
1102 -  
1103 - // // setInterval(() => {  
1104 - // // document.addEventListener("click", handleMenuClose);  
1105 - // // }, 1000);  
1106 -  
1107 - // return () => {  
1108 - // clearInterval(timer);  
1109 - // // document.removeEventListener("click", handleMenuClose);  
1110 - // };  
1111 - // }, []);  
1112 -  
1113 - // const handleMenuClose = () => {  
1114 - // if (flagRef.current) return;  
1115 - // flagRef.current++;  
1116 - // Modal.confirm({  
1117 - // title: "温馨提示:",  
1118 - // content: <div>确认退出该页面?</div>,  
1119 - // okText: "确认",  
1120 - // cancelText: "取消",  
1121 - // zIndex: 2000,  
1122 - // onOk() {  
1123 - // // message.destroy();  
1124 - // shutDown()  
1125 - // },  
1126 - // onCancel() {  
1127 - // setTimeout(() => {  
1128 - // flagRef.current = 0;  
1129 - // }, 500);  
1130 - // }  
1131 - // });  
1132 - // };  
1133 -  
1134 - // return (  
1135 - // <div className={styles.machineStatusContent} style={{ backgroundColor }}>  
1136 - // <div className="conent1">设备停机状态告知</div>  
1137 - // <div className="conent2" style={fontSize ? { fontSize } : {}}>  
1138 - // {conent2}  
1139 - // </div>  
1140 - // <div className="conent3">  
1141 - // 停机开始时间:  
1142 - // {startTime}  
1143 - // </div>  
1144 - // <div className="conent4">  
1145 - // 系统当前时间:  
1146 - // {currentTime}  
1147 - // </div>  
1148 - // <div className="conent5">  
1149 - // 此次停机耗时:  
1150 - // <span className="conent6">  
1151 - // 约:  
1152 - // {diffHours}时 {diffMins}分 {diffSecs}秒  
1153 - // </span>  
1154 - // </div>  
1155 - // <div className="conent7">  
1156 - // <Button size="large" type="primary" className={styles.btnWg} onClick={minimize} > 最小化 </Button>  
1157 - // <Button size="large" type="primary" className={styles.btnWg} onClick={handleMenuClose} > 退出 </Button>  
1158 - // </div>  
1159 - // </div>  
1160 - // );  
1161 - // };  
1162 -  
1163 - export default MachineTasks;  
1164 -  
1165 \ No newline at end of file 1082 \ No newline at end of file
  1083 +
  1084 + setInterval(() => {
  1085 + document.addEventListener("click", handleMenuClose);
  1086 + }, 1000);
  1087 +
  1088 + return () => {
  1089 + clearInterval(timer);
  1090 + document.removeEventListener("click", handleMenuClose);
  1091 + };
  1092 + }, []);
  1093 +
  1094 + return (
  1095 + <div className={styles.machineStatusContent} style={{ backgroundColor }}>
  1096 + <div className="conent1">设备停机状态告知</div>
  1097 + <div className="conent2" style={fontSize ? { fontSize } : {}}>
  1098 + {conent2}
  1099 + </div>
  1100 + <div className="conent3">
  1101 + 停机开始时间:
  1102 + {startTime}
  1103 + </div>
  1104 + <div className="conent4">
  1105 + 系统当前时间:
  1106 + {currentTime}
  1107 + </div>
  1108 + <div className="conent5">
  1109 + 此次停机耗时:
  1110 + <span className="conent6">
  1111 + 约:
  1112 + {diffHours}时 {diffMins}分 {diffSecs}秒
  1113 + </span>
  1114 + </div>
  1115 + </div>
  1116 + );
  1117 +};
  1118 +
  1119 +export default MachineTasks;
src/mes/teamInfo/index.js
@@ -500,8 +500,8 @@ const TeamInfo = baseProps =&gt; { @@ -500,8 +500,8 @@ const TeamInfo = baseProps =&gt; {
500 tableName: "slave", 500 tableName: "slave",
501 viewRow: props.slaveData && props.slaveData.length !== 0 ? props.slaveData[0] : {}, 501 viewRow: props.slaveData && props.slaveData.length !== 0 ? props.slaveData[0] : {},
502 onDataChange: (tableName, sName, returnValue , sId , dropDownData , isWait ) => { 502 onDataChange: (tableName, sName, returnValue , sId , dropDownData , isWait ) => {
503 - props.onSaveState({  
504 - [`slaveData`]: [ {...props.slaveData[0] , ...returnValue} ] 503 + props.onSaveState({
  504 + [`slaveData`]: [ {...props.slaveData[0] , ...returnValue} ]
505 }); 505 });
506 setTimeout(()=>{ 506 setTimeout(()=>{
507 // 调用指令集保存 507 // 调用指令集保存
@@ -522,8 +522,8 @@ const TeamInfo = baseProps =&gt; { @@ -522,8 +522,8 @@ const TeamInfo = baseProps =&gt; {
522 }; 522 };
523 // 清空临时IPQC 523 // 清空临时IPQC
524 const clearTempIpqc = () => { 524 const clearTempIpqc = () => {
525 - props.onSaveState({  
526 - [`slaveData`]: [ {...props.slaveData[0] , sIpqcId2:'' , sIpqcName2: '' } ] 525 + props.onSaveState({
  526 + [`slaveData`]: [ {...props.slaveData[0] , sIpqcId2:'' , sIpqcName2: '' } ]
527 }); 527 });
528 props.onExecInstructSet({ 528 props.onExecInstructSet({
529 nextProps: { ...props , slaveData : [ {...props.slaveData[0] , sIpqcId2:'',sIpqcName2:''} ] }, 529 nextProps: { ...props , slaveData : [ {...props.slaveData[0] , sIpqcId2:'',sIpqcName2:''} ] },
@@ -533,6 +533,16 @@ const TeamInfo = baseProps =&gt; { @@ -533,6 +533,16 @@ const TeamInfo = baseProps =&gt; {
533 } 533 }
534 }) 534 })
535 } 535 }
  536 + const teamInformation= commonFunc.showLocalMessage(props, 'teamInformation', '班组信息');
  537 +
  538 + const captain = commonFunc.showLocalMessage(props, 'captain', '机长');
  539 +
  540 + const shift = commonFunc.showLocalMessage(props, 'shift', '班次');
  541 +
  542 + const classGroup = commonFunc.showLocalMessage(props, 'classGroup', '班组');
  543 +
  544 + const foreman = commonFunc.showLocalMessage(props, 'foreman', '领班');
  545 + console.log('2222', teamInformation);
536 546
537 547
538 return ( 548 return (
@@ -541,7 +551,7 @@ const TeamInfo = baseProps =&gt; { @@ -541,7 +551,7 @@ const TeamInfo = baseProps =&gt; {
541 <div className="teamInfo"> 551 <div className="teamInfo">
542 <h2> 552 <h2>
543 <img src={teaIcon} /> 553 <img src={teaIcon} />
544 - 班组信息 554 + {teamInformation}
545 </h2> 555 </h2>
546 <div className="userWorkBox"> 556 <div className="userWorkBox">
547 <div className="workTop"> 557 <div className="workTop">
@@ -564,15 +574,15 @@ const TeamInfo = baseProps =&gt; { @@ -564,15 +574,15 @@ const TeamInfo = baseProps =&gt; {
564 )} 574 )}
565 <ul> 575 <ul>
566 <li> 576 <li>
567 - <label>机长</label> 577 + <label>{captain}</label>
568 <span>{ sActualEmployeeName || sEmployeeName}</span> 578 <span>{ sActualEmployeeName || sEmployeeName}</span>
569 </li> 579 </li>
570 <li> 580 <li>
571 - <label>班组</label> 581 + <label>{classGroup}</label>
572 <span>{props.app.userinfo?.sTeamNo}</span> 582 <span>{props.app.userinfo?.sTeamNo}</span>
573 </li> 583 </li>
574 <li> 584 <li>
575 - <label>班次</label> 585 + <label>{shift}</label>
576 <span> 586 <span>
577 {props.app.userinfo?.sShift == "1" 587 {props.app.userinfo?.sShift == "1"
578 ? "白班" 588 ? "白班"
@@ -585,7 +595,7 @@ const TeamInfo = baseProps =&gt; { @@ -585,7 +595,7 @@ const TeamInfo = baseProps =&gt; {
585 </div> 595 </div>
586 <ul style={{'flex-direction': 'row'}}> 596 <ul style={{'flex-direction': 'row'}}>
587 <li> 597 <li>
588 - <label>领班</label> 598 + <label>{foreman}</label>
589 <span>{sForemanName}</span> 599 <span>{sForemanName}</span>
590 </li> 600 </li>
591 <li> 601 <li>
@@ -601,7 +611,7 @@ const TeamInfo = baseProps =&gt; { @@ -601,7 +611,7 @@ const TeamInfo = baseProps =&gt; {
601 <CommonViewTable {...viewProps} className="temporaryIpqc"></CommonViewTable> 611 <CommonViewTable {...viewProps} className="temporaryIpqc"></CommonViewTable>
602 <Button style={{ 'position': 'absolute' , 'top': '20%' ,'right': '2%'}} type="primary" onClick={() => { clearTempIpqc() }} > 清空 </Button> 612 <Button style={{ 'position': 'absolute' , 'top': '20%' ,'right': '2%'}} type="primary" onClick={() => { clearTempIpqc() }} > 清空 </Button>
603 </div> 613 </div>
604 - 614 +
605 </div> 615 </div>
606 </div> 616 </div>
607 <div className="postList"> 617 <div className="postList">
@@ -710,13 +720,13 @@ const TeamJoinInfo = props =&gt; { @@ -710,13 +720,13 @@ const TeamJoinInfo = props =&gt; {
710 }); 720 });
711 props.onChangeRouter({ type: "name", path: ["计划任务", "机台任务"] }); 721 props.onChangeRouter({ type: "name", path: ["计划任务", "机台任务"] });
712 }; 722 };
713 - 723 + const workHandoverInformation= commonFunc.showLocalMessage(props, 'workHandoverInformation', '上班交接信息');
714 return ( 724 return (
715 <div className="joinInfo"> 725 <div className="joinInfo">
716 <Row className="teamTitle"> 726 <Row className="teamTitle">
717 <h2 style={{ color: "#1890ff", margin: 0 }}> 727 <h2 style={{ color: "#1890ff", margin: 0 }}>
718 <img src={joinIcon} /> 728 <img src={joinIcon} />
719 - 上班交接信息 729 + {workHandoverInformation}
720 </h2> 730 </h2>
721 </Row> 731 </Row>
722 <Row className="teamInfoBox"> 732 <Row className="teamInfoBox">