import React from 'react';
import { Icon, Table, Modal, message, Spin, Input, Select, Button, Form ,Upload,Popconfirm,AutoComplete,DatePicker,Radio,Col} from 'antd';
import ajax from 'jquery/src/ajax/xhr.js';
import $ from 'jquery/src/ajax';
import '../userMangagement.less';
import moment from 'moment';
import Picture from '@/manageCenter/publicComponent/picture';
import {orderTypes,customerType,jiedian,tepi,boutique} from '../../../dataDic.js';
import {splitUrl,getTransactionProject,getChangeState,getTransactionChannel,beforeUploadFile,getProcessStatus,getLiquidationStatus,getboutique,getApprovedState,getjiedian} from '../../../tools.js';
const Option = AutoComplete.Option;
//图片组件
const PicturesWall = React.createClass({
getInitialState() {
return {
previewVisible: false,
previewImage: '',
fileList: [],
}
},
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 NewService = Form.create()(React.createClass({
//查看项目列表
loadData(record) {
this.state.data = [];
this.setState({
loading: true
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/newOrder/getOrderTask',
data: {
orderNo:record?record.orderNo:this.props.datauser.orderNo
},
success: function (data) {
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.length; i++) {
let thisdata = data.data[i];
theArr.push({
key: i,
id:thisdata.id,
orderNo:thisdata.orderNo,//订单编号
commodityId:thisdata.commodityId,//项目ID
commodityName:thisdata.commodityName,//项目名称
cname:thisdata.cname,//项目类别
commodityPrice:thisdata.commodityPrice,//项目价格
commodityQuantity:thisdata.commodityQuantity,//项目数量
main:thisdata.main,//是否为主要任务
taskComment:thisdata.taskComment,//任务说明
contacts:thisdata.contacts,//联系人
contactsMobile:thisdata.contactsMobile,//联系人电话
});
};
}
this.setState({
dataSource: theArr,
pagination: false,
});
}.bind(this),
}).always(function () {
this.setState({
loading: false
});
}.bind(this));
},
//收款节点
loadDatas(record) {
this.state.data = [];
this.setState({
loading: true
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/newOrder/selectOrderDun',
data: {
orderNo:record?record.orderNo:this.props.datauser.orderNo
},
success: function (data) {
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.length; i++) {
let thisdata = data.data[i];
theArr.push({
key: i,
id:thisdata.id,
});
};
}
this.setState({
dataSource: theArr,
pagination: false,
});
}.bind(this),
}).always(function () {
this.setState({
loading: false
});
}.bind(this));
},
getInitialState() {
return {
loading: false,
visible: false,
orgCodeUrl:[],
customerArr:[],
bussStats:false,
checkedKeys: [],
lookflowList:[],
contractUrl:[],
applicationUrl:[],
active:{
applySign:false
},
lookState:false,
signBillVisible:false,
commod:'',
columns: [
{
title: '业务项目名称',
dataIndex: 'commodityName',
key: 'commodityName'
}, {
title: '项目类别',
dataIndex: 'cname',
key: 'cname',
},{
title: '项目数量',
dataIndex: 'commodityQuantity',
key: 'commodityQuantity'
}, {
title: '金额(万元)',
dataIndex: 'commodityPrice',
key: 'commodityPrice'
}, {
title: '负责人',
dataIndex: 'contacts',
key: 'contacts'
}, {
title: '负责人电话',
dataIndex: 'contactsMobile',
key: 'contactsMobile'
}, {
title: '主要项目',
dataIndex: 'main',
key: 'main',
render:(text)=>{
return (text?'是':'否')
}
}, {
title: '项目说明',
dataIndex: 'taskComment',
key: 'taskComment',
render:(text)=>{
return (text&&text.length>8?text.substr(0,8)+'…':text)
}
}, {
title: '操作',
dataIndex: 'ABC',
key: 'ABC',
render: (text, record, index) => {
return
{this.state.processStatus==0?
{this.delectRow(record)}} okText="是" cancelText="否">
:""}
}
}
],
contactList:[],
loading:false,
ContactsLists: [{
title: '催款科目',
dataIndex: 'dunSubject',
key: 'dunSubject',
render: (text, record, index) => {
return
{this.state.processStatus==0?:getjiedian(text)}
}
},{
title: '金额(万)',
dataIndex: 'money',
key: 'money',
render: (text, record, index) => {
return
{this.state.processStatus==0? { record.money = e.target.value; this.setState({ contactList: this.state.contactList }); }} style={{width:'120px'}}/>:{text}}
}
}, {
title: '催款状态',
dataIndex: 'dunStatus',
key: 'dunStatus',
render: (text, record, index) => {
return text?'已完成':'催款中'
}
},
{
title: '操作',
dataIndex: 'dels',
key: 'dels',
render: (text, record, index) => {
return
{this.state.processStatus==0?
{this.confirmDelet(record.key)}} okText="删除" cancelText="不删除">
:''}
{record.id?'':
}
}
}
],
};
},
//新建订单、编辑订单保存
handleSubmit(e) {
e.preventDefault();
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.props.userDetaile){
if(!this.state.contacts){
message.warning('企业负责人不能为空');
this.refs.signFirstPayment.focus()
return false;
};
if(!this.state.contactMobile){
message.warning('企业负责人电话不能为空');
this.refs.signFirstPayment.focus()
return false;
};
if(!this.state.totalAmount){
message.warning('签单金额不能为空');
this.refs.signFirstPayment.focus()
return false;
};
if(!this.state.firstAmount){
message.warning('首付金额不能为空');
this.refs.signFirstPayment.focus()
return false;
};
if(!theorgCodeUrl){
message.warning('企业负责人不能为空');
this.refs.signFirstPayment.focus()
return false;
};
if(!this.state.signDate){
message.warning('签单日期不能为空');
this.refs.signFirstPayment.focus()
return false;
};
}else{
if(this.state.orderType==undefined){
message.warning('请选择订单类型');
return false;
};
if(!this.state.autoId){
message.warning('客户名称不匹配');
return false;
};
}
this.setState({
loading: true
});
let api=this.props.userDetaile?'/api/admin/newOrder/updateServiceOrderNew':'/api/admin/newOrder/createOrder';
$.ajax({
method: "POST",
dataType: "json",
crossDomain: false,
url: globalConfig.context + api,
data: !this.props.userDetaile?{
uid:this.state.autoId,
orderType:this.state.orderType,
contractType:this.state.contractType
}:{
orderNo: this.state.orderNo,//订单编号
totalAmount: this.state.totalAmount,//总金额
firstAmount: this.state.firstAmount,//首付
isSubmit: this.state.isSubmit,//保存草稿还是提交
signDate: this.state.signDate,//签单日期
contacts: this.state.contacts,//企业负责人
contactMobile: this.state.contactMobile,//负责人联系方式
legalPerson: this.state.legalPerson,//企业法人
legalPersonTel: this.state.legalPersonTel,//企业法人联系电话
approval: this.state.approval,//特批状态
contractNo: this.state.contractNo,//合同编号
orderRemarks: this.state.orderRemarks,//订单备注
contractPictureUrl:theorgCodeUrl.length?theorgCodeUrl:'',
}
}).done(function(data) {
this.setState({
loading: false
});
if(!data.error.length) {
message.success('保存成功!');
this.handleOk();
this.loadData();
} else {
message.warning(data.error[0].message);
}
}.bind(this));
},
//订单详情修改
xiangqingClick(e) {
e.preventDefault();
this.setState({
loading: true
});
$.ajax({
url: globalConfig.context + '/api/admin/newOrder/updateServiceOrderNew',
method: 'post',
data: {
orderNo: this.state.orderNo,//订单编号
totalAmount: this.state.totalAmount,//总金额
firstAmount: this.state.firstAmount,//首付
isSubmit: this.state.isSubmit,//保存草稿还是提交
signDate: this.state.selTime,//签单日期
contacts: this.state.contacts,//企业负责人
contactMobile: this.state.contactMobile,//负责人联系方式
legalPerson: this.state.legalPerson,//企业法人
legalPersonTel: this.state.legalPersonTel,//企业法人联系电话
approval: this.state.approval,//特批状态
contractNo: this.state.contractNo,//合同编号
orderRemarks: this.state.orderRemarks,//订单备注
}
}).done(function(data) {
this.setState({
loading: false
});
if(!data.error.length) {
message.success('保存成功!');
this.loaduser();
} else {
message.warning(data.error[0].message);
}
}.bind(this));
},
//查看基本详情基本信息
loaduser(record){
this.state.orderList=[]
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/newOrder/getOrderNewDetail',
data: {
orderNo:record?record.orderNo:this.props.datauser.orderNo
},
success: function (data) {
let thisData = data.data;
if (!thisData) {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
};
thisData = {};
};
this.setState({
id:thisData.id,
kehuId:thisData.buyerId,
orderNo:thisData.orderNo,//订单编号
orderType:thisData.orderType,//订单类型
firstAmount:thisData.firstAmount,//首付金额
totalAmount:thisData.totalAmount,//总金额
settlementAmount:thisData.settlementAmount,//结算金额
liquidationStatus:thisData.liquidationStatus,//清算状态
processStatus:thisData.processStatus,//流程状态
approval:thisData.approval.toString(),//特批状态
orderRemarks:thisData.orderRemarks,//订单备注
contractNo:thisData.contractNo,//合同编号
contacts:thisData.contacts,//联系人
contactMobile:thisData.contactMobile,//联系人电话
legalPerson:thisData.legalPerson,//法人
legalPersonTel:thisData.legalPersonTel,//法人电话
contractNo:thisData.contractNo,//合同编号
orgCodeUrl: thisData.contractPictureUrl ? splitUrl(thisData.contractPictureUrl, ',', globalConfig.avatarHost + '/upload') : [],//图片地址
signDate:thisData.signDate,//签单时间
userName:thisData.userName,//客户名称
salesmanName:thisData.salesmanName,//营销员名称
financeName:thisData.financeName,//财务名称
contractNo:thisData.contractNo,//合同编号
approval:thisData.approval==0?thisData.approval.toString():thisData.approval,
});
}.bind(this),
}).always(function () {
this.setState({
loading: false
});
}.bind(this));
},
//查看催款节点
loaduserss(record){
this.state.orderList=[]
this.setState({
orderNoss:record?record.orderNo:this.props.datauser.orderNo,
})
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + '/api/admin/newOrder/selectOrderDun',
data: {
orderNo:record?record.orderNo:this.props.datauser.orderNo
},
success: function (data) {
let theArr=[];
let thisData=[];
if (!thisData) {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
};
thisData = {};
}else{
for(let i = 0; i < data.data.length; i++) {
thisData= data.data[i];
theArr.push({
key:i,
dunSubject:thisData.dunSubject?thisData.dunSubject.toString():"",//催款科目
id:thisData.id,//节点Id
money:thisData.money,//催款金额
dunStatus:thisData.dunStatus,//催款状态
orderNo:record?record.orderNo:this.props.datauser.orderNo,
})
}
this.setState({
contactList:theArr
})
};
}.bind(this),
}).always(function () {
this.setState({
loading: false
});
}.bind(this));
},
//催款节点保存
contactSave(e) {
this.setState({
loading: true
});
$.ajax({
url: globalConfig.context + '/api/admin/newOrder/createOrderDun',
method: 'post',
data: {
orderNo: this.state.orderNoss,
orderDun: JSON.stringify(this.state.contactList)
}
}).done(function(data) {
this.setState({
loading: false
});
if(!data.error.length) {
message.success('保存成功!');
this.loaduserss();
} else {
message.warning(data.error[0].message);
}
}.bind(this));
},
//点击新增催款节点
addcontact(record) {
this.state.contactList.push({
key:this.state.contactList.length,
money: '',
dunSubject:undefined,
orderNo: this.state.orderNoss,
dunTarget:this.state.kehuId,
});
this.setState({
contactList: this.state.contactList
})
console.log(this.state.contactList);
},
//删除收款节点
confirmDelet(index) {
this.state.contactList.splice(index,1);
this.setState({
contactList: this.state.contactList
})
this.contactSave();
},
handleOk(e) {
this.setState({
visible: false,
});
this.props.closeDesc(false, true);
},
handleCancel(e) {
this.setState({
visible: false,
});
this.props.closeDesc(false);
},
//点击签单
handleCancels(e) {
this.setState({
isSubmit:1
})
},
//点击签单
handleCancelq(e) {
this.setState({
isSubmit:0
})
},
//删除
delectRow(record) {
this.setState({
loading: true
});
$.ajax({
method: "post",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/deleteOrderTask",
data: {
id:record.id
}
}).done(function (data) {
if (!data.error.length) {
message.success('删除成功!');
this.setState({
loading: false,
});
//this.loaduser()
this.loadData();
} else {
message.warning(data.error[0].message);
};
}.bind(this));
},
nextCancel() {
this.setState({
addnextVisible: false
})
},
getOrgCodeUrl(e) {
this.setState({ orgCodeUrl: e });
},
componentWillMount() {
},
//加载(自动补全)
supervisor(e,state){ //客户名称与服务名称自动补全
let api=state?'/api/admin/customer/getCustomerByName':'/api/admin/order/getBusinessProjectByName';
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + api,
data:state?{
name:e,
type:this.state.customType
}:{
businessName: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({
states:state,
customerArr:thedata,
});
}.bind(this),
}).always(function () {
this.setState({
loading: false
});
}.bind(this));
},
//上级主管输入框失去焦点是判断客户是否存在
selectAuto(value){
let kid=[];
let fwList=this.state.customerArr;
fwList.map(function(item){
if(value==item.bname){
kid=item
}
})
this.setState({
commodityName:value,
gid:kid.id,
//commodityPrice:kid.price==0?kid.price.toString():kid.price,
commodityFirstPayment:kid.firstPayment==0?kid.firstPayment.toString():kid.firstPayment
})
},
//客户
selectAutoCUT(value){
let autoIds;
let fwList=this.state.customerArr;
fwList.map(function(item){
if(value==item.name){
autoIds=item.id
}
})
this.setState({
customerName:value,
autoId:autoIds
})
},
//服务值改变时请求客户名称
httpChange(e){
this.state.gid='';
if(e.length>=1){
this.supervisor(e,false);
}
this.setState({
commodityName:e
})
},
//客户名称自动补全
customerChange(e){
this.state.autoId='';
if(e.length>=2){
this.supervisor(e,true);
}
this.setState({
customerName:e
})
},
//点击添加项目明细
addDetailed(){
this.setState({
gid:'',
customerArr:[],
commodityName:'',
commodityQuantity:'',
commodityId:'',
taskComment:'',
main:undefined,
commodityPrice:'',
addState:1,
addnextVisible: true
})
},
//新建项目明细保存
nextSubmit(e) {
e.preventDefault();
if(this.state.gid==undefined||!this.state.gid){
message.warning('服务名称不匹配!');
return false;
};
if(!this.state.commodityPrice){
message.warning('请输入金额!');
this.refs.commodityPrice.focus();
return false;
};
if(!this.state.commodityQuantity){
message.warning('请输入商品数量!');
this.refs.commodityQuantity.focus();
return false;
};
if(!this.state.main){
message.warning('请选择是否为主要项目!');
this.refs.commodityQuantity.focus();
return false;
};
this.setState({
loading: true
});
let api=this.state.addState?'/api/admin/newOrder/addOrderTask':'/api/bianji';
$.ajax({
method: "POST",
dataType: "json",
crossDomain: false,
url: globalConfig.context +api ,
data: {
commodityId:this.state.gid,//商品ID
orderNo:this.props.datauser.orderNo,//订单编号
commodityName:this.state.commodityName,//商品名称
commodityQuantity:this.state.commodityQuantity,//商品数量
commodityPrice:this.state.commodityPrice,//签单总价
taskComment:this.state.taskComment,//服务说明
main:this.state.main,//是否为主要项目
}
}).done(function(data) {
this.setState({
loading: false
});
if(!data.error.length) {
message.success('保存成功!');
this.nextCancel()
//this.loaduser(this.props.datauser);
this.loadData();
} else {
message.warning(data.error[0].message);
}
}.bind(this));
},
//点击打卡项目详情
tableRowClick(record, index) {
console.log(record);
this.setState({
jid:record.id,//项目ID
kid:record.commodityId,//商品ID
commodityName:record.commodityName,//金额
commodityPrice:record.commodityPrice,//金额
commodityQuantity:record.commodityQuantity,//数量
taskComment:record.taskComment,//备注
main:record.main.toString(),//是否为主要
addnextVisible:true,
addState:0,
});
},
//修改项目详情
tabRowSave(e){
e.preventDefault();
if(!this.state.commodityPrice){
message.warning('金额不能为空!');
return false;
};
if(!this.state.commodityQuantity){
message.warning('数量不能为空!');
return false;
};
if(!this.state.main){
message.warning('请选择是否为主要项目!');
this.refs.commodityQuantity.focus();
return false;
};
$.ajax({
method: "POST",
dataType: "json",
crossDomain: false,
url: globalConfig.context +'/api/admin/newOrder/updateOrderTask' ,
data: {
id:this.state.jid,//项目ID
commodityId:this.state.kid,//商品ID
orderNo:this.props.datauser.orderNo,//订单编号
main:this.state.main,//是否为主要
commodityPrice:this.state.commodityPrice,//金额
commodityQuantity:this.state.commodityQuantity,//数量
taskComment:this.state.taskComment//备注
}
}).done(function(data) {
this.setState({
loading: false
});
if(!data.error.length) {
message.success('保存成功!');
this.nextCancel()
this.loaduser(this.props.datauser);
this.loadData();
} else {
message.warning(data.error[0].message);
}
}.bind(this));
},
//签单时间选择
selTime(e,index){
this.setState({
entryTime:e,
signDate:e,
selTime:index
})
},
//退单操作
//点击退单
tuikuan(){
this.setState({
lookVisible:true
})
},
//关闭退单
noCancel(){
this.setState({
lookVisible:false
})
},
//点击确认退单
tuidanOk(){
let contractUrls = [];
let applicationUrls = [];
if (this.state.contractUrl.length) {
let picArr = [];
this.state.contractUrl.map(function (item) {
if ( item.response && item.response.data && item.response.data.length ){
picArr.push(item.response.data);
}
});
contractUrls = picArr.join(",");
};
if (this.state.applicationUrl.length) {
let picArr = [];
this.state.applicationUrl.map(function (item) {
if ( item.response && item.response.data && item.response.data.length ){
picArr.push(item.response.data);
}
});
applicationUrls = picArr.join(",");
};
$.ajax({
method: "POST",
dataType: "json",
crossDomain: false,
url: globalConfig.context +'/api/admin/newOrder/addOrderRefund' ,
data: {
orderNo:this.state.orderNo,//订单编号
contractUrl:contractUrls.length?contractUrls:'',//终止合同
applicationUrl:applicationUrls.length?applicationUrls:'',//退单申请表
reason:this.state.reason,//退单原因
}
}).done(function(data) {
this.setState({
loading: false
});
if(!data.error.length) {
message.success('退单成功!');
this.noCancel();
this.handleCancel();
} else {
message.warning(data.error[0].message);
}
}.bind(this));
},
//开单选择订单类型骚操作
orderTypeFn(e){
if(e==0){
this.setState({
bussStats:true,
orderType:e
})
this.category();
}else{
this.setState({
contractType:undefined,
bussStats:false,
orderType:e
})
}
},
//品类数据获取
category(){
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/Varieties/getSuperList",
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.cname,
id:item.id,
})
})
}
this.setState({
contractType:undefined,
categoryArr:theArr,
})
}.bind(this),
});
},
componentWillReceiveProps(nextProps) { //props改变时触发
this.state.visible = nextProps.showDesc;
this.state.signBillVisible=nextProps.signBillVisible;
if(this.state.signBillVisible){
this.loaduser(nextProps.uid)
};
if(nextProps.userDetaile && nextProps.showDesc) {
this.loaduser(nextProps.datauser);
this.loaduserss(nextProps.datauser);
this.loadData(nextProps.datauser);
}else{
this.setState({
orderType:undefined,
customerName:'',
autoId:'',
customerArr:[],
contractType:undefined,
bussStats:false,
customType:undefined
})
}
},
render() {
const FormItem = Form.Item
const formItemLayout = {
labelCol: { span: 8 },
wrapperCol: { span: 14 },
};
const changeHtml=this.state.changeHtml ||[];
const categoryList=this.state.categoryArr ||[];
const orderDetaiel=this.state.orderList || [];
const dataSources=this.state.customerArr || [];
const options = this.state.states?dataSources.map((group,index) =>
{group.name}
):dataSources.map((group,index) =>
{group.bname}
)
return(
)
}
}));
export default Form.create()(NewService);