import React from 'react';
import $ from 'jquery/src/ajax';
import { Form,Radio, Icon, Button, Input, Spin, Table, message, DatePicker, Modal, Upload ,Popconfirm,Cascader,Tabs} from 'antd';
import NewService from "./addService.jsx";
import moment from 'moment';
import '../userMangagement.less';
import {areaSelect} from '@/NewDicProvinceList';
import {
getApprovedState,
getprovince,
getProcessStatus,
getLiquidationStatus,
getNewOrderStatus,
beforeUploadFile,
getProvinceA,
getInvoiceStatus,
splitUrl,
ShowModal
} from "../../../tools.js";
import ShowModalDiv from "@/showModal.jsx";
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 MyService=Form.create()(React.createClass({
loadData(pageNo) {
this.state.data = [];
this.setState({
loading: true
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/newOrder/orderNewList',
data: {
pageNo: pageNo || 1,
pageSize: this.state.pagination.pageSize,
specially:0,
name:this.state.customerName,
orderNo:this.state.searchOrderNo,
depId: this.state.departmenttSearch,
starTime: this.state.releaseDate[0],
endTime: 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({
key: i,
id: thisdata.id,
orderNo: thisdata.orderNo,//订单编号
totalAmount:thisdata.totalAmount,//签单金额
processStatus:thisdata.processStatus,//流程状态
liquidationStatus:thisdata.liquidationStatus,//结算状态
approval:thisdata.approval,//特批状态
signDate:thisdata.signDate,//签单时间
userName:thisdata.userName,//客户名称
salesmanName:thisdata.salesmanName,//营销员名称
financeName:thisdata.financeName,//财务名称
createDate:thisdata.createDate,//下单时间
orderStatus:thisdata.orderStatus,//订单状态
depName:thisdata.depName,//部门名称
contractNo:thisdata.contractNo
});
};
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,
selectedRowKeys:[],
});
}.bind(this),
}).always(function () {
this.setState({
loading: false
});
}.bind(this));
},
getInitialState() {
return {
datauser:{},
orgCodeUrl:[],
selectedRowKeys: [],
releaseDate: [],
departmentArr: [],
signBillState:false,
signBillVisible:false,
selectedRows: [],
recordData:[],
flag:false,
searchMore: true,
loading: false,
alreadyAmount:0,
intentOrder:true,
formalOrder:true,
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: 'orderNo',
key: 'orderNo',
fixed: 'left'
},{
title: '客户名称',
dataIndex: 'userName',
key: 'userName',
render:(text)=>{
return (text&&text.length>9?text.substr(0,9)+'...':text)
}
}, {
title: '下单时间',
dataIndex: 'createDate',
key: 'createTime'
},{
title: '合同签订时间',
dataIndex: 'signDate',
key: 'signDate'
}, {
title: '流程状态',
dataIndex: 'processStatus',
key: 'processStatus',
render:text=>{return getProcessStatus(text)}
}, {
title: '签单金额(万元)',
dataIndex: 'totalAmount',
key: 'totalAmount'
},{
title: '结算状态',
dataIndex: 'liquidationStatus',
key: 'liquidationStatus',
render:text=>{return getLiquidationStatus(text)}
}, {
title: '是否特批',
dataIndex: 'approval',
key: 'approval',
render:text=>{return getApprovedState(text)}
},{
title: '订单状态',
dataIndex: 'orderStatus',
key: 'orderStatus',
render:text=>{return getNewOrderStatus(text)}
},{
title: '财务负责人',
dataIndex: 'financeName',
key: 'financeName'
}, {
title: '操作',
dataIndex: 'abc',
key: 'abc',
render: (text, record, index) => {
return (
{
}
{
}
{record.liquidationStatus == 2 ? (
{
this.delectRow(record);
}}
okText="是"
cancelText="否"
>
) : (
""
)}
);
}
}
],
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,record)=>{
return
{record.status === 3?
:getInvoiceStatus(text,record)}
{record.status === 3?
:''}
}
}
],
dataSource: [],
};
},
invoiceData(record) {
if(this.state.flagA) return
this.setState({
flagA: true
})
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(",");
};
let api = '',
api1 = '',
method = '',
fdata = {
orderNo:this.state.orderNo3,
type:this.state.type,
status:this.state.status,
approval:this.state.ordapproval,
remarks:this.state.remarks,
invoiceType:this.state.invoiceType,
unitName:this.state.unitName,
taxNumber:this.state.taxNumber,
amount:parseFloat(this.state.amount),
banks:this.state.banks,
content:this.state.content,
unitAddress:this.state.unitAddress,
invoiceRemarks:this.state.invoiceRemarks,
unitMobile:this.state.unitMobile,
voucherUrl:theorgCodeUrl.length?theorgCodeUrl:'',
post:this.state.post,
addressee:this.state.addressee,
addresseeMobile:this.state.addresseeMobile,
addresseeProvince:this.state.post === 0?this.state.ProvinceCity[0]:'',
addresseeCity:this.state.post === 0?this.state.ProvinceCity[1]:'',
addresseeArea:this.state.post === 0?this.state.ProvinceCity[2]:'',
recipientAddress:this.state.recipientAddress,
alreadyAmount:parseFloat(this.state.alreadyAmount)},
sumData = {},
sumData1 = {};
switch (this.state.status) {
case 0:api = '/api/admin/orderInvoice/createOrderInvoice';
sumData = fdata;
method = 'post'
break;
case 1:api = '/api/admin/orderInvoice/createOrderInvoice';
api1 = '/api/admin/orderInvoice/updateOrderInvoice'
sumData = fdata;
sumData1 = {
orderNo:this.state.orderNo3,
type:this.state.type,
status:this.state.status,
approval:this.state.ordapproval,
remarks:this.state.remarks,
invoiceType:this.state.invoiceType,
unitName:this.state.unitName,
taxNumber:this.state.taxNumber,
amount:parseFloat(this.state.amount),
banks:this.state.banks,
content:this.state.content,
unitAddress:this.state.unitAddress,
invoiceRemarks:this.state.invoiceRemarks,
unitMobile:this.state.unitMobile,
voucherUrl:theorgCodeUrl.length?theorgCodeUrl:'',
post:this.state.post,
addressee:this.state.addressee,
addresseeMobile:this.state.addresseeMobile,
addresseeProvince:this.state.post === 0?this.state.ProvinceCity[0]:'',
addresseeCity:this.state.post === 0?this.state.ProvinceCity[1]:'',
addresseeArea:this.state.post === 0?this.state.ProvinceCity[2]:'',
recipientAddress:this.state.recipientAddress,
alreadyAmount:parseFloat(this.state.alreadyAmount)};
sumData1.id = this.state.id;
method = 'post'
break;
case 3:api = '/api/admin/orderInvoice/selectByIdOrderInvoice'
sumData.id = record.id;
method='get';
break;
default: api=''
break;
}
if (this.state.status === 1 || this.state.status === 0) {
if (typeof(this.state.type) !== 'number') {
message.warning('省内/外不能为空')
this.setState({
flagA: false
});
return
}
if (typeof(this.state.invoiceType) !== 'number') {
message.warning('发票类型不能为空')
this.setState({
flagA: false
})
return
}
if(typeof theorgCodeUrl !== 'string'){
message.warning('未上传图片');
this.setState({
flagA: false
})
return
}
if (!this.state.unitName) {
message.warning('单位名称不能为空')
this.setState({
flagA: false
})
return
}
if (!this.state.taxNumber) {
message.warning('税号不能为空')
this.setState({
flagA: false
})
return
}
if (!this.state.amount) {
message.warning('金额不能为空')
this.setState({
flagA: false
})
return
}
if (isNaN(this.state.amount)) {
message.warning('开票金额包含非法字符,请重新输入')
this.setState({
flagA: false
})
return
}
if (isNaN(this.state.alreadyAmount)) {
message.warning('开票金额总计包含非法字符,请重新输入')
this.setState({
flagA: false
})
return
}
if (parseFloat(this.state.alreadyAmount)<0) {
message.warning('开票金额总计不能小于0,请重新输入')
this.setState({
flagA: false
})
return
}
if (!this.state.banks) {
message.warning('开户行不能为空')
this.setState({
flagA: false
})
return
}
if (!this.state.content) {
message.warning('开票内容及说明不能为空')
this.setState({
flagA: false
})
return
}
if (!this.state.unitAddress) {
message.warning('单位地址不能为空')
this.setState({
flagA: false
})
return
}
if (!this.state.unitMobile) {
message.warning('单位电话不能为空')
this.setState({
flagA: false
})
return
}
if (this.state.alreadyAmount === '') {
message.warning('开票金额总计不能为空')
this.setState({
flagA: false
})
return
}
}
// console.log(this.state.flag,this.state.status)
this.setState({
loading: true
});
$.ajax({
method: method,
dataType: "json",
crossDomain: false,
url: globalConfig.context + (this.state.flag?api1:api),
data: this.state.flag?sumData1:sumData,
success:function (data) {
if(this.state.status === 3 && typeof data.data === 'object'){
let thisdata = data.data;
let ProvinceCityArr = [];
let ProvinceS = thisdata.addresseeProvince; //省
let citys = thisdata.addresseeCity;//市
let Areas = thisdata.addresseeArea;//区
ProvinceCityArr.push(ProvinceS, citys, Areas);
this.setState({
orderNo:thisdata.orderNo,
type:thisdata.type,
status:thisdata.status,
ordapproval:thisdata.approval,
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 + "",
ProvinceCity: ProvinceCityArr[0]!=null?ProvinceCityArr:undefined,//省市区
recipientAddress:thisdata.recipientAddress,
orgCodeUrl: thisdata.voucherUrl ? splitUrl(thisdata.voucherUrl, ',', globalConfig.avatarHost + '/upload') : [],
})
}
}.bind(this)
}).done(function(data) {
this.setState({
loading: false
});
if(!data.error.length) {
if(this.state.status === 1){
message.success('提交成功!');
this.visitCancels()
if (this.state.flag) {
this.inRecordData()
}
this.setState({
flagA: false
})
}else if(this.state.status === 0){
message.success('保存成功!');
this.visitCancels()
this.setState({
flagA: false
})
}else if(this.state.status === 3){
this.setState({
flag:true,
flagA: false
})
}
} else {
message.warning(data.error[0].message);
this.setState({
flagA: false
})
}
}.bind(this));
},
areset(){
this.setState({
remarks:'',
type:undefined,
orgCodeUrl:'',
invoiceType:undefined,
unitName:'',
taxNumber:'',
unitName:'',
amount:'',
banks:'',
content:'',
unitAddress:'',
invoiceRemarks:'',
unitMobile:'',
post:undefined,
addressee:'',
addresseeMobile:'',
addresseeProvince:'',
addresseeCity:'',
addresseeArea:'',
recipientAddress:'',
ordapproval:undefined,
alreadyAmount:'',
ProvinceCity:[]
})
},
recompose(record){
// console.log(record)
this.setState({
avisible:true,
orderNo3:record.orderno,
id:record.id
})
this.setState({
status:3,
cvisible:true,
flag:false
},()=>{
this.invoiceData(record)
})
},
submitApp(){
if (this.state.status === 3) {
this.setState({
flag:true
})
}
this.setState({
status:1
},()=>{
this.invoiceData()
})
},
saveApp(){
this.setState({
status:0
},()=>{
this.invoiceData()
})
},
reject(record){
this.setState({
visibleR:true,
reason:record.rejectReason
});
},
rejectCancels(){
this.setState({
visibleR:false
})
},
//开票
visit(record,index){
this.areset()
this.setState({
contractNo:this.state.dataSource[index].contractNo,
orderNo3:record.orderNo,
avisible:true,
flag:false,
invoiceType:0,
alreadyAmount:0,
unitName:this.state.dataSource[index].userName,
post:1
})
},
visitCancels(){
this.setState({
avisible:false,
cvisible:false
})
},
//查看开票历史记录详情
dtableRowClick(record){
this.setState({
dvisible:true
})
this.setState({
loading: true
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/orderInvoice/selectByIdOrderInvoice',
data:{
id:record.id
},
success:function (data) {
let thisdata = data.data;
this.setState({
contractNo:thisdata.contractNo,
orderNo:thisdata.orderNo,
ordapproval:thisdata.approval,
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() {
this.setState({
loading: false
});
}.bind(this));
},
//关闭开票历史记录详情
dvisitCancels(){
this.setState({
dvisible: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,
approval: thisdata.approval
});
};
};
this.setState({
recordData:theArr,
sum:sum.toFixed(4)
})
}.bind(this),
}).done(function() {
this.setState({
loading: false
});
}.bind(this));
},
inRecord(record){
this.setState({
bvisible:true,
orderNo2:record.orderNo,
},() => {this.inRecordData()})
},
inRecordCanl(){
this.setState({
bvisible:false
})
},
//结项
delectRow(record) {
this.setState({
loading: true
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/OrderOver",
data: {
orderNo:record.orderNo
}
}).done(function (data) {
if (!data.error.length) {
message.success('该项目已成功结项!');
this.loadData();
} else {
message.warning(data.error[0].message);
};
this.setState({
loading: false,
});
}.bind(this));
},
//是否退款
refundCancel(record){
this.refund(record,0)
},
refundOk(record){
this.refund(record,1)
},
refund(record,index){
this.setState({
signBillVisible:false,
selectedRowKeys: [],
loading: true,
userDetaile:false
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/order/confirmRefund',
data: {
orderNo:record.orderNo,
confirm:index
}
}).done(function (data) {
if (!data.error.length) {
message.success('操作成功!');
this.setState({
loading: false,
showDesc:false
});
}
this.loadData(this.state.pageNo);
}.bind(this));
},
//受理订单
admissibleOrderOk(e){
this.admissibleOrder(e,true)
},
admissibleOrderCancel(e){
this.admissibleOrder(e,false)
},
admissibleOrder(record,index) {
this.setState({
signBillVisible:false,
selectedRowKeys: [],
loading: true,
userDetaile:false
});
$.ajax({
method: "POST",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/order/confirmIntention',
data: {
orderNo:record.orderNo,
confirm:index
}
}).done(function (data) {
if (!data.error.length) {
message.success('操作成功!');
this.setState({
loading: false,
showDesc:false
});
} else {
message.warning(data.error[0].message);
this.setState({
showDesc:true
})
};
this.loadData(this.state.pageNo);
}.bind(this));
},
//取消订单
cancelOrder(e){
this.operation(e,3)
},
//作废订单
scrapOrder(e){
this.operation(e,2)
},
//锁定订单
lockOrder(e){
this.operation(e,0)
},
//解锁订单
unlockOrder(e){
this.operation(e,1)
},
//签单
signBill(ids){
this.setState({
uid:ids,
signBillVisible:true
})
},
componentWillMount() {
this.departmentList();
this.loadData();
let data=localStorage.getItem('newData');
if(data!='{}'&&data){
var newData = JSON.parse(data);
this.tableRowClick(newData);
};
},
tableRowClick(record) {
this.state.userDetaile=true;
this.state.datauser = record;
this.setState({
signBillVisible:false,
signBillState:true,
showDesc: true
});
localStorage.setItem('newData','{}');
},
//列表各种骚操作
operation(record,index) {
this.setState({
selectedRowKeys: [],
loading: true,
showDesc:false
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/order/lockOrRevokeOrder',
data: {
orderNo:record.orderNo,
operatorType:index
}
}).done(function (data) {
if (!data.error.length) {
message.success('操作成功!');
this.setState({
loading: false,
});
} else {
message.warning(data.error[0].message);
};
this.loadData(this.state.pageNo);
}.bind(this));
},
addClick() {
this.state.userDetaile=false;
this.setState({
signBillVisible:false,
showDesc: true
});
},
closeDesc(e, s) {
this.state.userDetaile=false;
this.state.signBillVisible=false;
this.state.showDesc = e;
if (s) {
this.loadData(this.state.pageNo);
};
},
searchSwitch() {
this.setState({
signBillVisible:false,
searchMore: !this.state.searchMore
});
},
getOrgCodeUrl(e) {
this.setState({ orgCodeUrl: e });
},
search() {
this.setState({
signBillVisible:false
})
this.loadData();
},
reset() {
this.setState({
signBillVisible:false
})
this.state.searchOrderNo=undefined;
this.state.orderNo='';
this.state.customerName='';
this.state.departmenttSearch=undefined;
this.state.releaseDate[0] = undefined;
this.state.releaseDate[1] = undefined;
this.state.projectProgress = undefined;
this.state.approval= undefined;
this.state.formalOrder=true;
this.state.intentOrder=true;
this.loadData();
},
//部门
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);
};
thedata = {};
} 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));
},
render() {
const FormItem = Form.Item;
const formItemLayout = {
labelCol: { span: 8 },
wrapperCol: { span: 14 },
};
const RadioGroup = Radio.Group;
const { RangePicker } = DatePicker;
return (