import React from "react"; import { Table, Modal, message, Spin, Input, Select, Button, Form, Upload, Popconfirm, AutoComplete, DatePicker, Col, Tag } from "antd"; import $ from "jquery/src/ajax"; import "../userMangagement.less"; import moment from "moment"; import { cuiJieDian } from "@/dataDic.js"; 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"; import ResolutionDetail from "@/resolutionDetail"; 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, //项目状态 sort: thisdata.cSort, splitStatus: thisdata.splitStatus, }); } } 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 { rotateDeg: 0, loading: false, visible: false, resVisible: false, orgCodeUrl: [], replenishUrl: [], 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", render: (text, record) => { if (record.splitStatus == 1) { return ( <span> {text}{" "} <Tag color="#108ee9" onClick={(e) => { e.stopPropagation(); this.showRes(record); }} > 已拆 </Tag> </span> ); } else { return text; } }, }, { 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 ( <Select placeholder="请选择催款科目" value={record.dunSubject} style={{ width: "150px" }} disabled 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> ); }, }, { title: "金额(万元)", dataIndex: "money", key: "money", render: (text, record) => { return ( <Input value={record.money} placeholder="请输入金额(必填项)" disabled key={record.id} required="required" onChange={(e) => { record.money = e.target.value; this.setState({ contactList: this.state.contactList }); }} style={{ width: "120px" }} /> ); }, }, { title: "催款状态", dataIndex: "dunStatus", key: "dunStatus", render: (text) => { return getCuikuan(text); }, }, { title: "操作", dataIndex: "dels", key: "dels", render: (text, record) => { return ( <div> { <Popconfirm title="是否删除?" onConfirm={() => { this.confirmDelet(record.key); }} okText="删除" cancelText="不删除" > <Button style={{ marginRight: "10px", color: "#ffffff", background: "#f00", border: "none", display: this.state.processStatus == 0 ? "block" : "none", }} > 删除 </Button> </Popconfirm> } {record.id ? ( "" ) : ( <Button type="primary" onClick={this.contactSave}> 保存 </Button> )} </div> ); }, }, ], ContactsListsNew: [ { title: "项目名称", dataIndex: "commodityName", key: "commodityName", render: (text, record, index) => { let dataArr = this.state.dataSource || []; if (text) { return <span>{text}</span>; } return ( <Select placeholder="请选择名称" style={{ width: "150px" }} disabled={ this.state.getLoad && record.sortName ? true : false } onChange={(e) => { record.sortName = e; dataArr.forEach((item) => { if (item.commodityName == record.sortName) { record.cname = item.cname; record.tid = item.id; record.isSave = true; record.sort = item.sort; cuiJieDian.forEach((item) => { if (item.value == record.sort) { record.arr = item.children; let yearFlag = true; if (record.sort == 6) { yearFlag = false; } this.setState({ getLoad: true, yearFlag, }); } }); } }); }} > {dataArr.map((item) => { return ( <Select.Option key={item.id} value={item.commodityName}> {item.commodityName} </Select.Option> ); })} </Select> ); }, }, { title: "项目分类", dataIndex: "projectType", key: "projectType", render: (text, record) => { if (text) { let arr = this.state.dataSource || []; let str = ""; for (let i = 0; i < arr.length; i++) { if (this.state.dataSource[i].sort == text) { str = this.state.dataSource[i].cname; return <span>{str}</span>; } } } if (this.state.getLoad) { return ( <Select style={{ width: "150px" }} placeholder="请选择分类" value={record.cname} > <Select.Option key={record.sort} value={record.cname}> {record.cname} </Select.Option> </Select> ); } else { return ( <Select style={{ width: "150px" }} placeholder="请选择分类"> <Select.Option key={record.sort} value={record.cname}> {record.cname} </Select.Option> </Select> ); } }, }, { title: "催款科目", dataIndex: "dunTypeName", key: "dunTypeName", render: (text, record) => { if (text) { if (record.customizeName) { return text + record.customizeName; } return <span>{text}</span>; } if (this.state.getLoad) { let arr = record.arr || []; return ( <div> <Select style={{ width: "150px", marginRight: 5 }} placeholder="请选择分类" onChange={(e) => { record.dunType = e; if (record.dunType == 0) { record.customizeTimes = ""; record.customizeName = ""; } if (e != 1) { this.setState({ timeFlag: true, }); } else { this.setState({ timeFlag: false, }); } if (e == 1 && record.sort == 6) { this.setState({ yearFlag: true, }); } else if (e != 1 && record.sort == 6) { this.setState({ yearFlag: false, }); } if (record.sort == 3 && e == 3) { this.setState({ boFlag: true, }); } else { this.setState({ boFlag: false, }); } }} > {arr.map((item) => { record; return ( <Select.Option key={item.value} value={item.value}> {item.key} </Select.Option> ); })} <Select.Option key={0} value={0}> 自定义 </Select.Option> </Select> {record.dunType == 0 ? ( <Input value={record.customizeName} placeholder="请输入自定义名称" required="required" onChange={(e) => { record.customizeName = e.target.value; this.setState({ contactList: this.state.contactList, }); }} style={{ width: "120px" }} /> ) : ( "" )} </div> ); } else { return ( <Select style={{ width: "150px" }} placeholder="请选择分类"> <Select.Option key={0} value={"请选择上一项"} ></Select.Option> </Select> ); } }, }, { title: "收款时间(特批需选择时间)", dataIndex: "waitDay", key: "waitDay", render: (text, record) => { if (record.dunTypeName) { if (record.customizeTimes) { return record.customizeTimes; } if (text == 0) { var str = "当天"; } else if (!text) { var str = ""; } else { var str = text + "天"; } return <span>{str}</span>; } return ( <div> {record.dunType == 0 ? ( <DatePicker style={{ width: 150 }} disabledDate={(e) => { let time = moment(e).valueOf(); let today = Date.parse(new Date()); if (time <= today) { return true; } }} onChange={(e, t) => { record.customizeTimes = t; }} /> ) : ( <Select placeholder="请选择时间" style={{ width: "160px" }} disabled={ this.state.approval != 0 && !this.state.timeFlag ? false : true } onChange={(e) => { record.waitDay = e; }} > <Select.Option key={0}>当天</Select.Option> <Select.Option key={3}>3天</Select.Option> <Select.Option key={5}>5天</Select.Option> <Select.Option key={7}>7天</Select.Option> <Select.Option key={15}>15天</Select.Option> </Select> )} </div> ); }, }, { title: "金额(万元)", dataIndex: "money", key: "money", render: (text, record) => { if (record.dunTypeName) { if (record.appropriationRatio && !record.money) { return <span>{record.appropriationRatio}(拨款比例)</span>; } else if (record.appropriationRatio && record.money) { return ( <span> {text}(比例:{record.appropriationRatio}) </span> ); } else { return <span>{text}</span>; } } if (this.state.boFlag) { return ( <div> <div style={{ width: 70, float: "left", marginRight: 5 }}> <Select placeholder="选择" defaultValue={"金额"} onChange={(e) => { record.boStatus = e; }} > <Select.Option key={true}>比例</Select.Option> <Select.Option key={false}>金额</Select.Option> </Select> </div> <div style={{ float: "right" }}> <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" }} /> </div> </div> ); } else { return ( <div> <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" }} /> </div> ); } }, }, { title: "服务年限", dataIndex: "startDate", key: "startDate", render: (text, record) => { if (record.dunTypeName) { return <span>{text}</span>; } return ( <Select placeholder="请选择年限" style={{ width: "150px" }} disabled={this.state.yearFlag ? true : false} onChange={(e) => { record.effectiveCount = e; }} > {/* <Select.Option key={null}>无</Select.Option> */} <Select.Option key={1}>一年</Select.Option> <Select.Option key={3}>两年</Select.Option> <Select.Option key={5}>三年</Select.Option> <Select.Option key={7}>四年</Select.Option> <Select.Option key={9}>五年</Select.Option> </Select> ); }, }, { title: "催款状态", dataIndex: "status", key: "status", render: (text) => { return <span>{text == 1 ? "已启动" : "未启动"}</span>; }, }, { title: "操作", dataIndex: "dels", key: "dels", render: (text, record, index) => { return ( <div> {this.state.processStatus == 0 ? ( <Popconfirm title="是否删除?" onConfirm={() => { this.confirmDeletNew(record); }} okText="删除" cancelText="不删除" > <Button style={{ marginRight: "10px", color: "#ffffff", background: "#f00", border: "none", }} > 删除 </Button> </Popconfirm> ) : ( "" )} {record.isSave ? ( <Button type="primary" onClick={(e) => { this.contactSaveNew(record); }} > 保存 </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) ); }, // 拆分详细 showRes(record) { this.setState({ resVisible: true, resRecord: record, }); }, resCancel() { this.setState({ resVisible: false, }); }, //新建订单、编辑订单保存 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(","); } let theReplenishUrl = []; if (this.state.replenishUrl.length) { let picArr = []; this.state.replenishUrl.map(function (item) { if ( item.response && item.response.data && item.response.data.length ) { picArr.push(item.response.data); } }); theReplenishUrl = 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 { } const arr = this.state.contactListNew || []; for (let i = 0; i < arr.length; i++) { if ( arr[i].dunType == 1 && arr[i].waitDay != null && this.state.approval == 0 ) { message.warning( "非特批存在填写催款节点首付时间的情况,请删除后重新填写保存" ); return false; } else if ( arr[i].dunType == 1 && arr[i].waitDay == null && this.state.approval == 1 ) { message.warning( "特批存在首付催款节点未填写时间的情况,请删除后重新填写保存" ); return false; } if (!this.state.contactListNew[i].id && this.props.userDetaile) { message.warning("请保存催款节点"); return false; } } 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 : "", agreementUrl: theReplenishUrl.length ? theReplenishUrl : "", 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" ) : [], //图片地址 replenishUrl: thisData.agreementUrl ? splitUrl( thisData.agreementUrl, ",", 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) ); }, //查看催款节点 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, //催款状态 orderNo: thisData.orderNo, }); } this.setState({ contactList: theArr, }); } }.bind(this), }).always( function () { this.setState({ loading: false, }); }.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, }); } if (!totalCui) { totalCui = 0; } totalCui = (Math.round(totalCui * 10000) / 10000).toFixed(4); this.setState({ contactListNew: theArr, totalCui, }); } }.bind(this), }).always( function () { this.setState({ loading: false, }); }.bind(this) ); }, //催款节点保存 contactSave(record) { for (let i = 0; i < this.state.contactList.length; i++) { if (moneyVerify(this.state.contactList[i].money)) { return; } } this.setState({ loading: true, }); $.ajax({ url: globalConfig.context + "/api/admin/newOrder/createOrderDun", method: "post", data: { orderNo: this.state.orderNo, orderDun: JSON.stringify(this.state.contactList), }, }).done( function (data) { this.setState({ loading: false, }); if (!data.error.length) { message.success("保存成功!"); this.jiedian(record.orderNo); } else { message.warning(data.error[0].message); } }.bind(this) ); }, //催款节点保存 contactSaveNew(record) { if (record.dunType == 0) { if (!record.customizeTimes) { message.warning("请输入自定义时间"); return; } else if (!record.customizeName) { message.warning("请输入自定义科目"); return; } } if (record.boStatus == "false") { record.boStatus = false; } else if (record.boStatus == "true") { record.boStatus = true; } if (!this.state.yearFlag) { if (!record.effectiveCount) { message.warning("请选择服务年限"); return; } } else { record.effectiveCount = ""; } if (record.money == "") { message.warning("请填写金额"); return; } if (record.boStatus) { if ( typeof +record.money == "number" && +record.money >= 0 && +record.money <= 1 ) { record.appropriationRatio = record.money; } else { message.warning("金额比例填写错误,比例范围0~1"); return; } } if (!record.dunType && record.dunType != 0) { message.warning("请选择对应科目"); return; } if (record.dunType != 1) { record.waitDay = ""; } this.setState({ loading: true, }); if (record.boStatus) { $.ajax({ url: globalConfig.context + "/api/admin/newOrderDun/createDun", method: "post", data: { orderNo: record.orderNo, tid: record.tid, projectType: record.sort, dunType: record.dunType, appropriationRatio: record.appropriationRatio, waitDay: record.waitDay, effectiveCount: record.effectiveCount, customizeTimes: record.dunType == 0 ? record.customizeTimes : undefined, customizeName: record.dunType == 0 ? record.customizeName : undefined, }, }).done( function (data) { this.setState({ loading: false, }); if (!data.error.length) { message.success("保存成功!"); this.setState({ cuiFlag: false, boFlag: false, addFlag: false, }); this.jiedianNew(record.orderNo); } else { message.warning(data.error[0].message); } }.bind(this) ); } else { $.ajax({ url: globalConfig.context + "/api/admin/newOrderDun/createDun", method: "post", data: { orderNo: record.orderNo, tid: record.tid, projectType: record.sort, dunType: record.dunType, money: record.money, waitDay: record.waitDay, effectiveCount: record.effectiveCount, customizeTimes: record.dunType == 0 ? record.customizeTimes : undefined, customizeName: record.dunType == 0 ? record.customizeName : undefined, }, }).done( function (data) { this.setState({ loading: false, }); if (!data.error.length) { message.success("保存成功!"); this.setState({ cuiFlag: false, boFlag: false, addFlag: false, }); this.jiedianNew(record.orderNo); } 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.orderNo, dunTarget: this.state.kehuId, }); this.setState({ contactList: this.state.contactList, }); }, //点击新增催款节点 addcontactNew() { this.state.contactListNew.push({ key: this.state.contactListNew.length, money: "", dunSubject: undefined, orderNo: this.state.orderNo, dunTarget: this.state.kehuId, }); this.setState({ contactListNew: this.state.contactListNew, cuiFlag: true, }); }, //删除收款节点 confirmDelet(index) { this.state.contactList.splice(index, 1); this.setState({ contactList: this.state.contactList, }); this.contactSave(); }, //删除收款节点 confirmDeletNew(index) { if (index.id) { this.state.contactListNew.splice(index.key, 1); this.setState({ contactListNew: this.state.contactListNew, cuiFlag: false, addFlag: false, boFlag: false, }); $.ajax({ url: globalConfig.context + "/api/admin/newOrderDun/deleteDun", method: "post", data: { id: index.id, }, }).done( function (data) { this.setState({ loading: false, }); if (!data.error.length) { message.success("删除成功!"); this.setState({ cuiFlag: false, }); this.jiedianNew(this.state.orderNo); } else { message.warning(data.error[0].message); } }.bind(this) ); } else { this.state.contactListNew.splice(index.key, 1); this.setState({ contactListNew: this.state.contactListNew, cuiFlag: false, addFlag: false, boFlag: false, }); } }, 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, remarks: thisdata.remarks, }); } } 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 }); }, getReplenishUrl(e) { this.setState({ replenishUrl: 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.jiedian(this.props.data); this.jiedianNew(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.jiedian(this.props.data); this.jiedianNew(this.props.data); this.loadData(this.props.data); } }, downImg() { let num = 0; for (let i = 0; i < this.state.orgCodeUrl.length; i++) { if (this.state.orgCodeUrl[i].url == this.state.previewImage) { num = i; } } if (num == this.state.orgCodeUrl.length - 1) { return message.warning("已经是最后一张了哦"); } this.state.previewImage = this.state.orgCodeUrl[num + 1].url; this.setState({ previewImage: this.state.previewImage, rotateDeg: 0, }); }, upImg() { let num = 0; for (let i = 0; i < this.state.orgCodeUrl.length; i++) { if (this.state.orgCodeUrl[i].url == this.state.previewImage) { num = i; } } if (num == 0) { return message.warning("已经是第一张了哦"); } this.state.previewImage = this.state.orgCodeUrl[num - 1].url; this.setState({ previewImage: this.state.previewImage, rotateDeg: 0, }); }, rotate() { let rotateDeg = this.state.rotateDeg + 90; this.setState({ rotateDeg, }); }, downImgs() { let num = 0; for (let i = 0; i < this.state.replenishUrl.length; i++) { if (this.state.replenishUrl[i].url == this.state.previewImage) { num = i; } } if (num == this.state.replenishUrl.length - 1) { return message.warning("已经是最后一张了哦"); } this.state.previewImage = this.state.replenishUrl[num + 1].url; this.setState({ previewImage: this.state.previewImage, rotateDeg: 0, }); }, upImgs() { let num = 0; for (let i = 0; i < this.state.replenishUrl.length; i++) { if (this.state.replenishUrl[i].url == this.state.previewImage) { num = i; } } if (num == 0) { return message.warning("已经是第一张了哦"); } this.state.previewImage = this.state.replenishUrl[num - 1].url; this.setState({ previewImage: this.state.previewImage, rotateDeg: 0, }); }, rotates() { let rotateDeg = this.state.rotateDeg + 90; this.setState({ rotateDeg, }); }, 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 cuiDataList = this.state.contactList || []; 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> {this.state.resVisible ? ( <ResolutionDetail cancel={this.resCancel} detail={this.state.resRecord} visible={this.state.resVisible} id={this.state.resRecord.orderNo} /> ) : ( "" )} <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 ? ( <div> <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={ <span> 补充协议 </span> } > <PicturesWall fileList={this.getReplenishUrl} pictureUrl={this.state.replenishUrl} url="/api/admin/order/uploadOrderImg" sign="" /> <p>图片建议:要清晰。</p> </FormItem> </div> ) : ( <div> <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} width={"50%"} visible={this.state.previewVisible} onCancel={() => { this.setState({ previewVisible: false, rotateDeg: 0 }); }} > <img alt="" style={{ width: "100%", transform: `rotate(${this.state.rotateDeg}deg)`, }} src={this.state.previewImage || ""} /> <Button onClick={this.rotate} style={{ position: "relative", left: "50%", transform: "translateX(-50%)", }} > 旋转 </Button> <Button onClick={this.upImg} style={{ position: "absolute", left: -81, top: "50%", transform: "translateY(-50%)", }} > 上一张 </Button> <Button onClick={this.downImg} style={{ position: "absolute", right: -81, top: "50%", transform: "translateY(-50%)", }} > 下一张 </Button> </Modal> <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.replenishUrl} onPreview={(file) => { this.setState({ previewImage: file.url || file.thumbUrl, previewVisibles: true, }); }} ></Upload> <Modal maskClosable={false} footer={null} width={"50%"} visible={this.state.previewVisibles} onCancel={() => { this.setState({ previewVisibles: false, rotateDeg: 0 }); }} > <img alt="" style={{ width: "100%", transform: `rotate(${this.state.rotateDeg}deg)`, }} src={this.state.previewImage || ""} /> <Button onClick={this.rotates} style={{ position: "relative", left: "50%", transform: "translateX(-50%)", }} > 旋转 </Button> <Button onClick={this.upImgs} style={{ position: "absolute", left: -81, top: "50%", transform: "translateY(-50%)", }} > 上一张 </Button> <Button onClick={this.downImgs} style={{ position: "absolute", right: -81, top: "50%", transform: "translateY(-50%)", }} > 下一张 </Button> </Modal> </FormItem> </div> )} </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.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>{" "} <div style={{ display: cuiDataList.length ? "block" : "none", }} > <span style={{ marginLeft: "50px", fontSize: "20px" }}> 旧催款节点 </span> <Button type="primary" // onClick={this.addcontact} disabled onClick={(e) => { cuiDataList.length ? this.addcontact() : this.addcontactNew(); }} style={{ float: "right", marginRight: "50px", marginBottom: "15px", display: this.state.processStatus == 0 ? "block" : "none", }} > 添加催款节点 </Button> </div> <div className="clearfix" style={{ display: cuiDataList.length ? "block" : "none", }} > <Spin spinning={this.state.loading}> <Form layout="horizontal"> <Table pagination={false} columns={this.state.ContactsLists} dataSource={this.state.contactList} scroll={{ x: "max-content", y: 0 }} bordered size="small" /> <Col span={24} offset={9} style={{ marginTop: "15px" }}></Col> </Form> </Spin> </div> <div style={{ display: cuiDataList.length ? "none" : "block", }} > <span style={{ marginLeft: "50px", fontSize: "20px", }} > 新催款节点 </span> <span style={{ display: "inline-block", marginLeft: 10, color: "red", }} > 金额总计(万元): {this.state.totalCui} </span> <Button type="primary" disabled={this.state.addFlag ? true : false} // onClick={this.addcontact} onClick={(e) => { this.setState({ addFlag: true }); this.addcontactNew(); }} style={{ float: "right", marginRight: "50px", marginBottom: "15px", display: this.state.processStatus == 0 ? "block" : "none", }} > 添加催款节点 </Button> </div> <div className="clearfix" style={{ display: cuiDataList.length ? "none" : "block", }} > <Spin spinning={this.state.loading}> <Form layout="horizontal"> <Table pagination={false} columns={this.state.ContactsListsNew} dataSource={this.state.contactListNew} scroll={{ x: "max-content", y: 0 }} bordered size="small" /> <Col span={24} offset={9} style={{ marginTop: "15px" }}></Col> </Form> </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;