| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364 | import React,{Component} from 'react';import {Button, DatePicker, Input, message, Modal, Radio} from "antd";import {    highTechColumns,//高新    highTechColumnsVIP,//高新会员    science,//科技    patent,//专利    currency,//软著和通用} from './type';import moment from "moment";import $ from "jquery";import {splitUrl} from '@/tools'import ImgList from "../imgList";class NowProjectStatus extends Component{    constructor(props) {        super(props);        this.state={            projectStatus: parseInt(props.projectStatus),            list:                props.cSort === 3 ? science :                props.cSort === 6 ? highTechColumnsVIP :                props.projectType === 0 || props.projectType === 2 || props.projectType === 3 || props.projectType === 4 || props.projectType === 6?                    currency:                props.projectType === 1 ?                    patent:                props.projectType === 5 ?                    highTechColumns :                    [],//projectType  0 正常 1专利 2软著 3审计 4双软 5高新 6商标   cSort: 3 科技项目  6: 会员            dataInfor:Object.assign({},props.projectTypeJSON),            loading: false,            fileList:[],        }    }    updateProjectStatus(){        let arr = this.state.list.filter(v=>v.id === this.state.projectStatus);        let dataInforLength  = this.state.dataInfor[this.state.projectStatus] ? Object.keys(this.state.dataInfor[this.state.projectStatus]).length : 0;        if(this.state.dataInfor[this.state.projectStatus] && this.state.dataInfor[this.state.projectStatus]['title']){            dataInforLength -= 1;        }        if(this.state.dataInfor[this.state.projectStatus] && this.state.dataInfor[this.state.projectStatus]['suspendImg']){            dataInforLength -= 1;        }        if(arr.length !== 0 && arr[0]['valueType'] && dataInforLength !== arr[0]['valueType'].length){            arr[0]['valueType'].map((v)=>{                if(!this.state.dataInfor[this.state.projectStatus][v]){                    if(v === 'date'){                        message.warning('请将'+arr[0]['name']+'时间补充完整')                    }                    if(v === 'certificateNumber'){                        message.warning('请将'+arr[0]['name']+'的证书编号补充完整')                    }                    if(v === 'setUpAmount'){                        message.warning('请将'+arr[0]['name']+'的立项金额补充完整')                    }                    if(v === 'appropriation'){                        message.warning('请将'+arr[0]['name']+'的拨款金额补充完整')                    }                    return false;                }            })            return false;        }        if((this.state.projectStatus === 2 || this.state.projectStatus === 3) && this.state.fileList.length === 0){            message.warning('暂停附件未上传,请上传后保存!')            return false;        }        this.setState({            loading: true,        })        if((this.state.projectStatus === 2 || this.state.projectStatus === 3)){            if (this.state.fileList.length) {                let picArr = []                this.state.fileList.map(function (item) {                    if (item.response && item.response.data && item.response.data.length) {                        picArr.push(item.response.data)                    }                })                if(!this.state.dataInfor[2]){                    this.state.dataInfor[2] = {};                }                if(!this.state.dataInfor[3]){                    this.state.dataInfor[3] = {};                }                this.state.dataInfor[2]['suspendImg'] = picArr.join(',');                this.state.dataInfor[3]['suspendImg'] = picArr.join(',');            }        }        let data = Object.assign({},this.state.dataInfor);        Object.keys(data).map(v=>{            if(Object.keys(data[v]).length === 0){                delete data[v];            }        })        if(data[this.state.projectStatus]){            data[this.state.projectStatus]['title'] =arr[0]['label'] || arr[0]['name'];        }        let obj = {            tid:this.props.tid,            projectStatus: this.state.projectStatus,            timeRecord: JSON.stringify(data)        }        if(arr[0]['valueType']){            //证书编号            let type = arr[0]['valueType'].filter(v=>v==='certificateNumber');            if(type.length > 0){                obj.certificateNumber = this.state.dataInfor[this.state.projectStatus]['certificateNumber']            }            //立项金额            let type1 = arr[0]['valueType'].filter(v=>v==='setUpAmount');            if(type1.length > 0){                obj.setUpAmount = this.state.dataInfor[this.state.projectStatus]['setUpAmount']            }        }        $.ajax({            url: globalConfig.context + '/api/admin/orderProject/updateProjectStatus',            method: 'post',            data: obj,        }).done(            function (data) {                this.setState({                    loading: false,                })                if (!data.error.length) {                    message.success('保存成功!');                    this.props.onPreservation(this.state.projectStatus);                } else {                    message.warning(data.error[0].message)                }            }.bind(this)        )    }    componentDidMount() {        /*旧数据处理        * endDate           完成时间      对应已提交时间     4        * acceptDate        受理时间      对应已推荐时间     6        * publicityDate     公示时间      对应已拟公示时间   8        * licenceDate       发证时间      对应已下证时间     10        * setUpAmount       立项金额                      15        * */        const {endDate,acceptDate,publicityDate,licenceDate,setUpAmount} = this.props.oldData;        if((!this.props.projectTypeJSON[4]) && endDate){            this.state.dataInfor[4]={title:'完成时间'};            this.state.dataInfor[4]['date'] = endDate;        }        if((!this.props.projectTypeJSON[6]) && acceptDate){            this.state.dataInfor[6]={title:'受理时间'};            this.state.dataInfor[6]['date'] = acceptDate;        }        if((!this.props.projectTypeJSON[8]) && publicityDate){            this.state.dataInfor[8]={title:'公示时间'};            this.state.dataInfor[8]['date'] = publicityDate;        }        if((!this.props.projectTypeJSON[10]) && licenceDate){            this.state.dataInfor[10]={title:'发证时间'};            this.state.dataInfor[10]['date'] = licenceDate;        }        // if((!this.props.projectTypeJSON[15]) && setUpAmount){        //     this.state.dataInfor[15]={title:'立项金额'};        //     this.state.dataInfor[15]['setUpAmount'] = setUpAmount;        // }        //图片        if(this.props.projectTypeJSON[2] && this.props.projectTypeJSON[2]['suspendImg']){            this.setState({                fileList: splitUrl(                    this.props.projectTypeJSON[2]['suspendImg'],                    ',',                    globalConfig.avatarHost + '/upload'                )            })        }else{            this.setState({                fileList: []            })        }        this.setState({            dataInfor: this.state.dataInfor,        })    }    render() {        return(            <Modal                className="customeDetails"                footer=""                title=""                width="700px"                visible={this.props.visible}                onOk={()=>{                    this.props.onCancel();                }}                onCancel={()=>{                    this.props.onCancel();                }}            >                <div>                    <div style={{                        paddingBottom: '15px',                        fontSize:'18px',                        fontWeight:"bolder",                    }}>                        项目状态:                    </div>                    <div>                        <Radio.Group                            style={{                                dispaly:'flex',                                flexRow:'column'                            }}                            value={parseInt(this.state.projectStatus)}                            onChange={(e) => {                                if(!this.state.dataInfor[e.target.value]){                                    this.state.dataInfor[e.target.value] = {};                                }                                this.state.dataInfor[this.state.projectStatus] = this.props.projectTypeJSON[this.state.projectStatus] || {};                                this.setState({                                    projectStatus: e.target.value,                                    dataInfor:this.state.dataInfor,                                });                            }}                        >                            {                                this.state.list.map((v,k)=>(                                    <div key={k} style={{paddingBottom:'15px'}}>                                        <Radio value={v.id}>{v.name}</Radio>                                        {                                            (v.valueType || []).map(d=>(                                                parseInt(this.state.projectStatus) !== parseInt(v.id) ?                                                    <span style={{marginRight:'15px'}}>                                                        {                                                            d === 'appropriation' ? '拨款金额(万元):' :                                                                d === 'certificateNumber' ? '已出高新证书编号,编号:' :                                                                    d === 'setUpAmount' ? '立项金额(万元):' : ''                                                        }                                                        {                                                            this.state.dataInfor[v.id] && this.state.dataInfor[v.id][d]                                                        }                                                    </span>                                                :d === 'date' ?                                                <DatePicker                                                    style={{ marginRight: '5px',width:'120px' }}                                                    showTime                                                    format="YYYY-MM-DD"                                                    onOk={() => {}}                                                    value={                                                        this.state.dataInfor[v.id] && this.state.dataInfor[v.id][d] ? moment(this.state.dataInfor[v.id][d]) : null                                                    }                                                    onChange={(data, dataString) => {                                                        console.log(dataString)                                                        if(!this.state.dataInfor[v.id]){                                                            this.state.dataInfor[v.id] = {};                                                        }                                                        if(!dataString && this.state.dataInfor[v.id][d]){                                                            delete this.state.dataInfor[v.id][d];                                                        }else{                                                            this.state.dataInfor[v.id][d] = dataString;                                                        }                                                        this.setState({                                                            dataInfor:this.state.dataInfor,                                                        })                                                    }}                                                /> :                                                    d === 'setUpAmount' || d === 'certificateNumber' || d === 'appropriation' ? <span>                                                        <span>                                                            {                                                                d === 'appropriation' ? '拨款金额(万元)' :                                                                    d === 'certificateNumber' ? '已出高新证书编号,编号' :                                                                        d === 'setUpAmount' ? '立项金额(万元)' : ''                                                            }                                                        </span>                                                        <Input                                                            placeholder={v.placeholder}                                                            value={this.state.dataInfor[v.id] ? this.state.dataInfor[v.id][d] : ''}                                                            style={{ width: '120px',marginRight: '5px', }}                                                            onChange={(e) => {                                                                if(!this.state.dataInfor[v.id]){                                                                    this.state.dataInfor[v.id] = {};                                                                }                                                                if(!e.target.value && this.state.dataInfor[v.id][d]){                                                                    delete this.state.dataInfor[v.id][d];                                                                }else{                                                                    this.state.dataInfor[v.id][d] = e.target.value;                                                                }                                                                this.setState({                                                                    dataInfor:this.state.dataInfor,                                                                })                                                            }}                                                        />                                                    </span> : null                                            ))                                        }                                        <span style={{color:'#f00',marginLeft:'15px'}}>{v.explain}</span>                                    </div>                                ))                            }                        </Radio.Group>                        {                            (this.state.projectStatus === 2 || this.state.projectStatus === 3 || this.state.fileList.length > 0) &&                                <div>                                    <div style={{                                        paddingTop:'20px',                                        paddingBottom:'10px'                                    }}>                                        <div>暂停附件:</div>                                        <div style={{color:'#f00'}}>(请上传截图证明)</div>                                    </div>                                    <div style={{                                        display:(this.state.projectStatus === 2 || this.state.projectStatus === 3) ? 'block':'none'                                    }}>                                        <ImgList                                            domId='nowProjectStatus'                                            uploadConfig={{                                                action:globalConfig.context + "/api/admin/orderProject/uploadOrderTaskFile",                                                data:{ 'sign': "order_task_file"},                                                multiple:true,                                                listType:"picture-card",                                            }}                                            onChange={(info)=>{                                                let fileList = info.fileList;                                                this.setState({ fileList });                                            }}                                            fileList={this.state.fileList}                                        />                                    </div>                                     <div style={{                                         display:(this.state.projectStatus === 2 || this.state.projectStatus === 3) ? 'none':'block'                                     }}>                                         <ImgList                                             domId='nowProjectStatus1'                                             fileList={this.state.fileList}                                         />                                     </div>                                </div>                        }                        <div style={{                            display:'flex',                            justifyContent:'center',                            paddingTop:'20px',                            paddingBottom: '20px',                        }}>                            <Button                                loading={this.state.loading}                                className="cancel"                                type="ghost"                                onClick={()=>{                                    this.updateProjectStatus();                                }}                            >                                保存                            </Button>                        </div>                        <div style={{textAlign:'center',color:'#f00'}}>注:请根据实际项目情况填写</div>                    </div>                </div>            </Modal>        )    }}export default NowProjectStatus;
 |