import React from "react";
import {Button, Input, Spin, Table, message, Form, Modal, Tabs, Tooltip,} from "antd";
import $ from "jquery/src/ajax";
import {
getNewOrderStatus,
getProcessStatusNew,
splitUrl,
getjiedian,
getboutique,
getCuikuan,
getProjectStatus,
getContractChangeStatus,
ShowModal,
getType
} from "@/tools.js";
import "./customer.less";
import { SearchInput } from "./changeComponent/searchInput.js";
import { ChangeDetail } from "./changeComponent/changeDetailYxy.js";
import AddOrders from "./addorders.js";
import OrderDetail from "./changeComponent/orderDetail";
import ChangeApply from "./changeComponent/changeApply";
import { ChooseList } from "./chooseList.jsx";
import ShowModalDiv from "@/showModal.jsx";
import OrderRiZi from "@/orderRiZi.jsx";
import {getProjectName} from "../../../tools";
import ProjectDetailsReadOnly from "../../../common/projectDetailsReadOnly";
import OrderItemStatus from "../../../common/orderItemStatus";
const contractChange = Form.create()(
React.createClass({
loadData(pageNo) {
this.setState({
loading: true
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/orderChange/orderChangeList",
data: {
pageNo: pageNo || 1,
pageSize: this.state.pagination.pageSize,
userName: this.state.searchData.userNameSearch,
processState: this.props.processState,
timeType: this.state.searchData.timeTypeSearch,
startTime: this.state.searchData.releaseDate[0],
endTime: this.state.searchData.releaseDate[1],
salesmanName: this.state.searchData.salesmanNameSearch,
complete: this.state.searchData.completeSearch || 1,
depId: this.state.searchData.depIdSearch,
orderNo: this.state.searchData.orderNoSearch,
contractNo: this.state.searchData.contractNoSearch,
type: this.state.searchData.changeSearch
},
success: function (data) {
ShowModal(this);
let theArr = [];
if (data.error.length || 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,
orderNo: thisdata.orderNo,
createTimes: thisdata.createTimes,
nickname: thisdata.nickname,
orderType: thisdata.orderType,
establishTimes: thisdata.establishTimes,
orderStatus: thisdata.orderStatus,
totalAmount: thisdata.totalAmount,
settlementAmount: thisdata.settlementAmount,
arrears: thisdata.arrears,
salesmanName: thisdata.salesmanName,
depName: thisdata.depName,
processState: thisdata.processState,
type: thisdata.type,
status: thisdata.status,
id: thisdata.id,
contractNo: thisdata.contractNo,
processStateText: getProcessStatusNew(
thisdata.processState,
thisdata.status
)
});
}
this.state.pagination.total = data.data.totalCount;
this.state.pagination.current = data.data.pageNo;
}
if (data.data && data.data.list && !data.data.list.length) {
this.state.pagination.total = 0;
}
this.setState({
dataSource: theArr,
pageNo: pageNo,
pagination: this.state.pagination
});
}.bind(this)
}).always(
function () {
this.setState({
loading: false
});
}.bind(this)
);
},
getInitialState() {
return {
page: 1,
searchData: {
releaseDate: []
},
declarationBatch: 1,
dataInfor: {},
primaryOrderData: {}, //原订单数据
orderData: {}, //现订单数据
pictureUrl: [],
voucherUrl: [],
buttonStatusA: true,
attachmentUrl: [],
proceedsData: {},
proTotal: 0,
invTotal: 0,
contractData: {},
// 回收退票数据
refundInvoice: [],
RefundInvoice: [],
paginations: false,
activeKey: "a",
confirmLoading: false,
aloading: false,
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: "contractNo",
key: "contractNo"
},
{
title: "订单编号",
dataIndex: "orderNo",
key: "orderNo"
},
{
title: "客户名称",
dataIndex: "nickname",
key: "nickname",
width: 150,
render: (text) => {
return (
{text}
)
},
},
{
title: "订单部门",
dataIndex: "depName",
key: "depName"
},
{
title: "订单类型",
dataIndex: "orderType",
key: "orderType",
render: text => {
return text ? "科技项目" : "认证项目";
}
},
{
title: "下单时间",
dataIndex: "establishTimes",
key: "establishTimes"
},
{
title: "订单状态",
dataIndex: "orderStatus",
key: "orderStatus",
render: text => {
return getNewOrderStatus(text);
}
},
{
title: "合同额(万元)",
dataIndex: "totalAmount",
key: "totalAmount"
},
{
title: "已付额(万元)",
dataIndex: "settlementAmount",
key: "settlementAmount"
},
{
title: "欠款(万元)",
dataIndex: "arrears",
key: "arrears"
},
{
title: "订单负责人",
dataIndex: "salesmanName",
key: "salesmanName"
},
{
title: "变更类型",
dataIndex: "type",
key: "type",
render: text => {
return getType(text);
}
},
{
title: "审核状态",
dataIndex: "processStateText",
key: "processStateText"
},
{
title: "提交时间",
dataIndex: "createTimes",
key: "createTimes"
}
],
dataSource: [],
// 传递给子组件的
dataProps: [],
columnsX: [
{
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: "projectStatus",
key: "projectStatus",
render: text => {
return getProjectName(text);
}
},
{
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数组
changeList: undefined,
columnsrizhi: [
{
title: "流程",
dataIndex: "processName",
key: "processName"
},
{
title: "操作人",
dataIndex: "adminName",
key: "adminName"
},
{
title: "时间",
dataIndex: "createDate",
key: "createDate"
}
],
dataSourceX: [],
ContactsLists: [
{
title: "催款科目",
dataIndex: "dunSubject",
key: "dunSubject",
render: text => {
return getjiedian(text);
}
},
{
title: "金额(万元)",
dataIndex: "money",
key: "money"
},
{
title: "催款状态",
dataIndex: "dunStatus",
key: "dunStatus",
render: text => {
return getCuikuan(text);
}
}
]
};
},
//页面加载函数
componentWillMount() {
this.loadData();
},
//整行点击
tableRowClick(record) {
this.setState(
{
visible: true,
type: record.type,
status: record.status,
buttonStatus: true,
orderStatus: record.orderStatus,
id: record.id,
processStateText: record.processStateText,
orderNo: record.orderNo
},
() => {
this.xiangqing(record.orderNo);
// this.ChangeDetail(this.state.id);
this.createTabs()
}
);
},
//点击打卡项目详情
tableRowClickX(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,
dataInfor:record,
addState: 0
});
},
//项目详情关闭
nextCancel() {
this.setState({
addnextVisible: false
});
},
// 合同变更详情
ChangeDetail(id) {
let url = window.location.href.substring(7);
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url:
globalConfig.context +
"/api/admin/orderChange/orderChangeDetailsById",
data: {
id: id
},
success: function (data) {
if (data.data) {
let thisdata = data.data;
Object.assign(thisdata, {
id: this.state.id,
userName: this.state.userName,
processStateText: this.state.processStateText,
contractNo: this.state.contractNo,
startRemarks: thisdata.zxsRemarks
});
this.setState({
contractData: thisdata,
voucherUrl: thisdata.voucherUrl
? splitUrl(
thisdata.voucherUrl,
",",
globalConfig.avatarHost + "/upload",
url
)
: []
});
}
}.bind(this)
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url:
globalConfig.context +
"/api/admin/orderChange/listOrderInvoiceAndBill",
data: {
orderNo: this.state.orderNo
},
success: function (data) {
if (!data.data) return;
let proTotal = 0;
let invTotal = 0;
data.data.bill.forEach(item => {
proTotal += item.transactionAmount;
});
data.data.invoice.forEach(item => {
invTotal += item.amount;
});
this.setState({
proceedsData: data.data,
proTotal: (Math.round(proTotal * 1000000) / 1000000).toFixed(6),
invTotal: (Math.round(invTotal * 1000000) / 1000000).toFixed(6),
});
}.bind(this)
});
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url:
globalConfig.context +
"/api/admin/orderChange/listOrderRefundInvoice",
data: {
orderNo: this.state.orderNo
},
success: data => {
if (!data) return;
data.data.forEach(item => {
item.load = true;
});
this.setState({
refundInvoice: data.data
});
}
});
},
//订单详情
xiangqing(orderNos) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
data: {
orderNo: orderNos
},
success: function (data) {
if (data.error.length || data.data.list == "") {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} else {
let thisdata = data.data;
this.setState(
{
orderUid: thisdata.uid,
userName: thisdata.userName,
primaryOrderNo: thisdata.primaryOrder,
additionalOrder: thisdata.additionalOrder,
contractNo: thisdata.contractNo,
// arrears: thisdata.arrears,
orderData: thisdata,
isAddition: thisdata.additionalOrder ? true : false,
deleteSign:thisdata.deleteSign,
},
() => {
if (this.state.orderData.deleteSign !== 3) {
this.xiangmu(this.state.orderNo);
this.jiedian(this.state.orderNo);
this.jiedianNew(this.state.orderNo);
}
}
);
}
}.bind(this)
});
},
// 原订单数据
primaryOrder(primaryOrder) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
data: {
orderNo: primaryOrder
},
success: function (data) {
if (data.error.length || data.data.list == "") {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} else {
let thisdata = data.data;
this.setState({
primaryOrderData: thisdata
});
}
}.bind(this)
});
},
// 附加订单数据
additionalOrder(additionalOrder) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
data: {
orderNo: additionalOrder
},
success: function (data) {
if (data.error.length || data.data.list == "") {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} else {
let thisdata = data.data;
this.setState({
additionalOrderData: thisdata
});
}
}.bind(this)
});
},
//项目列表
xiangmu(orderNos) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
data: {
orderNo: orderNos
},
success: function (data) {
let theArr = [];
if (data.error.length || data.data.list == "") {
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];
thisdata.key = i;
thisdata.sort = thisdata.cSort;
theArr.push(thisdata);
}
}
this.setState({
dataSourceX: theArr
});
}.bind(this)
});
},
search(obj) {
this.setState(
{
searchData: obj
},
() => {
this.loadData(1);
}
);
},
rizhi(orderNo) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: "/api/admin/newOrder/selectOrderLog",
data: {
orderNo: orderNo
},
success: function (data) {
let theArr = [];
let thisData = data.data;
if (!thisData.length) {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
thisData = {};
} else {
for (let i = 0; i < data.data.length; i++) {
let thisdata = data.data[i];
theArr.push({
processName: thisdata.processName,
adminName: thisdata.adminName,
createDate: thisdata.createDate,
remarks: thisdata.remarks
});
}
}
this.setState({
dataSourcerizhi: theArr
});
}.bind(this)
});
},
getOrderLog(orderNo) {
this.setState({
rizhivisible: true
});
this.rizhi(orderNo);
},
closeOrderLog() {
this.setState({
rizhivisible: false
});
},
//节点列表
jiedian(orderNos) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/selectOrderDun",
data: {
orderNo: orderNos
},
success: function (data) {
let theArr = [];
let thisData = [];
if (data.error.length || data.data.list == "") {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} 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 //催款状态
});
}
this.setState({
contactList: theArr
});
}
}.bind(this)
});
},
jiedianNew(orderNos) {
$.ajax({
method: "get",
dataType: "json",
crossDomain: false,
url:
globalConfig.context + "/api/admin/newOrderDun/selectListNewOrderDun",
data: {
orderNo: orderNos
},
success: function (data) {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
} else {
let theArr = [];
let thisData = [];
let arr = data.data || [];
let totalCui = 0;
for (let i = 0; i < arr.length; i++) {
thisData = arr[i];
totalCui += +thisData.money;
theArr.push({
key: i,
dunSubject: thisData.dunSubject
? thisData.dunSubject.toString()
: "", //催款科目
id: thisData.id, //节点Id
money: thisData.money, //催款金额
// orderNo: record ? record.orderNo : this.props.datauser.orderNo,
commodityName: thisData.commodityName,
projectType: thisData.projectType,
dunTypeName: thisData.dunTypeName,
status: thisData.status,
waitDay: thisData.waitDay,
effectiveCount: thisData.effectiveCount,
startDate: thisData.startDate,
dunType: thisData.dunType,
appropriationRatio: thisData.appropriationRatio,
customizeName: thisData.customizeName,
customizeTimes: thisData.customizeTimes,
tid: thisData.tid,
});
}
if (!totalCui) {
totalCui = 0;
}
totalCui = (Math.round(totalCui * 1000000) / 1000000).toFixed(6);
this.setState({
contactListNew: theArr,
totalCui
});
}
}.bind(this)
}).always(
function () {
this.setState({
loading: false
});
}.bind(this)
);
},
//审核通过
examOk() {
$.ajax({
method: "post",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/auditOrderNew",
data: {
orderNo: this.state.orderNo,
orderStatus: 2
},
success: function (data) {
if (data.error.length || data.data.list == "") {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} else {
message.success("该订单已通过审核~");
this.setState({
visible: false
});
this.reset();
}
}.bind(this)
}).always(
function () {
this.setState({
loading: false
});
}.bind(this)
);
},
//通过发给外包
outsourcing() {
$.ajax({
method: "post",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/auditOrderNew",
data: {
orderNo: this.state.orderNo,
orderStatus: 2,
outsource: 1
},
success: function (data) {
if (data.error.length || data.data.list == "") {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} else {
message.success("该订单已通过审核~");
this.setState({
visible: false
});
this.reset();
}
}.bind(this)
}).always(
function () {
this.setState({
loading: false
});
}.bind(this)
);
},
//审核不通过
examOks() {
this.setState({
aloading: true
});
$.ajax({
method: "post",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/newOrder/auditOrderNew",
data: {
orderNo: this.state.orderNo,
orderStatus: 3,
reason: this.state.reason
},
success: function (data) {
if (data.error.length || data.data.list == "") {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
this.setState({
aloading: true
});
}
} else {
message.success("该订单已被拒绝~");
this.setState({
visible: false,
aloading: false,
noVisible: false,
reason: ""
});
this.reset();
}
}.bind(this)
}).always(
function () {
this.setState({
loading: false
});
}.bind(this)
);
},
//点击拒绝
examNo() {
this.setState({
noVisible: true
});
},
loadDataChange(key) {
$.ajax({
method: "get",
dataType: "json",
async: false,
crossDomain: false,
url: globalConfig.context + "/api/admin/orderChange/orderChangeLogList",
data: {
changeId: key
},
success: function (data) {
if (data.error.length || data.data.list == "") {
if (data.error && data.error.length) {
message.warning(data.error[0].message);
}
} else {
this.setState({
dataProps: data.data
});
}
}.bind(this)
});
},
callback(key) {
this.setState(
{
activeKey: key
},
() => {
if (key != "a" && key != "c" && key.length < 10) {
this.ChangeDetail(key);
this.loadDataChange(key);
} else if (key != "a" && key != "c" && key.length > 10) {
this.primaryOrder(key);
this.ChangeDetail(key);
this.xiangmu(key);
this.jiedian(key);
this.jiedianNew(key);
this.loadDataChange(key);
}
}
);
if (key === "a") {
if (this.state.orderData.deleteSign !== 3) {
this.xiangmu(this.state.orderNo);
this.jiedian(this.state.orderNo);
this.jiedianNew(this.state.orderNo);
}
}
// if (key === "3") {
// this.primaryOrder(this.state.primaryOrderNo);
// this.xiangmu(this.state.primaryOrderNo);
// this.jiedian(this.state.primaryOrderNo);
// this.jiedianNew(this.state.primaryOrderNo);
// }
if (key === "c") {
this.additionalOrder(this.state.additionalOrder);
this.xiangmu(this.state.additionalOrder);
this.jiedian(this.state.additionalOrder);
this.jiedianNew(this.state.additionalOrder);
this.setState({
buttonStatusA: false
});
} else {
this.setState({
buttonStatusA: true
});
}
},
closeDesc(e, s) {
this.state.activeKey = "a";
this.state.userDetaile = false;
this.state.signBillVisible = false;
this.state.visible = e;
if (s) {
this.loadData(this.state.pageNo);
}
},
// 获取原订单编号
getPrimaryOrder(value) {
this.setState({
primaryOrder: value
});
},
getAdditionalOrder(value) {
this.setState({
additionalOrder: value
});
},
getUrl(url) {
let theorgCodeUrl = [];
if (url.length) {
let picArr = [];
url.map(function (item) {
if (
item.response &&
item.response.data &&
item.response.data.length
) {
picArr.push(item.response.data);
}
});
theorgCodeUrl = picArr.join(",");
}
return theorgCodeUrl;
},
sureOut() {
if (!this.state.companyName) {
message.warning("公司名称不能为空");
return;
}
if (!this.state.unitPrice) {
message.warning("单价不能为空");
return;
}
if (!this.state.unitNumber) {
message.warning("数量不能为空");
return;
}
if (!this.state.amount) {
message.warning("总金额不能为空");
return;
}
if (!this.state.outsourceRemarks) {
message.warning("备注不能为空");
return;
}
if (this.state.pictureUrl.length === 0) {
message.warning("合同扫描件不能为空");
return;
}
$.ajax({
method: "POST",
dataType: "json",
crossDomain: false,
url: globalConfig.context + "/api/admin/outsourceOrg/auditOutsource",
data: {
id: this.state.id,
orderNo: this.state.orderNo,
companyName: this.state.companyName,
amount: this.state.amount,
outsourceRemarks: this.state.outsourceRemarks,
unitNumber: this.state.unitNumber,
unitPrice: this.state.unitPrice,
attachmentUrl: this.getUrl(this.state.attachmentUrl).length
? this.getUrl(this.state.attachmentUrl)
: "",
orderStatus: 2,
pictureUrl: this.getUrl(this.state.pictureUrl).length
? this.getUrl(this.state.pictureUrl)
: ""
}
}).done(
function (data) {
this.setState({
loading: false
});
if (!data.error.length) {
message.success("发起成功!");
this.outReset();
this.visitCancel();
} else {
message.warning(data.error[0].message);
}
}.bind(this)
);
},
//关闭输入理由框
noCancel() {
this.setState({
noVisible: false,
aloading: false,
reason: ""
});
},
//重置
reset() {
this.setState({
signBillVisible: false
});
this.state.orderNo = "";
this.state.customerName = "";
this.state.releaseDate[0] = undefined;
this.state.releaseDate[1] = undefined;
this.state.approval = undefined;
this.state.completeSearch = 0;
this.loadData(1);
},
outReset() {
this.setState({
companyName: "",
amount: "",
unitPrice: "",
unitNumber: "",
outsourceRemarks: "",
attachmentUrl: [],
pictureUrl: []
});
},
getOrgCodeUrl(e) {
this.setState({ pictureUrl: e });
},
//关闭详情
visitCancel() {
this.setState(
{
activeKey: "a"
},
() => {
this.setState({
visible: false
});
}
);
this.loadData(this.state.pageNo);
},
visitOk() {
this.setState({
visible: false
});
},
changeList(arr) {
const newArr = [];
this.state.columns.forEach(item => {
arr.forEach(val => {
if (val === item.title) {
newArr.push(item);
}
});
});
this.setState({
changeList: newArr
});
},
createTabs() {
$.ajax({
url: globalConfig.context + "/api/admin/orderChange/getOrderChange",
method: "get",
data: {
orderNo: this.state.orderNo
},
success: (data) => {
if (data.error && data.error.length) {
message.warning(data.error[0].message)
} else {
this.setState({
tabList: data.data
})
}
}
});
},
render() {
const tabList = this.state.tabList || []
const formItemLayout = {
labelCol: { span: 8 },
wrapperCol: { span: 14 }
};
const FormItem = Form.Item;
const { TabPane } = Tabs;
return (
合同变更审核订单
}
>
{this.state.activeKey === 'a' ?
{this.state.orderData.deleteSign === 3 ? (
):(
) }
:}
{tabList.map((item, index, arr) => {
return (
{
this.state.activeKey === String(item.id) ?
(
this.state.contractData.processState === 0 &&
this.state.contractData.status != 5 ? (
) : (
)
) :
}
);
})}
{tabList.map((item, index) => {
if (item.usedOrder) {
return (
{
this.state.activeKey === String(item.usedOrder) ?
:
}
);
} else {
return "";
}
})}
{/* {this.state.status === 4 ? (
) : (
""
)} */}
{this.state.status === 4 && this.state.isAddition ? (
this.state.type === 4 || this.state.type === 5 ? (
{
this.state.activeKey === "c" ?
:
}
) : (
""
)
) : (
""
)}
:
}
{/*
*/}
{this.state.addnextVisible && }
);
}
})
);
export default contractChange;