Commit 3ab7196ca9a07b293ed2e65b94b39acd17655837

Authored by Min
1 parent 01c13ae9

1.完善系统多语言翻译

src/components/Common/CommonComponent/index.js
1 import moment from 'moment'; 1 import moment from 'moment';
2 import React, { Component, createRef } from 'react'; 2 import React, { Component, createRef } from 'react';
3 import reactComponentDebounce from '@/components/Common/ReactDebounce'; 3 import reactComponentDebounce from '@/components/Common/ReactDebounce';
  4 +import * as commonFunc from '@/components/Common//commonFunc';/* 通用单据方法 */ /* 通用单据方法 */
4 // import '@ant-design/compatible/assets/index.css'; 5 // import '@ant-design/compatible/assets/index.css';
5 import { 6 import {
6 InputNumber, 7 InputNumber,
@@ -1010,10 +1011,14 @@ export default class CommonComponent extends Component { @@ -1010,10 +1011,14 @@ export default class CommonComponent extends Component {
1010 }; 1011 };
1011 1012
1012 getSearchProps = () => { 1013 getSearchProps = () => {
  1014 + let chooseTitle = '选择';
  1015 + if(commonUtils.isNotEmptyObject(this.props.app) && commonUtils.isNotEmptyObject(this.props.app.commonConst)) {
  1016 + chooseTitle = commonFunc.showMessage(this.props.app.commonConst, 'choose') ;
  1017 + }
1013 const obj = { 1018 const obj = {
1014 onKeyDown: this.onKeyDown, 1019 onKeyDown: this.onKeyDown,
1015 onChange: e => this.handleSelectOptionEvent(e.target.value), /* 数据改变回带到父组件 */ 1020 onChange: e => this.handleSelectOptionEvent(e.target.value), /* 数据改变回带到父组件 */
1016 - value: commonUtils.isUndefined(this.state.dataValue) ? '选择' : commonUtils.strUndefinedToEmpty(this.state.dataValue), /* 数据值 */ 1021 + value: commonUtils.isUndefined(this.state.dataValue) ? chooseTitle : commonUtils.strUndefinedToEmpty(this.state.dataValue), /* 数据值 */
1017 }; 1022 };
1018 return obj; 1023 return obj;
1019 } 1024 }
@@ -1113,6 +1118,10 @@ export default class CommonComponent extends Component { @@ -1113,6 +1118,10 @@ export default class CommonComponent extends Component {
1113 const { 1118 const {
1114 sTableTitleSql, iVisCount, sName, sDateFormat, 1119 sTableTitleSql, iVisCount, sName, sDateFormat,
1115 } = this.props.showConfig; 1120 } = this.props.showConfig;
  1121 + let chooseTitle = '选择';
  1122 + if(commonUtils.isNotEmptyObject(this.props.app) && commonUtils.isNotEmptyObject(this.props.app.commonConst)) {
  1123 + chooseTitle = commonFunc.showMessage(this.props.app.commonConst, 'choose') ;
  1124 + }
1116 if (commonUtils.isNotEmptyStr(sTableTitleSql) && iVisCount > 1) { 1125 if (commonUtils.isNotEmptyStr(sTableTitleSql) && iVisCount > 1) {
1117 return <Select ref={(ref) => { this.selectTableRef = ref; }} {...this.getSelectTableProps()}>{this.getSelectTableOption()}</Select>; 1126 return <Select ref={(ref) => { this.selectTableRef = ref; }} {...this.getSelectTableProps()}>{this.getSelectTableOption()}</Select>;
1118 } 1127 }
@@ -1251,7 +1260,7 @@ export default class CommonComponent extends Component { @@ -1251,7 +1260,7 @@ export default class CommonComponent extends Component {
1251 return <Select {...this.getSelectProps()} >{this.getSelectOption()}</Select>; 1260 return <Select {...this.getSelectProps()} >{this.getSelectOption()}</Select>;
1252 } 1261 }
1253 } else if (this.state.enabled && commonUtils.isNotEmptyObject(this.props.showConfig.sName) && this.props.showConfig.sDropDownType === 'popup') { /* 通用弹窗 */ 1262 } else if (this.state.enabled && commonUtils.isNotEmptyObject(this.props.showConfig.sName) && this.props.showConfig.sDropDownType === 'popup') { /* 通用弹窗 */
1254 - return (<Search placeholder="选择" defaultValue="选择" {...this.getSearchProps()} onSearch={this.onFieldPopupModal.bind(this, this.props.showConfig, this.props.name)} />); 1263 + return (<Search placeholder={chooseTitle} defaultValue={chooseTitle} {...this.getSearchProps()} onSearch={this.onFieldPopupModal.bind(this, this.props.showConfig, this.props.name)} />);
1255 } else if (this.firstDataIndex === 'i' || this.firstDataIndex === 'd') { /* 数字输入框(整形i和浮点型d) */ 1264 } else if (this.firstDataIndex === 'i' || this.firstDataIndex === 'd') { /* 数字输入框(整形i和浮点型d) */
1256 return innerInputProps.readOnly ? <span onKeyDown={this.onKeyDown} suppressContentEditableWarning contentEditable="true"><InputNumberA {...innerInputProps} /></span> : 1265 return innerInputProps.readOnly ? <span onKeyDown={this.onKeyDown} suppressContentEditableWarning contentEditable="true"><InputNumberA {...innerInputProps} /></span> :
1257 location.pathname.includes('quotationPackTableTree') && this.props.name === 'control' && this.props.showConfig.sName === 'dSinglePQty' ? <span style={{ position: 'relative' }}><InputNumberA {...innerInputProps} /><span onClick={this.handleViewClick} style={{ position: 'absolute', right: '2px' }}><EyeOutlined /></span></span> : <InputNumberA {...innerInputProps} style={{ width: '100%' }} />; 1266 location.pathname.includes('quotationPackTableTree') && this.props.name === 'control' && this.props.showConfig.sName === 'dSinglePQty' ? <span style={{ position: 'relative' }}><InputNumberA {...innerInputProps} /><span onClick={this.handleViewClick} style={{ position: 'absolute', right: '2px' }}><EyeOutlined /></span></span> : <InputNumberA {...innerInputProps} style={{ width: '100%' }} />;
src/components/Common/CommonListSelectTree/index.js
@@ -627,7 +627,8 @@ const CommonListComponent = Form.create({ @@ -627,7 +627,8 @@ const CommonListComponent = Form.create({
627 enabled: true, 627 enabled: true,
628 }; 628 };
629 } 629 }
630 - 630 + const BtnSure =commonFunc.showMessage(app.commonConst, 'BtnSure') || '确认';
  631 + const BtnCancel =commonFunc.showMessage(app.commonConst, 'BtnCancel') || '取消';
631 if (commonUtils.isNotEmptyObject(app.currentPane) && commonUtils.isNotEmptyObject(app.currentPane.name) && app.currentPane.bEdit) { 632 if (commonUtils.isNotEmptyObject(app.currentPane) && commonUtils.isNotEmptyObject(app.currentPane.name) && app.currentPane.bEdit) {
632 tableFilterProps = { 633 tableFilterProps = {
633 ...tableFilterProps, 634 ...tableFilterProps,
@@ -747,8 +748,8 @@ const CommonListComponent = Form.create({ @@ -747,8 +748,8 @@ const CommonListComponent = Form.create({
747 width: '50%', textAlign: 'right', marginRight: '9px', marginBottom: '9px', 748 width: '50%', textAlign: 'right', marginRight: '9px', marginBottom: '9px',
748 }} 749 }}
749 > 750 >
750 - <Button key="back" style={{ marginRight: '8px' }} onClick={props.onCancel}>取消</Button>  
751 - <Button type="primary" onClick={props.onSelect}>确认</Button> 751 + <Button key="back" style={{ marginRight: '8px' }} onClick={props.onCancel}> {BtnCancel}</Button>
  752 + <Button type="primary" onClick={props.onSelect}> {BtnSure}</Button>
752 </div> 753 </div>
753 </div> 754 </div>
754 </Layout> 755 </Layout>
src/components/Common/CommonListTreeSelect/index.js
@@ -534,7 +534,10 @@ const CommonListComponent = Form.create({ @@ -534,7 +534,10 @@ const CommonListComponent = Form.create({
534 rowSelection: props.rowSelection, 534 rowSelection: props.rowSelection,
535 }; 535 };
536 } 536 }
537 - 537 +
  538 + const BtnSure =commonFunc.showMessage(app.commonConst, 'BtnSure') || '确认';
  539 + const BtnCancel =commonFunc.showMessage(app.commonConst, 'BtnCancel') || '取消';
  540 +
538 const realizeHeight = commonUtils.isNotEmptyNumber(props.realizeHeight) ? props.realizeHeight : 0; 541 const realizeHeight = commonUtils.isNotEmptyNumber(props.realizeHeight) ? props.realizeHeight : 0;
539 const btnClick = (btn) => { 542 const btnClick = (btn) => {
540 const { sControlName } = btn; 543 const { sControlName } = btn;
@@ -566,7 +569,7 @@ const CommonListComponent = Form.create({ @@ -566,7 +569,7 @@ const CommonListComponent = Form.create({
566 }; 569 };
567 570
568 return ( 571 return (
569 - <Form > 572 + <Form>
570 <Layout> 573 <Layout>
571 <Layout> 574 <Layout>
572 <div id="modalTreeChooseProcess"> 575 <div id="modalTreeChooseProcess">
@@ -609,8 +612,8 @@ const CommonListComponent = Form.create({ @@ -609,8 +612,8 @@ const CommonListComponent = Form.create({
609 } 612 }
610 </div> 613 </div>
611 <div style={{ textAlign: 'right', marginRight: '9px', marginBottom: '9px' }}> 614 <div style={{ textAlign: 'right', marginRight: '9px', marginBottom: '9px' }}>
612 - <Button key="back" style={{ marginRight: '8px' }} onClick={props.onCancel}>取消</Button>  
613 - <Button type="primary" onClick={props.onSelect}>确认</Button> 615 + <Button key="back" style={{ marginRight: '8px' }} onClick={props.onCancel}>{BtnCancel}</Button>
  616 + <Button type="primary" onClick={props.onSelect}> {BtnSure}</Button>
614 </div> 617 </div>
615 </div> : '' 618 </div> : ''
616 } 619 }
src/components/Common/CommonView/index.js
@@ -9,6 +9,7 @@ import ShowType from &#39;@/components/Common/CommonComponent&#39;; @@ -9,6 +9,7 @@ import ShowType from &#39;@/components/Common/CommonComponent&#39;;
9 import AntdDraggableModal from '@/components/Common/AntdDraggableModal'; 9 import AntdDraggableModal from '@/components/Common/AntdDraggableModal';
10 import CommonListSelectTree from '@/components/Common/CommonListSelectTree'; 10 import CommonListSelectTree from '@/components/Common/CommonListSelectTree';
11 import * as commonUtils from '@/utils/utils';/* 通用方法 */ 11 import * as commonUtils from '@/utils/utils';/* 通用方法 */
  12 +import * as commonFunc from '@/components/Common/commonFunc';/* 单据业务功能 */
12 13
13 const FormItem = Form.Item; 14 const FormItem = Form.Item;
14 // const EachInputHeight = 32; 15 // const EachInputHeight = 32;
@@ -291,6 +292,8 @@ export default class CommonView extends Component { @@ -291,6 +292,8 @@ export default class CommonView extends Component {
291 expanded: true, 292 expanded: true,
292 }); 293 });
293 } 294 }
  295 + const afterSave = commonFunc.showMessage(this.props.app.commonConst, 'afterSave') ||
  296 + '保存后自动生成';/* 保存后自动生成 */
294 297
295 return ( 298 return (
296 <Tooltip title="master" placement="topLeft" visible={this.props.showTableName}> 299 <Tooltip title="master" placement="topLeft" visible={this.props.showTableName}>
@@ -475,7 +478,7 @@ export default class CommonView extends Component { @@ -475,7 +478,7 @@ export default class CommonView extends Component {
475 ].includes(child.sName) 478 ].includes(child.sName)
476 ) ? 479 ) ?
477 <Col style={{ display: enabled ? 'block' : 'none' }} className="speacialNote" key={child.sId} span="12"> 480 <Col style={{ display: enabled ? 'block' : 'none' }} className="speacialNote" key={child.sId} span="12">
478 - {sModelsType !== 'smg/sendMailMsg' ? '保存后自动生成' : '发送消息无需生成单据号'} 481 + {sModelsType !== 'smg/sendMailMsg' ? afterSave : afterSave}
479 </Col> : '' } 482 </Col> : '' }
480 </Col> 483 </Col>
481 ); 484 );
src/components/Common/PersonCenter/PersonCenter.js
@@ -862,6 +862,8 @@ const PersonCenterOnlineUser = Form.create({ @@ -862,6 +862,8 @@ const PersonCenterOnlineUser = Form.create({
862 app, 862 app,
863 } = props; 863 } = props;
864 const { userinfo } = app; 864 const { userinfo } = app;
  865 + const BtnSure =commonFunc.showMessage(app.commonConst, 'BtnSure') || '确认';
  866 + const BtnCancel =commonFunc.showMessage(app.commonConst, 'BtnCancel') || '取消';
865 const OnlineUsers = commonFunc.showMessage(props.app.commonConst, 'OnlineUsers');/* 在线用户 */ 867 const OnlineUsers = commonFunc.showMessage(props.app.commonConst, 'OnlineUsers');/* 在线用户 */
866 868
867 const Website = commonFunc.showMessage(props.app.commonConst, 'Website');/* 站点数 */ 869 const Website = commonFunc.showMessage(props.app.commonConst, 'Website');/* 站点数 */
@@ -937,39 +939,36 @@ const PersonCenterOnlineUser = Form.create({ @@ -937,39 +939,36 @@ const PersonCenterOnlineUser = Form.create({
937 const title = `${OnlineUserName}${commonUtils.isNotEmptyObject(onlineUserDataNew) ? `【 ${Website}:${onlineUserDataNew.consumerCount}\xa0\xa0\xa0\xa0\xa0${ExpirationDate}:${onlineUserDataNew.afterTime}` : ''} 】`; 939 const title = `${OnlineUserName}${commonUtils.isNotEmptyObject(onlineUserDataNew) ? `【 ${Website}:${onlineUserDataNew.consumerCount}\xa0\xa0\xa0\xa0\xa0${ExpirationDate}:${onlineUserDataNew.afterTime}` : ''} 】`;
938 return ( 940 return (
939 <div> 941 <div>
940 - {  
941 - onlineUserVisible ?  
942 - <AntdDraggableModal  
943 - title={title}  
944 - width="80%"  
945 - visible={onlineUserVisible}  
946 - onCancel={handleCancel}  
947 - afterClose={handleCancel}  
948 - footer={null} 942 + {onlineUserVisible ? (
  943 + <AntdDraggableModal title={title} width="80%" visible={onlineUserVisible} onCancel={handleCancel} afterClose={handleCancel} footer={null}>
  944 + <div
  945 + style={{ width: "100%", height: tableHeight + "px" }}
  946 + ref={ref => {
  947 + if (ref) {
  948 + ref.querySelector(".ant-table-container").style.height = tableHeight + "px";
  949 + ref.querySelector(".ant-table-body").style.height = tableHeight - 30 + "px";
  950 + // ref.querySelectorAll('.ant-table-cell-fix-right').forEach(item => {
  951 + // if (item.previousSibling) {
  952 + // item.previousSibling.style.display = 'none';
  953 + // }
  954 + // });
  955 + }
  956 + }}
949 > 957 >
950 - <div  
951 - style={{ width: '100%', height: tableHeight + 'px' }}  
952 - ref={(ref) => {  
953 - if (ref) {  
954 - ref.querySelector('.ant-table-container').style.height = tableHeight + 'px';  
955 - ref.querySelector('.ant-table-body').style.height = tableHeight - 30 + 'px';  
956 - // ref.querySelectorAll('.ant-table-cell-fix-right').forEach(item => {  
957 - // if (item.previousSibling) {  
958 - // item.previousSibling.style.display = 'none';  
959 - // }  
960 - // });  
961 - }  
962 - }}  
963 - >  
964 - <StaticEditTable {...onlineUserProps} setOpterationColumn="Y" noVlist />  
965 - </div>  
966 - <div className='ant-modal-footer' style={{ padding: '8px 0 0 0' }}>  
967 - <Button key="back" onClick={handleCancel}>取消</Button>  
968 - <Button key="submit" type="primary" onClick={handleCancel}>确认</Button>  
969 - </div>  
970 - </AntdDraggableModal>  
971 - : ''  
972 - } 958 + <StaticEditTable {...onlineUserProps} setOpterationColumn="Y" noVlist />
  959 + </div>
  960 + <div className="ant-modal-footer" style={{ padding: "8px 0 0 0" }}>
  961 + <Button key="back" onClick={handleCancel}>
  962 + {BtnCancel}
  963 + </Button>
  964 + <Button key="submit" type="primary" onClick={handleCancel}>
  965 + {BtnSure}
  966 + </Button>
  967 + </div>
  968 + </AntdDraggableModal>
  969 + ) : (
  970 + ""
  971 + )}
973 </div> 972 </div>
974 ); 973 );
975 }); 974 });
src/components/Common/commonBusiness.js
@@ -23,6 +23,8 @@ import imgCheckingEnglish from &#39;../../assets/hasChecking_english.png&#39;; /* 审核 @@ -23,6 +23,8 @@ import imgCheckingEnglish from &#39;../../assets/hasChecking_english.png&#39;; /* 审核
23 23
24 import imgCheckPerson from '../../assets/personChecked1.png'; /* 审核中 */ 24 import imgCheckPerson from '../../assets/personChecked1.png'; /* 审核中 */
25 import imgSubmit from '../../assets/haveSubmited.svg'; /* 已提交 */ 25 import imgSubmit from '../../assets/haveSubmited.svg'; /* 已提交 */
  26 +import imgSubmitBig5 from '../../assets/haveSubmit_sBig5.png'; /* 审核中-繁体 */
  27 +import imgSubmitEnglish from '../../assets/haveSubmit_english.png'; /* 审核中-英文 */
26 import { cloneDeep } from 'lodash'; 28 import { cloneDeep } from 'lodash';
27 29
28 // ----------------------------------------------------------------------- 30 // -----------------------------------------------------------------------
@@ -174,7 +176,7 @@ export function handleAddIcon(masterData, sModelsType, app = {}) { @@ -174,7 +176,7 @@ export function handleAddIcon(masterData, sModelsType, app = {}) {
174 } else if (sStatus === '2') { 176 } else if (sStatus === '2') {
175 imgSrc = isEnglish ? imgCheckingEnglish : (isTraditionalChinese ? imgCheckingBig5 : imgChecking); 177 imgSrc = isEnglish ? imgCheckingEnglish : (isTraditionalChinese ? imgCheckingBig5 : imgChecking);
176 } else if (bSubmit) { 178 } else if (bSubmit) {
177 - imgSrc = imgSubmit; 179 + imgSrc = isEnglish ? imgSubmitEnglish : (isTraditionalChinese ? imgSubmitBig5 : imgSubmit);
178 } 180 }
179 } 181 }
180 return imgSrc; 182 return imgSrc;
src/components/Manufacture/ProcessCardPackTableTreeNew/index.js
@@ -3581,7 +3581,7 @@ const ToolBarComponent = props =&gt; { @@ -3581,7 +3581,7 @@ const ToolBarComponent = props =&gt; {
3581 3581
3582 // 审核状态 3582 // 审核状态
3583 const AvatarComponent = props => { 3583 const AvatarComponent = props => {
3584 - const { masterData, sModelsType, app } = this.props; 3584 + const { masterData, sModelsType, app } = props;
3585 const imgSrc = commonBusiness.handleAddIcon(masterData, sModelsType, app); 3585 const imgSrc = commonBusiness.handleAddIcon(masterData, sModelsType, app);
3586 if (!imgSrc) return ""; 3586 if (!imgSrc) return "";
3587 return ( 3587 return (
src/components/Manufacture/WorkOrderPackTableTreeNew/index.js
@@ -4048,7 +4048,7 @@ const ToolBarComponent = props =&gt; { @@ -4048,7 +4048,7 @@ const ToolBarComponent = props =&gt; {
4048 4048
4049 // 审核状态 4049 // 审核状态
4050 const AvatarComponent = props => { 4050 const AvatarComponent = props => {
4051 - const { masterData, sModelsType, app } = this.props; 4051 + const { masterData, sModelsType, app } = props;
4052 const imgSrc = commonBusiness.handleAddIcon(masterData, sModelsType, app); 4052 const imgSrc = commonBusiness.handleAddIcon(masterData, sModelsType, app);
4053 if (!imgSrc) return ""; 4053 if (!imgSrc) return "";
4054 return ( 4054 return (
src/utils/common/message.js
1 /* eslint-disable */ 1 /* eslint-disable */
2 import { Modal, message as antdMessage } from 'antd-v4'; 2 import { Modal, message as antdMessage } from 'antd-v4';
3 import { Modal as mobileModal } from 'antd-mobile-v2'; 3 import { Modal as mobileModal } from 'antd-mobile-v2';
  4 +import commonConfig from '../config';
4 5
5 const { warning } = Modal; 6 const { warning } = Modal;
6 const antdMobileAlert = mobileModal.alert; 7 const antdMobileAlert = mobileModal.alert;
@@ -24,15 +25,22 @@ const openConfirm = (config) =&gt; { @@ -24,15 +25,22 @@ const openConfirm = (config) =&gt; {
24 }; 25 };
25 26
26 const fn = () => { 27 const fn = () => {
  28 + const userinfo = JSON.parse(localStorage.getItem(`${commonConfig.prefix}userinfo`)) || {};
  29 + const language = userinfo.sLanguage || 'sChinese'; // 默认简体中文
  30 + const isEnglish = language === 'sEnglish';
  31 +
  32 + // 使用语言设置
  33 + const sTitle = isEnglish ? 'Reminder' : language === 'sBig5' ? '溫馨提示' : '温馨提示';
  34 + const okText = language === 'sEnglish' ? 'Confirm' : language === 'sBig5' ? '確認': '确认';
27 if (location.pathname.toLocaleLowerCase().includes('mobile')) { 35 if (location.pathname.toLocaleLowerCase().includes('mobile')) {
28 - antdMobileAlert('温馨提示', secondContent || '出错了', [ 36 + antdMobileAlert(sTitle, secondContent || '出错了', [
29 { text: '确认', }, 37 { text: '确认', },
30 ]) 38 ])
31 } else { 39 } else {
32 warning({ 40 warning({
33 - title: '温馨提示', 41 + title: sTitle,
34 content: <div style={{ maxHeight: '50vh', overflowY: 'auto' }} >{secondContent || '出错了'}</div>, 42 content: <div style={{ maxHeight: '50vh', overflowY: 'auto' }} >{secondContent || '出错了'}</div>,
35 - okText: '确认', 43 + okText: okText,
36 zIndex: 1000, 44 zIndex: 1000,
37 width, 45 width,
38 ...rest, 46 ...rest,
@@ -52,6 +60,11 @@ const openConfirm = (config) =&gt; { @@ -52,6 +60,11 @@ const openConfirm = (config) =&gt; {
52 export const message = { 60 export const message = {
53 ...antdMessage, 61 ...antdMessage,
54 error: (content, ...rest) => { 62 error: (content, ...rest) => {
55 - openConfirm({ message: content, ...rest }); 63 + const userinfo = JSON.parse(localStorage.getItem(`${commonConfig.prefix}userinfo`)) || {};
  64 + const language = userinfo.sLanguage || 'sChinese'; // 默认简体中文
  65 + const requiredText = language === 'sEnglish' ? 'is Required' :
  66 + (language === 'sBig5' ? '為必填項' : '为必填项');
  67 + const sContent = content?.replace('为必填项', requiredText);
  68 + openConfirm({ message: sContent, ...rest });
56 }, 69 },
57 }; 70 };