import React from 'react'; import { Icon, InputNumber, Form, Button, Input, Radio, Select, Spin, Table, DatePicker, message, Cascader, Modal } from 'antd'; import { cognizanceStateList } from '../../../dataDic.js'; import { provinceSelect, getProvince } from '../../../NewDicProvinceList'; import { techFieldList } from '../../../DicTechFieldList.js'; import { getTime, getCognizanceState, companySearch, getSearchUrl } from '../../../tools.js'; import ajax from 'jquery/src/ajax/xhr.js'; import $ from 'jquery/src/ajax'; import moment from 'moment'; import './highTechFoster.less'; const CognizanceDescFrom = Form.create()(React.createClass({ loadData(uid, cid, year) { this.setState({ loading: true }); $.ajax({ method: "post", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/cognizanceDetail", data: { cid: cid || this.props.data.cid, uid: uid || this.props.data.uid, year: year || this.props.data.year }, success: function (data) { if (!data.data) { if (data.error && data.error.length) { message.warning(data.error[0].message); }; return; }; this.state.data = data.data; this.state.cid = this.props.data.cid; this.state.moneyTable = [{ key: 1, year: '前一年', netAsset: data.data.netAsset1, salesRevenue: data.data.salesRevenue1, grossProfit: data.data.grossProfit1 }, { key: 2, year: '前二年', netAsset: data.data.netAsset2, salesRevenue: data.data.salesRevenue2, grossProfit: data.data.grossProfit2 }, { key: 3, year: '前三年', netAsset: data.data.netAsset3, salesRevenue: data.data.salesRevenue3, grossProfit: data.data.grossProfit3 }]; if (data.data.netAsset2 == 0) { this.state.netAssetRate = 0; } else if (data.data.netAsset3 == 0) { this.state.netAssetRate = (data.data.netAsset1 / data.data.netAsset2) - 1; } else { this.state.netAssetRate = 1 / 2 * (data.data.netAsset2 / data.data.netAsset3 + data.data.netAsset1 / data.data.netAsset2) - 1; }; if (this.state.netAssetRate < 0 || isNaN(this.state.netAssetRate)) { this.state.netAssetRate = 0 }; if (data.data.salesRevenue2 == 0) { this.state.salesRevenueRate = 0; } else if (data.data.salesRevenue3 == 0) { this.state.salesRevenueRate = (data.data.salesRevenue1 / data.data.salesRevenue2) - 1; } else { this.state.salesRevenueRate = 1 / 2 * (data.data.salesRevenue2 / data.data.salesRevenue3 + data.data.salesRevenue1 / data.data.salesRevenue2) - 1; }; if (this.state.salesRevenueRate < 0 || isNaN(this.state.salesRevenueRate)) { this.state.salesRevenueRate = 0 }; }.bind(this), }).always(function () { this.setState({ loading: false }); }.bind(this)); }, getStateData(cid) { this.setState({ loading: true }); $.ajax({ method: "post", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/cognizanceLog", data: { cid: cid || this.props.data.cid }, success: function (data) { if (!data.data) { if (data.error && data.error.length) { message.warning(data.error[0].message); } return; }; this.state.stateTable = []; for (let i = 0; i < data.data.length; i++) { this.state.stateTable.push({ key: i, recordTimeFormattedDate: data.data[i].recordTimeFormattedDate, state: data.data[i].state, principal: data.data[i].principal, operator: data.data[i].operator, comment: data.data[i].comment }); }; }.bind(this), }).always(function () { this.setState({ loading: false }); }.bind(this)); }, getBusinessCount(uid, year) { this.setState({ loading: true }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/getBusinessCount", data: { uid: uid || this.props.data.uid, year: year || this.props.data.year }, success: function (data) { if (!data.data) { if (data.error && data.error.length) { message.warning(data.error[0].message); } return; }; this.setState({ patentDone: data.data.patentDone, //专利已下证数量 patentUndone: data.data.patentUndone, //专利未下证数量 copyrightDone: data.data.copyrightDone,//软著已下证数量 copyrightUndone: data.data.copyrightUndone,//软著未下证数量 techProjectDone: data.data.techProjectDone,//科技项目申报审批已通过数量 techProjectUndone: data.data.techProjectUndone//科技项目申报审批未通过数量 }); }.bind(this), }).always(function () { this.setState({ loading: false }); }.bind(this)); }, getContactsList(uid) { $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/getContacts", data: { uid: uid || this.props.data.uid }, success: function (data) { let theOption = []; if (data.error.length || !data.data) { return; }; for (let item in data.data) { let theData = data.data[item]; theOption.push( <Select.Option value={item} key={theData}>{theData}</Select.Option> ); }; this.setState({ contactsOption: theOption }); }.bind(this), }); }, getOptionList() { this.setState({ loading: true }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/cognizanceStatus", success: function (data) { let _me = this; if (!data.data) { if (data.error && data.error.length) { message.warning(data.error[0].message); return; }; }; _me.state.stateOption = []; for (var item in data.data) { _me.state.stateOption.push( <Select.Option value={item} key={item}>{data.data[item]}</Select.Option> ) }; }.bind(this), }).always(function () { this.setState({ loading: false }); }.bind(this)); }, getInitialState() { return { loading: false, stateOption: [], moneyColumns: [{ title: '', dataIndex: 'year', key: 'year', }, { title: '净资产', dataIndex: 'netAsset', key: 'netAsset', }, { title: '销售收入', dataIndex: 'salesRevenue', key: 'salesRevenue', }, { title: '利润总额', dataIndex: 'grossProfit', key: 'grossProfit', }], stateColumns: [{ title: '认证状态', dataIndex: 'state', key: 'state', render: (text) => { return getCognizanceState(text) } }, { title: '处理时间', dataIndex: 'recordTimeFormattedDate', key: 'recordTimeFormattedDate', }, { title: '负责人', dataIndex: 'principal', key: 'principal', }, { title: '操作人', dataIndex: 'operator', key: 'operator', }, { title: '备注', dataIndex: 'comment', key: 'comment', }] }; }, componentWillMount() { this.loadData(); this.getBusinessCount(); this.getOptionList(); this.getStateData(); this.getContactsList(); }, handleSubmit(e) { e.preventDefault(); this.props.form.validateFields((err, values) => { if (values.state || values.principal || values.recordTime || values.comment) { if (!values.state || !values.principal || !values.recordTime) { message.warning("请填写完整的状态流转信息!"); return; }; }; if (!err) { this.props.spinState(true); $.ajax({ method: "POST", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/disposeCognizanceDetail", data: { id: this.props.data.cid, uid: this.props.data.uid, technicalField1: values.technicalField[0], technicalField2: values.technicalField[1], technicalField3: values.technicalField[2], basicResearchCost: values.basicResearchCost, largeOrder: values.largeOrder, contacts: values.contacts, accident: values.accident, certificateNumber: values.certificateNumber, recordTimeFormattedDate: values.recordTime ? values.recordTime.format("YYYY-MM-DD HH:mm:ss") : undefined, state: values.state, principal: values.principal, comment: values.comment, year: this.state.data.year } }).done(function (data) { if (!data.error.length) { message.success('保存成功!'); this.props.clickOk(); this.props.form.resetFields(); this.state.targetKeys = []; this.state.selectedKeys = []; this.props.spinState(false); } else { message.warning(data.error[0].message); this.props.spinState(false); } }.bind(this)); } }); }, componentWillReceiveProps(nextProps) { if (!this.props.visible && nextProps.visible) { this.getStateData(nextProps.data.cid); this.getBusinessCount(nextProps.data.uid, nextProps.data.year); this.loadData(nextProps.data.uid, nextProps.data.cid, nextProps.data.year); this.getContactsList(nextProps.data.uid); this.props.form.resetFields(); }; }, render() { const FormItem = Form.Item; const { getFieldDecorator } = this.props.form; const theData = this.state.data; const formItemLayout = { labelCol: { span: 6 }, wrapperCol: { span: 12 }, }; const _me = this; if (this.state.data) { return ( <Spin spinning={this.state.loading} > <Form onSubmit={this.handleSubmit} id="highTechApply-form"> <div className="clearfix"> <div className="half-item"> <span className="item-title">公司名称: </span> <span>{theData.unitName}</span> </div> <div className="half-item"> <span className="item-title">公司组织机构代码: </span> <span>{theData.orgCode}</span> </div> <div className="half-item"> <span className="item-title">公司地址: </span> <span>{theData.postalAddress}</span> </div> <div className="half-item"> <span className="item-title">申请年份: </span> <span>{theData.year}</span> </div> </div> <div className="form-title">相关科技服务详情: </div> <div className="clearfix"> <div className="half-item"> <span className="item-title"> <a href={globalConfig.context + "/admin/servicesManage/patent.html?uid=" + theData.uid + "#comprehensive"}>专利数量: </a> </span> <span> 已下证 {this.state.patentDone || 0} 项</span> <span> 未下证 {this.state.patentUndone || 0} 项</span> </div> <div className="half-item"> <span className="item-title"> <a href={globalConfig.context + "/admin/servicesManage/copyright.html?uid=" + theData.uid + "#copyright"}>软著数量: </a> </span> <span> 已下证 {this.state.copyrightDone || 0} 项</span> <span> 未下证 {this.state.copyrightUndone || 0} 项</span> </div> <div className="half-item"> <span className="item-title"> <a href={globalConfig.context + "/admin/servicesManage/technology.html?uid=" + theData.uid + "#applyManage"}>科技项目数量: </a> </span> <span> 已通过 {this.state.techProjectDone || 0} 项</span> <span> 未通过 {this.state.techProjectUndone || 0} 项</span> </div> </div> <div className="form-title">状态流转记录: </div> <Table style={{ background: "#eee" }} pagination={false} dataSource={this.state.stateTable} columns={this.state.stateColumns} /> <div className="clearfix" style={{ paddingTop: '20px', background: '#eee' }}> <FormItem className="half-item" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="状态流转" > {getFieldDecorator('state')( <Select style={{ width: 200 }} placeholder="选择一个状态"> {this.state.stateOption} </Select> )} </FormItem> <FormItem className="half-item" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="处理时间" > {getFieldDecorator('recordTime')( <DatePicker /> )} </FormItem> <FormItem className="half-item" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="负责人" > {getFieldDecorator('principal')( <Select showSearch filterOption={companySearch} placeholder="选择负责人"> {this.props.authorOption} </Select> )} </FormItem> <FormItem className="half-item" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="备注"> {getFieldDecorator('comment')( <Input /> )} </FormItem> </div> <div className="clearfix"> <FormItem className="half-item" labelCol={{ span: 3 }} wrapperCol={{ span: 14 }} > <span className="item-title">联系人: </span> {getFieldDecorator('contacts', { rules: [{ required: true, message: '此项为必填项!' }], initialValue: theData.contacts })( <Select style={{ display: 'inline-block', width: '200px' }} placeholder='选择一个联系人'> {this.state.contactsOption} </Select> )} </FormItem> <FormItem className="half-item" labelCol={{ span: 3 }} wrapperCol={{ span: 14 }} > <span className="item-title">证书编号: </span> {getFieldDecorator('certificateNumber', { initialValue: theData.certificateNumber })( <Input style={{ width: '200px' }} placeholder='高企证书编号' /> )} </FormItem> <FormItem className="half-item" labelCol={{ span: 3 }} wrapperCol={{ span: 14 }} > <span className="item-title">订单金额超过十万: </span> {getFieldDecorator('largeOrder', { initialValue: theData.largeOrder })( <Radio.Group> <Radio value="0">否</Radio> <Radio value="1">是</Radio> </Radio.Group> )} </FormItem> </div> <FormItem style={{ width: '50%' }} labelCol={{ span: 0 }} wrapperCol={{ span: 24 }} label="技术领域" > <span className="item-title">技术领域: </span> {getFieldDecorator('technicalField', { rules: [{ type: 'array', required: true, message: '此项为必填项!' }], initialValue: [theData.technicalField1, theData.technicalField2, theData.technicalField3] })( <Cascader options={techFieldList} placeholder="请选择技术领域" /> )} </FormItem> <div className="clearfix"> <div> <span className="form-title">获得知识产权数量(件): </span> </div> <div className="half-item"> <span className="item-title">一类: </span> <span>{theData.firstCatagory}</span> </div> <div className="half-item"> <span className="item-title">二类: </span> <span>{theData.secondCatagory}</span> </div> </div> <div className="clearfix"> <div> <span className="form-title">人力资源状况(人): </span> </div> <div className="half-item"> <span className="item-title">职工总数: </span> <span>{theData.firmTotal}</span> </div> <div className="half-item"> <span className="item-title">科技人员数: </span> <span>{theData.techTotal}</span> </div> </div> <div className="form-title">近三年经营状况(万元): </div> <Table pagination={false} dataSource={this.state.moneyTable} columns={this.state.moneyColumns} /> <div className="clearfix"> <div className="half-item"> <span className="item-title">净资产增长率: </span> <span>{isNaN(this.state.netAssetRate) ? '数据错误无法计算' : (this.state.netAssetRate * 100).toFixed(2) + '%'}</span> </div> <div className="half-item"> <span className="item-title">销售收入增长率: </span> <span>{isNaN(this.state.salesRevenueRate) ? '数据错误无法计算' : (this.state.salesRevenueRate * 100).toFixed(2) + '%'}</span> </div> </div> <div className="clearfix"> <div><span className="form-title">近三年研究开发费用总额(万元): </span></div> <div className="third-item"> <div className="item-title">近三年研究开发费用总额</div> <p>{theData.researchCost}</p> </div> <div className="third-item"> <div className="item-title">其中: 在中国境内研发费用总和</div> <p>{theData.territory}</p> </div> <div className="third-item"> <div className="item-title">其中: 基础研究投入费用总额</div> <div> <FormItem labelCol={{ span: 0 }} wrapperCol={{ span: 24 }} > {getFieldDecorator('basicResearchCost', { rules: [{ type: 'number', required: true, message: '此项为必填项!' }], initialValue: theData.basicResearchCost })( <InputNumber min={0} max={999999} step={0.01} /> )} </FormItem> </div> </div> </div> <div> <span className="item-title">近一年企业总收入(万元): </span> <span>{theData.totalRevenue}</span> </div> <div> <span className="item-title">近一年高新技术产品收入(万元): </span> <span>{theData.lastYearRevenue}</span> </div> <div className="item-title">申请认定前一年内是否发生过重大安全、重大质量或严重环境违法行为</div> <FormItem labelCol={{ span: 0 }} wrapperCol={{ span: 24 }} > {getFieldDecorator('accident', { rules: [{ type: 'number', required: true, message: '此项为必填项!' }], initialValue: theData.accident })( <Radio.Group> <Radio value={0}>否</Radio> <Radio value={1}>是</Radio> </Radio.Group> )} </FormItem> <FormItem style={{ marginTop: '20px' }}> <Button className="set-submit" type="primary" htmlType="submit">保存</Button> <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button> </FormItem> </Form > </Spin> ); } else { return (<div></div>) }; }, })); const CognizanceDesc = React.createClass({ getInitialState() { return { visible: false, loading: false }; }, componentWillReceiveProps(nextProps) { this.state.visible = nextProps.showDesc }, showModal() { this.setState({ visible: true, }); }, handleOk() { this.setState({ visible: false, }); this.props.closeDesc(false, true); }, handleCancel(e) { this.setState({ visible: false, }); this.props.closeDesc(false); }, spinChange(e) { this.setState({ loading: e }); }, render() { return ( <div className="patent-addNew"> <Modal maskClosable={false} title="高企管理" visible={this.state.visible} onOk={this.handleOk} onCancel={this.handleCancel} width='1000px' footer='' > <Spin spinning={this.state.loading} className='spin-box'> <CognizanceDescFrom visible={this.state.visible} contactsOption={this.props.contactsOption} authorOption={this.props.authorOption} data={this.props.data} spinState={this.spinChange} closeModal={this.handleCancel} clickOk={this.handleOk} /> </Spin> </Modal> </div> ); } }); const CognizanceAdd = React.createClass({ getInitialState() { return { visible: false, loading: false, yearOption: [] }; }, getContactsList(theUid) { $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/getContacts", data: { uid: theUid }, success: function (data) { let theOption = []; if (data.error.length || !data.data) { return; }; for (let item in data.data) { let theData = data.data[item]; theOption.push( <Select.Option value={item} key={theData}>{theData}</Select.Option> ); }; this.setState({ contactsOption: theOption }); }.bind(this), }); }, componentWillReceiveProps(nextProps) { if (!this.props.showAdd && nextProps.showAdd) { this.state.year = undefined; this.state.contacts = undefined; this.state.comment = undefined; this.state.consultant = undefined; this.state.salesman = undefined; this.state.uid = undefined; }; this.state.visible = nextProps.showAdd; }, componentWillMount() { let d = new Date(); let _me = this; d = d.getFullYear() - 1; this.state.thisYear = d; for (let i = d; i < d + 20; i++) { _me.state.yearOption.push( <Select.Option key={i.toString()}>{i}</Select.Option> ) }; }, showModal() { this.setState({ visible: true, }); }, handleOk() { this.setState({ loading: true }); if (!this.state.year) { message.warning('请选择年份!'); this.setState({ loading: false }); return; }; if (!this.state.contacts) { message.warning('请选择一个联系人!'); this.setState({ loading: false }); return; }; if (!this.state.salesman) { message.warning('请选择一个营销员!'); this.setState({ loading: false }); return; }; $.ajax({ method: "POST", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/applyCognizance", data: { year: this.state.year, contacts: this.state.contacts, comment: this.state.comment, consultant: this.state.consultant, salesman: this.state.salesman, largeOrder: this.state.largeOrder, uid: this.state.uid } }).done(function (data) { if (!data.error.length) { message.success('保存成功!'); this.setState({ visible: false, loading: false }); this.props.closeAdd(false, true); } else { message.warning(data.error[0].message); this.setState({ loading: false }); } }.bind(this)); }, handleCancel(e) { this.setState({ visible: false, }); this.props.closeAdd(false); }, spinChange(e) { this.setState({ loading: e }); }, render() { return ( <div className="cognizance-add"> <Modal maskClosable={false} title="高企申请" visible={this.state.visible} onOk={this.handleOk} onCancel={this.handleCancel} width='800px' footer={[ <Button key="submit" type="primary" loading={this.state.loading} onClick={this.handleOk}> 提交 </Button>, <Button key="back" onClick={this.handleCancel}> 返回 </Button>, ]} > <Spin spinning={this.state.loading} className='spin-box'> <div className="clearfix" style={{ marginBottom: '10px' }}> <div className="half-item"> <span>选择公司: </span> <Select placeholder="请选择公司" style={{ width: 260 }} showSearch filterOption={companySearch} value={this.state.uid} onSelect={(e, n) => { this.setState({ uid: e }); this.getContactsList(e); }}> {this.props.companyOption} </Select> </div> </div> <div className="clearfix"> <div className="half-item"> <span>选择申请年份: </span> <Select placeholder="请选择年份" style={{ width: 200 }} value={this.state.year} onSelect={(e, n) => { this.setState({ year: e }); }}> {this.state.yearOption} </Select> </div> <div className="half-item"> <span>订单金额超过十万: </span> <Radio.Group onChange={(e) => { this.state.largeOrder = e.target.value }}> <Radio value="0">否</Radio> <Radio value="1">是</Radio> </Radio.Group> </div> <div className="half-item"> <span>选择联系人: </span> <Select placeholder="请选择联系人" style={{ width: 200 }} value={this.state.contacts} onSelect={(e, n) => { this.setState({ contacts: e }); }}> {this.state.contactsOption} </Select> </div> </div> <div> <div> <span>派单详情: </span> <Input type="textarea" rows={6} value={this.state.comment} onChange={(e) => { this.setState({ comment: e.target.value }); }} /> </div> </div> <div className="clearfix" style={{ marginTop: 20 }}> <div className="half-item"> <span>选择营销员: </span> <Select placeholder="请选择营销员" style={{ width: 200 }} value={this.state.salesman} onSelect={(e, n) => { this.setState({ salesman: e }); }}> {this.props.salesmanOption} </Select> </div> </div> </Spin> </Modal> </div> ); } }); const Cognizance = React.createClass({ loadData(pageNo) { this.state.data = []; this.setState({ loading: true }); $.ajax({ method: "post", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/listCognizance", data: { pageNo: pageNo || 1, pageSize: this.state.pagination.pageSize, locationProvince: this.state.province ? this.state.province[0] : undefined, uid: this.state.unitName, contractId: this.state.contractId }, success: function (data) { let theArr = []; if (data.error.length || !data.data || !data.data.list) { message.warning(data.error[0].message); return; }; for (let i = 0; i < data.data.list.length; i++) { let thisdata = data.data.list[i]; theArr.push({ key: i, uid: thisdata.uid, cid: thisdata.cid, year: thisdata.year, contractNumber: thisdata.contractNumber, serialNumber: thisdata.serialNumber, locationProvince: thisdata.locationProvince, unitName: thisdata.unitName, largeOrder: thisdata.largeOrder, contacts: [thisdata.contacts, { '1': thisdata.firstContacts, '2': thisdata.secondContacts, '3': thisdata.thirdContacts }], createTime: thisdata.createTime, comment: thisdata.comment, state: thisdata.state, certificateNumber: thisdata.certificateNumber, issuingDate: thisdata.issuingDate, consultant: thisdata.consultant, createTimeFormattedDate: thisdata.createTimeFormattedDate, issuingDateFormattedDate: thisdata.issuingDateFormattedDate, founder: thisdata.founder }); }; this.state.pagination.current = data.data.pageNo; this.state.pagination.total = data.data.totalCount; this.setState({ dataSource: theArr, pagination: this.state.pagination }); }.bind(this), }).always(function () { this.setState({ loading: false }); }.bind(this)); }, getAuthorList() { this.setState({ loading: true }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/getPrincipal", success: function (data) { if (!data.data) { if (data.error && data.error.length) { message.warning(data.error[0].message); }; return; }; let _me = this; for (var item in data.data) { _me.state.authorOption.push( <Select.Option value={item} key={item}>{data.data[item]}</Select.Option> ) }; }.bind(this), }).always(function () { this.setState({ loading: false }); }.bind(this)); }, getSalesmanList() { this.setState({ loading: true }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/salesman", success: function (data) { if (!data.data) { if (data.error && data.error.length) { message.warning(data.error[0].message); } return; }; let _me = this, theArr = []; for (var item in data.data) { theArr.push( <Select.Option value={item} key={item}>{data.data[item]}</Select.Option> ) }; this.setState({ salesmanOption: theArr }); }.bind(this), }).always(function () { this.setState({ loading: false }); }.bind(this)); }, getCompanyList() { this.setState({ loading: true }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/getUnitNames", success: function (data) { if (data.error.length || !data.data) { return; }; let _me = this; for (var item in data.data) { _me.state.companyOption.push( <Select.Option value={item} key={item}>{data.data[item]}</Select.Option> ) }; }.bind(this), }).always(function () { this.setState({ loading: false }); }.bind(this)); }, getInitialState() { return { companyOption: [], authorOption: [], selectedRowKeys: [], selectedRows: [], loading: false, showAdd: false, showDesc: false, pagination: { defaultCurrent: 1, defaultPageSize: 10, showQuickJumper: true, pageSize: 10, onChange: function (page) { this.loadData(page); }.bind(this), showTotal: function (total) { return '共' + total + '条数据'; } }, columns: [ { title: '编号', dataIndex: 'serialNumber', key: 'serialNumber' }, { title: '省份', dataIndex: 'locationProvince', key: 'locationProvince', render: text => { return getProvince(text) } }, { title: '公司', dataIndex: 'unitName', key: 'unitName' }, { title: '联系人', dataIndex: 'contacts', key: 'contacts', render: (text) => { for (let item in text[1]) { if (text[0] == item) { return text[1][item]; }; }; } }, { title: '合同编号', dataIndex: 'contractNumber', key: 'contractNumber' }, { title: '年份', dataIndex: 'year', key: 'year' }, { title: '派单日', dataIndex: 'createTimeFormattedDate', key: 'createTimeFormattedDate' }, { title: '状态', dataIndex: 'state', key: 'state', render: (text) => { return getCognizanceState(text) } }, { title: '证书编号', dataIndex: 'certificateNumber', key: 'certificateNumber' }, { title: '发证日', dataIndex: 'issuingDateFormattedDate', key: 'issuingDateFormattedDate' }, { title: '到期日', dataIndex: 'issuingDate', key: 'issuingDate', render: (text) => { return getTime(text, 36) } }, { title: '创建人', dataIndex: 'founder', key: 'founder' } ], dataSource: [] }; }, getContractList() { this.setState({ loading: true }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/contract/serialNumber", success: function (data) { if (!data.data) { if (data.error && data.error.length) { message.warning(data.error[0].message); }; return; }; let theArr = []; for (let i = 0; i < data.data.length; i++) { let item = data.data[i]; theArr.push( <Select.Option value={item.contractId} key={item.contractId}>{item.serialNumber}</Select.Option> ); }; this.setState({ contractListOption: theArr }); }.bind(this), }).always(function () { this.setState({ loading: false }); }.bind(this)); }, componentWillMount() { let _me = this; this.getAuthorList(); this.getSalesmanList(); this.getCompanyList(); this.getContractList(); if (window.location.search) { let theObj = getSearchUrl(window.location.search); if (theObj.rid) { theObj.cid = theObj.rid; if (theObj.rid != 'null' && theObj.uid != 'null' && theObj.year != 'null') { this.tableRowClick(theObj); }; } else { if (theObj.uid) { this.state.unitName = theObj.uid; } else if (theObj.contractId) { this.state.contractId = theObj.contractId; }; }; }; this.loadData(); // this.getContactsList(); }, tableRowClick(record, index) { this.state.RowData = record; this.setState({ showDesc: true }); }, addClick() { this.setState({ showAdd: true }); }, delectRow() { let deletedIds = []; for (let idx = 0; idx < this.state.selectedRows.length; idx++) { let rowItem = this.state.selectedRows[idx]; if (rowItem.cid) { deletedIds.push(rowItem.cid) } } this.setState({ selectedRowKeys: [], loading: deletedIds.length > 0 }); $.ajax({ method: "POST", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/deleteCognizance", data: { ids: deletedIds } }).done(function (data) { if (!data.error.length) { message.success('删除成功!'); this.setState({ loading: false, }); } else { message.warning(data.error[0].message); }; this.loadData(); }.bind(this)); }, closeDesc(e, s) { this.state.showDesc = e; if (s) { this.loadData(); }; }, closeAdd(e, s) { this.state.showAdd = e; if (s) { this.loadData(); }; }, search() { this.loadData(); }, reset() { this.state.province = undefined; this.state.unitName = undefined; this.state.contractId = undefined; this.loadData(); }, render() { const rowSelection = { selectedRowKeys: this.state.selectedRowKeys, onChange: (selectedRowKeys, selectedRows) => { this.setState({ selectedRows: selectedRows, selectedRowKeys: selectedRowKeys }); } }; const hasSelected = this.state.selectedRowKeys.length > 0; return ( <div className="foster-content" > <div className="content-title"> <span>高企申请管理</span> </div> <div className="foster-query"> <Cascader placeholder="选择省份" style={{ width: 100, marginTop: "-4px", marginRight: '20px' }} value={this.state.province} options={provinceSelect()} showSearch filterOption={companySearch} onChange={(e) => { this.setState({ province: e }) }} /> <Select placeholder="选择公司" style={{ width: 200 }} value={this.state.unitName} showSearch filterOption={companySearch} onChange={(e) => { this.setState({ unitName: e }) }}> {this.state.companyOption} </Select> <Select placeholder="选择合同编号" style={{ width: 120 }} value={this.state.contractId} showSearch filterOption={companySearch} onChange={(e) => { this.setState({ contractId: e }) }}> {this.state.contractListOption} </Select> <Button type="primary" onClick={this.search}>搜索</Button> <Button onClick={this.reset}>重置</Button> <Button style={{ background: "#3fcf9e", border: "none", color: "#fff" }} disabled={!hasSelected} onClick={this.delectRow}>删除<Icon type="minus" /></Button> </div> <div className="patent-table"> <Spin spinning={this.state.loading}> <Table columns={this.state.columns} dataSource={this.state.dataSource} pagination={this.state.pagination} rowSelection={rowSelection} onRowClick={this.tableRowClick} /> </Spin> </div> <CognizanceDesc data={this.state.RowData} authorOption={this.state.authorOption} showDesc={this.state.showDesc} closeDesc={this.closeDesc} /> <CognizanceAdd authorOption={this.state.authorOption} salesmanOption={this.state.salesmanOption} companyOption={this.state.companyOption} showAdd={this.state.showAdd} closeAdd={this.closeAdd} /> </div > ); } }); export default Cognizance; //<Button style={{ background: "#ea0862", border: "none", color: "#fff", float: 'right' }} //onClick={this.addClick}>添加新申请<Icon type="plus" /></Button>