import React,{Component} from 'react';
import ajax from 'jquery/src/ajax/xhr.js';
import $ from 'jquery/src/ajax';
import moment from 'moment';
import './public.less';
import { Form,Radio, Icon, Button, Input, Select, Spin, Table, Switch, message, DatePicker, Checkbox ,Modal, Upload ,Popconfirm,Cascader,Tabs} from 'antd';
import {getProcessStatus,getProjectStatus,getApproval,getProvinceA,beforeUploadFile,getInvoiceStatus,getprovince,splitUrl} from '@/tools';
import {projectProgress,specially,province,invoiceStatus} from '../../../dataDic.js';
const FormItem = Form.Item;
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 (
{fileList.length >= 18 ? null : uploadButton}
);
}
});
const outSpecial = 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.state.data = [];
this.setState({
loading: true
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/orderInvoice/approvalOrderInvoiceList",
data: {
pageNo: pageNo || 1,
pageSize: this.state.pagination.pageSize,
name: this.state.nameSearch,//客户名称
orderNo:this.state.orderNoSearch,
orderDep:this.state.departmenttList,
type:1
},
success: function (data) {
let theArr = [];
if (!data.data || !data.data.list) {
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({
key: i,
id: thisdata.id,
status:thisdata.status,
unitName:thisdata.unitName,
orderno:thisdata.orderno,
name:thisdata.name,
projectStatus:thisdata.projectStatus,
amount:thisdata.amount,
sumAmount:thisdata.sumAmount,
createTime:thisdata.createTime?new Date(thisdata.createTime).toLocaleString():'',
settlementAmount:thisdata.settlementAmount,
notAmount:thisdata.notAmount,
});
};
}
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
}
this.setState({
totalPage:data.data.totalPage,
dataSource: theArr,
pagination: this.state.pagination
});
}.bind(this),
}).always(function () {
this.setState({
loading: false
});
}.bind(this));
},
invoiceData() {
this.setState({
loading: true
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/orderInvoice/selectByIdOrderInvoice',
data:{
id:this.state.id
},
success:function (data) {
let thisdata = data.data;
this.setState({
orderNo:thisdata.orderNo,
type:thisdata.type,
status:thisdata.status,
remarks:thisdata.remarks,
invoiceType:thisdata.invoiceType,
unitName:thisdata.unitName,
taxNumber:thisdata.taxNumber,
amount:thisdata.amount,
banks:thisdata.banks,
content:thisdata.content,
unitAddress:thisdata.unitAddress,
invoiceRemarks:thisdata.invoiceRemarks,
unitMobile:thisdata.unitMobile,
post:thisdata.post,
addressee:thisdata.addressee,
addresseeMobile:thisdata.addresseeMobile,
addresseeProvince:thisdata.addresseeProvince,
addresseeCity:thisdata.addresseeCity,
addresseeArea:thisdata.addresseeArea,
alreadyAmount:thisdata.alreadyAmount,
recipientAddress:thisdata.recipientAddress,
orgCodeUrl: thisdata.voucherUrl ? splitUrl(thisdata.voucherUrl, ',', globalConfig.avatarHost + '/upload') : [],
})
}.bind(this)
}).done(function(data) {
this.setState({
loading: false
});
}.bind(this));
},
getInitialState() {
return {
searchMore: true,
assignVisible:false,
releaseDate: [],
totalPage:0,
boHuivisible:false,
selectedRowKeys: [],
selectedRows: [],
loading: false,
reason: '',
foo:0,
pagination: {
defaultCurrent: 1,
defaultPageSize: 10,
showQuickJumper: true,
pageSize: 10,
onChange: function (page) {
this.loadData(page);
}.bind(this),
showTotal: function (total) {
return '共' + total + '条数据';
}
},
columns: [
{
title: '编号',
dataIndex: 'id',
key: 'id',
fixed: 'left'
}, {
title: '客户',
dataIndex: 'unitName',
key: 'unitName',
}, {
title: '跟单人/签单人',
dataIndex: 'name',
key: 'name',
}, {
title: '项目状态',
dataIndex: 'projectStatus',
key: 'projectStatus',
render:(text)=>{
return getProjectStatus(text)
}
},
{
title: '申请开票(万)',
dataIndex: 'amount',
key: 'amount'
},
{
title: '已开票(万)',
dataIndex: 'sumAmount',
key: 'sumAmount'
},
{
title: '已收款',
dataIndex: 'settlementAmount',
key: 'settlementAmount'
},
{
title: '未收款',
dataIndex: 'notAmount',
key: 'notAmount'
},
{
title: '申请时间',
dataIndex: 'createTime',
key: 'createTime',
},
{
title:'操作',
dataIndex: 'caozuo',
key: 'caouzo',
render:(text,record,index)=>{
return
{}
{record.status !== 2?
:''}
{record.status !== 2?
:''}
{record.status === 2?
:''}
{}
}
}
],
columnsDate:[
{
title: '编号',
dataIndex: 'id',
key: 'id'
},{
title: '订单编号',
dataIndex: 'orderno',
key: 'orderno'
},{
title: '开票金额(万元)',
dataIndex: 'amount',
key: 'amount'
},{
title: '申请时间',
dataIndex: 'createTime',
key: 'createTime'
},{
title: '开票状态',
dataIndex: 'status',
key: 'status',
render:(text)=>{
return getInvoiceStatus(text)
}
}
],
dataSource: [],
searchTime: [,]
}
},
loadSend(record){
this.setState({
loading: true
});
if (this.state.examine === 3 && this.state.reason === '') {
message.warning('拒绝理由不能为空!')
return
}
$.ajax({
method: "post",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/orderInvoice/approvalExamine',
data: {
id:this.state.examine===2?record.id:this.state.id,
examine:this.state.examine,
reason:this.state.reason
},
success: function (data) {
}.bind(this),
}).done(function(data) {
this.setState({
loading: false
});
if(this.state.examine === 2){
message.success('通过成功!');
this.loadData()
}else{
message.success('拒绝成功!')
this.resetReason()
this.rejectCancels()
this.loadData()
}
}.bind(this));
},
//重置拒绝理由
resetReason(){
this.setState({
reason:''
})
},
sende(record){
this.loadSend(record)
},
commit(){
this.loadSend()
this.setState({
avisible:false
})
},
visit(record,index){
this.setState({
id:this.state.dataSource[index].id,
avisible:true,
},()=>{
this.invoiceData()
})
},
visitCancels(){
this.setState({
avisible:false
})
},
reject(record){
this.setState({
visibleR:true,
id:record.id
});
},
rejectCancels(){
this.setState({
visibleR:false
})
},
inRecordData(){
this.setState({
loading: true
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/orderInvoice/salesmanOrderInvoiceList',
data: {
orderNo:this.state.orderNo2
},
success: function (data) {
let theArr = [];
let sum = 0;
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];
sum += parseFloat(thisdata.amount);
theArr.push({
id: thisdata.id,
orderno: thisdata.orderno,//订单编号
amount:thisdata.amount,//签单金额
createTime:thisdata.createTime,//流程状态
status:thisdata.status,//结算状态
rejectReason:thisdata.rejectReason
});
};
};
this.setState({
recordData:theArr,
sum:sum.toFixed(4)
})
}.bind(this),
}).done(function(data) {
this.setState({
loading: false
});
}.bind(this));
},
inRecord(record,index){
this.setState({
bvisible:true,
orderNo2:record.orderno,
},() => {this.inRecordData()})
},
inRecordCanl(){
this.setState({
bvisible:false
})
},
search(){
this.loadData();
},
componentWillMount() {
this.departmentList();
this.loadData();
},
reset() {
this.state.nameSearch = '';
this.state.releaseDate = [];
this.state.orderNoSearch='';
this.state.processStatus = [];
this.state.departmenttList = [];
this.loadData();
},
render() {
const rowSelection = {
selectedRowKeys: this.state.selectedRowKeys,
onChange: (selectedRowKeys, selectedRows) => {
this.setState({
selectedRows: selectedRows.slice(-1),
selectedRowKeys: selectedRowKeys.slice(-1)
});
}
};
const formItemLayout = {
labelCol: { span: 8 },
wrapperCol: { span: 14 },
};
const hasSelected = this.state.selectedRowKeys.length > 0;
const { RangePicker } = DatePicker;
var departmentArr = this.state.departmentArr ||[];
return (