weaver_trunk_cli/pc4mobx/hrm/components/add/full.js

333 lines
16 KiB
JavaScript
Raw Normal View History

2023-09-22 14:01:42 +08:00
import React from 'react';
import { inject, observer } from 'mobx-react';
import { Button, Steps, Spin, Tabs, Modal, message, Icon } from 'antd';
const confirm = Modal.confirm;
const TabPane = Tabs.TabPane;
const Step = Steps.Step;
import { WeaDialog, WeaSearchGroup, WeaTools, WeaTableEdit, WeaNewScroll, WeaFormItem, WeaAlertPage, WeaTab } from 'ecCom';
import { WeaSwitch } from 'comsMobx'
import UploadAvatar from '../../../../pc4public/hrm/uploadAvatar'
import InputBtn from '../../coms/inputBtn'
import CustComp from './CustComp';
import forEach from 'lodash/forEach'
import isEmpty from 'lodash/isEmpty'
const getKey = WeaTools.getKey;
import * as mobx from 'mobx';
const toJS = mobx.toJS;
import { i18n } from '../../public/i18n';
import {addContentPath} from '../../util/index.js'
import { AttachToNumberField } from '../../../../pc4backstage/hrmengine/util/index.js'
const verificationCode = '/weaver/weaver.file.MakeValidateCode?isView=1&validatetype=0&validatenum=4&seriesnum_=';
@inject('hrmAdd')
@observer
class Full extends React.Component {
constructor(props) {
super(props);
this.state = {
time: new Date().getTime()
}
}
componentWillReceiveProps (nextProps) {
const { hrmAdd } = this.props;
if ('visible' in this.props && this.props.visible !== nextProps.visible) {
if (nextProps.visible) {
hrmAdd.current = 0;
hrmAdd.canSave = true;
hrmAdd.getHrmResourceAddForm();
}
}
}
componentDidMount () {
const dom = $('<Object id="htactx" name="htactx" classid="clsid:FB4EE423-43A4-4AA9-BDE9-4335A6D3C74E" codebase="HTActX.cab#version=1,0,0,1" style="HEIGHT: 0px; WIDTH: 0px"></Object>');
$(document.body).append(dom);
// const {hrmAdd} = this.props;
// const {current} = hrmAdd;
// hrmAdd.current = 1;
}
pre = () => {
const { hrmAdd } = this.props;
const { current } = hrmAdd;
this.refs.scrollBar.scrollerToTop();
hrmAdd.current = current - 1;
}
next = () => {
const { hrmAdd } = this.props;
const { current } = hrmAdd;
hrmAdd.myvalidate(() => {
this.refs.scrollBar.scrollerToTop();
hrmAdd.current = current + 1;
})
}
save = () => {
const { hrmAdd } = this.props;
hrmAdd.saveFull(this.refreshVerificationCode);
}
onTabChange = (key) => {
const { hrmAdd } = this.props;
hrmAdd.onTabChange(key);
}
tableEditChange = (data) => {
const { hrmAdd } = this.props;
hrmAdd.tableEditChange(data);
}
more = () => {
}
openSimplemode = () => {
const { hrmAdd } = this.props;
const { openSimplemode } = hrmAdd;
openSimplemode()
}
getBtns = () => {
const { hrmAdd } = this.props;
const { current, canSave } = hrmAdd;
let btns = [];
const leftbutton = <div className="ext-link" style={{ float: 'left', cursor: 'pointer' }} onClick={this.openSimplemode}>{i18n.button.simpleModle()}<Icon ecId={`${this && this.props && this.props.ecId || ''}_Icon@u1u3nk@0`} type="double-right" />
</div>
const pre = <Button ecId={`${this && this.props && this.props.ecId || ''}_Button@x69uwc`} type="primary" disabled={!canSave} onClick={this.pre} >{i18n.button.lastStep()}</Button>;
const next = <Button ecId={`${this && this.props && this.props.ecId || ''}_Button@8ldonn`} type="primary" disabled={!canSave} onClick={this.next} >{i18n.button.nextStep()}</Button>;
const ok = <Button ecId={`${this && this.props && this.props.ecId || ''}_Button@51q98a`} type="primary" disabled={!canSave} onClick={this.save} >{i18n.button.done()}</Button>;
if (current == 0) {
btns = [leftbutton, next];
} else if (current == 3) {
btns = [pre, ok];
} else {
btns = [pre, next];
}
return btns;
}
refreshVerificationCode = () => this.setState({ time: new Date().getTime() });
getSearchs = (current) => {
const { time } = this.state;
const { hrmAdd } = this.props;
const { formFull, conditionInfo0, conditionInfo1, conditionInfo2, conditionInfo3 } = hrmAdd;
const { isFormInit } = formFull;
const formParams = formFull.getFormParams();
let group = [];
let target;
if (current < 1) target = conditionInfo0;
if (current === 1) target = conditionInfo1;
if (current === 2) target = conditionInfo2;
if (current === 3) target = conditionInfo3;
window.e9HideFormFieldKeys = [];
isFormInit && target && target.forEach((c, i) => {
let items = [];
c.items.forEach((field, j) => {
let hide = false;
let hideLabel = false;
if (formParams.accounttype == '1' && (field.domkey[0] == 'loginid' || field.domkey[0] == 'password' || field.domkey[0] == 'password1' || field.domkey[0] == 'userUsbType')) hide = true;
if ((!formParams.userUsbType || formParams.userUsbType == '') && (field.domkey[0] == 'tokenKey' || field.domkey[0] == 'serial' || field.domkey[0] == 'usbstate')) hide = true;
if (formParams.userUsbType == '4' && (field.domkey[0] == 'tokenKey' || field.domkey[0] == 'serial')) hide = true;
if (formParams.userUsbType == '2' && field.domkey[0] == 'tokenKey') hide = true;
if (formParams.userUsbType == '3' && field.domkey[0] == 'serial') hide = true;
if ((!formParams.accounttype || formParams.accounttype == '0') && field.domkey[0] == 'belongto') hide = true;
if (field.domkey[0] == 'usbstate') {
hideLabel = true;
}
let dom;
if (field.conditionType == 'RESOURCEIMG') {
const key = getKey(field);
const bindObj = formFull.$(key);
dom = <UploadAvatar ecId={`${this && this.props && this.props.ecId || ''}_UploadAvatar@u0dusd@resourceImg`} {...bindObj.bind()} />
} else if (field.domkey[0] == 'tokenKey') {
const key = getKey(field);
const bindObj = formFull.$(key);
dom = <InputBtn ecId={`${this && this.props && this.props.ecId || ''}_InputBtn@4keiha@tokenKey`} btnText={i18n.label.binding()} {...bindObj.bind()} onBtnClick={hrmAdd.updateKey} />
} else if (field.domkey[0] == 'serial') {
const key = getKey(field);
const bindObj = formFull.$(key);
dom = <InputBtn ecId={`${this && this.props && this.props.ecId || ''}_InputBtn@atqw1s@serial`} btnText={i18n.label.binding()} {...bindObj.bind()} onBtnClick={hrmAdd.updateKey} />
} else if (field.domkey[0] == 'validatecode') {
dom = (
<div>
<div style={{ float: 'left', width: '45%' }}>
<WeaSwitch ecId={`${this && this.props && this.props.ecId || ''}_WeaSwitch@lk4mhb`} fieldConfig={field} form={formFull} formParams={formParams} />
</div>
<img style={{ marginLeft: '16px' }} border="0" align='absmiddle' src={addContentPath(`${verificationCode}${time}`)} onClick={this.refreshVerificationCode} title={i18n.label.preview()} />
</div>
)
} else {
dom = <CustComp ecId={`${this && this.props && this.props.ecId || ''}_CustComq@ukb43t@custcomq`} hrmAdd={hrmAdd} fieldConfig={field} form={formFull} formParams={formParams} />;
}
if (c.hide || !isEmpty(field.otherParams) && field.otherParams.hide) {
window.e9HideFormFieldKeys.push(field.domkey[0]);
} else {
items.push({
com: <WeaFormItem ecId={`${this && this.props && this.props.ecId || ''}_WeaFormItem@4p8bz8@${j}`}
hideLabel={hideLabel}
label={`${field.label}`}
labelCol={{ span: `${field.labelcol}` }}
wrapperCol={{ span: `${field.fieldcol}` }}>
{dom}
{field.domkey[0] == 'workcode' && <AttachToNumberField ecId={`${this && this.props && this.props.ecId || ''}_AttachToNumberField@jzwjg9`} field={field} form={formFull}/>}
</WeaFormItem>,
colSpan: 1,
hide: hide
});
}
});
group.push(<WeaSearchGroup ecId={`${this && this.props && this.props.ecId || ''}_WeaSearchGroup@uwuq5a@${i}`} className='hrm-center' hide={c.hide}
needTigger={true} title={c.title} showGroup={c.defaultshow} items={items} col={1} />)
});
return group;
}
handleTable = (datas) => {
return datas && datas.map(data => {
const {tabinfo:{columns}} = data;
const length = columns.length;
columns.map(c => {
c.width = `${95/length}%`
})
return data
})
}
getTabChildren = () => {
const { hrmAdd } = this.props;
const { current, tableInfo1, tableInfo2, tabkey1, tabkey2 } = hrmAdd;
let tabChildren = [];
let target;
let tabkey;
if (current === 1) {
target = toJS(tableInfo1);
tabkey = tabkey1;
}
if (current === 2) {
target = toJS(tableInfo2);
tabkey = tabkey2;
}
target && this.handleTable(target).map((t, i) => {
if (tabkey == i) {
tabChildren.push(
<WeaTableEdit ecId={`${this && this.props && this.props.ecId || ''}_WeaTableEdit@jv99el@${i}`}
// title={'列表信息'}
// addFirstRow={true}
tableProps={{
scroll: { x: 700 }
}}
columns={t.tabinfo.columns ? t.tabinfo.columns : []}
datas={isEmpty(t.tabinfo.datas) ? [{}] : t.tabinfo.datas}//没有数据默认添加一行使用addFirstRow属性在这个页面有问题。
onChange={this.tableEditChange}
/>
);
}
})
return tabChildren;
}
render () {
const { hrmAdd } = this.props;
const { visible, title, current, loading, conditionInfo1, conditionInfo2, conditionInfo3, tabInfo1, tabInfo2, tabkey1, tabkey2 } = hrmAdd;
let dialogHeight = window.innerHeight - 250;
if (dialogHeight > 660) dialogHeight = 660;
return <WeaDialog ecId={`${this && this.props && this.props.ecId || ''}_WeaDialog@akev30`}
{...this.props}
closable
className="hrm-addfull"
style={{ width: 800, height: dialogHeight }}
title={title()}
icon="icon-coms-hrm"
iconBgcolor='#217346'
buttons={this.getBtns()}
moreBtn={{ datas: [] }}
>
<Spin ecId={`${this && this.props && this.props.ecId || ''}_Spin@vgga5o`} spinning={loading}>
<Steps ecId={`${this && this.props && this.props.ecId || ''}_Steps@np68cr`} current={current} className="step-wrapper">
<Step ecId={`${this && this.props && this.props.ecId || ''}_Step@ytdmss`} description={i18n.label.fillBasicInfo()} />
<Step ecId={`${this && this.props && this.props.ecId || ''}_Step@clngpy`} description={i18n.label.fillPrivateInfo()} />
<Step ecId={`${this && this.props && this.props.ecId || ''}_Step@yp8iih`} description={i18n.label.fillWorkInfo()} />
<Step ecId={`${this && this.props && this.props.ecId || ''}_Step@kgl9jl`} description={i18n.label.fillSysInfo()} />
</Steps>
<WeaNewScroll ecId={`${this && this.props && this.props.ecId || ''}_WeaNewScroll@hu2rk8`} height={dialogHeight - 120} ref="scrollBar">
<div className={`${current < 1 ? 'wea-show' : 'wea-hide'}`}>
{this.getSearchs(0)}
</div>
<div className={`${current === 1 ? 'wea-show hrm-add-detial-tabs' : 'wea-hide hrm-add-detial-tabs'}`}>
{!isEmpty(conditionInfo1) ?
<div>
{this.getSearchs(1)}
{
!isEmpty(tabInfo1) && <div>
<WeaTab ecId={`${this && this.props && this.props.ecId || ''}_WeaTab@8k8ibm`}
type='card'
keyParam='key'
datas={toJS(tabInfo1)}
selectedKey={tabkey1}
onChange={hrmAdd.updateTabkey}
/>
{this.getTabChildren()}
</div>
}
</div> :
<div>
<WeaAlertPage ecId={`${this && this.props && this.props.ecId || ''}_WeaAlertPage@at8vdt`}>
<div style={{ color: '#000' }}>
{i18n.message.fillPrivateInfoAlarm()}
</div>
</WeaAlertPage>
</div>
}
</div>
<div className={`${current === 2 ? 'wea-show hrm-add-detial-tabs' : 'wea-hide hrm-add-detial-tabs'}`}>
{!isEmpty(conditionInfo2) ?
<div>
{this.getSearchs(2)}
<WeaTab ecId={`${this && this.props && this.props.ecId || ''}_WeaTab@vswx9n`}
type='card'
keyParam='key'
datas={toJS(tabInfo2)}
selectedKey={tabkey2}
onChange={hrmAdd.updateTabkey}
/>
{this.getTabChildren()}
</div> :
<div>
<WeaAlertPage ecId={`${this && this.props && this.props.ecId || ''}_WeaAlertPage@5c5zei`}>
<div style={{ color: '#000' }}>
{i18n.message.fillWorkInfoAlarm()}
</div>
</WeaAlertPage>
</div>
}
</div>
<div className={`${current === 3 ? 'wea-show' : 'wea-hide'}`}>
{!isEmpty(conditionInfo3) ?
<div>
{this.getSearchs(3)}
</div> :
<div>
<WeaAlertPage ecId={`${this && this.props && this.props.ecId || ''}_WeaAlertPage@iz74wf`}>
<div style={{ color: '#000' }}>
{i18n.message.fillSysInfoAlarm()}
</div>
</WeaAlertPage>
</div>
}
</div>
</WeaNewScroll>
</Spin>
</WeaDialog>
}
}
export default Full