import React, { Component } from "react"; import { message, Input, Select, Button, Spin, Table, Tabs, DatePicker, AutoComplete, } from "antd"; import $ from "jquery/src/ajax"; import { ShowModal, } from '@/tools' import { projectState, publishStatus } from '@/dataDic.js' import moment from 'moment'; import ShowModalDiv from '@/showModal.jsx'; import './membershipTable.less' const { TabPane } = Tabs class MembershipTable extends Component { constructor(props) { super(props); this.state = { searchValues: {}, loading: false, data: [ { xh: '', kh: '自动', ht: '自动', fw: '自动', hy: '自动', year: '自动', yw: '手填', xm: '手填', js: '手填', cs: '手填', xssr: '手填', gxyffy: '手填', xssr1: '手填', gxyffy1: '手填', zgzs: '手填', kjry: '手填', zb: '自动', yflxs: '手填', ndyfze: '手填', ndxssryj: '手填', bnzb: '自动', threezb: '自动', sjzq: '勾选', ylxrd: '手填', wwxms: '手填', hzxm: '手填', ygjyff: '手填', yfysd: '自动', ndsjsr: '手填', bnyfzb: '自动', thyfzb: '自动', hjtj: '勾选', tjnb: '勾选', gqnb: '勾选', sfwc: '勾选', jkrds: '手填', zscqjkf: '手填', jkyff: '手填', yfzbjba: '勾选', iswc: '勾选', sqje: '手填', gsje: '手填', qt: '手填', jkbcjf: '勾选', jkgd: '勾选', gxbcjf: '勾选', gxgd: '勾选', gzjhhy: '勾选', jdxhb: '勾选', bzwcs: '手填', bzwcl: '自动', jkysb7: '勾选', jkysb10: '勾选', dnsbs: '手填', dnsqs: '手填', qyljsqs: '手填', dnsbs1: '手填', dnsqs1: '手填', qyljsqs1: '手填', dnsbs2: '手填', dnsqs2: '手填', qyljsqs2: '手填', jzbnm: '手填', Il: '手填', IIl: '手填', htyds: '手填', sjs: '手填', htyds1: '手填', sjs1: '手填', pxqi: '手填', zxjc: '手填', mnjc: '手填', other: '手填', cxnlpj: '手填', sjsbpc: '勾选', sfzdgz: '勾选', wstj: '勾选', zztj: '勾选', gsxh: '勾选', gqbh: '勾选', time: '自动', } ], newData: [], columns: [ { title:
序号
, dataIndex: 'xh', key: 'xh', width: 44, fixed: 'left', render: (text, record, index) => { return ( {index + 1} ) } }, { title:
会员客户基本信息
, children: [ { title:
派单信息
, children: [ { title:
客户名称
, dataIndex: 'userName', key: 'userName', width: 140, }, { title:
合同编号
, dataIndex: 'contractNo', key: 'contractNo', width: 110, }, { title:
服务内容
, dataIndex: 'taskList', key: 'taskList', width: 140, render: (text, record) => { return (
{ !!text && text.map(item =>
{item.taskName}
) }
) } }, { title:
服务年份
, dataIndex: 'serviceYear', key: 'serviceYear', width: 80, }, { title:
会员级别
, dataIndex: 'memberLvl', key: 'memberLvl', width: 44, }, ], }, { title:
服务团队
, children: [ { title:
业务负责人
, dataIndex: 'taskName', key: 'taskName', width: 80, }, { title:
项目负责人
, dataIndex: 'projectName', key: 'projectName', width: 80, }, { title:
技术咨询师
, dataIndex: 'technologyName', key: 'technologyName', width: 80, }, { title:
财税咨询师
, dataIndex: 'financeTaxationName', key: 'financeTaxationName', width: 80, }, ], }, { title:
基础数据
, children: [ { title:
上上年度
, children: [ { title:
销售收入
, dataIndex: 'beforeLastRdSalesAmount', key: 'beforeLastRdSalesAmount', width: 44, }, { title:
高新研发费用
, dataIndex: 'beforeLastRdBudget', key: 'beforeLastRdBudget', width: 44, } ], }, { title:
上年度
, children: [ { title:
销售收入
, dataIndex: 'lastRdSalesAmount', key: 'lastRdSalesAmount', width: 44, }, { title:
高新研发费用
, dataIndex: 'lastRdBudget', key: 'lastRdBudget', width: 44, } ], }, { title:
本年度企业人员情况
, children: [ { title:
职工总数
, dataIndex: 'workersNumber', key: 'workersNumber', width: 44, }, { title:
科技人员
, dataIndex: 'technologyNumber', key: 'technologyNumber', width: 44, }, { title:
占比
, dataIndex: 'workersRate', key: 'workersRate', width: 60, render: (text, record) => { return ( {text || 0}% ) } } ], }, ], } ], }, { title:
 
, children: [ { title:
 
, children: [ { title:
科研立项与研发投入
, children: [ { title:
研发立项数量
, dataIndex: 'projectApprovalNumber', key: 'projectApprovalNumber', width: 44, }, { title:
年度研发预算总额
, dataIndex: 'rdBudget', key: 'rdBudget', width: 44, }, { title:
年度销售收入预计
, dataIndex: 'rdSalesAmount', key: 'rdSalesAmount', width: 44, }, { title:
本年度研发费用预算占比
, dataIndex: 'rdBudgetRate', key: 'rdBudgetRate', width: 60, render: (text, record) => { return ( {text || 0}% ) } }, { title:
三年研发费用占比预估
, dataIndex: 'threeYearsRdBudgetRate', key: 'threeYearsRdBudgetRate', width: 60, render: (text, record) => { return ( {text || 0}% ) } }, ] }, { title:
实时实际情况
, children: [ { title:
数据周期
, dataIndex: 'dataCycle', key: 'dataCycle', width: 70, render: (text, record) => { return ( {['第1季度', '上半年', '前3季度', '全年'][text]} ) } }, { title:
已立项RD数量
, dataIndex: 'actualRdNumber', key: 'actualRdNumber', width: 44, }, { title:
委外项目数量
, dataIndex: 'actualOutsourcingNumber', key: 'actualOutsourcingNumber', width: 44, }, { title:
合作项目数量
, dataIndex: 'actualCooperateNumber', key: 'actualCooperateNumber', width: 44, }, { title:
已归集研发费用总额
, dataIndex: 'actualRdAmount', key: 'actualRdAmount', width: 44, }, { title:
研发预算完成度
, dataIndex: 'rdCompletionProgress', key: 'rdCompletionProgress', width: 44, }, { title:
年度实际销售收入
, dataIndex: 'actualSalesAmount', key: 'actualSalesAmount', width: 44, }, { title:
本年度研发费用占比
, dataIndex: 'actualRdRate', key: 'actualRdRate', width: 60, render: (text, record) => { return ( {text || 0}% ) } }, { title:
三年研发费用占比
, dataIndex: 'threeYearsActualRdRate', key: 'threeYearsActualRdRate', width: 60, render: (text, record) => { return ( {text || 0}% ) } }, ] }, ] }, { title:
报表报送
, children: [ { title:
火炬统计
, dataIndex: 'torchStatus', key: 'torchStatus', width: 60, render: (text, record) => { return ( {this.getTypeData(text, record.torchOther)} ) } }, { title:
统计年报
, dataIndex: 'statisticsStatus', key: 'statisticsStatus', width: 60, render: (text, record) => { return ( {this.getTypeData(text, record.statisticsOther)} ) } }, { title:
高企年报
, dataIndex: 'chStatus', key: 'chStatus', width: 60, render: (text, record) => { return ( {this.getTypeData(text, record.chOther)} ) } }, { title:
汇算清缴
, children: [ { title:
是否完成
, dataIndex: 'finalSettlementStatus', key: 'finalSettlementStatus', width: 60, render: (text, record) => { return ( {this.getTypeData(text, record.finalSettlementOther)} ) } }, { title:
加扣RD数量
, dataIndex: 'reportFormsRdNumber', key: 'reportFormsRdNumber', width: 44, }, { title:
知识产权加扣费用
, dataIndex: 'intellectualPropertyAmount', key: 'intellectualPropertyAmount', width: 44, }, { title:
加扣研发费用金额
, dataIndex: 'reportRdAmount', key: 'reportRdAmount', width: 44, }, ] }, ] }, { title:
研发奖补
, children: [ { title:
研发准备金备案
, dataIndex: 'rdReservesStatus', key: 'rdReservesStatus', width: 60, render: (text, record) => { return ( {this.getTypeData(text, record.rdReservesOther)} ) } }, { title:
研发奖补申请
, children: [ { title:
是否完成
, dataIndex: 'rdAwardCompensationStatus', key: 'rdAwardCompensationStatus', width: 60, render: (text, record) => { return ( {this.getTypeData(text, record.rdAwardCompensationOther)} ) } }, { title:
申请金额
, dataIndex: 'rdApplicationFee', key: 'rdApplicationFee', width: 44, }, { title:
公示金额
, dataIndex: 'rdAnnouncementAmount', key: 'rdAnnouncementAmount', width: 44, }, { title:
其他
, dataIndex: 'rdAnnouncementOther', key: 'rdAnnouncementOther', width: 44, }, ] }, ] }, { title:
备查交付与归档
, children: [ { title:
加扣备查交付
, dataIndex: 'adDeliverStatus', key: 'adDeliverStatus', width: 60, render: (text, record) => { return ( {this.getTypeData(text, record.adDeliverOther)} ) } }, { title:
加扣是否归档
, dataIndex: 'adDeliverFinish', key: 'adDeliverFinish', width: 60, render: (text, record) => { return ( {['未归档', '已归档'][text]} ) } }, { title:
高新备查交付
, dataIndex: 'htDeliverStatus', key: 'htDeliverStatus', width: 60, render: (text, record) => { return ( {this.getTypeData(text, record.htDeliverOther)} ) } }, { title:
高新是否归档
, dataIndex: 'htDeliverFinish', key: 'htDeliverFinish', width: 60, render: (text, record) => { return ( {['未归档', '已归档'][text]} ) } }, ] }, { title:
日常工作
, children: [ { title:
召开上年度总结及本年工作计划会议
, dataIndex: 'closeMeetingStatus', key: 'closeMeetingStatus', width: 60, render: (text, record) => { return ( {this.getTypeData(text, record.closeMeetingOther)} ) } }, { title:
阶段性汇报
, dataIndex: 'phasedType', key: 'phasedType', width: 44, render: (text, record) => { return ( {['', '月度', '季度'][text]} ) } }, { title:
立项资料编制
, children: [ { title:
完成数量
, dataIndex: 'projectApprovalWriteNumber', key: 'projectApprovalWriteNumber', width: 44, }, { title:
完成率
, dataIndex: 'projectApprovalWriteRate', key: 'projectApprovalWriteRate', width: 60, render: (text, record) => { return ( {text || 0}% ) } }, ] }, { title:
加扣预申报
, children: [ { title:
7月
, dataIndex: 'adPrepareJulyStatus', key: 'adPrepareJulyStatus', width: 60, render: (text, record) => { return ( {this.getTypeData(text, record.adPrepareJulyOther)} ) } }, { title:
10月
, dataIndex: 'adPrepareOctoberStatus', key: 'adPrepareOctoberStatus', width: 60, render: (text, record) => { return ( {this.getTypeData(text, record.adPrepareOctoberOther)} ) } }, ] }, { title:
知识产权情况
, children: [ { title:
发明专利
, children: [ { title:
当年申报数量
, dataIndex: 'ipInventionPatentDeclare', key: 'ipInventionPatentDeclare', width: 44, }, { title:
当年授权数量
, dataIndex: 'ipInventionPatentAuthorize', key: 'ipInventionPatentAuthorize', width: 44, }, { title:
企业累计授权数量
, dataIndex: 'ipInventionPatentAuthorizeCount', key: 'ipInventionPatentAuthorizeCount', width: 44, }, ] }, { title:
实用新型专利
, children: [ { title:
当年申报数量
, dataIndex: 'ipUtilityModelDeclare', key: 'ipUtilityModelDeclare', width: 44, }, { title:
当年授权数量
, dataIndex: 'ipUtilityModelAuthorize', key: 'ipUtilityModelAuthorize', width: 44, }, { title:
企业累计授权数量
, dataIndex: 'ipUtilityModelAuthorizeCount', key: 'ipUtilityModelAuthorizeCount', width: 44, }, ] }, { title:
软著
, children: [ { title:
当年申报数量
, dataIndex: 'ipSoftwareWorksDeclare', key: 'ipSoftwareWorksDeclare', width: 44, }, { title:
当年授权数量
, dataIndex: 'ipSoftwareWorksAuthorize', key: 'ipSoftwareWorksAuthorize', width: 44, }, { title:
企业累计授权数量
, dataIndex: 'ipSoftwareWorksAuthorizeCount', key: 'ipSoftwareWorksAuthorizeCount', width: 44, }, { title:
截止本年末可用于下次高新认定数量
, dataIndex: 'ipHt', key: 'ipHt', width: 44, }, { title:
I类数量
, dataIndex: 'ipHtI', key: 'ipHtI', width: 44, }, { title:
II类数量
, dataIndex: 'ipHtIi', key: 'ipHtIi', width: 44, }, ] }, ] }, { title:
公出指标(本年度)
, children: [ { title:
合同约定次数
, dataIndex: 'publicReleaseStipulation', key: 'publicReleaseStipulation', width: 44, }, { title:
实际次数
, dataIndex: 'publicReleaseActual', key: 'publicReleaseActual', width: 44, }, ] }, { title:
培训指标(本年度)
, children: [ { title:
合同约定次数
, dataIndex: 'trainingStipulation', key: 'trainingStipulation', width: 44, }, { title:
实际次数
, dataIndex: 'trainingActual', key: 'trainingActual', width: 44, }, { title:
其他
, dataIndex: 'trainingOther', key: 'trainingOther', width: 44, }, ] }, ] }, { title:
特色工作
, children: [ { title:
专项检查
, children: [ { title:
专项检查
, dataIndex: 'zxjc', key: 'zxjc', width: 44, } ] }, { title:
模拟稽查
, children: [ { title:
模拟稽查
, dataIndex: 'mnjc', key: 'mnjc', width: 44, } ] }, ] }, { title:
其他事项说明
, dataIndex: 'other', key: 'other', width: 90, }, ] }, { title:
高新认定
, dataIndex: 'gxrd', key: 'gxrd', children: [ { title:
基础情况
, children: [ { title:
创新能力评价评分
, dataIndex: 'htScore', key: 'htScore', width: 44, }, { title:
实际申报批次
, dataIndex: 'htBatch', key: 'htBatch', width: 60, render: (text, record) => { return ( {['第1批', '第2批', '第3批'][text]} ) } }, { title:
是否重点关注
, dataIndex: 'htFocus', key: 'htFocus', width: 44, render: (text, record) => { return ( {['否', '是'][text]} ) } }, ], }, { title:
申报提交
, children: [ { title:
网上系统提交
, dataIndex: 'webSubmit', key: 'webSubmit', width: 60, render: (text, record) => { return ( {this.getTypeData(text, record.webSubmitOther)} ) } }, { title:
纸质材料提交
, dataIndex: 'paperSubmit', key: 'paperSubmit', width: 60, render: (text, record) => { return ( {this.getTypeData(text, record.paperSubmitOther)} ) } }, ], }, { title:
评审情况
, children: [ { title:
审计评审
, // reviewProvince children: [{ title:
拟公示序号
, dataIndex: 'reviewProvinceNumber', key: 'reviewProvinceNumber', width: 44, }], }, { title:
国家备案
, // reviewCountry children: [{ title:
高企编号
, dataIndex: 'reviewCountryNumber', key: 'reviewCountryNumber', width: 44, }], }, ], }, ] }, { title:
最近一次更新时间
, dataIndex: 'updateTime', key: 'updateTime', width: 80, }, ], pagination: { defaultCurrent: 1, defaultPageSize: 10, showQuickJumper: true, pageSize: 10, onChange: function (page) { this.getDetailsList(page); }.bind(this), showTotal: function (total) { return "共" + total + "条数据"; }, }, customerArr: [], } this.exportExec = this.exportExec.bind(this); this.search = this.search.bind(this); this.reset = this.reset.bind(this); this.supervisor = this.supervisor.bind(this); this.httpChange = this.httpChange.bind(this); this.blurChange = this.blurChange.bind(this); this.selectAuto = this.selectAuto.bind(this); } componentDidMount() { this.getDetailsList() } getDetailsList(pageNo) { const { searchValues, pagination } = this.state; this.setState({ loading: true, }) let datas = Object.assign(searchValues, { pageNo: pageNo || 1, pageSize: pagination.pageSize, }); $.ajax({ method: 'get', dataType: 'json', crossDomain: false, url: globalConfig.context + '/api/admin/taskDetails/detailsList', data: datas, success: function (data) { ShowModal(this) if (data.data.list) { pagination.current = data.data.pageNo; pagination.total = data.data.totalCount; if (data.data && data.data.list && !data.data.list.length) { pagination.current = 0; pagination.total = 0; } this.setState({ newData: data.data.list, pagination: this.state.pagination, pageNo: data.data.pageNo, }); } else { this.setState({ newData: data.data, pagination: false, }); } }.bind(this), }).always( function () { this.setState({ loading: false, }) }.bind(this) ) } exportExec() { message.config({ duration: 20, }); let loading = message.loading("下载中..."); this.setState({ exportPendingLoading: true, }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + '/api/admin/taskDetails/export', data: {}, success: function (data) { if (data.error.length === 0) { this.download(data.data); } else { message.warning(data.error[0].message); } }.bind(this), }).always( function () { loading(); this.setState({ exportPendingLoading: false, }); }.bind(this) ); } download(fileName) { window.location.href = globalConfig.context + "/open/download?fileName=" + fileName; } getTypeData(type, other) { let text = '' let list = ['其他', '待完成', '已完成', '合同无此项'] if (!type && type != 0) { text = '' } else if (type == 0) { text = `其他(${other})` } else { text = list[type] } return text } supervisor(e) { $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/customer/listAdminByName", data: { adminName: 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 () { }.bind(this) ); } // 输入触发 httpChange(e) { if (e.length >= 1) { this.supervisor(e); } this.setState({ auto: e, }); } // 选中 selectAuto(value, options) { const { searchValues } = this.state let contactLists = this.state.customerArr || []; if (value) { contactLists.map(function (item) { if (item.name == value.toString()) { searchValues["projectDebtorId"] = item.id; } }); } this.setState({ auto: value, searchValues: searchValues, }); } // 失去焦点 blurChange(e) { const { searchValues } = this.state let contactLists = this.state.customerArr || []; if (e) { contactLists.map(function (item) { if (item.name == e.toString()) { searchValues["projectDebtorId"] = item.id; } }); } this.setState({ searchValues: searchValues, }); } search() { this.getDetailsList(); } reset() { this.setState({ searchValues: {} }) this.getDetailsList(1) } render() { const { columns, data, searchValues, newData } = this.state const dataSources = this.state.customerArr || []; const options = dataSources.map((group) => ( {group.name} )); return (
{ this.setState({ showModal: false }) }} />
会员可视化进度表
{ searchValues["consultantName"] = e.target.value; this.setState({ searchValues: searchValues, }); }} /> { searchValues["contractNo"] = e.target.value; this.setState({ searchValues: searchValues, }); }} /> { searchValues["userName"] = e.target.value; this.setState({ searchValues: searchValues, }); }} /> { searchValues["serviceYear"] = e.target.value; this.setState({ searchValues: searchValues, }); }} /> 更新时间: { searchValues["updateTime"] = dataString; this.setState({ searchValues: searchValues, }); }} />
); } } export default MembershipTable;