trunk/pc4mobx/organization/components/import/datasImport.js

356 lines
13 KiB
JavaScript
Raw Permalink 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,
WeaAlertPage,
WeaLocaleProvider
} from 'ecCom'
import {
Row,
Col,
Button,
Spin
} from 'antd'
import {
WeaSwitch
} from 'comsMobx'
import React from 'react'
import {
i18n
} from '../../public/i18n';
import { addContentPath, renderNoright } from '../../util/index.js'
import '../../style/common.less'
const getLabel = WeaLocaleProvider.getLabel;
@inject('datasImport')
@inject('resource')
@observer
export default class DatasImport extends React.Component {
constructor(props) {
super(props);
}
componentDidMount() {
const {
datasImport
} = this.props;
datasImport.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 {
datasImport
} = this.props;
const {
condition
} = datasImport;
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 {
datasImport
} = this.props;
const {
templetName,
filelist,
getTemplateUrl,
importParams
} = datasImport;
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 = datasImport.operateType === 'add' ? field.otherParams.fileVal[0].add : field.otherParams.fileVal[0].update;
if (datasImport.importType === 'matrix') {
dom = <a onClick={() => {
getTemplateUrl(datasImport.otherParams.matrixid, datasImport.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={datasImport.importParams[domkey[0]] || field.value || val}
onChange={(v) => {
datasImport.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={datasImport.operateType}
onChange={(v) => {
datasImport.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 {
datasImport
} = this.props;
const {
templetName,
getTemplateUrl,
importParams
} = datasImport;
let p;
if (index == 0) {
if (url instanceof Object) {
const href = datasImport.operateType === 'add' ? url.add : url.update;
let dom;
if (datasImport.importType === 'matrix') {
dom = <a onClick={() => {
getTemplateUrl(datasImport.otherParams.matrixid, datasImport.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 (datasImport.importType === 'matrix') {
p = (<p>{i18n.label.downLoadTemplete()}<a onClick={() => {
getTemplateUrl(datasImport.otherParams.matrixid, datasImport.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 {
datasImport
} = this.props;
datasImport.excelfile = ids;
datasImport.filelist = list;
}
onUploading(s) {
const {
datasImport
} = this.props;
datasImport.status = s;
}
submit() {
const {
datasImport,
resource
} = this.props;
datasImport.saveImport({}, () => {
this.refs.scroll && this.refs.scroll.scrollToLast();
});
// resource.getTableInfo();
// resource.getHasRight();
}
cancel() {
const {
datasImport,
onClose
} = this.props;
datasImport.visible = false
datasImport.init();
onClose && onClose();
}
importHistoryQuery() {
const {
datasImport
} = this.props;
datasImport.visibleHistory = true;
datasImport.getImportHistory();
}
render() {
const {
datasImport,
mainTitle,
importLog,
viewLog,
viewLogTitle,
} = this.props;
const {
title,
visible,
titleResult,
visibleResult,
importResultColumns,
importProcessLogDatas,
failnum,
succnum,
importResultTip,
importResultStore,
importStatus,
errorInfo,
setScrollRef,
single,
showLoadingSpin,
condition
} = datasImport;
const buttons = condition.length ? [
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@ip7b32`} type="primary" onClick={() => this.submit()}>{i18n.button.submit()}</Button>),
] : [];
let dialogHeight = window.innerHeight - 150;
if (dialogHeight > 560) dialogHeight = 560;
return (
<div>
{
<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(),
}] : []
}}
>
{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>
) : <div></div>
}
</WeaDialog>
}
</div>
)
}
}