import React, { Component } from "react";
import {
message,
Input,
Select,
Button,
Spin,
Table,
Tabs,
DatePicker,
AutoComplete,
Modal,
} 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'
import Progress from './progress'
const { TabPane } = Tabs
const { RangePicker, } = DatePicker;
class MembershipTable extends Component {
constructor(props) {
super(props);
this.state = {
visible: false,
tid: '',
searchValues: {
roleStatus: adminData.isSuperAdmin ? '0' : '1'
},
loading: false,
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,
render: (text, record) => {
return (
{['', 'A', 'AA', 'AAA'][text]}
)
}
},
],
},
{
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: 'beforeLastYear',
key: 'beforeLastYear',
width: 44,
},
{
title: 销售收入
,
dataIndex: 'beforeLastRdSalesAmount',
key: 'beforeLastRdSalesAmount',
width: 44,
},
{
title: 高新研发费用
,
dataIndex: 'beforeLastRdBudget',
key: 'beforeLastRdBudget',
width: 44,
}
],
},
{
title: 上年度
,
children: [
{
title: 年份
,
dataIndex: 'lastYear',
key: 'lastYear',
width: 44,
},
{
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: 80,
},
{
title: 当年授权数量
,
dataIndex: 'ipInventionPatentAuthorize',
key: 'ipInventionPatentAuthorize',
width: 80,
},
{
title: 企业累计授权数量
,
dataIndex: 'ipInventionPatentAuthorizeCount',
key: 'ipInventionPatentAuthorizeCount',
width: 80,
},
]
},
{
title: 实用新型专利
,
children: [
{
title: 当年申报数量
,
dataIndex: 'ipUtilityModelDeclare',
key: 'ipUtilityModelDeclare',
width: 80,
},
{
title: 当年授权数量
,
dataIndex: 'ipUtilityModelAuthorize',
key: 'ipUtilityModelAuthorize',
width: 80,
},
{
title: 企业累计授权数量
,
dataIndex: 'ipUtilityModelAuthorizeCount',
key: 'ipUtilityModelAuthorizeCount',
width: 80,
},
]
},
{
title: 软著
,
children: [
{
title: 当年申报数量
,
dataIndex: 'ipSoftwareWorksDeclare',
key: 'ipSoftwareWorksDeclare',
width: 80,
},
{
title: 当年授权数量
,
dataIndex: 'ipSoftwareWorksAuthorize',
key: 'ipSoftwareWorksAuthorize',
width: 80,
},
{
title: 企业累计授权数量
,
dataIndex: 'ipSoftwareWorksAuthorizeCount',
key: 'ipSoftwareWorksAuthorizeCount',
width: 80,
},
{
title: 本年可用高新数
,
dataIndex: 'ipHt',
key: 'ipHt',
width: 80,
},
{
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: 'featureHt',
key: 'featureHt',
width: 80,
},
{
title: 加计扣除税收优惠政策检查
,
dataIndex: 'featureAd',
key: 'featureAd',
width: 80,
},
{
title: 税务常规检查
,
dataIndex: 'featureTr',
key: 'featureTr',
width: 80,
},
{
title: 税务对研发费用检查
,
dataIndex: 'featureTe',
key: 'featureTe',
width: 80,
},
{
title: 税务稽查
,
dataIndex: 'featureTi',
key: 'featureTi',
width: 80,
}
]
},
{
title: 其他
,
children: [
{
title: 其他
,
dataIndex: 'featureOther',
key: 'featureOther',
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: this.state.searchValues,
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({
auto: undefined,
searchValues: {
roleStatus: adminData.isSuperAdmin ? '0' : '1'
}
}, () => {
this.getDetailsList(1)
})
}
render() {
const { columns, searchValues, newData } = this.state
const dataSources = this.state.customerArr || [];
const options = dataSources.map((group) => (
{group.name}
));
const roleList = adminData.isSuperAdmin
? [
{ value: '0', lable: '查询所有' },
{ value: '1', lable: '查询自己' },
{ value: '2', lable: '查看下级' },
{ value: '3', lable: '负责人查询' },
]
: [
{ value: '1', lable: '查询自己' },
{ value: '2', lable: '查看下级' },
{ value: '3', lable: '负责人查询' },
]
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["updateStartTime"] = String(
dataString[0]
);
searchValues["updateEndTime"] = String(
dataString[1]
);
this.setState({
searchValues: searchValues,
});
}}
/>
{
this.setState({
visible: true,
tid: e.tid
})
}}
/>
{
this.state.visible &&
{
this.setState({
visible: false,
tid: '',
})
this.getDetailsList(this.state.pageNo)
}}
width={1200}
footer={null}
>
}
);
}
}
export default MembershipTable;