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, ShowModal, getType } from "@/tools.js"; import "./customer.less"; import { ChangeDetail } from "./changeComponent/changeDetailJsjl.js"; import { SearchInput } from "./changeComponent/searchInput.js"; import OrderDetail from "./changeComponent/orderDetail"; import ShowModalDiv from "@/showModal.jsx"; import OrderRiZi from "@/orderRiZi.jsx"; import {ChooseList} from "./chooseList"; 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, orderNo: this.state.searchData.orderNoSearch, contractNo: this.state.searchData.contractNoSearch, 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, 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: [], attachmentUrl: [], proceedsData: {}, proTotal: 0, invTotal: 0, contractData: {}, // 回收退票数据 refundInvoice: [], RefundInvoice: [], additionalOrderData: {}, 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; } } ], 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, processStateText: record.processStateText, id: record.id, orderNo: record.orderNo }, () => { this.xiangqing(record.orderNo); this.xiangmu(record.orderNo); this.jiedian(record.orderNo); this.jiedianNew(record.orderNo); this.createTabs(); } ); // console.log("row",this.state.activeKey); }, //点击打卡项目详情 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, { processStateText: this.state.processStateText, userName: this.state.userName, contractNo: this.state.contractNo }); 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({ 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, }); } }.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 { // console.log("拿到历史", data.data); 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.xiangmu(key); this.jiedian(key); this.jiedianNew(key); this.loadDataChange(key); } } ); // console.log("change",this.state.activeKey); if (key === "a") { this.xiangmu(this.state.orderNo); this.jiedian(this.state.orderNo); this.jiedianNew(this.state.orderNo); } // if (key === "2") { // this.ChangeDetail(this.state.id); // this.loadDataChange(); // } // 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.loadData(1); }, outReset() { this.setState({ companyName: "", amount: "", unitPrice: "", unitNumber: "", outsourceRemarks: "", attachmentUrl: [], pictureUrl: [] }); }, getOrgCodeUrl(e) { this.setState({ pictureUrl: e }); }, //关闭详情 visitCancel() { this.setState( { visible: false, activeKey: "a" }, () => { this.setState({ activeKey: "a" }); } ); this.loadData(this.state.page); // console.log("table",this.state.activeKey); }, visitOk() { this.setState({ visible: false }); }, 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 }); } } }); }, changeList(arr) { const newArr = []; this.state.columns.forEach(item => { arr.forEach(val => { if (val === item.title) { newArr.push(item); } }); }); this.setState({ changeList: newArr }); }, render() { const tabList = this.state.tabList || []; const formItemLayout = { labelCol: { span: 8 }, wrapperCol: { span: 14 } }; const FormItem = Form.Item; const { TabPane } = Tabs; return (
合同变更审核订单
} >
{/* */} {tabList.map((item, index, arr) => { return ( ); })} {/* {this.state.status === 4 ? (
) : ( "" )} */} {tabList.map((item, index) => { if (item.usedOrder) { return (
); } else { return ""; } })} {this.state.status === 4 && this.state.isAddition ? ( this.state.type === 4 || this.state.type === 5 ? ( ) : ( "" ) ) : ( "" )}
{ this.setState({ reason: e.target.value }); }} />
{/*
*/} {this.state.addnextVisible && } ); } }) ); export default contractChange;