Commit 23b7a6ccbbf9fe54f119a265aa9fa6931d094691
1 parent
9fe9063c
1.完成手机端英文翻译
Showing
10 changed files
with
294 additions
and
158 deletions
src/mobile/common/CommobileBase.js
| @@ -318,6 +318,10 @@ export default (ChildComponent) => { | @@ -318,6 +318,10 @@ export default (ChildComponent) => { | ||
| 318 | const { | 318 | const { |
| 319 | token, sModelsId, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, | 319 | token, sModelsId, [`${name}SelectedRowKeys`]: tableSelectedRowKeys, |
| 320 | } = this.state; | 320 | } = this.state; |
| 321 | + const friendlyReminder = commonFunc.showLocalMessage(this.props, 'FriendlyReminder', '温馨提示'); | ||
| 322 | + | ||
| 323 | + const btnSure = commonFunc.showLocalMessage(this.props, 'BtnSure', '确认'); | ||
| 324 | + | ||
| 321 | const configDataId = configData.sId; | 325 | const configDataId = configData.sId; |
| 322 | const dataUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${configDataId}?sModelsId=${sModelsId}`; | 326 | const dataUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${configDataId}?sModelsId=${sModelsId}`; |
| 323 | const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; | 327 | const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data; |
| @@ -343,8 +347,8 @@ export default (ChildComponent) => { | @@ -343,8 +347,8 @@ export default (ChildComponent) => { | ||
| 343 | this.setState(addState); | 347 | this.setState(addState); |
| 344 | } | 348 | } |
| 345 | } else if (dataReturn.code === -8) { | 349 | } else if (dataReturn.code === -8) { |
| 346 | - Modal.alert('温馨提示', dataReturn.msg || '出错了', [ | ||
| 347 | - { text: '确认' }, | 350 | + Modal.alert(friendlyReminder, dataReturn.msg || '出错了', [ |
| 351 | + { text: btnSure }, | ||
| 348 | ]); | 352 | ]); |
| 349 | } else { | 353 | } else { |
| 350 | this.getServiceError(dataReturn); | 354 | this.getServiceError(dataReturn); |
src/mobile/common/CommobileSearchComponent.js
| @@ -16,6 +16,7 @@ import moment from 'moment'; | @@ -16,6 +16,7 @@ import moment from 'moment'; | ||
| 16 | import ShowType from './CommobileComponent'; | 16 | import ShowType from './CommobileComponent'; |
| 17 | // eslint-disable-next-line import/first | 17 | // eslint-disable-next-line import/first |
| 18 | import { createForm } from 'rc-form'; | 18 | import { createForm } from 'rc-form'; |
| 19 | +import * as commonFunc from "@/components/Common/commonFunc"; | ||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | // const data = [ | 22 | // const data = [ |
| @@ -469,6 +470,12 @@ class CommobileSearchComponent extends React.Component { | @@ -469,6 +470,12 @@ class CommobileSearchComponent extends React.Component { | ||
| 469 | const { | 470 | const { |
| 470 | label, initData, show, slavePagination, token, slaveFilterCondition, slaveConfig, showScan, app, sModelsId, masterData, | 471 | label, initData, show, slavePagination, token, slaveFilterCondition, slaveConfig, showScan, app, sModelsId, masterData, |
| 471 | } = this.props; | 472 | } = this.props; |
| 473 | + const allDataTitle = commonFunc.showLocalMessage(this.props, 'allData', '全部数据'); | ||
| 474 | + const filter = commonFunc.showLocalMessage(this.props, 'filter', '筛选'); | ||
| 475 | + const clearConditions = commonFunc.showLocalMessage(this.props, 'clearConditions', '清空条件'); | ||
| 476 | + | ||
| 477 | + const btnSure = commonFunc.showLocalMessage(this.props, 'btnSure', '确定'); | ||
| 478 | + | ||
| 472 | const showName = []; | 479 | const showName = []; |
| 473 | const solutionData = []; | 480 | const solutionData = []; |
| 474 | if (commonUtils.isNotEmptyArr(slaveFilterCondition) && commonUtils.isNotEmptyArr(slaveConfig)) { | 481 | if (commonUtils.isNotEmptyArr(slaveFilterCondition) && commonUtils.isNotEmptyArr(slaveConfig)) { |
| @@ -483,12 +490,12 @@ class CommobileSearchComponent extends React.Component { | @@ -483,12 +490,12 @@ class CommobileSearchComponent extends React.Component { | ||
| 483 | }); | 490 | }); |
| 484 | } | 491 | } |
| 485 | const total = commonUtils.isEmptyObject(slavePagination) ? 0 : slavePagination.total; | 492 | const total = commonUtils.isEmptyObject(slavePagination) ? 0 : slavePagination.total; |
| 486 | - const showlabel = commonUtils.isEmptyObject(label) ? '全部数据' : label; | 493 | + const showlabel = commonUtils.isEmptyObject(label) ? allDataTitle : label; |
| 487 | const downUrl = `${commonConfig.file_host}file/download?savePathStr=/home/monkey/xlyerp/modlePath/Down.png&sModelsId=100&token=${token}`; | 494 | const downUrl = `${commonConfig.file_host}file/download?savePathStr=/home/monkey/xlyerp/modlePath/Down.png&sModelsId=100&token=${token}`; |
| 488 | const upUrl = `${commonConfig.file_host}file/download?savePathStr=/home/monkey/xlyerp/modlePath/Up.png&sModelsId=100&token=${token}`; | 495 | const upUrl = `${commonConfig.file_host}file/download?savePathStr=/home/monkey/xlyerp/modlePath/Up.png&sModelsId=100&token=${token}`; |
| 489 | const imgUrl = show ? upUrl : downUrl; | 496 | const imgUrl = show ? upUrl : downUrl; |
| 490 | const tabs = [ | 497 | const tabs = [ |
| 491 | - { title: <Badge text="">筛选 <img style={{ height: '15px', marginleft: '20px' }} src={downUrl} alt="" /></Badge> }, | 498 | + { title: <Badge text="">{filter} <img style={{ height: '15px', marginleft: '20px' }} src={downUrl} alt="" /></Badge> }, |
| 492 | { | 499 | { |
| 493 | title: | 500 | title: |
| 494 | <Badge style={{ left: '0px' }} text={total}>{showlabel} | 501 | <Badge style={{ left: '0px' }} text={total}>{showlabel} |
| @@ -517,16 +524,16 @@ class CommobileSearchComponent extends React.Component { | @@ -517,16 +524,16 @@ class CommobileSearchComponent extends React.Component { | ||
| 517 | 524 | ||
| 518 | return ( | 525 | return ( |
| 519 | <div> | 526 | <div> |
| 520 | - <div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center' }}> | 527 | + <div style={{ display: "flex", justifyContent: "center", alignItems: "center" }}> |
| 521 | <div | 528 | <div |
| 522 | style={{ | 529 | style={{ |
| 523 | backgroundImage: `url(${scan})`, | 530 | backgroundImage: `url(${scan})`, |
| 524 | - backgroundSize: 'cover', | ||
| 525 | - width: '30px', | ||
| 526 | - height: '30px', | ||
| 527 | - marginLeft: '8px', | 531 | + backgroundSize: "cover", |
| 532 | + width: "30px", | ||
| 533 | + height: "30px", | ||
| 534 | + marginLeft: "8px", | ||
| 528 | // eslint-disable-next-line no-undef | 535 | // eslint-disable-next-line no-undef |
| 529 | - display: `${showScan ? 'block' : 'none'}`, | 536 | + display: `${showScan ? "block" : "none"}`, |
| 530 | }} | 537 | }} |
| 531 | onClick={commonConfig.isWeiXin ? this.handleWxScan : this.handleScan} | 538 | onClick={commonConfig.isWeiXin ? this.handleWxScan : this.handleScan} |
| 532 | /> | 539 | /> |
| @@ -537,13 +544,17 @@ class CommobileSearchComponent extends React.Component { | @@ -537,13 +544,17 @@ class CommobileSearchComponent extends React.Component { | ||
| 537 | value={this.state.scanValue} | 544 | value={this.state.scanValue} |
| 538 | onChange={this.handleChangleInput} | 545 | onChange={this.handleChangleInput} |
| 539 | onCancel={this.handleCancel} | 546 | onCancel={this.handleCancel} |
| 540 | - ref={(el) => { this.inputSearch = el; }} | 547 | + ref={el => { |
| 548 | + this.inputSearch = el; | ||
| 549 | + }} | ||
| 541 | /> | 550 | /> |
| 542 | </div> | 551 | </div> |
| 543 | <Tabs | 552 | <Tabs |
| 544 | tabs={tabs} | 553 | tabs={tabs} |
| 545 | initialPage={1} | 554 | initialPage={1} |
| 546 | - onChange={(tab, index) => { console.log('onChange', index, tab); }} | 555 | + onChange={(tab, index) => { |
| 556 | + console.log("onChange", index, tab); | ||
| 557 | + }} | ||
| 547 | onTabClick={(tab, index) => { | 558 | onTabClick={(tab, index) => { |
| 548 | if (index === 1) { | 559 | if (index === 1) { |
| 549 | this.handleClick(); | 560 | this.handleClick(); |
| @@ -552,70 +563,76 @@ class CommobileSearchComponent extends React.Component { | @@ -552,70 +563,76 @@ class CommobileSearchComponent extends React.Component { | ||
| 552 | modal1: true, | 563 | modal1: true, |
| 553 | }); | 564 | }); |
| 554 | this.props.onSaveState({ | 565 | this.props.onSaveState({ |
| 555 | - show: false, | 566 | + show: false, |
| 556 | }); | 567 | }); |
| 557 | } | 568 | } |
| 558 | }} | 569 | }} |
| 559 | > | 570 | > |
| 560 | <div /> | 571 | <div /> |
| 561 | <div /> | 572 | <div /> |
| 562 | - | ||
| 563 | </Tabs> | 573 | </Tabs> |
| 564 | 574 | ||
| 565 | <div> | 575 | <div> |
| 566 | - {show ? initData ? menuEl : loadingEl : null} | 576 | + {show ? (initData ? menuEl : loadingEl) : null} |
| 567 | {show ? <div className="menu-mask" onClick={this.onMaskClick} /> : null} | 577 | {show ? <div className="menu-mask" onClick={this.onMaskClick} /> : null} |
| 568 | </div> | 578 | </div> |
| 569 | 579 | ||
| 570 | <Modal | 580 | <Modal |
| 571 | popup | 581 | popup |
| 572 | visible={this.state.modal1} | 582 | visible={this.state.modal1} |
| 573 | - onClose={this.onClose('modal1')} | 583 | + onClose={this.onClose("modal1")} |
| 574 | animationType="slide-down" | 584 | animationType="slide-down" |
| 575 | className={styles.modal} | 585 | className={styles.modal} |
| 576 | // afterClose={() => { alert('afterClose'); }} | 586 | // afterClose={() => { alert('afterClose'); }} |
| 577 | > | 587 | > |
| 578 | - | ||
| 579 | <List className={styles.filterListContent} renderHeader={() => `${showlabel}`}> | 588 | <List className={styles.filterListContent} renderHeader={() => `${showlabel}`}> |
| 580 | - { | ||
| 581 | - solutionData.map((item, index) => { | ||
| 582 | - const showTypeProps = { | ||
| 583 | - app, | ||
| 584 | - record: {}, | ||
| 585 | - sId: item.sId, /* 修改当前编号(数据格式:字符串) */ | ||
| 586 | - name: 'slave', | ||
| 587 | - form: this.props.form, | ||
| 588 | - formId: sModelsId, | ||
| 589 | - getSqlDropDownData: this.props.getSqlDropDownData, | ||
| 590 | - getSqlCondition: this.props.getSqlCondition, | ||
| 591 | - handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord, | ||
| 592 | - getFloatNum: this.props.getFloatNum, | ||
| 593 | - getDateFormat: this.props.getDateFormat, | ||
| 594 | - onChange: this.handleMasterChange, | ||
| 595 | - showConfig: item, | ||
| 596 | - formItemLayout: {}, | ||
| 597 | - textArea: false, | ||
| 598 | - enabled: true, | ||
| 599 | - dataValue: commonUtils.isNotEmptyObject(masterData) ? masterData[item.sName] : '', | ||
| 600 | - bTable: true, | ||
| 601 | - onFilterDropDownData: this.props.onFilterDropDownData, | ||
| 602 | - onSaveState: this.props.onSaveState, | ||
| 603 | - }; | ||
| 604 | - return ( | ||
| 605 | - <div> | ||
| 606 | - {/* eslint-disable-next-line react/no-array-index-key */} | ||
| 607 | - <div className={styles.filterItem} key={index}> | ||
| 608 | - <ShowType {...showTypeProps} /> | ||
| 609 | - </div> | ||
| 610 | - <WhiteSpace size="sm" /> | 589 | + {solutionData.map((item, index) => { |
| 590 | + const showTypeProps = { | ||
| 591 | + app, | ||
| 592 | + record: {}, | ||
| 593 | + sId: item.sId /* 修改当前编号(数据格式:字符串) */, | ||
| 594 | + name: "slave", | ||
| 595 | + form: this.props.form, | ||
| 596 | + formId: sModelsId, | ||
| 597 | + getSqlDropDownData: this.props.getSqlDropDownData, | ||
| 598 | + getSqlCondition: this.props.getSqlCondition, | ||
| 599 | + handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord, | ||
| 600 | + getFloatNum: this.props.getFloatNum, | ||
| 601 | + getDateFormat: this.props.getDateFormat, | ||
| 602 | + onChange: this.handleMasterChange, | ||
| 603 | + showConfig: item, | ||
| 604 | + formItemLayout: {}, | ||
| 605 | + textArea: false, | ||
| 606 | + enabled: true, | ||
| 607 | + dataValue: commonUtils.isNotEmptyObject(masterData) ? masterData[item.sName] : "", | ||
| 608 | + bTable: true, | ||
| 609 | + onFilterDropDownData: this.props.onFilterDropDownData, | ||
| 610 | + onSaveState: this.props.onSaveState, | ||
| 611 | + }; | ||
| 612 | + return ( | ||
| 613 | + <div> | ||
| 614 | + {/* eslint-disable-next-line react/no-array-index-key */} | ||
| 615 | + <div className={styles.filterItem} key={index}> | ||
| 616 | + <ShowType {...showTypeProps} /> | ||
| 611 | </div> | 617 | </div> |
| 612 | - ); | ||
| 613 | - }) | ||
| 614 | - } | 618 | + <WhiteSpace size="sm" /> |
| 619 | + </div> | ||
| 620 | + ); | ||
| 621 | + })} | ||
| 615 | <List.Item className={`${styles.filterList} ${styles.filterListBtn}`}> | 622 | <List.Item className={`${styles.filterList} ${styles.filterListBtn}`}> |
| 616 | <Flex> | 623 | <Flex> |
| 617 | - <Flex.Item> <Button style={{ background: '#f0f0f0', color: '#000' }} onClick={this.handleFilterSearchCancle}>清空条件</Button></Flex.Item> | ||
| 618 | - <Flex.Item> <Button type="primary" onClick={this.handleFilterSearch.bind(this, solutionData)}>确定</Button></Flex.Item> | 624 | + <Flex.Item> |
| 625 | + {" "} | ||
| 626 | + <Button style={{ background: "#f0f0f0", color: "#000" }} onClick={this.handleFilterSearchCancle}> | ||
| 627 | + {clearConditions} | ||
| 628 | + </Button> | ||
| 629 | + </Flex.Item> | ||
| 630 | + <Flex.Item> | ||
| 631 | + {" "} | ||
| 632 | + <Button type="primary" onClick={this.handleFilterSearch.bind(this, solutionData)}> | ||
| 633 | + {btnSure} | ||
| 634 | + </Button> | ||
| 635 | + </Flex.Item> | ||
| 619 | </Flex> | 636 | </Flex> |
| 620 | </List.Item> | 637 | </List.Item> |
| 621 | </List> | 638 | </List> |
src/mobile/common/CommobileSubBill.js
| @@ -1959,7 +1959,7 @@ class CommobileBill extends React.Component { | @@ -1959,7 +1959,7 @@ class CommobileBill extends React.Component { | ||
| 1959 | let sValue = record === undefined ? undefined : record[showConfig.sName]; | 1959 | let sValue = record === undefined ? undefined : record[showConfig.sName]; |
| 1960 | if (showConfig.sDropDownType === 'const') { | 1960 | if (showConfig.sDropDownType === 'const') { |
| 1961 | let showDropDown = []; | 1961 | let showDropDown = []; |
| 1962 | - if (typeof showConfig.showDropDown === 'object') { | 1962 | + if (typeof showConfig.showDropDown === "object") { |
| 1963 | // eslint-disable-next-line prefer-destructuring | 1963 | // eslint-disable-next-line prefer-destructuring |
| 1964 | showDropDown = showConfig.showDropDown; | 1964 | showDropDown = showConfig.showDropDown; |
| 1965 | } else { | 1965 | } else { |
| @@ -2016,10 +2016,12 @@ class CommobileBill extends React.Component { | @@ -2016,10 +2016,12 @@ class CommobileBill extends React.Component { | ||
| 2016 | */ | 2016 | */ |
| 2017 | tabShowInfo = (params) => { | 2017 | tabShowInfo = (params) => { |
| 2018 | const { slaveChildConfig, slave0Config, slaveConfig } = this.props; | 2018 | const { slaveChildConfig, slave0Config, slaveConfig } = this.props; |
| 2019 | + const detail = commonFunc.showLocalMessage(this.props, 'detail', '明细'); | ||
| 2020 | + const sum = commonFunc.showLocalMessage(this.props, 'sum', '汇总'); | ||
| 2019 | const { ModalListProps, otherProps, TabComponentSum, temp, tabPage } = params; | 2021 | const { ModalListProps, otherProps, TabComponentSum, temp, tabPage } = params; |
| 2020 | let tabs = [ | 2022 | let tabs = [ |
| 2021 | - { title: <Badge text="">明细</Badge> }, | ||
| 2022 | - { title: <Badge text="">汇总</Badge> }, | 2023 | + { title: <Badge text="">{detail}</Badge> }, |
| 2024 | + { title: <Badge text="">{sum}</Badge> }, | ||
| 2023 | ]; | 2025 | ]; |
| 2024 | 2026 | ||
| 2025 | let contentTab = <> | 2027 | let contentTab = <> |
src/mobile/common/MessageMobile.js
| @@ -9,6 +9,7 @@ import CommobileBase from '../../mobile/common/CommobileBase'; | @@ -9,6 +9,7 @@ import CommobileBase from '../../mobile/common/CommobileBase'; | ||
| 9 | import CommobileListEvent from './CommobileListEvent'; | 9 | import CommobileListEvent from './CommobileListEvent'; |
| 10 | import styles from '../../routes/mobile/IndexMobile.less'; | 10 | import styles from '../../routes/mobile/IndexMobile.less'; |
| 11 | import NewsMobile from './NewsMobile'; | 11 | import NewsMobile from './NewsMobile'; |
| 12 | +import * as commonFunc from "@/components/Common/commonFunc"; | ||
| 12 | // eslint-disable-next-line no-unused-vars | 13 | // eslint-disable-next-line no-unused-vars |
| 13 | // import ExamineMobile from './ExamineMobile'; | 14 | // import ExamineMobile from './ExamineMobile'; |
| 14 | // import CommobileBill from './CommobileBill'; | 15 | // import CommobileBill from './CommobileBill'; |
| @@ -18,12 +19,7 @@ const dataSource = new ListView.DataSource({ | @@ -18,12 +19,7 @@ const dataSource = new ListView.DataSource({ | ||
| 18 | rowHasChanged: (row1, row2) => row2, | 19 | rowHasChanged: (row1, row2) => row2, |
| 19 | }); | 20 | }); |
| 20 | // eslint-disable-next-line no-unused-vars | 21 | // eslint-disable-next-line no-unused-vars |
| 21 | -const tabs = [ | ||
| 22 | - { title: <Badge text="">消息</Badge> }, | ||
| 23 | - { title: <Badge text="">待处理</Badge> }, | ||
| 24 | - { title: <Badge text="">已处理</Badge> }, | ||
| 25 | - { title: <Badge text="">我的申请</Badge> }, | ||
| 26 | -]; | 22 | + |
| 27 | class MessageMobile extends React.Component { | 23 | class MessageMobile extends React.Component { |
| 28 | constructor(props) { | 24 | constructor(props) { |
| 29 | super(props); | 25 | super(props); |
| @@ -58,6 +54,17 @@ class MessageMobile extends React.Component { | @@ -58,6 +54,17 @@ class MessageMobile extends React.Component { | ||
| 58 | 54 | ||
| 59 | render() { | 55 | render() { |
| 60 | const { slaveConfig, slaveData: slaveDataOld } = this.props; | 56 | const { slaveConfig, slaveData: slaveDataOld } = this.props; |
| 57 | + const message = commonFunc.showLocalMessage(this.props, 'message', '汇总'); | ||
| 58 | + const pending = commonFunc.showLocalMessage(this.props, 'pending', '待处理'); | ||
| 59 | + const handled = commonFunc.showLocalMessage(this.props, 'handled', '已处理'); | ||
| 60 | + const application = commonFunc.showLocalMessage(this.props, "application", "我的申请"); | ||
| 61 | + | ||
| 62 | + const tabs = [ | ||
| 63 | + { title: <Badge text="">{message}</Badge> }, | ||
| 64 | + { title: <Badge text="">{pending}</Badge> }, | ||
| 65 | + { title: <Badge text="">{handled}</Badge> }, | ||
| 66 | + { title: <Badge text="">{application}</Badge> }, | ||
| 67 | + ]; | ||
| 61 | const { tabPage } = this.state; | 68 | const { tabPage } = this.state; |
| 62 | const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld; | 69 | const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld; |
| 63 | const slaveData = dataSource.cloneWithRows(slaveDataOld2); | 70 | const slaveData = dataSource.cloneWithRows(slaveDataOld2); |
src/mobile/common/MyselfMobile.js
| @@ -10,6 +10,7 @@ import setting from '../../assets/mobile/setting.png'; | @@ -10,6 +10,7 @@ import setting from '../../assets/mobile/setting.png'; | ||
| 10 | import mailList from '../../assets/mobile/mailList.png'; | 10 | import mailList from '../../assets/mobile/mailList.png'; |
| 11 | import recommendation from '../../assets/mobile/recommendation.png'; | 11 | import recommendation from '../../assets/mobile/recommendation.png'; |
| 12 | import CommobileListEvent from './CommobileListEvent'; | 12 | import CommobileListEvent from './CommobileListEvent'; |
| 13 | +import * as commonFunc from '../../components/Common/commonFunc'; | ||
| 13 | 14 | ||
| 14 | // eslint-disable-next-line prefer-destructuring | 15 | // eslint-disable-next-line prefer-destructuring |
| 15 | const Item = List.Item; | 16 | const Item = List.Item; |
| @@ -56,6 +57,14 @@ class myselfMobile extends React.Component { | @@ -56,6 +57,14 @@ class myselfMobile extends React.Component { | ||
| 56 | sDepartName = '暂无'; | 57 | sDepartName = '暂无'; |
| 57 | } | 58 | } |
| 58 | } | 59 | } |
| 60 | + const companyContactList = commonFunc.showLocalMessage(this.props, 'companyContactList', '企业通讯录'); | ||
| 61 | + const ModifyPassword = commonFunc.showLocalMessage(this.props, 'ModifyPassword', '修改密码'); | ||
| 62 | + const recommend = commonFunc.showLocalMessage(this.props, 'recommend', '推荐给好友'); | ||
| 63 | + const aboutSoftware = commonFunc.showLocalMessage(this.props, 'aboutSoftware', '关于软件'); | ||
| 64 | + const Logout = commonFunc.showLocalMessage(this.props, 'Logout', '退出登录'); | ||
| 65 | + | ||
| 66 | + | ||
| 67 | + | ||
| 59 | 68 | ||
| 60 | const sUserNameFirst = sUserName.charAt(0); | 69 | const sUserNameFirst = sUserName.charAt(0); |
| 61 | return ( | 70 | return ( |
| @@ -77,7 +86,7 @@ class myselfMobile extends React.Component { | @@ -77,7 +86,7 @@ class myselfMobile extends React.Component { | ||
| 77 | onClick={this.btnOnclick.bind(this, 'contacts')} | 86 | onClick={this.btnOnclick.bind(this, 'contacts')} |
| 78 | style={{ margin: '10px 0' }} | 87 | style={{ margin: '10px 0' }} |
| 79 | > | 88 | > |
| 80 | - 企业通讯录 | 89 | + {companyContactList} |
| 81 | </Item> | 90 | </Item> |
| 82 | <Item | 91 | <Item |
| 83 | thumb={setting} | 92 | thumb={setting} |
| @@ -85,7 +94,7 @@ class myselfMobile extends React.Component { | @@ -85,7 +94,7 @@ class myselfMobile extends React.Component { | ||
| 85 | arrow="horizontal" | 94 | arrow="horizontal" |
| 86 | style={{ margin: '10px 0' }} | 95 | style={{ margin: '10px 0' }} |
| 87 | > | 96 | > |
| 88 | - 修改密码 | 97 | + {ModifyPassword} |
| 89 | </Item> | 98 | </Item> |
| 90 | <Item | 99 | <Item |
| 91 | thumb={recommendation} | 100 | thumb={recommendation} |
| @@ -93,7 +102,7 @@ class myselfMobile extends React.Component { | @@ -93,7 +102,7 @@ class myselfMobile extends React.Component { | ||
| 93 | arrow="horizontal" | 102 | arrow="horizontal" |
| 94 | style={{ margin: '10px 0' }} | 103 | style={{ margin: '10px 0' }} |
| 95 | > | 104 | > |
| 96 | - 推荐给好友 | 105 | + {recommend} |
| 97 | </Item> | 106 | </Item> |
| 98 | <Item | 107 | <Item |
| 99 | thumb={setting} | 108 | thumb={setting} |
| @@ -101,14 +110,14 @@ class myselfMobile extends React.Component { | @@ -101,14 +110,14 @@ class myselfMobile extends React.Component { | ||
| 101 | arrow="horizontal" | 110 | arrow="horizontal" |
| 102 | style={{ margin: '10px 0' }} | 111 | style={{ margin: '10px 0' }} |
| 103 | > | 112 | > |
| 104 | - 关于软件 | 113 | + {aboutSoftware} |
| 105 | </Item> | 114 | </Item> |
| 106 | </List> | 115 | </List> |
| 107 | <Button | 116 | <Button |
| 108 | onClick={this.btnOnclick.bind(this, 'loginOut')} | 117 | onClick={this.btnOnclick.bind(this, 'loginOut')} |
| 109 | style={{ color: 'red', margin: '50px 0 10px 0' }} | 118 | style={{ color: 'red', margin: '50px 0 10px 0' }} |
| 110 | > | 119 | > |
| 111 | - 退出登录 | 120 | + {Logout} |
| 112 | </Button> | 121 | </Button> |
| 113 | </div> | 122 | </div> |
| 114 | ); | 123 | ); |
src/mobile/common/RevisePasswordMobile.js
| @@ -7,6 +7,7 @@ import 'antd-mobile-v2/dist/antd-mobile.css'; | @@ -7,6 +7,7 @@ import 'antd-mobile-v2/dist/antd-mobile.css'; | ||
| 7 | // import * as commonUtils from '../../utils/utils'; | 7 | // import * as commonUtils from '../../utils/utils'; |
| 8 | import CommobileBase from '../../mobile/common/CommobileBase'; | 8 | import CommobileBase from '../../mobile/common/CommobileBase'; |
| 9 | import CommobileListEvent from './CommobileListEvent'; | 9 | import CommobileListEvent from './CommobileListEvent'; |
| 10 | +import * as commonFunc from '../../components/Common/commonFunc'; | ||
| 10 | import styles from '../mobile.less'; | 11 | import styles from '../mobile.less'; |
| 11 | import config from '../../utils/config'; | 12 | import config from '../../utils/config'; |
| 12 | 13 | ||
| @@ -20,6 +21,7 @@ class RevisePasswordMobile extends React.Component { | @@ -20,6 +21,7 @@ class RevisePasswordMobile extends React.Component { | ||
| 20 | sOldPwd: '', | 21 | sOldPwd: '', |
| 21 | sUserPwd: '', | 22 | sUserPwd: '', |
| 22 | sUserPwdAgain: '', | 23 | sUserPwdAgain: '', |
| 24 | + app: props.app, | ||
| 23 | }; | 25 | }; |
| 24 | this.obj = {}; | 26 | this.obj = {}; |
| 25 | } | 27 | } |
| @@ -66,46 +68,56 @@ class RevisePasswordMobile extends React.Component { | @@ -66,46 +68,56 @@ class RevisePasswordMobile extends React.Component { | ||
| 66 | dispatch({ type: 'app/editPwd', payload: { url, value: values, editPwdType: 'mobile' } }); | 68 | dispatch({ type: 'app/editPwd', payload: { url, value: values, editPwdType: 'mobile' } }); |
| 67 | } | 69 | } |
| 68 | render() { | 70 | render() { |
| 71 | + const {app}= this.state; | ||
| 72 | + const ModifyPassword = commonFunc.showMessage(app.commonConst, 'ModifyPassword');/* 修改密码 */ | ||
| 73 | + const oldPassword = commonFunc.showMessage(app.commonConst, 'oldPassword');/* 原密码 */ | ||
| 74 | + | ||
| 75 | + const newPassword = commonFunc.showMessage(app.commonConst, 'newPassword');/* 新密码 */ | ||
| 76 | + const confirmNewPassword = commonFunc.showMessage(app.commonConst, 'confirmNewPassword');/* 确认新密码 */ | ||
| 77 | + const btnBack = commonFunc.showMessage(app.commonConst, 'btnBack');/* 返回 */ | ||
| 78 | + | ||
| 79 | + const btnSave = commonFunc.showMessage(app.commonConst, 'BtnSave');/* 确认 */ | ||
| 69 | return ( | 80 | return ( |
| 70 | <div> | 81 | <div> |
| 71 | <NavBar | 82 | <NavBar |
| 72 | mode="light" | 83 | mode="light" |
| 73 | - leftContent={[ | ||
| 74 | - <div style={{ width: '100%', textAlign: 'left', color: 'red' }}>返回</div>, | ||
| 75 | - ] | ||
| 76 | - } | 84 | + leftContent={[<div style={{ width: "100%", textAlign: "left", color: "red" }}>{btnBack}</div>]} |
| 77 | rightContent={[ | 85 | rightContent={[ |
| 78 | - <div onClick={this.handleSubmitPwd.bind(this)} style={{ width: '100%', textAlign: 'right', color: 'red' }}>保存</div>, | 86 | + <div onClick={this.handleSubmitPwd.bind(this)} style={{ width: "100%", textAlign: "right", color: "red" }}> |
| 87 | + {btnSave} | ||
| 88 | + </div>, | ||
| 79 | ]} | 89 | ]} |
| 80 | - onLeftClick={() => { window.history.back(-1); }} | 90 | + onLeftClick={() => { |
| 91 | + window.history.back(-1); | ||
| 92 | + }} | ||
| 81 | className={styles.iconColor} | 93 | className={styles.iconColor} |
| 82 | > | 94 | > |
| 83 | - 修改密码 | 95 | + {ModifyPassword} |
| 84 | </NavBar> | 96 | </NavBar> |
| 85 | <List className={styles.myselfList}> | 97 | <List className={styles.myselfList}> |
| 86 | - <div style={{ margin: '10px 0' }}> | 98 | + <div style={{ margin: "10px 0" }}> |
| 87 | <InputItem | 99 | <InputItem |
| 88 | - placeholder="原密码" | 100 | + placeholder={oldPassword} |
| 89 | type="password" | 101 | type="password" |
| 90 | clear | 102 | clear |
| 91 | - onChange={this.onChange.bind(this, 'sOldPwd')} | 103 | + onChange={this.onChange.bind(this, "sOldPwd")} |
| 92 | value={this.state.sOldPwd} | 104 | value={this.state.sOldPwd} |
| 93 | // ref={ el => this.inputRef = el} | 105 | // ref={ el => this.inputRef = el} |
| 94 | /> | 106 | /> |
| 95 | </div> | 107 | </div> |
| 96 | <InputItem | 108 | <InputItem |
| 97 | - placeholder="新密码" | 109 | + placeholder={newPassword} |
| 98 | type="password" | 110 | type="password" |
| 99 | - onChange={this.onChange.bind(this, 'sUserPwd')} | 111 | + onChange={this.onChange.bind(this, "sUserPwd")} |
| 100 | value={this.state.sUserPwd} | 112 | value={this.state.sUserPwd} |
| 101 | // ref={el => this.inputRef = el} | 113 | // ref={el => this.inputRef = el} |
| 102 | /> | 114 | /> |
| 103 | <InputItem | 115 | <InputItem |
| 104 | - placeholder="确认新密码" | 116 | + placeholder={confirmNewPassword} |
| 105 | type="password" | 117 | type="password" |
| 106 | error={this.state.hasError} | 118 | error={this.state.hasError} |
| 107 | onErrorClick={this.onErrorClick} | 119 | onErrorClick={this.onErrorClick} |
| 108 | - onChange={this.onChange.bind(this, 'sUserPwdAgain')} | 120 | + onChange={this.onChange.bind(this, "sUserPwdAgain")} |
| 109 | value={this.state.sUserPwdAgain} | 121 | value={this.state.sUserPwdAgain} |
| 110 | // ref={el => this.inputRef = el} | 122 | // ref={el => this.inputRef = el} |
| 111 | /> | 123 | /> |
src/mobile/common/SceneMobile.js
| @@ -10,6 +10,7 @@ import * as commonUtils from '../../utils/utils'; | @@ -10,6 +10,7 @@ import * as commonUtils from '../../utils/utils'; | ||
| 10 | import ShowType from './CommobileComponent'; | 10 | import ShowType from './CommobileComponent'; |
| 11 | import CommobileBase from './CommobileBase'; | 11 | import CommobileBase from './CommobileBase'; |
| 12 | import CommobileBillEvent from './CommobileBillEvent'; | 12 | import CommobileBillEvent from './CommobileBillEvent'; |
| 13 | +import * as commonFunc from "@/components/Common/commonFunc"; | ||
| 13 | 14 | ||
| 14 | class SceneMobile extends React.Component { | 15 | class SceneMobile extends React.Component { |
| 15 | constructor(props) { | 16 | constructor(props) { |
| @@ -224,12 +225,15 @@ class SceneMobile extends React.Component { | @@ -224,12 +225,15 @@ class SceneMobile extends React.Component { | ||
| 224 | onFilterDropDownData: this.props.onFilterDropDownData, | 225 | onFilterDropDownData: this.props.onFilterDropDownData, |
| 225 | onSaveState: this.props.onSaveState, | 226 | onSaveState: this.props.onSaveState, |
| 226 | }; | 227 | }; |
| 228 | + const btnBackEbc = commonFunc.showMessage(app.commonConst, 'btnBackEbc');/* 返回 */ | ||
| 229 | + | ||
| 230 | + | ||
| 227 | const iconSettingShow = true; | 231 | const iconSettingShow = true; |
| 228 | return iframeVisible ? ( | 232 | return iframeVisible ? ( |
| 229 | <div className={styles.iframe}> | 233 | <div className={styles.iframe}> |
| 230 | <iframe title="iframe" src={iframeUrl} frameBorder={0} /> | 234 | <iframe title="iframe" src={iframeUrl} frameBorder={0} /> |
| 231 | <div className={styles.iframeBakBtn}> | 235 | <div className={styles.iframeBakBtn}> |
| 232 | - <Button type="link" onClick={() => { this.handleChangeIframeVisible(false); }}>{'<- 返回EBC'}</Button> | 236 | + <Button type="link" onClick={() => { this.handleChangeIframeVisible(false); }}>{btnBackEbc}</Button> |
| 233 | </div> | 237 | </div> |
| 234 | </div> | 238 | </div> |
| 235 | ) : ( | 239 | ) : ( |
src/mobile/components/FileManageMobile.js
| @@ -9,6 +9,7 @@ import CommobileBase from '../common/CommobileBase'; | @@ -9,6 +9,7 @@ import CommobileBase from '../common/CommobileBase'; | ||
| 9 | import commonConfig from '../../utils/config'; | 9 | import commonConfig from '../../utils/config'; |
| 10 | import preView from '../components/preView'; | 10 | import preView from '../components/preView'; |
| 11 | import styles from './fileManage.less'; | 11 | import styles from './fileManage.less'; |
| 12 | +import * as commonFunc from "@/components/Common/commonFunc"; | ||
| 12 | 13 | ||
| 13 | class FileManageMobile extends React.Component { | 14 | class FileManageMobile extends React.Component { |
| 14 | constructor(props) { | 15 | constructor(props) { |
| @@ -230,6 +231,13 @@ class FileManageMobile extends React.Component { | @@ -230,6 +231,13 @@ class FileManageMobile extends React.Component { | ||
| 230 | const { files } = this.state; | 231 | const { files } = this.state; |
| 231 | const dWidth = document.documentElement.clientWidth || document.body.clientWidth; /* 获取手机视窗宽度 */ | 232 | const dWidth = document.documentElement.clientWidth || document.body.clientWidth; /* 获取手机视窗宽度 */ |
| 232 | const dHeight = document.documentElement.clientHeight || document.body.clientHeight; /* 获取手机视窗宽度 */ | 233 | const dHeight = document.documentElement.clientHeight || document.body.clientHeight; /* 获取手机视窗宽度 */ |
| 234 | + | ||
| 235 | + const btnCamera = commonFunc.showLocalMessage(this.props, 'btnCamera', '拍照'); | ||
| 236 | + | ||
| 237 | + const album = commonFunc.showLocalMessage(this.props, 'Album', '相册'); | ||
| 238 | + | ||
| 239 | + const btnCancel = commonFunc.showLocalMessage(this.props, 'btnCancel', '取消'); | ||
| 240 | + | ||
| 233 | /* 上传照片样式定位 */ | 241 | /* 上传照片样式定位 */ |
| 234 | let imgDivTop = '500'; | 242 | let imgDivTop = '500'; |
| 235 | const mobileBarStyle = document.getElementsByClassName('am-list-view-scrollview-content'); | 243 | const mobileBarStyle = document.getElementsByClassName('am-list-view-scrollview-content'); |
| @@ -278,9 +286,9 @@ class FileManageMobile extends React.Component { | @@ -278,9 +286,9 @@ class FileManageMobile extends React.Component { | ||
| 278 | // disabled={!enabled} | 286 | // disabled={!enabled} |
| 279 | onClick={() => | 287 | onClick={() => |
| 280 | Modal.alert('', <div />, [ | 288 | Modal.alert('', <div />, [ |
| 281 | - { text: '拍照', onPress: () => this.handleClick('BtnCamera') }, | ||
| 282 | - { text: '相册', onPress: () => this.handleClick('BtnPhoto') }, | ||
| 283 | - { text: '取消', onPress: () => this.handleClick.bind(this, 'BtnCancel') }, | 289 | + { text: btnCamera, onPress: () => this.handleClick('BtnCamera') }, |
| 290 | + { text: album, onPress: () => this.handleClick('BtnPhoto') }, | ||
| 291 | + { text: btnCancel, onPress: () => this.handleClick.bind(this, 'BtnCancel') }, | ||
| 284 | ]) | 292 | ]) |
| 285 | } | 293 | } |
| 286 | >{btnUpdConfig.showName} | 294 | >{btnUpdConfig.showName} |
src/mobile/login/LoginMobile.js
| @@ -45,6 +45,7 @@ class LoginMobile extends React.Component { | @@ -45,6 +45,7 @@ class LoginMobile extends React.Component { | ||
| 45 | const map = { ...item }; | 45 | const map = { ...item }; |
| 46 | map.label = item.sName; | 46 | map.label = item.sName; |
| 47 | map.value = item.sId; | 47 | map.value = item.sId; |
| 48 | + map.sLanguage = item.sLanguage; | ||
| 48 | companysLabel.push(map); | 49 | companysLabel.push(map); |
| 49 | }); | 50 | }); |
| 50 | } | 51 | } |
| @@ -56,34 +57,72 @@ class LoginMobile extends React.Component { | @@ -56,34 +57,72 @@ class LoginMobile extends React.Component { | ||
| 56 | } | 57 | } |
| 57 | componentDidMount() { | 58 | componentDidMount() { |
| 58 | if (localStorage.getItem(`${commonConfig.prefix}privacyPolicy`) !== 'agree') { | 59 | if (localStorage.getItem(`${commonConfig.prefix}privacyPolicy`) !== 'agree') { |
| 59 | - alert( | ||
| 60 | - '用户协议与隐私政策', | ||
| 61 | - <p>感谢您选择小羚羊EBC!<br /> | ||
| 62 | - 我们非常重视您的个人信息和隐私保护。为了更好地保障您的个人权益,在您使用我们的产品前,请务必审慎阅读 | ||
| 63 | - <a href="serviceAgreement.html">《小羚羊EBC服务协议》</a>与 | ||
| 64 | - <a href="privacyPolicy.html">《小羚羊EBC隐私政策》</a>内的所有条款,尤其是:<br /> | ||
| 65 | - 1.我们对您的个人信息的收集/保存/使用/对外提供/保护等规则条款,以及您的用户权利等条款;<br /> | ||
| 66 | - 2.约定我们的限制责任、免责条款。<br /> | ||
| 67 | - 3.其他以颜色或加粗进行标识的重要条款。<br /> | ||
| 68 | - 如您对以上协议有任何疑问,可通过人工客服或发邮件至yanghl@xlyerp.com与我们联系。您点击“同意并继续”的行为即表示您已阅读完毕并同意以上协议的全部内容。 | ||
| 69 | - </p>, [ | ||
| 70 | - { | ||
| 71 | - text: '不同意', | ||
| 72 | - onPress: () => { | ||
| 73 | - const { plus } = window; | ||
| 74 | - if (plus) { | ||
| 75 | - plus.runtime.quit(); | ||
| 76 | - } | 60 | + const sLanguage = commonUtils.isNotEmptyArr(this.state.companys) ? this.state.companys[0].sLanguage : 'sChinese'; |
| 61 | + if (sLanguage == "sEnglish") { | ||
| 62 | + alert( | ||
| 63 | + "User Agreement", | ||
| 64 | + <p> | ||
| 65 | + Thank you for choosing Xiaolingyang EBC! <br /> | ||
| 66 | + We attach great importance to the protection of your personal information and privacy. To better safeguard your personal rights and | ||
| 67 | + interests, please carefully read all the terms in the | ||
| 68 | + <a href="serviceAgreement.html">Xiaolingyang EBC Service Agreement</a> and{" "} | ||
| 69 | + <a href="privacyPolicy.html">Xiaolingyang EBC Privacy Policy</a> before using our products, especially the following: Clauses regarding | ||
| 70 | + the rules for the collection, storage, use, external provision, and protection of your personal information, as well as clauses related to | ||
| 71 | + your user rights; Clauses stipulating our limited liability and exemption from liability; Other important clauses marked with colors or | ||
| 72 | + bold formatting. If you have any questions about the above agreements, you can contact us through customer service or by sending an email | ||
| 73 | + to yanghl@xlyerp.com. By clicking "Agree and Continue", you confirm that you have read and agreed to all the contents of the above | ||
| 74 | + agreements. | ||
| 75 | + </p>, | ||
| 76 | + [ | ||
| 77 | + { | ||
| 78 | + text: "Disagree", | ||
| 79 | + onPress: () => { | ||
| 80 | + const { plus } = window; | ||
| 81 | + if (plus) { | ||
| 82 | + plus.runtime.quit(); | ||
| 83 | + } | ||
| 84 | + }, | ||
| 77 | }, | 85 | }, |
| 78 | - }, | ||
| 79 | - { | ||
| 80 | - text: '同意并继续', | ||
| 81 | - onPress: () => { | ||
| 82 | - localStorage.setItem(`${commonConfig.prefix}privacyPolicy`, 'agree'); | 86 | + { |
| 87 | + text: "Agree and Continue", | ||
| 88 | + onPress: () => { | ||
| 89 | + localStorage.setItem(`${commonConfig.prefix}privacyPolicy`, "agree"); | ||
| 90 | + }, | ||
| 83 | }, | 91 | }, |
| 84 | - }, | ||
| 85 | - ], | ||
| 86 | - ); | 92 | + ] |
| 93 | + ); | ||
| 94 | + }else { | ||
| 95 | + | ||
| 96 | + | ||
| 97 | + alert( | ||
| 98 | + '用户协议与隐私政策', | ||
| 99 | + <p>感谢您选择小羚羊EBC!<br /> | ||
| 100 | + 我们非常重视您的个人信息和隐私保护。为了更好地保障您的个人权益,在您使用我们的产品前,请务必审慎阅读 | ||
| 101 | + <a href="serviceAgreement.html">《小羚羊EBC服务协议》</a>与 | ||
| 102 | + <a href="privacyPolicy.html">《小羚羊EBC隐私政策》</a>内的所有条款,尤其是:<br /> | ||
| 103 | + 1.我们对您的个人信息的收集/保存/使用/对外提供/保护等规则条款,以及您的用户权利等条款;<br /> | ||
| 104 | + 2.约定我们的限制责任、免责条款。<br /> | ||
| 105 | + 3.其他以颜色或加粗进行标识的重要条款。<br /> | ||
| 106 | + 如您对以上协议有任何疑问,可通过人工客服或发邮件至yanghl@xlyerp.com与我们联系。您点击“同意并继续”的行为即表示您已阅读完毕并同意以上协议的全部内容。 | ||
| 107 | + </p>, [ | ||
| 108 | + { | ||
| 109 | + text: '不同意', | ||
| 110 | + onPress: () => { | ||
| 111 | + const { plus } = window; | ||
| 112 | + if (plus) { | ||
| 113 | + plus.runtime.quit(); | ||
| 114 | + } | ||
| 115 | + }, | ||
| 116 | + }, | ||
| 117 | + { | ||
| 118 | + text: '同意并继续', | ||
| 119 | + onPress: () => { | ||
| 120 | + localStorage.setItem(`${commonConfig.prefix}privacyPolicy`, 'agree'); | ||
| 121 | + }, | ||
| 122 | + }, | ||
| 123 | + ], | ||
| 124 | + ); | ||
| 125 | + } | ||
| 87 | } | 126 | } |
| 88 | } | 127 | } |
| 89 | 128 | ||
| @@ -147,8 +186,7 @@ class LoginMobile extends React.Component { | @@ -147,8 +186,7 @@ class LoginMobile extends React.Component { | ||
| 147 | type: 'loginMobile/login', | 186 | type: 'loginMobile/login', |
| 148 | payload: { ...param, dispatch }, | 187 | payload: { ...param, dispatch }, |
| 149 | }); | 188 | }); |
| 150 | - console.log('登录成功',param,dispatch); | ||
| 151 | - | 189 | + |
| 152 | } else { | 190 | } else { |
| 153 | Toast.fail(dataReturn.msg); | 191 | Toast.fail(dataReturn.msg); |
| 154 | } | 192 | } |
| @@ -156,66 +194,84 @@ class LoginMobile extends React.Component { | @@ -156,66 +194,84 @@ class LoginMobile extends React.Component { | ||
| 156 | } | 194 | } |
| 157 | 195 | ||
| 158 | render() { | 196 | render() { |
| 159 | - const { loginCompany } = this.state; | 197 | + const { loginCompany, companys } = this.state; |
| 198 | + console.log('2loginCompany22', loginCompany, companys); | ||
| 160 | const { getFieldProps } = this.props.form; | 199 | const { getFieldProps } = this.props.form; |
| 200 | + let sLanguage = commonUtils.isNotEmptyArr(companys) ? companys[0].sLanguage : 'sChinese'; | ||
| 201 | + const settingTitle = sLanguage === 'sEnglish' ? 'server settings' :'服务器设置'; | ||
| 202 | + const loginTitle = sLanguage === 'sEnglish' ? 'Login' :'登录'; | ||
| 203 | + const pleaseInputUser = sLanguage === 'sEnglish' ? 'please Input User' :'请输入用户'; | ||
| 204 | + const pleaseInputPassword = sLanguage === 'sEnglish' ? 'please Input Password' :'请输入密码'; | ||
| 205 | + | ||
| 161 | return ( | 206 | return ( |
| 162 | <div className={styles.wraper}> | 207 | <div className={styles.wraper}> |
| 163 | <div className={styles.logo}> | 208 | <div className={styles.logo}> |
| 164 | <img src={LoginIcon} alt="login" /> | 209 | <img src={LoginIcon} alt="login" /> |
| 165 | </div> | 210 | </div> |
| 166 | - <div className={styles.login} > | 211 | + <div className={styles.login}> |
| 167 | <WhiteSpace size="xs" /> | 212 | <WhiteSpace size="xs" /> |
| 168 | <InputItem | 213 | <InputItem |
| 169 | - {...getFieldProps('username')} | ||
| 170 | - placeholder="请输入用户名" | 214 | + {...getFieldProps("username")} |
| 215 | + placeholder={pleaseInputUser} | ||
| 171 | value={this.state.username} | 216 | value={this.state.username} |
| 172 | - onChange={this.onChange.bind(this, 'username')} | ||
| 173 | - style={{ backgroundColor: '#fff' }} | 217 | + onChange={this.onChange.bind(this, "username")} |
| 218 | + style={{ backgroundColor: "#fff" }} | ||
| 174 | > | 219 | > |
| 175 | - <div style={{ | ||
| 176 | - backgroundImage: `url(${LoginUser})`, backgroundSize: 'cover', height: '22px', width: '22px', | ||
| 177 | - }} | 220 | + <div |
| 221 | + style={{ | ||
| 222 | + backgroundImage: `url(${LoginUser})`, | ||
| 223 | + backgroundSize: "cover", | ||
| 224 | + height: "22px", | ||
| 225 | + width: "22px", | ||
| 226 | + }} | ||
| 178 | /> | 227 | /> |
| 179 | </InputItem> | 228 | </InputItem> |
| 180 | <WhiteSpace size="xs" /> | 229 | <WhiteSpace size="xs" /> |
| 181 | <InputItem | 230 | <InputItem |
| 182 | - {...getFieldProps('userpwd')} | 231 | + {...getFieldProps("userpwd")} |
| 183 | type="password" | 232 | type="password" |
| 184 | - placeholder="请输入密码" | 233 | + placeholder={pleaseInputPassword} |
| 185 | value={this.state.userpwd} | 234 | value={this.state.userpwd} |
| 186 | - onChange={this.onChange.bind(this, 'userpwd')} | 235 | + onChange={this.onChange.bind(this, "userpwd")} |
| 187 | > | 236 | > |
| 188 | - <div style={{ | ||
| 189 | - backgroundImage: `url(${LoginPassword})`, backgroundSize: 'cover', height: '22px', width: '22px', | ||
| 190 | - }} | 237 | + <div |
| 238 | + style={{ | ||
| 239 | + backgroundImage: `url(${LoginPassword})`, | ||
| 240 | + backgroundSize: "cover", | ||
| 241 | + height: "22px", | ||
| 242 | + width: "22px", | ||
| 243 | + }} | ||
| 191 | /> | 244 | /> |
| 192 | </InputItem> | 245 | </InputItem> |
| 193 | <div className="chooseCompany"> | 246 | <div className="chooseCompany"> |
| 194 | - <Picker | ||
| 195 | - data={this.state.companys} | ||
| 196 | - cols={1} | ||
| 197 | - value={loginCompany} | ||
| 198 | - onChange={this.handleCompanyChange} | ||
| 199 | - onOk={this.handleChoodeCompanyOk} | ||
| 200 | - > | 247 | + <Picker data={this.state.companys} cols={1} value={loginCompany} onChange={this.handleCompanyChange} onOk={this.handleChoodeCompanyOk}> |
| 201 | <List.Item arrow="horizontal"> | 248 | <List.Item arrow="horizontal"> |
| 202 | - <div style={{ | ||
| 203 | - backgroundImage: `url(${loginCompanyPic})`, backgroundSize: 'cover', height: '22px', width: '22px', | ||
| 204 | - }} | 249 | + <div |
| 250 | + style={{ | ||
| 251 | + backgroundImage: `url(${loginCompanyPic})`, | ||
| 252 | + backgroundSize: "cover", | ||
| 253 | + height: "22px", | ||
| 254 | + width: "22px", | ||
| 255 | + }} | ||
| 205 | /> | 256 | /> |
| 206 | </List.Item> | 257 | </List.Item> |
| 207 | </Picker> | 258 | </Picker> |
| 208 | </div> | 259 | </div> |
| 209 | <WhiteSpace size="lg" /> | 260 | <WhiteSpace size="lg" /> |
| 210 | <WhiteSpace size="lg" /> | 261 | <WhiteSpace size="lg" /> |
| 211 | - <div className={styles.loginSubmit}><Button type="primary" onClick={this.handleLogin.bind(this)} style={{ backgroundColor: '#5e81e5' }}>登录</Button></div> | 262 | + <div className={styles.loginSubmit}> |
| 263 | + <Button type="primary" onClick={this.handleLogin.bind(this)} style={{ backgroundColor: "#5e81e5" }}> | ||
| 264 | + {loginTitle} | ||
| 265 | + </Button> | ||
| 266 | + </div> | ||
| 212 | {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} | 267 | {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} |
| 213 | <a | 268 | <a |
| 214 | className={styles.setting} | 269 | className={styles.setting} |
| 215 | onClick={() => { | 270 | onClick={() => { |
| 216 | AppUtil.openSettingPage(); | 271 | AppUtil.openSettingPage(); |
| 217 | }} | 272 | }} |
| 218 | - >服务器设置 | 273 | + > |
| 274 | + {settingTitle} | ||
| 219 | </a> | 275 | </a> |
| 220 | </div> | 276 | </div> |
| 221 | </div> | 277 | </div> |
src/routes/mobile/IndexMobile.js
| @@ -31,7 +31,8 @@ import Icon51 from "../../assets/mobile/51.png"; | @@ -31,7 +31,8 @@ import Icon51 from "../../assets/mobile/51.png"; | ||
| 31 | import Icon6 from "../../assets/mobile/6.png"; | 31 | import Icon6 from "../../assets/mobile/6.png"; |
| 32 | import Icon61 from "../../assets/mobile/61.png"; | 32 | import Icon61 from "../../assets/mobile/61.png"; |
| 33 | import Quotation from "./quotation/index"; | 33 | import Quotation from "./quotation/index"; |
| 34 | -import QuotationDetail from "./quotation/detail"; | 34 | +import QuotationDetail from "./quotation/detail"; |
| 35 | +import * as commonFunc from '../../components/Common/commonFunc'; | ||
| 35 | // import AppUtil from '../../utils/AppUtil'; | 36 | // import AppUtil from '../../utils/AppUtil'; |
| 36 | import * as commonBusiness from "../../components/Common/commonBusiness"; | 37 | import * as commonBusiness from "../../components/Common/commonBusiness"; |
| 37 | 38 | ||
| @@ -69,13 +70,20 @@ class IndexMobile extends React.Component { | @@ -69,13 +70,20 @@ class IndexMobile extends React.Component { | ||
| 69 | componentDidUpdate(prevProps) { | 70 | componentDidUpdate(prevProps) { |
| 70 | /* eslint-disable */ | 71 | /* eslint-disable */ |
| 71 | if (this.props.location && prevProps?.location.state !== this.props.location.state) { | 72 | if (this.props.location && prevProps?.location.state !== this.props.location.state) { |
| 73 | + const message = commonFunc.showLocalMessage(this.props, 'message', '消息'); | ||
| 74 | + const scene = commonFunc.showLocalMessage(this.props, 'Scene', '现场'); | ||
| 75 | + const workbench = commonFunc.showLocalMessage(this.props, 'workbench', '工作台'); | ||
| 76 | + const device = commonFunc.showLocalMessage(this.props, 'device', '设备'); | ||
| 77 | + const quotation = commonFunc.showLocalMessage(this.props, 'quotation', '报价下单'); | ||
| 78 | + const mine = commonFunc.showLocalMessage(this.props, 'mine', '我的'); | ||
| 79 | + scene | ||
| 72 | const originTitle = { | 80 | const originTitle = { |
| 73 | - message: "消息", | ||
| 74 | - scene: "现场", | ||
| 75 | - workbench: "工作台", | ||
| 76 | - device: "设备", | ||
| 77 | - quotation: "报价下单", | ||
| 78 | - myself: "我的", | 81 | + message: message , |
| 82 | + scene: scene, | ||
| 83 | + workbench: workbench, | ||
| 84 | + device: device, | ||
| 85 | + quotation: quotation, | ||
| 86 | + myself: mine, | ||
| 79 | }[this.state.selectedTab]; | 87 | }[this.state.selectedTab]; |
| 80 | 88 | ||
| 81 | try { | 89 | try { |
| @@ -97,6 +105,9 @@ class IndexMobile extends React.Component { | @@ -97,6 +105,9 @@ class IndexMobile extends React.Component { | ||
| 97 | handleTouchEnd = e => { | 105 | handleTouchEnd = e => { |
| 98 | const touchEndtPageX = e.changedTouches[0].pageX; | 106 | const touchEndtPageX = e.changedTouches[0].pageX; |
| 99 | const touchEndtPageY = e.changedTouches[0].pageY; | 107 | const touchEndtPageY = e.changedTouches[0].pageY; |
| 108 | + const bExist = commonFunc.showLocalMessage(this.props, 'bExist', '确定退出吗'); | ||
| 109 | + const BtnSure = commonFunc.showLocalMessage(this.props, 'BtnSure', '确定'); | ||
| 110 | + const BtnCancel = commonFunc.showLocalMessage(this.props, 'BtnCancel', '取消'); | ||
| 100 | const touchDireactionX = touchEndtPageX - this.state.touchStartPageX; // 滑动横向坐标 | 111 | const touchDireactionX = touchEndtPageX - this.state.touchStartPageX; // 滑动横向坐标 |
| 101 | const touchDireactionY = touchEndtPageY - this.state.touchStartPageY; // 滑动横向坐标 | 112 | const touchDireactionY = touchEndtPageY - this.state.touchStartPageY; // 滑动横向坐标 |
| 102 | if (touchDireactionX > 100 && touchDireactionY > -80) { | 113 | if (touchDireactionX > 100 && touchDireactionY > -80) { |
| @@ -215,7 +226,7 @@ class IndexMobile extends React.Component { | @@ -215,7 +226,7 @@ class IndexMobile extends React.Component { | ||
| 215 | } else if (pageText === "quotation") { | 226 | } else if (pageText === "quotation") { |
| 216 | if (location.pathname === "/indexMobile/quotationDetail") { | 227 | if (location.pathname === "/indexMobile/quotationDetail") { |
| 217 | return ( | 228 | return ( |
| 218 | - | 229 | + |
| 219 | <QuotationDetail {...this.props} sModelType={pageText} sModelsId="101251240115016076506222050" /> | 230 | <QuotationDetail {...this.props} sModelType={pageText} sModelsId="101251240115016076506222050" /> |
| 220 | ) | 231 | ) |
| 221 | } else { | 232 | } else { |
| @@ -234,6 +245,12 @@ class IndexMobile extends React.Component { | @@ -234,6 +245,12 @@ class IndexMobile extends React.Component { | ||
| 234 | const navbarIconShow = !["/indexMobile/commobileBill"].includes(location.pathname); | 245 | const navbarIconShow = !["/indexMobile/commobileBill"].includes(location.pathname); |
| 235 | const msg = this.props.app.unRead; | 246 | const msg = this.props.app.unRead; |
| 236 | const msgObj = commonUtils.isJSON(msg) ? JSON.parse(msg) : {}; | 247 | const msgObj = commonUtils.isJSON(msg) ? JSON.parse(msg) : {}; |
| 248 | + const message = commonFunc.showLocalMessage(this.props, 'message', '消息'); | ||
| 249 | + const scene = commonFunc.showLocalMessage(this.props, 'Scene', '现场'); | ||
| 250 | + const workbench = commonFunc.showLocalMessage(this.props, 'workbench', '工作台'); | ||
| 251 | + const device = commonFunc.showLocalMessage(this.props, 'device', '设备'); | ||
| 252 | + const quotation = commonFunc.showLocalMessage(this.props, 'quotation', '报价下单'); | ||
| 253 | + const mine = commonFunc.showLocalMessage(this.props, 'mine', '我的'); | ||
| 237 | return ( | 254 | return ( |
| 238 | <div id="tab-bar" className={styles.demo}> | 255 | <div id="tab-bar" className={styles.demo}> |
| 239 | <div className="demoName"> | 256 | <div className="demoName"> |
| @@ -280,7 +297,7 @@ class IndexMobile extends React.Component { | @@ -280,7 +297,7 @@ class IndexMobile extends React.Component { | ||
| 280 | style={{ display: location.pathname === "/indexMobile" ? "block" : "none" }} | 297 | style={{ display: location.pathname === "/indexMobile" ? "block" : "none" }} |
| 281 | > | 298 | > |
| 282 | <TabBar.Item | 299 | <TabBar.Item |
| 283 | - title="消息" | 300 | + title={message} |
| 284 | key="message" | 301 | key="message" |
| 285 | icon={ | 302 | icon={ |
| 286 | <div | 303 | <div |
| @@ -308,7 +325,7 @@ class IndexMobile extends React.Component { | @@ -308,7 +325,7 @@ class IndexMobile extends React.Component { | ||
| 308 | commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 }); | 325 | commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 }); |
| 309 | this.setState({ | 326 | this.setState({ |
| 310 | selectedTab: "message", | 327 | selectedTab: "message", |
| 311 | - title: "消息", | 328 | + title: message, |
| 312 | }); | 329 | }); |
| 313 | history.push("/indexMobile"); | 330 | history.push("/indexMobile"); |
| 314 | }} | 331 | }} |
| @@ -335,7 +352,7 @@ class IndexMobile extends React.Component { | @@ -335,7 +352,7 @@ class IndexMobile extends React.Component { | ||
| 335 | }} | 352 | }} |
| 336 | /> | 353 | /> |
| 337 | } | 354 | } |
| 338 | - title="现场" | 355 | + title={scene} |
| 339 | key="scene" | 356 | key="scene" |
| 340 | // badge="new" | 357 | // badge="new" |
| 341 | selected={this.state.selectedTab === "scene"} | 358 | selected={this.state.selectedTab === "scene"} |
| @@ -345,7 +362,7 @@ class IndexMobile extends React.Component { | @@ -345,7 +362,7 @@ class IndexMobile extends React.Component { | ||
| 345 | commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 }); | 362 | commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 }); |
| 346 | this.setState({ | 363 | this.setState({ |
| 347 | selectedTab: "scene", | 364 | selectedTab: "scene", |
| 348 | - title: "现场", | 365 | + title:scene, |
| 349 | }); | 366 | }); |
| 350 | history.push("/indexMobile"); | 367 | history.push("/indexMobile"); |
| 351 | }} | 368 | }} |
| @@ -372,7 +389,7 @@ class IndexMobile extends React.Component { | @@ -372,7 +389,7 @@ class IndexMobile extends React.Component { | ||
| 372 | }} | 389 | }} |
| 373 | /> | 390 | /> |
| 374 | } | 391 | } |
| 375 | - title="工作台" | 392 | + title={workbench} |
| 376 | key="workbench" | 393 | key="workbench" |
| 377 | // badge="2" | 394 | // badge="2" |
| 378 | selected={this.state.selectedTab === "workbench"} | 395 | selected={this.state.selectedTab === "workbench"} |
| @@ -382,7 +399,7 @@ class IndexMobile extends React.Component { | @@ -382,7 +399,7 @@ class IndexMobile extends React.Component { | ||
| 382 | commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 }); | 399 | commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 }); |
| 383 | this.setState({ | 400 | this.setState({ |
| 384 | selectedTab: "workbench", | 401 | selectedTab: "workbench", |
| 385 | - title: "工作台", | 402 | + title: workbench, |
| 386 | }); | 403 | }); |
| 387 | history.push("/indexMobile"); | 404 | history.push("/indexMobile"); |
| 388 | }} | 405 | }} |
| @@ -408,7 +425,7 @@ class IndexMobile extends React.Component { | @@ -408,7 +425,7 @@ class IndexMobile extends React.Component { | ||
| 408 | }} | 425 | }} |
| 409 | /> | 426 | /> |
| 410 | } | 427 | } |
| 411 | - title="报价" | 428 | + title={quotation} |
| 412 | key="quotation" | 429 | key="quotation" |
| 413 | // badge="2" | 430 | // badge="2" |
| 414 | selected={this.state.selectedTab === "quotation"} | 431 | selected={this.state.selectedTab === "quotation"} |
| @@ -418,7 +435,7 @@ class IndexMobile extends React.Component { | @@ -418,7 +435,7 @@ class IndexMobile extends React.Component { | ||
| 418 | commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 }); | 435 | commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 }); |
| 419 | this.setState({ | 436 | this.setState({ |
| 420 | selectedTab: "quotation", | 437 | selectedTab: "quotation", |
| 421 | - title: "报价下单", | 438 | + title: quotation, |
| 422 | }); | 439 | }); |
| 423 | history.push("/indexMobile"); | 440 | history.push("/indexMobile"); |
| 424 | }} | 441 | }} |
| @@ -444,7 +461,7 @@ class IndexMobile extends React.Component { | @@ -444,7 +461,7 @@ class IndexMobile extends React.Component { | ||
| 444 | }} | 461 | }} |
| 445 | /> | 462 | /> |
| 446 | } | 463 | } |
| 447 | - title="我的" | 464 | + title={mine} |
| 448 | key="contacts" | 465 | key="contacts" |
| 449 | // badge="4" | 466 | // badge="4" |
| 450 | selected={this.state.selectedTab === "myself"} | 467 | selected={this.state.selectedTab === "myself"} |
| @@ -454,7 +471,7 @@ class IndexMobile extends React.Component { | @@ -454,7 +471,7 @@ class IndexMobile extends React.Component { | ||
| 454 | commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 }); | 471 | commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 }); |
| 455 | this.setState({ | 472 | this.setState({ |
| 456 | selectedTab: "myself", | 473 | selectedTab: "myself", |
| 457 | - title: "我的", | 474 | + title: mine, |
| 458 | }); | 475 | }); |
| 459 | history.push("/indexMobile"); | 476 | history.push("/indexMobile"); |
| 460 | }} | 477 | }} |