import React from "react"; import { Table, Modal, message, Spin, Input, Select, Button, Form, Upload, Popconfirm, AutoComplete, DatePicker, Col } from "antd"; import $ from "jquery/src/ajax"; import "../userMangagement.less"; import moment from "moment"; import Picture from "@/manageCenter/publicComponent/picture"; import { jiedian, tepi, boutique } from "../../../dataDic.js"; import { splitUrl, getProcessStatus, getLiquidationStatus, getboutique, getApprovedState, getjiedian, getCuikuan, getProjectStatus } from "../../../tools.js"; import PicturesWall from "./changeComponent/picturesWall.js"; const Addorders = Form.create()( React.createClass({ //查看项目列表 loadData(orderNo) { this.state.data = []; this.setState({ loading: true }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/newOrder/getOrderTask", data: { orderNo: 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, //联系人电话 projectStatus: thisdata.projectStatus //项目状态 }); } } this.departmentList(); this.setState({ dataSource: theArr, pagination: false }); }.bind(this) }).always( function() { this.setState({ loading: false }); }.bind(this) ); }, //收款节点 loadDatas(orderNo) { this.state.data = []; this.setState({ loading: true }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/newOrder/selectOrderDun", data: { orderNo: 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: [], voucherUrl: [], customerArr: [], mark: false, activeKey: "1", buttonStatus: true, typeChange: 0, 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: "projectStatus", key: "projectStatus", render: text => { return getProjectStatus(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: "操作", dataIndex: "ABC", key: "ABC", render: (_text, record) => { return ( <div> {this.state.processStatus == 0 ? ( <Popconfirm title="是否删除?" onConfirm={() => { this.delectRow(record); }} okText="是" cancelText="否" > <Button onClick={e => { e.stopPropagation(); }} type="danger" > 删除 </Button> </Popconfirm> ) : ( "" )} </div> ); } } ], columnsrizhi: [ { title: "流程", dataIndex: "processName", key: "processName" }, { title: "操作人", dataIndex: "adminName", key: "adminName" }, { title: "时间", dataIndex: "createDate", key: "createDate" } ], contactList: [], loading: false, ContactsLists: [ { title: "催款科目", dataIndex: "dunSubject", key: "dunSubject", render: (text, record) => { return ( <div> {this.props.deleteSign === 3 || this.state.processStatus == 0 ? ( <Select placeholder="请选择催款科目" value={record.dunSubject} style={{ width: "150px" }} onChange={e => { record.dunSubject = e; this.setState({ contactList: this.state.contactList }); }} > {jiedian.map(function(item) { return ( <Select.Option key={item.value}> {item.key} </Select.Option> ); })} </Select> ) : ( getjiedian(text) )} </div> ); } }, { title: "金额(万)", dataIndex: "money", key: "money", render: (text, record) => { return ( <div> {this.props.deleteSign === 3 || this.state.processStatus == 0 ? ( <Input value={record.money} placeholder="请输入金额(必填项)" key={record.id} required="required" onChange={e => { record.money = e.target.value; this.setState({ contactList: this.state.contactList }); }} style={{ width: "120px" }} /> ) : ( <span>{text}</span> )} </div> ); } }, { title: "催款状态", dataIndex: "dunStatus", key: "dunStatus", render: text => { return getCuikuan(text); } }, { title: "操作", dataIndex: "dels", key: "dels", render: (_text, record, index) => { return ( <div> {this.props.deleteSign === 3 || this.state.processStatus == 0 ? ( <Popconfirm title="是否删除?" onConfirm={() => { this.confirmDelet(record); }} okText="删除" cancelText="不删除" > <Button style={{ marginRight: "10px", color: "#ffffff", background: "#f00", border: "none" }} > 删除 </Button> </Popconfirm> ) : ( "" )} {!record.id && index == this.state.contactList.length - 1 ? ( <Button type="primary" onClick={this.contactSave}> 保存 </Button> ) : ( "" )} </div> ); } } ] }; }, 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, depNo: item.depNo }); }); } this.setState({ departmentArr: theArr }); }.bind(this) }).always( function() { this.setState({ loading: false }); }.bind(this) ); }, //新建订单、编辑订单保存 handleSubmit() { 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.data) { if (!theorgCodeUrl) { message.warning("图片过大,上传失败"); return false; } if (!this.state.signDate) { message.warning("签单日期不能为空"); return false; } if (!this.state.orderRemarks) { message.warning("订单留言不能为空"); return false; } } else { } this.setState({ loading: true }); let api = "/api/admin/newOrder/updateServiceOrderNew"; $.ajax({ method: "POST", dataType: "json", crossDomain: false, url: globalConfig.context + api, data: { 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, //特批状态 orderRemarks: this.state.orderRemarks, //订单备注 contractPictureUrl: theorgCodeUrl.length ? theorgCodeUrl : "", orderDep: this.state.organizationSearch, deleteSign: this.props.deleteSign === 3 ? 0 : undefined } }).done( function(data) { this.setState({ loading: false }); if (!data.error.length) { message.success("保存成功!"); this.handleOk(); if (this.state.autoId) { this.loadData(this.props.data); } } 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, //特批状态 orderRemarks: this.state.orderRemarks //订单备注 } }).done( function(data) { this.setState({ loading: false }); if (!data.error.length) { message.success("保存成功!"); this.loaduser(this.props.data); } else { message.warning(data.error[0].message); } }.bind(this) ); }, //查看基本详情基本信息 loaduser(orderNo) { this.state.orderList = []; $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail", data: { orderNo: orderNo }, success: function(data) { let thisData = data.data; if (!thisData) { if (data.error && data.error.length) { message.warning(data.error[0].message); } thisData = {}; } // this.props.getPrimaryOrder(thisData.primaryOrder); // this.props.getAdditionalOrder(thisData.additionalOrder); 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, //营销员名称 salesmanMobile: thisData.salesmanMobile, //营销员电话 oldSalesmanName: thisData.oldSalesmanName, //营销员名称 oldSalesmanMobile: thisData.oldSalesmanMobile, //营销员电话 financeName: thisData.financeName, //财务名称 financeMobile: thisData.financeMobile, //财务电话 nowFinance: thisData.nowFinance, nowFinanceMobile: thisData.nowFinanceMobile, contractNo: thisData.contractNo, //合同编号 approval: thisData.approval == 0 ? thisData.approval.toString() : thisData.approval, organizationSearch: thisData.orderDep, depName: thisData.depName }); }.bind(this) }).always( function() { this.setState({ loading: false }); }.bind(this) ); }, //查看催款节点 loaduserss(orderNo) { this.state.orderList = []; this.setState({ orderNoss: orderNo }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/newOrder/selectOrderDun", data: { orderNo: 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, dunStatus: thisData.dunStatus, dunSubject: thisData.dunSubject ? thisData.dunSubject.toString() : "", //催款科目 id: thisData.id, //节点Id money: thisData.money, //催款金额 orderNo: orderNo }); } this.setState({ contactList: theArr }); } }.bind(this) }).always( function() { this.setState({ loading: false }); }.bind(this) ); }, //催款节点保存 contactSave() { if (this.state.contactList) { let cuiData = this.state.contactList; for (var a = 0; a < cuiData.length; a++) { if (cuiData[a].money == "") { message.warning("催款金额不能为空"); this.refs.signFirstPayment.focus(); return false; } else if (!cuiData[a].dunSubject) { message.warning("催款科目不能为空"); this.refs.signFirstPayment.focus(); return false; } } } 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(this.props.data); } else { message.warning(data.error[0].message); } }.bind(this) ); }, //点击新增催款节点 addcontact() { 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 }); }, //删除收款节点 confirmDelet(index) { if (index.id) { this.state.contactList.splice(index.key, 1); this.setState({ contactList: this.state.contactList }); this.contactSave(); } else { this.state.contactList.splice(index.key, 1); this.setState({ contactList: this.state.contactList }); } }, handleOk() { this.setState({ visible: false }); this.props.closeDesc(false, true); }, handleCancel() { if (this.state.orderType == undefined) { return false; } if (!this.state.autoId) { return false; } this.setState({ visible: false }); this.props.closeDesc(false); }, handleCancelclose() { this.setState( { visible: false }, () => { this.setState({ activeKey: "1" }); } ); this.props.closeDesc(false); this.reset(); }, //点击签单 handleCancels() { this.setState( { isSubmit: 1 }, () => { this.handleSubmit(); } ); }, //点击签单 handleCancelq() { this.setState( { isSubmit: 0 }, () => { this.handleSubmit(); } ); }, //删除 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(this.props.data); } else { message.warning(data.error[0].message); } }.bind(this) ); }, nextCancel() { this.setState({ addnextVisible: false }); }, rizhi() { this.setState({ loading: true }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: "/api/admin/newOrder/selectOrderLog", data: { orderNo: this.props.data }, 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 }); } } this.setState({ dataSourcerizhi: theArr }); }.bind(this) }).always( function() { this.setState({ loading: false }); }.bind(this) ); }, //查看订单日志 getOrderLog() { this.setState({ rizhivisible: true }); this.rizhi(); }, closeOrderLog() { this.setState({ rizhivisible: false }); }, callback(key) { this.setState({ activeKey: key }); }, getOrgCodeUrl(e) { this.setState({ orgCodeUrl: e }); }, getVoucherUrl(e) { this.setState({ voucherUrl: e }); }, //加载(自动补全) 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) { if (this.state.customType) { this.state.autoId = ""; if (e.length >= 2) { this.supervisor(e, true); } this.setState({ customerName: e }); } else { this.setState({ customerName: "" }); message.warning("客户所属类型必须指定"); } }, //点击添加项目明细 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.data, //订单编号 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(this.props.data); } else { message.warning(data.error[0].message); } }.bind(this) ); }, //点击打卡项目详情 tableRowClick(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.data, //订单编号 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(this.props.data); } 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, contractUrl: [], applicationUrl: [], reason: "" }); }, //关闭退单 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.handleCancelclose(); } 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) }); }, //变更申请 changeApply() { let theorgCodeUrl = []; if (this.state.voucherUrl.length) { let picArr = []; this.state.voucherUrl.map(function(item) { if ( item.response && item.response.data && item.response.data.length ) { picArr.push(item.response.data); } }); theorgCodeUrl = picArr.join(","); } $.ajax({ method: "post", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/orderChange/addOrderChange", data: { orderNo: this.state.orderNo, //订单编号 processState: 0, status: 1, remarks: this.state.remarksC, voucherUrl: theorgCodeUrl.length ? theorgCodeUrl : "", totalAmount: this.state.totalAmountC, settlementAmount: this.state.settlementAmountC, changeAmount: this.state.changeAmount, applicant: this.state.applicant, depName: this.state.depNameChange, type: this.state.typeChange } }).done( function(data) { this.setState({ loading: false }); if (!data.error.length) { message.success("变更成功!"); this.setState({ mark: true }); this.noCancel(); this.handleCancelclose(); } else { message.warning(data.error[0].message); } }.bind(this) ); }, reset() { this.setState({ remarksC: undefined, voucherUrl: [], totalAmountC: undefined, settlementAmountC: undefined, changeAmount: undefined, applicant: undefined, depNameChange: undefined, typeChange: 0 }); }, componentDidMount() { this.loaduser(this.props.data); this.loaduserss(this.props.data); this.loadData(this.props.data); }, componentWillReceiveProps(nextProps) { if (nextProps.mark) { this.setState({ buttonStatus: true }); } else { this.setState({ buttonStatus: false }); } if (nextProps.activeKey === "4") { this.loaduser(this.props.data); this.loaduserss(this.props.data); this.loadData(this.props.data); } }, render() { const FormItem = Form.Item; const formItemLayout = { labelCol: { span: 8 }, wrapperCol: { span: 14 } }; const formItemList = [ { label: "企业联系人", content: <span>{this.state.contacts}</span> }, { label: "联系人电话", content: <span>{this.state.contactMobile}</span> }, { label: "企业法人", content: <span>{this.state.legalPerson}</span> }, { label: "法人电话", content: <span>{this.state.legalPersonTel}</span> }, { label: "签单金额(万元)", content: <span>{this.state.totalAmount}</span> }, { label: "首付金额(万元)", content: <span>{this.state.firstAmount}</span> }, { label: "特批立项", content: <span>{getApprovedState(this.state.approval)}</span> }, { label: "合同签订时间", content: <span>{this.state.signDate}</span> }, { label: "订单部门", content: <span>{this.state.depName}</span> } ]; const dataSources = this.state.customerArr || []; let departmentArr = this.state.departmentArr || []; const options = this.state.states ? dataSources.map(group => ( <Select.Option key={group.id} value={group.name}> {group.name} </Select.Option> )) : dataSources.map((group, index) => ( <Select.Option key={index} value={group.bname}> {group.bname} </Select.Option> )); return ( <div> <Spin spinning={this.state.loading}> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="合同编号" > {<span>{this.state.contractNo}</span>} </FormItem> <FormItem className="half-item" {...formItemLayout} label="订单编号" > <span>{this.state.orderNo}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="流程状态" > <span>{getProcessStatus(this.state.processStatus)}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="结算状态" > <span> {getLiquidationStatus(this.state.liquidationStatus)} </span> </FormItem> {this.props.deleteSign === 3 || this.state.processStatus === 0 ? ( <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="特批立项" > <Select placeholder="请选择客户所属类型" style={{ width: "240px" }} value={this.state.approval} onChange={e => { this.setState({ approval: e }); }} > {tepi.map(function(item) { return ( <Select.Option key={item.value}> {item.key} </Select.Option> ); })} </Select> </FormItem> <FormItem className="half-item" {...formItemLayout} label="合同签订时间" > <DatePicker style={{ marginTop: "2px", width: "240px", height: "32px" }} showTime format="YYYY-MM-DD" onOk={() => {}} value={ this.state.signDate ? moment(this.state.signDate) : null } onChange={(_data, dataString) => { this.setState({ signDate: dataString }); }} /> <span className="mandatory">*</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="订单部门" > <Select placeholder="请输入订单部门" style={{ width: 240 }} value={this.state.organizationSearch} onChange={e => { this.setState({ organizationSearch: e }); }} > {departmentArr.map(function(item) { return ( <Select.Option key={item.id}> {item.name} </Select.Option> ); })} </Select> </FormItem> </div> ) : ( <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="特批立项" > <span>{getApprovedState(this.state.approval)}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="合同签订时间" > <span>{this.state.signDate}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="订单部门" > <span>{this.state.depName}</span> </FormItem> </div> )} </div> <h3 style={{ marginLeft: 10, fontWeight: 800, marginBottom: 10 }}> 收款项目 </h3> {this.props.deleteSign === 3 || this.state.processStatus === 0 ? ( <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="签单金额(万元)" > <Input placeholder="签单金额" ref="signTotalAmount" value={this.state.totalAmount} onChange={e => { this.setState({ totalAmount: e.target.value }); }} style={{ width: "240px" }} /> <span className="mandatory">*</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="首付金额(万元)" > <Input placeholder="请输入实签首款金额" ref="signFirstPayment" value={this.state.firstAmount} onChange={e => { this.setState({ firstAmount: e.target.value }); }} style={{ width: "240px" }} /> <span className="mandatory">*</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="已收款项" > <span>{this.state.settlementAmount + "万元"}</span> {/* {this.state.settlementAmount ? ( <Button type="primary" onClick={this.tuikuan} style={{ float: "right", marginRight: "50px", marginBottom: "15px" }} > 退单 </Button> ) : ( "" )} */} </FormItem> </div> ) : ( <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="签单金额(万元)" > <span>{this.state.totalAmount}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="首付金额(万元)" > <span>{this.state.firstAmount}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="已收款项" > <span>{this.state.settlementAmount + "万元"}</span> {/* {this.state.settlementAmount ? ( <Button type="primary" onClick={this.tuikuan} style={{ float: "right", marginRight: "50px", marginBottom: "15px" }} > 退单 </Button> ) : ( "" )} */} </FormItem> </div> )} <h3 style={{ marginLeft: 10, fontWeight: 800, marginBottom: 10 }}> 联系信息 </h3> {this.props.deleteSign === 3 || this.state.processStatus == 0 ? ( <div className="clearfix"> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="客户名称" > <span>{this.state.userName}</span> </FormItem> </div> <FormItem className="half-item" {...formItemLayout} label="企业联系人" > <Input placeholder="请输入联系人" ref="signTotalAmount" value={this.state.contacts} onChange={e => { this.setState({ contacts: e.target.value }); }} style={{ width: "240px" }} /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="联系人电话" > <Input placeholder="请输入联系人电话" ref="signTotalAmount" value={this.state.contactMobile} onChange={e => { this.setState({ contactMobile: e.target.value }); }} style={{ width: "240px" }} /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="企业法人" > <Input placeholder="请输入法人" ref="signTotalAmount" value={this.state.legalPerson} onChange={e => { this.setState({ legalPerson: e.target.value }); }} style={{ width: "240px" }} /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="法人电话" > <Input placeholder="请输入法人电话" ref="signTotalAmount" value={this.state.legalPersonTel} onChange={e => { this.setState({ legalPersonTel: e.target.value }); }} style={{ width: "240px" }} /> </FormItem> </div> ) : ( <div className="clearfix"> {formItemList.map((data, index) => { return ( <FormItem className="half-item" {...formItemLayout} key={index} label={data.label} > {data.content} </FormItem> ); })} </div> )} <div className="clearfix"> {this.props.deleteSign === 3 || this.state.processStatus == 0 ? ( <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label={ <span> <strong style={{ color: "#f00" }}>*</strong>合同扫描件 </span> } > <PicturesWall fileList={this.getOrgCodeUrl} pictureUrl={this.state.orgCodeUrl} url="/api/admin/order/uploadOrderImg" sign="" /> <p>图片建议:要清晰。</p> <Button style={{ float: "right", marginRight: "140px", marginTop: "20px" }} onClick={this.getOrderLog} > 查看订单日志 </Button> </FormItem> ) : ( <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="合同扫描件" > <Upload className="demandDetailShow-upload" listType="picture-card" fileList={this.state.orgCodeUrl} onPreview={file => { this.setState({ previewImage: file.url || file.thumbUrl, previewVisible: true }); }} ></Upload> <Modal maskClosable={false} footer={null} visible={this.state.previewVisible} onCancel={() => { this.setState({ previewVisible: false }); }} > <img alt="" style={{ width: "100%" }} src={this.state.previewImage || ""} /> </Modal> <Button style={{ float: "right", marginRight: "140px", marginTop: "20px" }} onClick={this.getOrderLog} > 查看订单日志 </Button> </FormItem> )} </div> <div className="clearfix"> {this.props.deleteSign === 3 || this.state.processStatus == 0 ? ( <div className="clearfix"> <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 16 }} label="订单留言" > <Input type="textarea" placeholder="请输入订单留言" rows={4} value={this.state.orderRemarks} onChange={e => { this.setState({ orderRemarks: e.target.value }); }} style={{ width: "95%" }} /> <span className="mandatory">*</span> </FormItem> </div> ) : ( <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 16 }} label="订单留言" > <p style={{ width: 500, wordWrap: "break-word" }}> {this.state.orderRemarks} </p> </FormItem> )} </div> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="订单负责人" > <span>{this.state.salesmanName}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="订单负责人电话" > <span>{this.state.salesmanMobile}</span> </FormItem> </div> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="当前财务负责人" > <span>{this.state.nowFinance}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="当前财务负责人电话" > <span>{this.state.nowFinanceMobile}</span> </FormItem> </div> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} style={{ opacity: ".5" }} label="原订单负责人" > <span>{this.state.oldSalesmanName}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} style={{ opacity: ".5" }} label="原订单负责人电话" > <span>{this.state.oldSalesmanMobile}</span> </FormItem> </div> <div className="clearfix"> <FormItem className="half-item" style={{ opacity: ".5" }} {...formItemLayout} label="实际财务操作人" > <span>{this.state.financeName}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} style={{ opacity: ".5" }} label="实际财务操作人电话" > <span>{this.state.financeMobile}</span> </FormItem> </div> <div> <span style={{ marginLeft: "50px", fontSize: "20px" }}> 催款节点 </span> {this.props.deleteSign === 3 || this.state.processStatus == 0 ? ( <Button type="primary" onClick={this.addcontact} style={{ float: "right", marginRight: "50px", marginBottom: "15px" }} > 添加催款节点 </Button> ) : ( "" )} </div> <div className="clearfix"> <Spin spinning={this.state.loading}> <Form layout="horizontal" id="demand-form"> <Table pagination={false} columns={this.state.ContactsLists} dataSource={this.state.contactList} /> <Col span={24} offset={9} style={{ marginTop: "15px" }}></Col> </Form> </Spin> </div>{" "} <div> <span style={{ marginLeft: "50px", fontSize: "20px" }}> 项目业务 </span> {this.props.deleteSign === 3 || this.state.processStatus == 0 ? ( <Button type="primary" onClick={this.addDetailed} style={{ float: "right", marginRight: "50px", marginBottom: "15px" }} > 添加项目明细 </Button> ) : ( "" )} </div> <div className="patent-table"> <Spin spinning={this.state.loading}> <Table columns={this.state.columns} dataSource={this.state.dataSource} pagination={this.state.pagination} onRowClick={this.tableRowClick} /> </Spin> </div>{" "} {this.props.deleteSign === 3 || this.state.processStatus == 0 ? ( <div className="addSave" style={{ marginTop: "15px", display: "flex", justifyContent: "flex-end" }} > {!this.state.buttonStatus ? ( <Button className="cancel" type="primary" onClick={this.handleCancels} style={{ marginRight: 20 }} htmlType="submit" > 签单 </Button> ) : ( "" )} <Button className="cancel" type="primary" onClick={this.handleCancelq} style={{ marginRight: 40 }} htmlType="submit" > 保存 </Button> </div> ) : ( "" )} </Spin> <Modal maskClosable={false} visible={this.state.addnextVisible} onOk={this.nextCancel} onCancel={this.nextCancel} width="800px" title={this.state.addState ? "添加项目任务" : "项目任务详情"} footer="" className="admin-desc-content" > <Form layout="horizontal" onSubmit={this.nextSubmit} id="demand-form" > <Spin spinning={this.state.loading}> {this.state.addState ? ( <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="服务名称" > <AutoComplete className="certain-category-search" dropdownClassName="certain-category-search-dropdown" dropdownMatchSelectWidth={false} dropdownStyle={{ width: 200 }} style={{ width: "200px" }} dataSource={options} placeholder="输入服务名称" value={this.state.commodityName} onChange={this.httpChange} filterOption={true} onSelect={this.selectAuto} > <Input /> </AutoComplete> <span className="mandatory">*</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="服务数量" > <Input placeholder="请输入服务数量" value={this.state.commodityQuantity} style={{ width: "200px" }} onChange={e => { this.setState({ commodityQuantity: e.target.value }); }} ref="commodityQuantity" /> <span className="mandatory">*</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="实签价格(万元)" > <Input placeholder="请输入实签价格" value={this.state.commodityPrice} style={{ width: "200px" }} onChange={e => { this.setState({ commodityPrice: e.target.value }); }} ref="commodityPrice" /> <span className="mandatory">*</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="主要业务" > <Select placeholder="选择是否为主要业务" style={{ width: "200px" }} value={this.state.main} onChange={e => { this.setState({ main: e }); }} > {boutique.map(function(item) { return ( <Select.Option key={item.value}> {item.key} </Select.Option> ); })} </Select> <span className="mandatory">*</span> </FormItem> <div className="clearfix"> <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 16 }} label="服务说明" > <Input type="textarea" placeholder="请输入服务说明" value={this.state.taskComment} onChange={e => { this.setState({ taskComment: e.target.value }); }} /> </FormItem> </div> <FormItem wrapperCol={{ span: 12, offset: 4 }} className="half-middle" > <Button className="submitSave" type="primary" htmlType="submit" > 保存 </Button> <Button className="submitSave" type="ghost" onClick={this.nextCancel} > 取消 </Button> </FormItem> </div> ) : ( <div className="clearfix"> {this.props.deleteSign === 3 || this.state.processStatus == 0 ? ( <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="项目名称" > <span>{this.state.commodityName}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="项目数量" > <Input placeholder="请输入数量" value={this.state.commodityQuantity} style={{ width: "200px" }} onChange={e => { this.setState({ commodityQuantity: e.target.value }); }} /> <span className="mandatory">*</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="金额(万元)" > <Input placeholder="请输入签单金额" value={this.state.commodityPrice} style={{ width: "200px" }} onChange={e => { this.setState({ commodityPrice: e.target.value }); }} /> <span className="mandatory">*</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="主要项目" > <Select placeholder="选择是否为主要业务" style={{ width: "200px" }} value={this.state.main} onChange={e => { this.setState({ main: e }); }} > {boutique.map(function(item) { return ( <Select.Option key={item.value}> {item.key} </Select.Option> ); })} </Select> <span className="mandatory">*</span> </FormItem> <div className="clearfix"> <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 16 }} label="服务说明" > <Input type="textarea" placeholder="请输入服务说明" value={this.state.taskComment} onChange={e => { this.setState({ taskComment: e.target.value }); }} /> </FormItem> </div> <FormItem wrapperCol={{ span: 12, offset: 4 }} className="half-middle" > <Button className="submitSave" type="primary" onClick={this.tabRowSave} > 保存 </Button> <Button className="submitSave" type="ghost" onClick={this.nextCancel} > 取消 </Button> </FormItem> </div> ) : ( <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="项目名称" > <span>{this.state.commodityName}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="项目数量" > <span>{this.state.commodityQuantity}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="金额(万元)" > <span>{this.state.commodityPrice}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="主要项目" > <span>{getboutique(this.state.main)}</span> </FormItem> <div className="clearfix"> <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 16 }} label="服务说明" > <span>{this.state.taskComment}</span> </FormItem> </div> </div> )} </div> )} </Spin> </Form> </Modal> <Modal maskClosable={false} visible={this.state.lookVisible} onOk={this.noCancel} onCancel={this.noCancel} width="800px" title={"退单申请"} footer="" className="admin-desc-content" > <Form layout="horizontal" id="demand-form"> <Spin spinning={this.state.loading}> <div className="clearfix"> <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 16 }} label="终止合同" > <Picture fileList={e => { this.setState({ contractUrl: e }); }} pictureUrl={this.state.contractUrl} visible={this.props.visible} data={{ sign: "order_refund_file", url: "/api/admin/newOrder/uploadRefundOrderFile", number: 8 }} /> </FormItem> </div> <div className="clearfix"> <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 16 }} label="退单申请表" > <Picture fileList={e => { this.setState({ applicationUrl: e }); }} pictureUrl={this.state.applicationUrl} visible={this.props.visible} data={{ sign: "order_refund_file", url: "/api/admin/newOrder/uploadRefundOrderFile", number: 8 }} /> </FormItem> </div> <div className="clearfix"> <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 16 }} label="退单理由" > <Input type="textarea" placeholder="请输入退单理由" rows={4} value={this.state.reason} onChange={e => { this.setState({ reason: e.target.value }); }} /> </FormItem> </div> <div className="clearfix"> <Button className="cancel" type="primary" onClick={this.tuidanOk} style={{ marginLeft: "50px" }} htmlType="submit" > 确定退单 </Button> <Button className="cancel" type="ghost" onClick={this.noCancel} style={{ marginLeft: "50px" }} > 取消 </Button> </div> </Spin> </Form> </Modal> <Modal visible={this.state.rizhivisible} className="admin-desc-content" width="800px" maskClosable={false} title="订单日志" footer={null} onCancel={this.closeOrderLog} > <div className="patent-table"> <Spin spinning={this.state.loading}> <Table columns={this.state.columnsrizhi} dataSource={this.state.dataSourcerizhi} pagination={false} /> </Spin> </div> </Modal> </div> ); } }) ); export default Addorders;