import React,{Component} from "react";
import {
Button,
Form,
Input,
message,
Modal,
Popconfirm,
Select,
Spin,
Table,
Tabs,
Upload,
Tooltip, DatePicker
} from "antd";
import {ChooseList} from "../../order/orderNew/chooseList";
import $ from "jquery/src/ajax";
import { patentTypeList} from '@/dataDic.js';
import {getPatentType,ShowModal} from "@/tools.js";
import ShowModalDiv from "@/showModal.jsx";
import './patent.less';
import PatentDetails from './patentDetails';
import ReminderLog from "../../customer/NEW/crm/reminderLog";
import moment from "moment";
const { TabPane } = Tabs;
const { RangePicker } = DatePicker;
class List extends Component{
constructor(props) {
super(props);
this.state={
loading:false,
columns:[
{
title: "序号",
dataIndex: "id",
key: "id",
width:80,
fixed: 'left'
},
{
title: "专利号",
dataIndex: "patentNo",
key: "patentNo",
width:140,
fixed: 'left'
},
{
title: "专利名称",
dataIndex: "name",
key: "name",
width:140,
fixed: 'left'
},
{
title: "专利类型",
dataIndex: "type",
key: "type",
render: (text) => {
return (
getPatentType(text)
)
}
},
{
title: "申请日",
dataIndex: "applyDates",
key: "applyDates",
},
{
title: "权利人",
dataIndex: "holders",
key: "holders",
width: 120,
render: (text) => {
return (
{text}
)
},
},
{
title: "授权日期",
dataIndex: "authorizationDates",
key: "authorizationDates",
},
{
title: "发明人",
dataIndex: "inventor",
key: "inventor",
width: 120,
render: (text) => {
return (
{text}
)
},
},
{
title: "收费截止日",
dataIndex: "endDates",
key: "endDates",
},
{
title: "费减状态",
dataIndex: "costReduction",
key: "costReduction",
render: (text,record) => {
return (
record.tid ? (text === 1 ? '有费减' : text === 0 ? '无费减' : '') : '无'
)
}
},
{
title: "年费状态",
dataIndex: "annualFeeStatus",
key: "annualFeeStatus",
render: (text)=>{
return (
{
text === 0 ? '待缴费' :
text === 1 ? '已缴费' : ''
}
)
}
},
{
title: "营销员是否提醒",
dataIndex: "salesmanRemind",
key: "salesmanRemind",
render: (text)=>{
return(
{
text === 0 ? '未通知' :
text === 1 ? '已通知' : ''
}
)
}
},
{
title: "Email",
dataIndex: "email",
key: "email",
},
{
title: "年费/滞纳金/恢复",
dataIndex: "delayingAmount",
key: "delayingAmount",
render:(text,record)=>{
return(
record.patentAmount+ '/' + text + '/' + record.recoveryAmount
)
}
},
{
title: "客户名称",
dataIndex: "userName",
key: "userName",
},
{
title: "项目名称",
dataIndex: "projectName",
key: "projectName",
},
{
title: "项目编号",
dataIndex: "tid",
key: "tid",
},
{
title: "营销员",
dataIndex: "salesmanName",
key: "salesmanName",
},
{
title: "咨询师",
dataIndex: "techName",
key: "techName",
},
{
title: "派单部门",
dataIndex: "depName",
key: "depName",
},
{
title: "录入人",
dataIndex: "inputName",
key: "inputName",
width: 120,
render: (text) => {
return (
{text}
)
},
},
{
title: "录入时间",
dataIndex: "createTimes",
key: "createTimes",
},
{
title: "跟进人",
dataIndex: "aname",
key: "aname",
width: 120,
render: (text) => {
return (
{text}
)
},
},
{
title: "操作",
dataIndex: "id",
key: "caozuo",
width:200,
fixed: 'right',
render: (text,record) => {
return (
)
}
},
],
dataSource:[],
pagination: {
defaultCurrent: 1,
defaultPageSize: 10,
showQuickJumper: true,
pageSize: 10,
onChange: function (page) {
this.loadData(page,this.state.searchInfor);
}.bind(this),
showTotal: function (total) {
return "共" + total + "条数据";
},
},
detailsVisible:false,
detailsInfor:{},
departmentArr:[],
selectedRowKeys:[],
selectedRows:[],
unSelectedRows:[],
name:undefined,
type:undefined,
depName:undefined,
inputDep:undefined,
followDep:undefined,
releaseDate:[],
releaseDate1:[],
annualFeeStatus:undefined,
userName:undefined,
salesmanRemind:undefined,
isFollow:1,
aname:undefined,
patentNo:undefined,
upLoad: {
customRequest: (options) => {
this.setState({
upLoadFileLoading: true,
})
let params = new FormData();
params.append("file", options.file);
$.ajax({
method: "post",
url: globalConfig.context + "/api/admin/patentNew/import",
async: true,
cache: false,
contentType: false,
processData: false,
data:params
}).done(
function (data) {
this.setState({
upLoadFileLoading: false,
})
if (data.error.length === 0) {
message.success("导入成功!");
this.loadData();
} else {
message.warning(data.error[0].message);
this.loadData();
}
}.bind(this)
).always(
function (err) {
if(err.status === 404){
message.warning('表格数据错误');
}
this.loadData();
this.setState({
upLoadFileLoading: false,
});
}.bind(this)
);
},
name: "file",
action: globalConfig.context + "/api/admin/patentNew/import",
},
adminList:[],
status:props.status,
aid:'',
}
this.changeList = this.changeList.bind(this);
this.loadData = this.loadData.bind(this);
this.download = this.download.bind(this);
this.departmentList = this.departmentList.bind(this);
this.exportExec = this.exportExec.bind(this);
this.onReset = this.onReset.bind(this);
this.updateBatch = this.updateBatch.bind(this);
this.getAdminList = this.getAdminList.bind(this);
this.downloadFile = this.downloadFile.bind(this);
}
componentWillReceiveProps(prevProps) {
if(prevProps.status !== this.state.status){
this.setState({
status:prevProps.status
},()=>{
this.setState({
name:undefined,
type:undefined,
depName:undefined,
inputDep:undefined,
followDep:undefined,
releaseDate:[],
releaseDate1:[],
annualFeeStatus:undefined,
userName:undefined,
salesmanRemind:undefined,
isFollow:1,
aname:undefined,
patentNo:undefined,
},()=>{this.loadData();})
this.departmentList();
})
}
}
componentDidMount() {
this.loadData();
this.departmentList();
}
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({
loading: true,
selectedRowKeys:[],
selectedRows:[]
});
let data = {
name:this.state.name,
type:this.state.type,
depName:this.state.depName,
inputDep:this.state.inputDep,
followDep:this.state.followDep,
createStarts:this.state.releaseDate[0] || undefined,
createEnds:this.state.releaseDate[1] || undefined,
startDates:this.state.releaseDate1[0] || undefined,
endDates:this.state.releaseDate1[1] || undefined,
annualFeeStatus:this.state.annualFeeStatus,
userName:this.state.userName,
salesmanRemind:this.state.salesmanRemind,
isFollow:this.state.isFollow,
aname:this.state.aname,
patentNo:this.state.patentNo,
pageNo:pageNo || 1,
pageSize:10,
}
if(this.state.status){
data.status=this.state.status;
data.isFollow = 1 ;
}
for(let i in data){
if(data[i] === undefined){delete data[i]}
}
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/patentNew/selectPatentNew",
data,
success: function (data) {
ShowModal(this);
if(data.error.length === 0){
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;
}
data.data.list.map(v=>v.key = v.id)
this.setState({
page: data.data.pageNo,
dataSource: data.data.list,
pagination: this.state.pagination,
});
}else{
message.warning(data.error[0].message);
}
}.bind(this),
}).always(
function () {
this.setState({
loading: false,
});
}.bind(this)
);
}
download() {
window.location.href =
globalConfig.context +
"/api/user/channel/downloadTemplate?" +
"sign=user_channel";
}
downloadFile() {
this.setState({
downloadFileLoading:true
})
setTimeout(()=>{
this.setState({
downloadFileLoading:false
})
},1500)
window.location.href =
globalConfig.context +
"/api/admin/patentNew/exportTemplate?" +
"sign=new_patent_template";
}
//部门
departmentList() {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/organization/selectSuperId",
data: {},
success: function(data) {
if(data.error.length === 0){
let theArr=[];
data.data.map(function(item,index){
theArr.push({
key:index,
name:item.name,
id:item.id,
})
})
this.setState({
departmentArr:theArr,
})
}else{
message.warning(data.error[0].message);
}
}.bind(this),
}).always(function() {
}.bind(this));
}
exportExec(){
this.setState({
exportExecLoading: true
})
let loading = message.loading('加载中...');
let data = {
name:this.state.name,
type:this.state.type,
depName:this.state.depName,
inputDep:this.state.inputDep,
followDep:this.state.followDep,
createStarts:this.state.releaseDate[0] || undefined,
createEnds:this.state.releaseDate[1] || undefined,
startDates:this.state.releaseDate1[0] || undefined,
endDates:this.state.releaseDate1[1] || undefined,
annualFeeStatus:this.state.annualFeeStatus,
userName:this.state.userName,
salesmanRemind:this.state.salesmanRemind,
isFollow:this.state.isFollow,
aname:this.state.aname,
patentNo:this.state.patentNo,
}
for(let i in data){
if(data[i] === undefined){delete data[i]}
}
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/patentNew/export",
data,
success: function(data) {
loading();
this.setState({
exportExecLoading: false
})
if(data.error.length === 0){
this.download(data.data.data);
}else{
message.warning(data.error[0].message);
}
}.bind(this),
}).always(function() {
this.setState({
exportExecLoading: false
})
}.bind(this));
}
download(fileName){
window.location.href = globalConfig.context + "/open/download?fileName=" + fileName
}
//获取营销管理员列表
getAdminList(name) {
this.setState({
adminListLoading:true
})
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/superviser/adminList",
data: {
pageNo: 1,
pageSize: 99,
name
},
success: function (data) {
let thedata = data.data.list;
let theArr = [];
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}else{
thedata.map(function (item, _) {
theArr.push({
value: item.id,
label: item.name,
});
});
}
this.setState({
adminList: theArr,
});
}.bind(this),
}).always(
function () {
this.setState({
adminListLoading:false
})
}.bind(this)
);
}
onReset(){
this.setState({
name:undefined,
type:undefined,
depName:undefined,
inputDep:undefined,
followDep:undefined,
releaseDate:[],
releaseDate1:[],
annualFeeStatus:undefined,
userName:undefined,
salesmanRemind:undefined,
isFollow:1,
aname:undefined,
patentNo:undefined,
},()=>{this.loadData();})
}
updateBatch(type){
if(type === 2 && !this.state.aid){
message.warning('请选择营销管理员');
return;
}
let loading = message.loading('加载中...')
if(type === 0){
this.setState({
updateBatchLoading0:true,
})
}else if(type === 1){
this.setState({
updateBatchLoading1:true,
})
}else if(type === 2){
this.setState({
updateBatchLoading2:true,
})
}
let ids = this.state.selectedRowKeys.join(',');
let data = {
ids,
type,//0 批量通知 1批量发邮件 2转给营销管理员
}
if(type === 2){
data.aid = this.state.aid
}
$.ajax({
method: "post",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/patentNew/updateBatch",
data,
success: function(data) {
loading();
if(data.error.length === 0){
message.success(type === 0 ? '成功批量标记为已通知' : type === 1 ? '批量发邮件成功' : type === 2 ? '转入成功' : '');
if(type === 2){
this.setState({
adminVisible:false
})
}
this.loadData(this.state.page);
}else{
message.warning(data.error[0].message);
}
}.bind(this),
}).always(function() {
if(type === 0){
this.setState({
updateBatchLoading0:false,
})
}else if(type === 1){
this.setState({
updateBatchLoading1:false,
})
}else if(type === 2){
this.setState({
updateBatchLoading2:false,
})
}
}.bind(this));
}
render() {
return (
专利列表
{
e.stopPropagation();
this.updateBatch(0);
}} okText="确定" cancelText="取消">
{
e.stopPropagation();
let arr = this.state.selectedRows.filter(v=>v.status === 0);
if(arr.length > 0){
this.setState({
unSelectedRows: arr,
unSelectedRowsVisible:true
})
}else{
this.updateBatch(1)
}
}} okText="确定" cancelText="取消">
{
this.setState({
detailsVisible:true,
readOnly:true,
detailsInfor:record
})
}}
rowSelection={{
getCheckboxProps:record => ({
disabled: record.isFollow === 0
}),
selectedRowKeys:this.state.selectedRowKeys,
onChange: (selectedRowKeys,selectedRows)=>{
this.setState({ selectedRowKeys,selectedRows });
},
}}
scroll={{ x: "max-content", y: 0 }}
bordered
size="small"
/>
{this.state.detailsVisible ? {
this.loadData(this.state.page);
}}
onCancel={()=>{
this.setState({
readOnly:true,
detailsVisible:false,
detailsInfor:{}
})
}}
/> : null}
{this.state.visible ? {
this.setState({
visible:false,
id:undefined
})
}}
/> : null}
{this.state.unSelectedRowsVisible ? {
this.setState({
unSelectedRowsVisible:false,
unSelectedRows:[]
})
}}
>
下列专利,不在专利需缴费的90天提醒之内,不可发送邮件
: null}
{this.state.adminVisible ? {
this.setState({
adminVisible:false
})
}}
>
跟进人:
{
e.stopPropagation();
this.updateBatch(2);
}} okText="确定" cancelText="取消">
: null}
)
}
}
export default List;