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

334 lines
16 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.userUsbType == '7' && ['tokenKey', 'serial'].includes(field.domkey[0])) 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