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;