import React from 'react';
import {
Icon,
Button,
AutoComplete,
Input,
Select,
Spin,
Table,
Switch,
message,
DatePicker,
Form,
Modal,
Tabs,
Tooltip
} from 'antd';
import $ from 'jquery/src/ajax';
import moment from 'moment';
import { cityArr, patentTypeList } from '@/dataDic.js';
import {
beforeUploadFile,
splitUrl,
getPatentType,
getcityArr,
ShowModal,
getMessageReminderStart,
} from "@/tools.js";
import './customer.less';
import ShowModalDiv from "@/showModal.jsx";
import ImgList from "../../../../common/imgList";
import { ChooseList } from "../../../order/orderNew/chooseList";
import ReminderLog from "./reminderLog";
import Cascaders from "../../../../common/cascaders";
const Option = AutoComplete.Option;
const { TabPane } = Tabs;
//图片组件
const PicturesWall = React.createClass({
getInitialState() {
return {
previewVisible: false,
previewImage: '',
fileList: this.props.pictureUrl,
}
},
getDefaultProps() {
return {
changeClick: this.modifyChange
}
},
handleCancel() {
this.setState({ previewVisible: false })
},
handlePreview(file) {
this.setState({
previewImage: file.url || file.thumbUrl,
previewVisible: true,
});
},
handleChange(info) {
let fileList = info.fileList;
this.setState({ fileList });
this.props.fileList(fileList);
},
componentWillReceiveProps(nextProps) {
this.state.fileList = nextProps.pictureUrl;
},
render() {
const { previewVisible, previewImage, fileList } = this.state;
const uploadButton = (
);
return (
{ beforeUploadFile(infor) }
}}
onChange={(infor) => {
this.handleChange(infor)
}}
fileList={fileList}
/>
);
}
});
const PatentPayment = Form.create()(React.createClass({
departmentList() {
this.setState({
loading: true
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/organization/selectSuperId",
data: {},
success: function (data) {
let thedata = data.data;
let theArr = [];
if (!thedata) {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
};
} else {
thedata.map(function (item, index) {
theArr.push({
key: index,
name: item.name,
id: item.id,
})
})
}
this.setState({
departmentArr: theArr,
})
}.bind(this),
}).always(function () {
this.setState({
loading: false
});
}.bind(this));
},
loadData(pageNo) {
this.setState({
loading: true
}),
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/patentNew/selectPatentNew',
data: {
pageNo: pageNo || 1,
pageSize: this.state.pagination.pageSize,
status: this.state.statusSearch,
name: this.state.nameSearch,
aname: this.state.anameSearch,
patentNo: this.state.patentNoSearch,
inputDep: this.state.departmentSearch,
startDate: this.state.timesArr[0],
endDate: this.state.timesArr[1],
type: this.state.typeSearch,
createStart: this.state.releaseDate[0],
createEnd: this.state.releaseDate[1],
},
success: function (data) {
ShowModal(this);
let theArr = [];
if (!data.data) {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
};
} else {
for (let i = 0; i < data.data.list.length; i++) {
let thisdata = data.data.list[i];
theArr.push({
id: thisdata.id,
province: thisdata.province,
status: thisdata.status,
patentNo: thisdata.patentNo,
name: thisdata.name,
type: thisdata.type,
applyDates: thisdata.applyDates,
authorizationDates: thisdata.authorizationDates,
patentAmount: thisdata.patentAmount,
applicant: thisdata.applicant,
contactMobile: thisdata.contactMobile,
email: thisdata.email,
certificateUrl: thisdata.certificateUrl,
aname: thisdata.aname,
depName: thisdata.depName,
userName: thisdata.userName,
uid: thisdata.uid,
createTimes: thisdata.createTimes
});
};
this.state.pagination.current = data.data.pageNo;
this.state.pagination.total = data.data.totalCount;
};
if (!data.data.list.length) {
this.state.pagination.current = 0
this.state.pagination.total = 0
}
this.setState({
pageNo: pageNo,
dataSource: theArr,
pagination: this.state.pagination,
});
}.bind(this)
}).always(function () {
this.setState({
loading: false
});
}.bind(this));
},
getInitialState() {
return {
loading: false,
visible: false,
orgCodeUrl: [],
fileList: [],
departmentArr: [],
timesArr: [],
pagination: {
defaultCurrent: 1,
defaultPageSize: 10,
showQuickJumper: true,
pageSize: 10,
onChange: function (page) {
this.loadData(page);
}.bind(this),
showTotal: function (total) {
return '共' + total + '条数据';
}
},
releaseDate: [],
dataSource: [],
columns: [{
title: '专利号',
dataIndex: 'patentNo',
key: 'patentNo'
}, {
title: '专利名称',
dataIndex: 'name',
key: 'name'
}, {
title: '专利类型',
dataIndex: 'type',
key: 'type',
render: text => {
return getPatentType(text)
}
}, {
title: '申请日期',
dataIndex: 'applyDates',
key: 'applyDates'
}, {
title: '授权日期',
dataIndex: 'authorizationDates',
key: 'authorizationDates'
}, {
title: '费用',
dataIndex: 'patentAmount',
key: 'patentAmount'
}, {
title: '客户名称',
dataIndex: 'userName',
key: 'userName',
width: 100,
render: (text, record) => {
return (
{record.uid ? text : record.applicant}
)
}
}, {
title: '录入人',
dataIndex: 'aname',
key: 'aname'
}, {
title: '录入日期',
dataIndex: 'createTimes',
key: 'createTimes'
}, {
title: '录入公司',
dataIndex: 'depName',
key: 'depName'
}, {
title: '联系电话',
dataIndex: 'contactMobile',
key: 'contactMobile'
}, {
title: '电子邮箱',
dataIndex: 'email',
key: 'email'
}, {
title: '状态',
dataIndex: 'status',
key: 'status',
//状态 0 未提醒 1 剩余90天 2剩余30天 3剩余20天 4剩余10天 5剩余3天 6剩余2天 7剩余1天
render: text => {
return (getMessageReminderStart(text, true))
}
}, {
title: '操作',
dataIndex: 'id',
key: 'id',
render: (text) => (
)
}
],
customerServiceList: []
}
},
componentWillMount() {
this.loadData()
// this.departmentList()
let data = localStorage.getItem('newData');
if (data != '{}' && data) {
var newData = JSON.parse(data);
this.tableRowClick(newData);
};
},
new() {
this.reset();
this.setState({
visible: true
})
},
visitCancel() {
this.state.fileList = [];
this.setState({
visible: false
})
},
onSure() {
let theorgCodeUrl = [];
if (this.state.orgCodeUrl.length) {
let picArr = [];
this.state.orgCodeUrl.map(function (item) {
if (item.response && item.response.data && item.response.data.length) {
picArr.push(item.response.data);
}
});
theorgCodeUrl = picArr.join(",");
};
if (!this.state.patentNo) {
message.warning('专利号不能为空')
return
}
if (!this.state.patentName) {
message.warning('专利名称不能为空')
return
}
if (!this.state.appDate) {
message.warning('申请日期不能为空')
return
}
if (isNaN(parseInt(this.state.patentType))) {
message.warning('专利类型不能为空');
return
}
if (!this.state.authDate) {
message.warning('授权日期不能为空')
return
}
if (!this.state.customerUid) {
message.warning('客户名称不能为空')
return
}
let mobile = /^1[0-9]{10}$/, phone = /^([0-9]{3,4}-)?[0-9]{7,8}$/, phone1 = /^\d{3,4}-\d{3,4}-\d{3,4}$/;
if (this.state.contactPhone && !(mobile.test(this.state.contactPhone) || phone.test(this.state.contactPhone) || phone1.test(this.state.contactPhone))) {
message.warning('电话格式不正确');
return
}
let emailReg = new RegExp("^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$"); //正则表达式
if (this.state.email === '') {
message.warning('电子邮箱不能为空');
return
}
if (!emailReg.test(this.state.email)) {
message.warning('电子邮箱格式不正确');
return
}
this.setState({
loading: true
})
$.ajax({
method: "POST",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/patentNew/addPatentNew',
data: {
patentNo: this.state.patentNo,
name: this.state.patentName,
type: this.state.patentType,
applyDates: this.state.appDate,
authorizationDates: this.state.authDate,
// applicant:this.state.proposer,
province: this.state.province,
contactMobile: this.state.contactPhone,
email: this.state.email,
certificateUrl: theorgCodeUrl.length ? theorgCodeUrl : '',
uid: this.state.customerUid,
}
}).done(function (data) {
this.setState({
loading: false
});
if (!data.error.length) {
message.success('保存成功!');
this.onCal()
this.loadData()
} else {
message.warning(data.error[0].message);
}
}.bind(this));
},
tableRowClick(record, index) {
this.state.RowData = record
this.setState({
avisible: true,
patentNo: record.patentNo,
patentName: record.name,
province: record.province,
status: record.status,
patentType: record.type,
appDate: record.applyDates,
authDate: record.authorizationDates,
proposer: record.applicant,
contactPhone: record.contactMobile,
email: record.email,
certificateUrl: record.certificateUrl,
orgCodeUrl: record.certificateUrl ? splitUrl(record.certificateUrl, ',', globalConfig.avatarHost + '/upload') : [],
customerUid: record.uid,
customerName: record.userName
})
localStorage.setItem('newData', '{}');
},
xiugai(record) {
let theorgCodeUrl = [];
if (this.state.orgCodeUrl.length) {
let picArr = [];
this.state.orgCodeUrl.map(function (item) {
if (item.response && item.response.data && item.response.data.length) {
picArr.push(item.response.data);
}
});
theorgCodeUrl = picArr.join(",");
};
if (!this.state.patentNo) {
message.warning('专利号不能为空')
return
}
if (!this.state.patentName) {
message.warning('专利名称不能为空')
return
}
if (!this.state.appDate) {
message.warning('申请时间不能为空')
return
}
if (isNaN(parseInt(this.state.patentType))) {
message.warning('专利类型不能为空');
return
}
if (!this.state.authDate) {
message.warning('授权日期不能为空')
return
}
if (!this.state.customerUid) {
message.warning('客户名称不能为空')
return
}
let mobile = /^1[0-9]{10}$/, phone = /^([0-9]{3,4}-)?[0-9]{7,8}$/, phone1 = /^\d{3,4}-\d{3,4}-\d{3,4}$/;
if (this.state.contactPhone && !(mobile.test(this.state.contactPhone) || phone.test(this.state.contactPhone) || phone1.test(this.state.contactPhone))) {
message.warning('电话格式不正确');
return
}
let emailReg = new RegExp("^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$"); //正则表达式
if (this.state.email === '') {
message.warning('电子邮箱不能为空');
return
}
if (!emailReg.test(this.state.email)) {
message.warning('电子邮箱格式不正确');
return
}
this.setState({
loading: true
})
$.ajax({
method: "POST",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/patentNew/updatePatentNew',
data: {
id: record.id,
patentNo: this.state.patentNo,
name: this.state.patentName,
type: this.state.patentType,
applyDates: this.state.appDate,
authorizationDates: this.state.authDate,
// applicant:this.state.proposer,
province: this.state.province,
contactMobile: this.state.contactPhone,
email: this.state.email,
status: this.state.status,
certificateUrl: theorgCodeUrl.length ? theorgCodeUrl : '',
uid: this.state.customerUid,
},
success: function (data) {
}.bind(this),
}).done(function (data) {
this.setState({
loading: false
});
if (!data.error.length) {
message.success('修改成功!');
this.avisitCancel()
this.loadData(this.state.pageNo)
} else {
message.warning(data.error[0].message);
}
}.bind(this));
},
baocunxiugai() {
this.xiugai(this.state.RowData)
},
avisitCancel() {
this.setState({
avisible: false,
customerServiceList: []
})
},
reset() {
this.setState({
patentNo: '',
patentName: '',
patentType: undefined,
appDate: undefined,
authDate: undefined,
orgCodeUrl: [],
proposer: '',
province: undefined,
contactPhone: '',
email: '',
customerUid: undefined,
customerName: undefined,
customerServiceList: [],
})
},
searchReset() {
this.setState({
statusSearch: undefined,
nameSearch: undefined,
anameSearch: undefined,
patentNoSearch: undefined,
departmentSearch: undefined,
typeSearch: undefined,
timesArr: [],
releaseDate: []
}, () => {
this.Cascaders.empty();
this.loadData();
})
},
search() {
this.loadData()
},
onCal() {
this.setState({
visible: false
})
},
getOrgCodeUrl(e) {
this.setState({ orgCodeUrl: e });
},
changeList(arr) {
const newArr = [];
this.state.columns.forEach(item => {
arr.forEach(val => {
if (val === item.title) {
newArr.push(item);
}
});
});
this.setState({
changeList: newArr
});
},
//获取外联专员列表
getAdminList(value = '') {
if (value.length < 4) { return }
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/customer/getUserByName",
data: {
name: value,
},
success: function (data) {
let theArr = [];
if (data.error && data.error.length) {
message.warning(data.error[0].message);
} else {
if (data.data) {
data.data.map(function (item, _) {
theArr.push({
value: item.id,
label: item.name,
});
});
}
}
this.setState({
customerServiceList: theArr,
});
}.bind(this),
}).always(
function () {
}.bind(this)
);
},
render() {
const theData = this.state.RowData || {};
const FormItem = Form.Item;
const formItemLayout = {
labelCol: { span: 8 },
wrapperCol: { span: 14 },
};
const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
return (
{ this.setState({ showModal: false }) }} />
客户专利提醒
{this.state.mark ? (
请选择申请时间:
{
this.setState({
timesArr: f
});
}}
style={{ marginTop: "0", marginLeft: "10px" }}
/>
请选择录入日期:
{
this.setState({ releaseDate: dataString });
}}
/>
) : (
""
)}
{this.state.avisible ?
*专利号
}
>
{!this.props.isOnlyRead ?
{
this.setState({ patentNo: e.target.value });
}}
style={{ width: "240px" }}
/> : {this.state.patentNo}
}
*专利名称
}
>
{!this.props.isOnlyRead ?
{
this.setState({ patentName: e.target.value });
}}
style={{ width: "240px" }}
/> : {this.state.patentName}
}
{!this.props.isOnlyRead ?
: {getPatentType(this.state.patentType)}
}
*申请日期
}
>
{
!this.props.isOnlyRead ?
{ }}
value={this.state.appDate ? moment(this.state.appDate) : null}
onChange={(data, dataString) => {
this.setState({ appDate: dataString });
}}
/> : {this.state.appDate ? moment(this.state.appDate).format('YYYY-MM-DD') : ''}
}
*授权日期
}
>
{
!this.props.isOnlyRead ?
{ }}
value={
this.state.authDate ? moment(this.state.authDate) : null
}
onChange={(data, dataString) => {
this.setState({ authDate: dataString });
}}
/> : {this.state.authDate ? moment(this.state.authDate).format('YYYY-MM-DD') : ''}
}
{theData.patentAmount}
{!this.props.isOnlyRead ? :
}
{!this.props.isOnlyRead ? 图片建议:要清晰。
: null}
*客户名称
}
>
{
!this.props.isOnlyRead ?
: {this.state.customerName}
}
{this.state.proposer ?
{this.state.proposer}
: null}
{
!this.props.isOnlyRead ?
: {getcityArr(this.state.province)}
}
{
!this.props.isOnlyRead ?
{
this.setState({ contactPhone: e.target.value });
}}
style={{ width: "240px" }}
/> : {this.state.contactPhone}
}
*电子邮箱
}
>
{
!this.props.isOnlyRead ?
{
this.setState({ email: e.target.value });
}}
style={{ width: "240px" }}
/> : {this.state.email}
}
{/*状态 0 未提醒 1 剩余90天 2剩余30天 3剩余20天 4剩余10天 5剩余3天 6剩余2天 7剩余1天*/}
{
getMessageReminderStart(this.state.status, true)
}
{!this.props.isOnlyRead ?
: }
:
}
{this.state.visible ?
:
}
{this.state.reminderLogVisible ? {
this.setState({
reminderLogVisible: false,
reminderLogId: ''
})
}}
/> : null}
);
}
}))
export default PatentPayment;