| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 | import React from 'react';import { Input, Modal, Button, message } from 'antd';import { achievementCategoryList } from '../../dataDic.js';import ajax from 'jquery/src/ajax/xhr.js';import $ from 'jquery/src/ajax';const BatchImport = React.createClass({    getInitialState: function () {        return {            loading: false,            error: false        };    },    showModal () {        this.setState({            visible: true,        });    },    handleOk (e) {        this.setState({            visible: false,        });    },    handleCancel (e) {        this.setState({            visible: false,        });    },    //数据反向转化    getDataCategory (e, row) {        switch (e) {            case "成果":                return 0;            case "技术":                return 1;            case "项目":                return 2;            default:                message.warning("第 " + row + " 行中没有对应的数据类型!");                this.state.error = true;                break;        }    },    getOwnerType (e, row) {        switch (e) {            case "个人":                return 0;            case "组织":                return 1;            default:                message.warning("第 " + row + " 行中没有对应的所有人类型!");                this.state.error = true;                break;        }    },    getCategory (e, row) {        let theType = null, _me = this;        if (e) {            achievementCategoryList.map(function (item) {                if (item.key == e) {                    theType = Number(item.value);                };            });            if (theType == null) {                message.warning("第 " + row + " 行中没有对应的成果类型!");                _me.state.error = true;            }            return theType;        };    },    getCooperationMode (e, row) {        switch (e) {            case "技术转让":                return 0;            case "授权生产":                return 1;            default:                message.warning("第 " + row + " 行中没有对应的合作方式!");                this.state.error = true;                break;        }    },    //提交    handleSubmit () {        let rowsArr = this.state.inputValue.split(/[\r\n]/g);        let columnArr = [], _me = this;        if (!rowsArr.length) {            return;        };        let columnLength = 12;//定义数据正常长度        for (let i = 0; i < rowsArr.length; i++) {            if (_me.state.error) {                this.state.error = false;                return;            };            let theArr = rowsArr[i].split(/\t/);            if (theArr.length == columnLength) {                columnArr.push({                    dataCategory: _me.getDataCategory(theArr[0], i + 1),                    name: theArr[1],                    keyword: theArr[2],                    category: _me.getCategory(theArr[3], i + 1),                    ownerName: theArr[4],                    ownerType: _me.getOwnerType(theArr[5], i + 1),                    ownerIdNumber: theArr[6],                    ownerMobile: theArr[7],                    ownerEmail: theArr[8],                    ownerPostalAddress: theArr[9],                    cooperationMode: _me.getCooperationMode(theArr[10], i + 1),                    introduction: theArr[11],                });            } else if (rowsArr[i].replace(/(^\s+)|(\s+$)/g, "").length) {                message.warning("第" + (i + 1) + "行数据长度错误!");                return;            };        };        // for (let i = 0; i < columnArr.length; i++) {        //     if (columnArr[i].dataCategory.toString().length > 1) { console.log((i + 1) + "行:" + "dataCategory") }        //     if (columnArr[i].name.toString().length > 31) { console.log((i + 1) + "行:" + "name") }        //     if (columnArr[i].category.toString().length > 1) { console.log((i + 1) + "行:" + "category") }        //     if (columnArr[i].ownerName.toString().length > 31) { console.log((i + 1) + "行:" + "ownerName") }        //     if (columnArr[i].ownerIdNumber.toString().length > 35) { console.log((i + 1) + "行:" + "ownerIdNumber") }        //     if (columnArr[i].ownerMobile.toString().length > 11) { console.log((i + 1) + "行:" + "ownerMobile") }        //     if (columnArr[i].ownerEmail.toString().length > 254) { console.log((i + 1) + "行:" + "ownerEmail") }        //     if (columnArr[i].ownerPostalAddress.toString().length > 254) { console.log((i + 1) + "行:" + "ownerPostalAddress") }        //     if (columnArr[i].cooperationMode.toString().length > 1) { console.log((i + 1) + "行:" + "cooperationMode") }        //     if (columnArr[i].introduction.toString().length > 298) { console.log((i + 1) + "行:" + "introduction") }        //     if (columnArr[i].keyword.toString().length > 44) { console.log((i + 1) + "行:" + "ownerType") }        //     if (columnArr[i].ownerType.toString().length > 1) { console.log((i + 1) + "行:" + "ownerType") }        // }        if (columnArr.length > 1000) {            message.warning("数据条数不能多于1000条!");            return;        };        this.setState({            loading: true        });        $.ajax({            method: "POST",            dataType: "json",            crossDomain: false,            url: globalConfig.context + '/api/admin/achievement/importAchievement',            data: {                data: JSON.stringify(columnArr)            }        }).done(function (data) {            this.setState({                loading: false            });            if (!data.error.length) {                message.success('导入成功!');                this.props.closeDesc(false, true);                this.handleOk();            } else {                message.warning(data.error[0].message);            };        }.bind(this));    },    render () {        return (            <div>                <Button type="primary" onClick={this.showModal}>批量导入</Button>                <Modal                    title="批量导入"                    visible={this.state.visible}                    onCancel={this.handleCancel}                    width='1000px'                    footer={[                        <Button key="ok" className="set-submit" type="primary" loading={this.state.loading} onClick={this.handleSubmit}>保存</Button>,                        <Button key="clancel" className="set-submit" type="ghost" onClick={this.handleCancel}>取消</Button>                    ]} >                    <Input type="textarea" rows={12} onChange={(e) => { this.state.inputValue = e.target.value; }} />                </Modal>            </div>        );    }});export default BatchImport;
 |