weaver_trunk_cli/pc4mobx/hrm/components/importRelatedComponet/index.js

261 lines
9.9 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 {
inject,
observer
} from 'mobx-react';
import {
WeaUpload,
WeaDialog,
WeaSelect,
WeaNewScroll,
WeaMoreButton,
WeaSearchGroup,
} from 'ecCom'
import {
WeaSwitch
} from 'comsMobx';
import {
Row,
Col,
Spin,
Button,
} from 'antd'
import {
IEVersion
} from '../../public/pulic-func'
import {
i18n
} from '../../public/i18nbk';
import ImportResult from './ImportResult'
import ImportHistory from './ImportHistory'
@inject('hrmImportCommon')
@observer
export default class Import extends React.Component {
constructor(props) {
super(props);
this.state = {
width: 870,
height: 510,
list: [],
upStatus: '',
}
}
getForm = () => {
const {
hrmImportCommon
} = this.props, {
importDialog
} = hrmImportCommon, {
condition,
form,
} = importDialog, {
isFormInit
} = form;
let _arr = [];
isFormInit && condition.map((c, i) => {
let arr = [];
if (i == 0) { //基本信息
c.items.map((field, index) => {
let key = field.domkey[0];
let url = field.value ? field.value : '';
arr.push({
com: (
<Row ecId={`${this && this.props && this.props.ecId || ''}_Row@u3pg88@${index}`}>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@d34g4z@${index}`} span={1} offset={6}>
<div className='hrm-import-circle' style={{paddingLeft: IEVersion() == '-1' ? 6 : 7, marginTop: 15}}>
<div style={{paddingTop: (IEVersion() == '11' || IEVersion() == 'edge') ? 5 : 2}}>{index + 1}</div>
</div>
</Col>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@h1ko2g@${index}`} span={14}>
<Row ecId={`${this && this.props && this.props.ecId || ''}_Row@3swbr9@${index}`} style={{marginTop: 15}}>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@55ag3k@${index}`} span={field.labelcol}>{field.label.length > 14 ? `${field.label.slice(0, 14)}...` : field.label}:</Col>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@qyfneu@${index}`} span={field.fieldcol}>
{this.getElements(key, url, field)}
</Col>
</Row>
</Col>
</Row>
),
colSpan: 1,
})
})
}
if (i == 1) { //导入说明
c.items.map((field, index) => {
let p = field.value;
let url = field.link ? field.link : '';
arr.push({
com: (
<Row ecId={`${this && this.props && this.props.ecId || ''}_Row@r3k3h0@${index}`}>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@2yfn9e@${index}`} span={1} offset={6} style={{marginTop: 15}}>
<div className='hrm-import-circle' style={{paddingLeft: IEVersion() == '-1' ? 6 : 7, paddingLeft: (index > 8) ? 3 : 6}}>
<div style={{paddingTop: (IEVersion() == '11' || IEVersion() == 'edge') ? 5 : 2}}>{index + 1}</div>
</div>
</Col>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@z6k87f@${index}`} span={14} style={{marginTop: 15}}>
{this.getImportInstructions(p, url, index)}
</Col>
</Row>
),
colSpan: 1
})
})
}
_arr.push(<div style={{color: '#484848'}}><WeaSearchGroup ecId={`${this && this.props && this.props.ecId || ''}_WeaSearchGroup@a3rsv9@${i}`} needTigger={true} title={c.title} showGroup={c.defaultshow} items={arr} col={1} /></div>)
});
return _arr;
}
getElements = (key, url, field) => {
const {
hrmImportCommon
} = this.props, {
setExcelFileNo,
importDialog,
setSelectedValue
} = hrmImportCommon, {
templetName,
selectedValue,
form,
} = importDialog, {
upStatus,
list
} = this.state;
let dom;
if (key == 'templet') {
dom = this.getTempletElement(url, selectedValue, templetName);
} else if (key == 'excelfile') {
dom = (<div>
<div style={{float: 'left',marginTop: -10}}>
<WeaUpload ecId={`${this && this.props && this.props.ecId || ''}_WeaUpload@lcyams`}
uploadUrl='/api/doc/upload/uploadFile'
category='string'
limitType='xls'
datas={upStatus === 'uploaded' ? list : []}
onChange={(id, list) => {this.setState({list:list}); setExcelFileNo(id)}}
onUploading={status => this.handleUploading(status)}
>
<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@hmrzeo`}>{i18n.button.selectFile()}</Button>
</WeaUpload>
</div>
<div style={{float: 'left', paddingLeft: 10}}>
{ list.length == 0 ? <p>{i18n.label.noFileSelected()}</p> : list.map(file => <p>{file.filename}</p>) }
</div>
</div>)
} else {
dom = <WeaSwitch ecId={`${this && this.props && this.props.ecId || ''}_WeaSwitch@tsac1c`} fieldConfig={field} form={form} formParams={form.getFormParams()} />
}
return dom;
}
getImportInstructions = (val, url, index) => {
const {
hrmImportCommon
} = this.props, {
importDialog
} = hrmImportCommon, {
templetName,
selectedValue,
} = importDialog;
let p;
if (index == 0) {
let dom = this.getTempletElement(url, selectedValue, templetName);
p = (<p>{i18n.label.downloadTemplateFirst()}{dom}</p>);
} else {
p = (<p>{val}</p>);
}
return p;
}
getTempletElement = (url, selectedValue, templetName) => {
let dom;
let urlArr = url.split(';');
if (urlArr.length > 1) {
if (selectedValue == 'workcode') {
dom = <a href={urlArr[0]}>{templetName}</a>;
} else {
dom = <a href={urlArr[1]}>{templetName}</a>;
}
} else {
dom = <a href={url}>{templetName}</a>;
}
return dom
}
handleUploading = (status) => {
this.setState({
upStatus: status
});
if (status == 'uploading') {
this.setState({
list: []
});
}
}
getButtons = () => {
const {
hrmImportCommon
} = this.props, {
submitExcel,
queryRecord,
importDialog,
} = hrmImportCommon, {
upStatus
} = this.state;
return [
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@2fiagn@1`} type="primary" disabled={upStatus === 'uploaded' ? false : true} onClick={() => submitExcel()}>{i18n.button.submit()}</Button>),
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@q04w9s@2`} type="primary" onClick={() => queryRecord()}>{i18n.button.importHistoryQuery()}</Button>),
(<WeaMoreButton ecId={`${this && this.props && this.props.ecId || ''}_WeaMoreButton@oizt3r@3`} />)
];
}
render() {
const {
hrmImportCommon
} = this.props, {
importDialog,
resultDialog,
recordDialog,
setImportDialogVisible
} = hrmImportCommon, {
visible,
title,
loading
} = importDialog, {
width,
height,
} = this.state;
return (
<div>
<WeaDialog ecId={`${this && this.props && this.props.ecId || ''}_WeaDialog@79hw9l`}
title={title}
icon="icon-coms-hrm"
iconBgcolor="#217346"
visible={visible}
closable={true}
onCancel={() => setImportDialogVisible(false) }
buttons={this.getButtons()}
style={{width: width, height: height}}
onChangeHeight={(h) => this.setState({height: h})}
>
<Spin ecId={`${this && this.props && this.props.ecId || ''}_Spin@qa42zo`} spinning={loading}>
<WeaNewScroll ecId={`${this && this.props && this.props.ecId || ''}_WeaNewScroll@vcz1bi`} height={height}>
{this.getForm()}
</WeaNewScroll>
</Spin>
</WeaDialog>
{resultDialog.visible && <ImportResult ecId={`${this && this.props && this.props.ecId || ''}_ImportResult@fd6jt3`} />}
{recordDialog.visible && <ImportHistory ecId={`${this && this.props && this.props.ecId || ''}_ImportHistory@weby4j`} />}
</div>
)
}
}