trunk/pc4mobx/organization/components/importresource/Import.js

364 lines
14 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,
WeaFormItem,
WeaSearchGroup,
WeaNewScroll,
WeaSelect,
WeaInput
} from 'ecCom'
import {
Row,
Col,
Button,
Spin
} from 'antd'
import {
WeaSwitch
} from 'comsMobx'
import React from 'react'
import ImportResult from './ImportResult'
import ImportHistory from './ImportHistory'
import {
WeaLocaleProvider
} from 'ecCom';
import {
i18n
} from '../../public/i18n';
import {addContentPath} from '../../util/index.js'
import '../../style/common.less'
@inject('hrmImportResource')
@observer
export default class ImportResource extends React.Component {
constructor(props) {
super(props);
}
componentDidMount() {
const {
hrmImportResource
} = this.props;
hrmImportResource.list = [];
}
getCircle() {
let style = {
width: 20,
height: 20,
backgroundColor: '#D8D8D8',
webkitBorderRadius: 10,
mozBorderRadius: 10,
msBorderRadius: 10,
oBorderRadius: 10,
borderRadius: 10,
//paddingLeft: 6,
textAlign: 'center',
}
return style;
}
getForm() {
const {
hrmImportResource
} = this.props;
const {
condition
} = hrmImportResource;
let _arr = [];
condition.map((c, i) => {
let arr = [];
if (i == 0) { //基本信息
c.items.map((field, index) => {
arr.push({
com: (
<div>
<Row ecId={`${this && this.props && this.props.ecId || ''}_Row@m9t2kn@${index}`}>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@rc5who@${index}`} span={1} offset={4}>
<div style={{ marginTop: 15 }}>
<div style={this.getCircle()}><div style={{ paddingTop: 2 }}>{index + 1}</div></div>
</div>
</Col>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@f1sc6s@${index}`} span={14}>
<div style={{ marginTop: 15 }}>
<Row ecId={`${this && this.props && this.props.ecId || ''}_Row@5gsx6o@${index}`}>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@qrdxst@${index}`} span={field.labelcol} style={{overflow: 'hidden',whiteSpace: 'nowrap',textOverflow: 'ellipsis'}} title={field.label}>{field.label}:</Col>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@7jy5um@${index}`} span={field.fieldcol}>
{this.getDom(field)}
</Col>
</Row>
</div>
</Col>
</Row>
</div>
),
colSpan: 1,
})
})
}
if (i == 1) { //导入说明
c.items.map((field, index) => {
arr.push({
com: (
<div>
<Row ecId={`${this && this.props && this.props.ecId || ''}_Row@hz50xl@${index}`}>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@fgfbrv@${index}`} span={1} offset={4} style={{ marginTop: 15 }}>
<div style={this.getCircle()}>
<div style={{ paddingTop: 2 }}>{index + 1}</div>
</div>
</Col>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@5rom81@${index}`} span={17} style={{ marginTop: 15 }}>
{this.getIllustration(field.value, field.link, index, field)}
</Col>
</Row>
</div>
),
colSpan: 1
})
})
}
_arr.push(<div><WeaSearchGroup ecId={`${this && this.props && this.props.ecId || ''}_WeaSearchGroup@bo47pp@${i}`} needTigger={true} title={c.title} showGroup={c.defaultshow} items={arr} col={1} /></div>)
});
return _arr;
}
getDom(field) {
const {
hrmImportResource
} = this.props;
const {
templetName,
filelist,
getTemplateUrl,
importParams
} = hrmImportResource;
let dom;
let domkey = field.domkey;
if (domkey[0] == 'templet') {
dom = <a href={addContentPath(field.value)}>{i18n.label.importTemplate()}</a>;
} else if (domkey[0] === 'exportData') {
const href = hrmImportResource.operateType === 'add' ? field.otherParams.fileVal[0].add : field.otherParams.fileVal[0].update;
if(hrmImportResource.importType === 'matrix'){
dom = <a onClick={() => {
getTemplateUrl(hrmImportResource.otherParams.matrixid, hrmImportResource.operateType, importParams)
}}>{i18n.label.importTemplate()}</a>
}else
dom = <a href={addContentPath(href)}>{i18n.label.importTemplate()}</a>;
} else if (domkey[0] == 'excelfile' || domkey[0] == 'importfile') {
dom = (<div>
<div style={{ float: 'left', marginTop: -10 }}>
<WeaUpload ecId={`${this && this.props && this.props.ecId || ''}_WeaUpload@iu8n01`}
uploadUrl='/api/doc/upload/uploadFile'
category='string'
limitType='xls,xlsx'
maxFilesNumber={1}
datas={filelist}
{...field.otherParams}
onChange = {
(ids, list) => {
this.setFileId(ids, list)
}
} >
<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@87232v`}>{i18n.button.selectFile()}</Button>
</WeaUpload>
</div>
<div style={{ float: 'left', paddingLeft: 10 }}>
{filelist.length == 0 ? <p>{i18n.label.noFileSelected()}</p> : filelist.map(file => <p>{file.filename}</p>)}
</div>
</div>)
} else if (domkey[0].indexOf('keyField') > -1) {
const vals = field.options.filter(v => v.selected == true);
let val = '';
vals.length>0 && (val = vals[0].key);
dom = <WeaSelect ecId={`${this && this.props && this.props.ecId || ''}_WeaSelect@yzc92h`}
style={{width: 200}}
options={field.options}
value={hrmImportResource.importParams[domkey[0]] || field.value || val}
onChange={(v) => {
hrmImportResource.setParam(domkey[0], v)
}}
/>
} else if (domkey[0] == 'importType') {
dom = <WeaSelect ecId={`${this && this.props && this.props.ecId || ''}_WeaSelect@holhhb`}
style={{width: 200}}
options={field.options}
value={hrmImportResource.operateType}
onChange={(v) => {
hrmImportResource.operateType = v
}}
/>
} else {
dom = <WeaInput ecId={`${this && this.props && this.props.ecId || ''}_WeaInput@rg6f3p`} hasBorder={true} viewAttr={1} value={field.value}/>
}
return dom;
}
getIllustration(val, url, index, link) {
const {
hrmImportResource
} = this.props;
const {
templetName,
getTemplateUrl,
importParams
} = hrmImportResource;
let p;
if (index == 0) {
if (url instanceof Object) {
const href = hrmImportResource.operateType === 'add' ? url.add : url.update;
let dom;
if(hrmImportResource.importType === 'matrix'){
dom = <a onClick={() => {
getTemplateUrl(hrmImportResource.otherParams.matrixid, hrmImportResource.operateType, importParams)
}}>{i18n.label.importTemplate()}</a>
}else
dom = <a href={addContentPath(href)}>{i18n.label.importTemplate()}</a>;
p = (<p>{i18n.label.downLoadTemplete()}{dom}</p>);
} else if (url != null) {
if(hrmImportResource.importType === 'matrix'){
p = (<p>{i18n.label.downLoadTemplete()}<a onClick={() => {
getTemplateUrl(hrmImportResource.otherParams.matrixid, hrmImportResource.operateType)
}}>{i18n.label.importTemplate()}</a></p>);
}else
p = (<p>{i18n.label.downLoadTemplete()}<a href={addContentPath(url)}>{i18n.label.importTemplate()}</a></p>);
} else {
p = (<p><div dangerouslySetInnerHTML={{ __html: val }} /></p>);
}
} else {
p = (<p><div dangerouslySetInnerHTML={{ __html: val }} /></p>);
}
return p;
}
setFileId(ids, list) {
const {
hrmImportResource
} = this.props;
hrmImportResource.excelfile = ids;
hrmImportResource.filelist = list;
}
onUploading(s) {
const {
hrmImportResource
} = this.props;
hrmImportResource.status = s;
}
submit() {
const {
hrmImportResource
} = this.props;
hrmImportResource.saveImport({}, () => {
this.refs.scroll && this.refs.scroll.scrollToLast()
});
}
cancel() {
const {
hrmImportResource,
onClose
} = this.props;
hrmImportResource.visible = false
hrmImportResource.init();
onClose && onClose();
}
importHistoryQuery() {
const {
hrmImportResource
} = this.props;
hrmImportResource.visibleHistory = true;
hrmImportResource.getImportHistory();
}
render() {
const {
hrmImportResource,
mainTitle,
importLog,
viewLog,
viewLogTitle,
} = this.props;
const {
title,
visible,
titleResult,
visibleResult,
importResultColumns,
importProcessLogDatas,
failnum,
succnum,
importResultTip,
importResultStore,
importStatus,
errorInfo,
setScrollRef,
single,
showLoadingSpin,
condition
} = hrmImportResource;
const buttons = condition.length ? [
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@ip7b32`} type="primary" onClick={() => this.submit()}>{i18n.button.submit()}</Button>),
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@itogxo`} type="primary" onClick={() => this.importHistoryQuery()}>{importLog || i18n.button.importHistoryQuery()}</Button>),
] : [];
let dialogHeight = window.innerHeight - 150;
if (dialogHeight > 560) dialogHeight = 560;
return (
<div>
{
single && visible ?
<WeaNewScroll ecId={`${this && this.props && this.props.ecId || ''}_WeaNewScroll@mkyv9k`} height={'100%'} ref="scrollBar">
{this.getForm()}
</WeaNewScroll>
:
<WeaDialog ecId={`${this && this.props && this.props.ecId || ''}_WeaDialog@s55z5q`}
title={mainTitle || title}
icon="icon-coms-hrm"
iconBgcolor="#217346"
visible={visible}
closable={true}
onCancel={() => this.cancel()}
buttons={buttons}
style={{ width: 870, height: dialogHeight }}
moreBtn={{datas:condition ? [{
key: '1',
content: i18n.button.submit(),
icon: <i className='icon-coms-Preservation'/>,
onClick: () => this.submit(),
},
{
key: '2',
content: importLog || i18n.button.importHistoryQuery(),
icon: <i className='icon-coms-Preservation'/>,
onClick: () => this.importHistoryQuery(),
}
]: []}}
>
{ condition.length ? (
<Spin ecId={`${this && this.props && this.props.ecId || ''}_Spin@1fvd3j`} spinning={showLoadingSpin}>
<WeaNewScroll ecId={`${this && this.props && this.props.ecId || ''}_WeaNewScroll@2908z2`} height={dialogHeight} ref="scrollBar">
{this.getForm()}
</WeaNewScroll>
</Spin>
): ''}
</WeaDialog>
}
<ImportResult ecId={`${this && this.props && this.props.ecId || ''}_ImportResult@66ry2w`} {...this.props} />
<ImportHistory ecId={`${this && this.props && this.props.ecId || ''}_ImportHistory@72i8fh`} {...this.props} />
</div>
)
}
}