| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665 | import React,{ Component } from 'react';import {AutoComplete, Button, DatePicker, Input, message, Modal, Select, Spin, Table, Tabs} from "antd";import {    ShowModal,    getNewDiccityArr} from "@/tools";import { citySelect } from '../../../NewDicProvinceList';import {ChooseList} from "../../order/orderNew/chooseList";import $ from "jquery/src/ajax";import moment from "moment";import {    highTechColumns,    invention,    utilityModel,    softWriting,    otherTrademarks,    currency,} from './projecCountConfig';import HighTech from './highTech';import './index.less';const {TabPane} = Tabs;const { RangePicker } = DatePicker;const { Option } = Select;class ProjecCount extends Component{    constructor(props) {        super(props);        this.state={            loading:false,            changeList:[],            columns: currency((v,screen)=>{this.openProjectSummary(v,screen)}),            pagination: {                defaultCurrent: 1,                defaultPageSize: 10,                showQuickJumper: true,                pageSize: 10,                onChange: function(page) {                    this.loadData(page);                }.bind(this),                showTotal: function(total) {                    return "共" + total + "条数据";                }            },            dataSource: [],            taberReleaseDate: [],            taberProjectType: '',            taberCommodityName: '',            releaseDate:[],            searchOrderNo: '',            searchContractNo: '',            searchEnterpriseName: '',            declarationBatch: '',            projectType: '',            projectStatus: '',            province: '',            depId: '',            departmentArr:[],            contactsOption: [],            contactsOptionData: [],            customerArr: [],            commodityName: '',            kid: '',            status: 0,        }        this.loadData = this.loadData.bind(this);        this.resetAll = this.resetAll.bind(this);        this.changeList = this.changeList.bind(this);        this.departmentList = this.departmentList.bind(this);        this.exportPending = this.exportPending.bind(this);        this.selectSuperId = this.selectSuperId.bind(this);        this.supervisorCui = this.supervisorCui.bind(this);        this.httpChangeCui = this.httpChangeCui.bind(this);        this.selectAuto = this.selectAuto.bind(this);        this.openProjectSummary = this.openProjectSummary.bind(this);    }    changeList(arr) {        const newArr = [];        this.state.columns.forEach(item => {            arr.forEach(val => {                if (val === item.title) {                    newArr.push(item);                }            });        });        this.setState({            changeList: newArr        });    }    loadData(pageNo) {        this.setState({            page: pageNo,            loading: true,            taberReleaseDate:this.state.releaseDate,            taberProjectType:this.state.projectType,            taberCommodityName:this.state.commodityName,        });        $.ajax({            method: "get",            dataType: "json",            crossDomain: false,            url: globalConfig.context + "/api/admin/statistis/selectProvincialStatistics",            data: {                pageNo: pageNo || 1,                pageSize: this.state.pagination.pageSize,                startDate: this.state.releaseDate.length > 0 ? this.state.releaseDate[0]: undefined, //开始时间                endDate: this.state.releaseDate.length > 0 ? this.state.releaseDate[1]: undefined, //结束时间                province: this.state.province || undefined,                projectStatus: this.state.projectStatus || undefined,//项目类别                projectType: typeof this.state.projectType === 'number' ? this.state.projectType : undefined,//项目分类                status: this.state.status,                thchDepId: this.state.depId || undefined,                projectId: this.state.kid || undefined,            },            success: function(data) {                ShowModal(this);                let theArr = [];                if (!data.data || !data.data.list) {                    if (data.error && data.error.length) {                        message.warning(data.error[0].message);                    }                } else {                    for (let i = 0; i < data.data.list.length; i++) {                        let thisdata = data.data.list[i];                        thisdata.key=(data.data.pageNo - 1) * data.data.pageSize + i + 1;                        theArr.push(thisdata);                    }                }                this.state.pagination.current = data.data.pageNo;                this.state.pagination.total = data.data.totalCount;                if (data.data && data.data.list && !data.data.list.length) {                    this.state.pagination.current = 0;                    this.state.pagination.total = 0;                }                this.setState({                    dataSource: theArr,                    pagination: this.state.pagination                });            }.bind(this)        }).always(            function() {                this.setState({                    loading: false                });            }.bind(this)        );    }    //部门    departmentList() {        $.ajax({            method: "get",            dataType: "json",            crossDomain: false,            url: globalConfig.context + "/api/admin/organization/selectSuperId",            data: {},            success: function (data) {                let thedata = data.data;                let theArr = [];                if (!thedata) {                    if (data.error && data.error.length) {                        message.warning(data.error[0].message);                    }                } else {                    thedata.map(function (item, index) {                        theArr.push({                            key: index,                            name: item.name,                            id: item.id,                        });                    });                }                this.setState({                    departmentArr: theArr,                });            }.bind(this),        })    }    resetAll() {        this.setState({            releaseDate: [],            searchOrderNo: '',            searchContractNo: '',            searchEnterpriseName: '',            declarationBatch: '',            province: '',            depId: '',            projectType: '',            projectStatus: '',            columns: currency((v,screen)=>{this.openProjectSummary(v,screen)}),            commodityName: '',            kid:'',            status: 0,            taberReleaseDate:[],            taberProjectType:'',            taberCommodityName:'',        },()=>{            this.loadData();        })    }    exportPending() {        let url = `/api/admin/statistis/exporProvincialList?status=${this.state.status}`;        let dep = this.state.departmentArr.filter((e)=> e.id === this.state.depId);//责任部门名称        let option = this.state.contactsOptionData.filter((e)=> e.id === this.state.projectStatus); //项目类别名称        if(dep.length > 0){url = url+`&thchDepName=${dep[0].name}`;}        if(option.length > 0){url = url+`&projectStatusName=${option[0].cname}`;}        if(typeof this.state.projectType === 'number'){url = url+`&projectTypeName=${            this.state.projectType === 0? '通用' :                this.state.projectType === 1? '专利' :                    this.state.projectType === 2? '软著' :                        this.state.projectType === 3? '审计' :                            this.state.projectType === 4? '双软' :                                this.state.projectType === 5? '高新' :                                    this.state.projectType === 6? '商标' :''        }`;}        if(this.state.commodityName){url = url+`&projectName=${this.state.commodityName}`;}        if(this.state.province){url = url+`&provinceName=${getNewDiccityArr(this.state.province)}`;}        let data ={            startDate: this.state.releaseDate.length > 0 ? this.state.releaseDate[0]: undefined, //开始时间            endDate: this.state.releaseDate.length > 0 ? this.state.releaseDate[1]: undefined, //结束时间            thchDepId: this.state.depId || undefined,//责任部门ID            projectStatus: this.state.projectStatus || undefined,//项目类别            projectType: typeof this.state.projectType === 'number' ? this.state.projectType : undefined,//项目分类            province: this.state.province || undefined,            projectId: this.state.kid || undefined,        }        for(let key in data){            if(data[key]){                url = url+`&${key}=${data[key]}`;            }        }        window.open(globalConfig.context +url);    }    //项目类别    selectSuperId() {        $.ajax({            method: "get",            dataType: "json",            crossDomain: false,            url: globalConfig.context + "/api/admin/ProjectSize/getAllCname",            data: {                flag: 0            },            success: function(data) {                let theArr = [];                let thedata = data.data;                if (!thedata) {                    if (data.error && data.error.length) {                        message.warning(data.error[0].message);                    }                }                for (let i = 0; i < data.data.length; i++) {                    let theData = data.data[i];                    theArr.push(                        <Select.Option value={theData.id} key={theData.cname}>                            {theData.cname}                        </Select.Option>                    );                }                this.setState({                    contactsOption: theArr,                    contactsOptionData: data.data,                });            }.bind(this)        }).always(        );    }    supervisorCui(e) {        //客户名称与服务名称自动补全        let api = "/api/admin/order/getBusinessProjectByName";        $.ajax({            method: "get",            dataType: "json",            crossDomain: false,            url: globalConfig.context + api,            data: {                businessName: e,            },            success: function (data) {                let thedata = data.data;                if (!thedata) {                    if (data.error && data.error.length) {                        message.warning(data.error[0].message);                    }                    thedata = {};                }                this.setState({                    customerArr: thedata,                });            }.bind(this),        }).always(            function () {                this.setState({                    loading: false,                });            }.bind(this)        );    }    httpChangeCui(e) {        if (e.length >= 1) {            this.supervisorCui(e, false);        }        this.setState({            commodityName: e,        });    }    //上级主管输入框失去焦点是判断客户是否存在    selectAuto(value){        let kid=[];        let fwList=this.state.customerArr;        fwList.map(function(item){            if(value===item.bname){                kid=item.id            }        })        this.setState({            kid:kid,            commodityName:value,        })    }    componentWillMount() {        this.loadData();        this.departmentList();        this.selectSuperId();    }    openProjectSummary(record,screen){        this.setState({            projectSummary: true,            taberProvince: record.province,            taberProjectStatus: record.bpId,//项目类别            taberdepId: record.thchDepId,            screen: screen,        })    }    render() {        const dataSources=this.state.customerArr || [];        const options = dataSources.map((group,index) =>            <Select.Option key={index} value={group.bname}>{group.bname}</Select.Option>        )        return (            <div className="user-content">                <div className="content-title">                    <span>                        项目统计                        (                            {                                this.state.status === 2 ? '专利' :                                    this.state.status === 4 ? '软著' :                                        this.state.status === 1 ? '高新' :                                            this.state.status === 5 ? '商标' : '通用'                            }                        )                    </span>                </div>                <Tabs defaultActiveKey="1" className="test">                    <TabPane tab="搜索" key="1">                        <div className="user-search" style={{                            marginTop:'10px',                            marginLeft:'10px',                            marginRight:'10px'                        }}>                            <span style={{display: "inline-block",marginRight:'10px',marginBottom:'10px'}}>                                <span>项目名称:</span>                                <AutoComplete                                    className="certain-category-search"                                    dropdownClassName="certain-category-search-dropdown"                                    dropdownMatchSelectWidth={false}                                    dropdownStyle={{ width: 200 }}                                    style={{ width: 100,marginLeft:'10px' }}                                    dataSource={options}                                    placeholder="输入服务名称"                                    value={this.state.commodityName}                                    onChange={this.httpChangeCui}                                    filterOption={true}                                    onSelect={this.selectAuto}                                >                                    <Input/>                                </AutoComplete>                            </span>                            <span style={{display:"inline-block"}}>                                <span style={{marginRight:'10px',marginBottom:'10px'}}>项目类别 :</span>                                <Select                                    value={this.state.projectStatus || undefined}                                    placeholder="请选择项目类别"                                    notFoundContent="未获取到上级品类列表"                                    style={{ width: 100,marginRight:'10px',marginBottom:'10px' }}                                    onChange={(e) => {                                        let infor = this.state.contactsOptionData.filter((v)=>v.id === e);                                        this.setState({                                            projectStatus: e,                                        },()=>{                                            if(infor.length && infor[0].cname === '高新' && typeof this.state.projectType !== 'number'){                                                this.setState({                                                    columns: highTechColumns((v,screen)=>{this.openProjectSummary(v,screen)}),                                                    changeList: [],                                                    status: 1,                                                },()=>{                                                    this.loadData();                                                })                                            }else if (typeof this.state.projectType !== 'number'){                                                this.setState({                                                    columns: currency((v,screen)=>{this.openProjectSummary(v,screen)}),                                                    changeList: [],                                                    status: 0,                                                },()=>{                                                    this.loadData();                                                })                                            }else{                                                this.loadData();                                            }                                        })                                    }}                                >                                    {this.state.contactsOption}                                </Select>                            </span>                            <span style={{display:"inline-block"}}>                                <span style={{marginRight:'10px',marginBottom:'10px'}}>项目分类 :</span>                                <Select                                    value={typeof this.state.projectType === 'number' ? this.state.projectType : undefined}                                    placeholder="请选择项目分类"                                    style={{ width: 100,marginRight:'10px',marginBottom:'10px' }}                                    onChange={(e) => {                                        this.setState({                                            columns:                                                e === 0 ? currency((v,screen)=>{this.openProjectSummary(v,screen)}) :                                                    e === 1 ? invention((v,screen)=>{this.openProjectSummary(v,screen)}) :                                                        e === 2 ? softWriting((v,screen)=>{this.openProjectSummary(v,screen)}) :                                                            e === 3 ? currency((v,screen)=>{this.openProjectSummary(v,screen)}) :                                                                e === 4 ? currency((v,screen)=>{this.openProjectSummary(v,screen)}):                                                                    e === 5 ? highTechColumns((v,screen)=>{this.openProjectSummary(v,screen)}) :                                                                        e === 6 ? otherTrademarks((v,screen)=>{this.openProjectSummary(v,screen)}) :[],                                            changeList: [],                                            projectType: e,                                            status: e === 1 ? 2 : e === 2 ? 4 : e === 5 ? 1 : e === 6 ? 5 : 0, // 0通用 1高新 2发明专利 3实用新型 4软著 5商标                                        },()=>{                                            this.loadData();                                        })                                    }}                                >                                    <Option value={0}>通用</Option>                                    <Option value={1}>专利</Option>                                    <Option value={2}>软著</Option>                                    <Option value={3}>审计</Option>                                    <Option value={4}>双软</Option>                                    <Option value={5}>高新</Option>                                    <Option value={6}>商标</Option>                                </Select>                            </span>                            <span style={{display: "inline-block",marginRight:'10px',marginBottom:'10px'}}>                                <span>派单省份:</span>                                <Select                                    placeholder="请选择省份"                                    style={{ width: 100,marginRight:'10px',marginLeft:'10px',marginBottom:'10px' }}                                    value={getNewDiccityArr(this.state.province)}                                    onChange={e => {                                        this.setState({ province: e });                                    }}                                >                                    {citySelect().map(function(item) {                                        return (                                            <Select.Option key={item.value} value={item.value}>{item.label}</Select.Option>                                        );                                    })}                                </Select>                            </span>                            <span style={{display: "inline-block",marginRight:'10px',marginBottom:'10px'}}>                                <span>负责部门:</span>                                <Select                                    placeholder="请选择部门"                                    style={{ width: 200,marginRight:'10px',marginLeft:'10px',marginBottom:'10px' }}                                    value={this.state.depId || undefined}                                    onChange={e => {                                        this.setState({ depId: e });                                    }}                                >                                    {                                        this.state.departmentArr.map(function (item) {                                            return <Select.Option key={item.id} value={item.id}>{item.name}</Select.Option>                                        })                                    }                                </Select>                            </span>                            <span style={{display:"inline-block"}}>                                <span style={{marginRight:'10px',marginBottom:'10px'}}>派单时间 :</span>                                <RangePicker                                    style={{marginRight:'10px',marginBottom:'10px'}}                                    value={[                                        this.state.releaseDate[0]                                            ? moment(this.state.releaseDate[0])                                            : null,                                        this.state.releaseDate[1]                                            ? moment(this.state.releaseDate[1])                                            : null,                                    ]}                                    onChange={(data, dataString) => {                                        this.setState({ releaseDate: dataString });                                    }}                                />                            </span>                            <Button type="primary" onClick={()=>{                                if(this.state.commodityName.length === 0){                                    this.setState({                                        kid: '',                                    },()=>{                                        this.loadData();                                    })                                }else{                                    this.loadData();                                }                            }} style={{marginRight:'10px',marginBottom:'10px'}}>搜索</Button>                            <Button onClick={this.resetAll} style={{marginRight:'10px',marginBottom:'10px'}}>重置</Button>                        </div>                    </TabPane>                    <TabPane tab="更改表格显示数据" key="2">                        <div style={{ marginLeft: 10 }}>                            <ChooseList                                columns={this.state.columns}                                changeFn={this.changeList}                                changeList={this.state.changeList}                                top={55}                                margin={11}                            />                        </div>                    </TabPane>                    <TabPane tab="导出EXCEL" key="3">                        <Button type="primary" style={{margin: '10px'}} onClick={this.exportPending}>导出</Button>                    </TabPane>                </Tabs>                <div className="patent-table">                    <Spin spinning={this.state.loading}>                        <Table                            bordered                            size="middle"                            scroll={{ x: 800, y: 0 }}                            columns={                                this.state.changeList.length > 0                                    ? this.state.changeList                                    : this.state.columns                            }                            dataSource={this.state.dataSource}                            pagination={this.state.pagination}                        />                    </Spin>                </div>                {this.state.projectSummary ? <Modal                    maskClosable={false}                    className="customeDetails"                    footer=""                    title=""                    width="1800px"                    visible={this.state.projectSummary}                    onOk={()=>{                        this.setState({                            projectSummary: false                        })                    }}                    onCancel={()=>{                        this.setState({                            projectSummary: false                        })                    }}                >                    <HighTech                        searchData={{                            startDate: this.state.releaseDate.length > 0 ? this.state.releaseDate[0]: undefined, //开始时间                            endDate: this.state.releaseDate.length > 0 ? this.state.releaseDate[1]: undefined, //结束时间                            projectType: typeof this.state.projectType === 'number' ? this.state.projectType : undefined,//项目分类                            projectId: this.state.kid || undefined,                            province: this.state.taberProvince || undefined,                            projectStatus: this.state.taberProjectStatus || undefined,//项目类别                            thchDepId: this.state.taberdepId || undefined,                            status: this.state.projectType === 4 ? 2 :                                        this.state.projectType === 2 ? 3 :                                            this.state.projectType === 1 ? 4 :                                                this.state.projectType === 5 ? 1 :                                                    this.state.contactsOptionData.filter((v)=>v.id === this.state.taberProjectStatus).length > 0 ?                                                        (this.state.contactsOptionData.filter((v)=>v.id === this.state.taberProjectStatus)[0].cname === '高新' ? 1 : 0) : 0,                            screen: this.state.screen,//筛选项 0库存 1派单 2完成 3立项 4抽查 5未通过 6受理 7完结 8授权 9驳回 10下证 11申请 12公示数                        }}                        introduce={()=>(                            <div className="user-search" style={{                                marginTop:'10px',                                marginLeft:'10px',                                marginRight:'10px'                            }}>                                {this.state.taberProvince ? <span style={{display: "inline-block",marginRight:'20px',marginBottom:'10px'}}>                                    <span>派单省份:</span>                                    <span style={{ width: 100,marginLeft:'10px' }}>{getNewDiccityArr(this.state.taberProvince)}</span>                                </span> : null}                                {this.state.taberProjectStatus ? <span style={{display:"inline-block",marginRight:'20px',marginBottom:'10px'}}>                                    <span>项目类别 :</span>                                    <span style={{ width: 100,marginLeft:'10px' }}>                                        {                                            this.state.contactsOptionData.filter((v)=>v.id === this.state.taberProjectStatus)[0].cname                                        }                                    </span>                                </span> : null}                                {this.state.taberdepId ? <span style={{display: "inline-block",marginRight:'20px',marginBottom:'10px'}}>                                    <span>负责部门:</span>                                    <span style={{ width: 200,marginLeft:'10px' }}>                                        {                                            this.state.departmentArr.filter((v)=>v.id === this.state.taberdepId)[0].name                                        }                                    </span>                                </span> : null}                                {this.state.taberCommodityName ? <span style={{display: "inline-block",marginRight:'20px',marginBottom:'10px'}}>                                    <span>项目名称:</span>                                    <span  style={{ width: 100,marginLeft:'10px' }}>{this.state.taberCommodityName}</span>                                </span> : null}                                {typeof this.state.taberProjectType === 'number'?<span style={{display:"inline-block",marginRight:'20px',marginBottom:'10px'}}>                                    <span>项目分类 :</span>                                    <span style={{ width: 100,marginRight:'10px' }}>                                        {                                            this.state.taberProjectType === 0 ? '通用' :                                                this.state.taberProjectType === 1 ? '专利' :                                                    this.state.taberProjectType === 2 ? '软著' :                                                        this.state.taberProjectType === 3 ? '审计' :                                                            this.state.taberProjectType === 4 ? '双软':                                                                this.state.taberProjectType === 5 ? '高新' :                                                                    this.state.taberProjectType === 6 ? '商标' : ''                                        }                                    </span>                                </span> : null}                                {this.state.taberReleaseDate.length > 0 ? <span style={{display:"inline-block",marginRight:'20px',marginBottom:'10px'}}>                                    <span>派单时间 :</span>                                    <span style={{ width: 100,marginRight:'10px' }}>                                        {this.state.taberReleaseDate[0]+'~'+this.state.taberReleaseDate[1]}                                    </span>                                </span> : null}                            </div>                        )}                    />                </Modal> : null}            </div>        )    }}export default ProjecCount;
 |