// 变更--驳回 import React, { Component } from "react"; import { Form, Select, Input, Button, message, Spin, Tag, Table, Col, Popconfirm, Modal, AutoComplete, DatePicker, Radio, Tooltip, Switch, } from "antd"; import $ from "jquery/src/ajax"; import moment from "moment"; import ResolutionDetail from "@/resolutionDetail"; import PicturesWall from "./picturesWall"; import Rizhi from "./rizhi"; import { cuiJieDian, orderTypes, customerType, jiedian, tepi, boutique, vipYear, getProjectName, } from "@/dataDic.js"; import { moneyVerify } from "@/tools.js" import EnterpriseNameChange from "../../../../common/enterpriseNameChange"; import ProjectOperation from "../../../../common/projectOperation"; import NewAddProject from "../../../../common/projectOperation/newAddProject" import NewEditProject from "../../../../common/projectOperation/newEditProject" import "./index.less"; const FormItem = Form.Item; const confirm = Modal.confirm; const Option = AutoComplete.Option; const RadioGroup = Radio.Group; const formItemLayout = { labelCol: { span: 8 }, wrapperCol: { span: 14 } }; class ChangeApply extends Component { constructor(props) { super(props); this.state = { data: {}, voucherUrl: [], newContractUrl: [], dataSource: [], cuiDataSource: [], loading: false, changeCuiList: [ { title: "变更状态", dataIndex: "type", key: "type", render: (text) => { let str = ""; let color = ""; if (text == 1) { str = "增"; color = "#87d068"; } else if (text == 2) { str = "改"; color = "#108ee9"; } else if (text == 3) { str = "删"; color = "#f50"; } return ( <Tag color={color} style={{ display: text == 0 ? "none" : "inline-block" }} > {str} </Tag> ); }, }, { title: "项目名称", dataIndex: "commodityName", key: "commodityName", render: (text, record, index) => { let dataArr = this.state.proDataSource || []; if (text) { if (record.ctid) { return <span>{text + "-" + record.ctid}</span>; } else { let tid = record.tid; let ctid = ""; dataArr.forEach((item, index) => { if (item.tid == tid) { ctid = item.id; } }); return <span>{text + "-" + ctid}</span>; } } return ( <Select placeholder="请选择名称" style={{ width: "150px" }} disabled={this.state.getLoad && record.sortName ? true : false} onChange={(e) => { let num = e.lastIndexOf("-"); let ctid = e.substr(num + 1); record.sortName = e.substring(0, num); dataArr.forEach((item) => { if ( item.commodityName == record.sortName && ctid == item.id ) { record.cname = item.cname; record.ctid = item.id; record.isSave = true; record.sort = item.cSort; 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, index) => { if (item.type == 3) { return ( <Select.Option key={item.id} value={item.commodityName + "-" + item.id} disabled > {item.commodityName + "-" + item.id} </Select.Option> ); } else { return ( <Select.Option key={item.id} value={item.commodityName + "-" + item.id} > {item.commodityName + "-" + item.id} </Select.Option> ); } })} </Select> ); }, }, { title: "项目分类", dataIndex: "projectType", key: "projectType", render: (text, record) => { if (text) { let arr = this.state.proDataSource || []; let str = ""; for (let i = 0; i < arr.length; i++) { if (this.state.proDataSource[i].cSort == text) { str = this.state.proDataSource[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) { 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 == 0) { record.dunTypeCustom = true; } else { record.dunTypeCustom = false; } 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.props.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) { let percent = Number(record.appropriationRatio * 100).toFixed(2); percent += "%"; return <span>{percent}(拨款比例)</span>; } else { return <span>{text}</span>; } } 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 type='number' value={record.money} key={record.id} required="required" onChange={(e) => { record.money = e.target.value; this.setState({ contactList: this.state.contactList, }); }} style={{ width: "120px" }} /> </div> </div> ); // 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 // type='number' // value={record.money} // 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 // type='number' // 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 ( <div> { record.dunType != 0 ? <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> : <div /> } </div> ); }, }, { title: "催款状态", dataIndex: "status", key: "status", render: (text) => { return <span>{text == 1 ? "已启动" : "未启动"}</span>; }, }, { title: "操作", dataIndex: "dels", key: "dels", render: (text, record, index) => { return ( <div> <Popconfirm title="是否删除?" onConfirm={() => { this.changeDeleteCui(record); }} okText="删除" cancelText="不删除" > <Button disabled={this.state.listCuiFlag} style={{ marginRight: "10px", display: this.state.displayList ? "none" : "block", }} > 删除 </Button> </Popconfirm> {record.isSave ? ( <Button type="primary" style={{ marginTop: 5 }} onClick={(e) => { this.changeSaveCui(record); }} > 保存 </Button> ) : ( "" )} </div> ); }, }, ], resVisible: false, proColumns: [ { title: "变更状态", dataIndex: "type", key: "type", render: (text, record) => { let str = ""; let color = ""; if (text == 1) { str = "增"; color = "#87d068"; } else if (text == 2) { str = "改"; color = "#108ee9"; } else if (text == 3) { str = "删"; color = "#f50"; } return ( <span> <Tag color={color} style={{ display: text == 0 ? "none" : "inline-block" }} > {str} </Tag> {/* {record.splitStatus == 1 ? ( <Tag color="#108ee9" > 父项目 </Tag> ) : ( "" )} {record.splitStatus == 2 ? ( <Tag color="#108ee9" > 子项目 </Tag> ) : ( "" )} */} </span> ); }, }, { title: "业务项目名称", dataIndex: "commodityName", key: "commodityName", render: (text, record) => { return <span> {text}<span style={{ color: "red" }}>{record.patentTypeName}</span>{"-" + record.id} <div> {record.cSort == 6 && record.projectType == 1 && <span>(含{record.htMember == 1 ? '高新会员&' : ''}{record.additionalDeduction == 1 ? '加计扣除&' : ''}{record.rdAwardsubsidy == 1 ? '研发奖补' : ''})</span>} {record.cSort == 6 && ([0, 3].indexOf(record.projectType) > -1) && <span>(仅提供单边会员服务)</span>} {record.cSort == 6 && record.projectType == 2 && <span>(仅填报表,仅咨询,不出备查资料)</span>} {record.cSort == 3 && <span>{record.technologyProjectType==0?'(简易项目)':record.technologyProjectType==1?'(市区级)':record.technologyProjectType==2?'(省级)':record.technologyProjectType==3?'(国家级)':''}</span>} {record.cSort == 8 ? (record.type != 2 && record.patentType == 1) ? <span>(变更)</span> : <span>{record.ordinaryRisk == 0 ? '(普通申请)' : record.ordinaryRisk == 1 ? '(风险代理)' : ''}</span> : ""} {record.type == 2 && <span>({record.days == 0 ? '普通' : record.days == 1 ? '加急' : ''}{record.scheme == 0 ? '&无方案' : record.scheme == 1 ? '&有方案' : ''})</span>} </div> </span> } }, { title: "项目类别", dataIndex: "cname", key: "cname", }, { title: "项目数量", dataIndex: "commodityQuantity", key: "commodityQuantity", width: 50, }, { title: "金额(万元)", dataIndex: "commodityPrice", key: "commodityPrice", width: 50, render: (text, record) => { if (record.splitStatus == 2) { return "/"; } else { return text; } }, }, { title: "主要项目", dataIndex: "main", key: "main", width: 50, render: (text) => { return text ? "是" : "否"; }, }, { title: "项目负责人", dataIndex: "receiverName", key: "receiverName", }, { title: "总年限", dataIndex: "yearSum", key: "yearSum", render: (text, record) => { return ( <div>{["", "一年", "二年", "三年", "四年", "五年"][text]}</div> ); } }, { title: "年限", dataIndex: "serviceLife", key: "serviceLife", render: (text, record) => { return ( <div>{!!text && JSON.parse(text).toString()}</div> ); } }, { title: "本次派单", dataIndex: "serviceYear", key: "serviceYear", render: (text, record) => { return ( <div>{!text ? "" : text}</div> ); } }, { title: "项目说明", dataIndex: "taskComment", key: "taskComment", render: (text, record) => { let textStr = text; return ( <Tooltip title={textStr}> <div style={{ width: 100, overflow: "hidden", whiteSpace: "nowrap", textOverflow: "ellipsis", }} >{textStr}</div> </Tooltip> ) }, }, { title: "操作", dataIndex: "ABC", key: "ABC", render: (text, record) => { return ( <div> <div> <Button onClick={(e) => { e.stopPropagation(); this.showConfirm(this.changeDeletePro, record); }} disabled={this.state.listFlag} style={{ display: this.state.displayList ? "none" : "block", }} > 删除 </Button> </div> <div> <Button onClick={(e) => { e.stopPropagation(); this.editPro(record); }} disabled={this.state.listFlag} style={{ display: this.state.displayList ? "none" : "block", }} > 编辑 </Button> </div> </div> ); }, }, ], patentTypeList: [], displayFees: "none", serviceLife: [], isVip: undefined,//是否会员 isIso: undefined,//是否贯标 histYear: [], contractTerm: [],//合同期 isEdit: false,//是否可编辑 addyear: undefined,// isGive: undefined,//是否赠送 cPeriod: false, // 合同期是否可编辑 isNew: false, }; this.departmentList = this.departmentList.bind(this); this.changeApply = this.changeApply.bind(this); this.getVoucherUrl = this.getVoucherUrl.bind(this); this.getNewContractUrl = this.getNewContractUrl.bind(this); this.proList = this.proList.bind(this); this.cuiList = this.cuiList.bind(this); this.showConfirm = this.showConfirm.bind(this); this.showConfirmChange = this.showConfirmChange.bind(this); this.changeAddPro = this.changeAddPro.bind(this); this.changeProSubmit = this.changeProSubmit.bind(this); this.changeDeletePro = this.changeDeletePro.bind(this); this.changeAddCui = this.changeAddCui.bind(this); this.changeDeleteCui = this.changeDeleteCui.bind(this); this.changeSaveCui = this.changeSaveCui.bind(this); this.submitChange = this.submitChange.bind(this); this.editCui = this.editCui.bind(this); this.editPro = this.editPro.bind(this); this.submitEditCui = this.submitEditCui.bind(this); this.submitEditPro = this.submitEditPro.bind(this); this.nextCancel = this.nextCancel.bind(this); this.customerChange = this.customerChange.bind(this); this.selectAuto = this.selectAuto.bind(this); this.supervisor = this.supervisor.bind(this); this.httpChange = this.httpChange.bind(this); this.showRes = this.showRes.bind(this); this.resCancel = this.resCancel.bind(this); this.deleteChange = this.deleteChange.bind(this); this.not = this.not.bind(this); } componentDidMount() { this.getpatentTypeList() } nextCancel(type) { this.setState({ editProVisible: false, addnextVisible: false, changeVisible: false, addProjectType: undefined, isVip: undefined, isIso: undefined, commodityQuantity: undefined, histYear: [], yearSum: undefined, serviceLife: [], serviceYear: undefined, isEdit: false, // 可编辑 }, () => { this.proList() }); } showConfirm(fn, record) { confirm({ title: "确定删除此项目吗?", content: ( <span style={{ color: "red" }}> 删除后会将该项目下的所有催款节点自动清除!!! </span> ), onOk() { fn(record); }, onCancel() { } }); } showConfirmChange(fn, record) { confirm({ title: "确定取消本次变更吗?", content: ( <span style={{ color: "red" }}> 取消后本次变更将作废!!! </span> ), onOk() { fn(); }, onCancel() { } }); } getpatentTypeList() { $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + '/api/admin/orderProject/getPatentType', success: function (data) { if (data.error.length === 0) { this.setState({ patentTypeList: data.data }) } else { message.warning(data.error[0].message); }; }.bind(this) }); } //服务值改变时请求客户名称 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("客户所属类型必须指定"); } } //上级主管输入框失去焦点是判断客户是否存在 selectAuto(value) { const newData = this.state.proDataSource let kid = []; let fwList = this.state.customerArr; fwList.map(function (item) { if (value == item.bname) { kid = item; } }); if (kid.type == "1") { this.setState({ displayFees: "block", patentTransfer: kid.patentTransfer, }); } else { this.setState({ displayFees: "none", }); } this.setState({ commodityName: value, gid: kid.id, addProjectType: kid.type, //commodityPrice:kid.price==0?kid.price.toString():kid.price, commodityFirstPayment: kid.firstPayment == 0 ? kid.firstPayment.toString() : kid.firstPayment, isIso: value.indexOf("贯标") !== -1,// 是否为贯标项目 isVip: kid.cSort,//暂时判断等于6的时候会员 commodityQuantity: kid.cSort == 6 ? 1 : undefined,//服务数量 histYear: [], }); if (newData && newData.length > 0 && kid.cSort == 6) { let llist = [] for (var i = 0; i < newData.length; i++) { if (newData[i].commodityId == kid.id) { llist.push(newData[i].serviceYear) } } this.setState({ histYear: llist }) for (var i = newData.length - 1; i >= 0; i--) { if (newData[i].commodityId == kid.id) { this.setState({ commodityPrice: newData[i].commodityPrice, // 实签价格 main: "0", // 是否为主要项目 yearSum: newData[i].yearSum.toString(), // 会员总服务年限 serviceLife: !newData[i].serviceLife ? [] : JSON.parse(newData[i].serviceLife), // 会员服务年限 contractTerm: !newData[i].contractTerm ? [] : JSON.parse(newData[i].contractTerm), // 合同期 taskComment: newData[i].taskComment, // 项目说明 // isEdit: true, // 不可编辑 isEdit: true, // 同一会员项目有且只有一条时可编辑 其他情况不可编辑 cPeriod: !newData[i].contractTerm ? false : true, //合同期 }) return } else { this.setState({ commodityPrice: undefined, main: undefined, yearSum: undefined, serviceLife: [], contractTerm: [], taskComment: undefined, isEdit: false, // 可编辑 cPeriod: false, }) } } } } //加载(自动补全) 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) ); } //变更申请 changeApply() { if (this.state.data.totalAmount === "") { message.warning("合同金额不能为空!"); return false; } if (this.state.data.firstAmount === "") { message.warning("首付款金额不能为空!"); return false; } if (Number(this.state.data.totalAmount) < Number(this.state.data.firstAmount)) { message.warning("首付款不能大于合同额!"); return; } if (moneyVerify(this.state.data.totalAmount)) { return false; } if (moneyVerify(this.state.data.changeAmount)) { return false; } if ( this.state.data.type == 0 || this.state.data.type == 1 || this.state.data.type == 3 || this.state.data.type == 8 ) { if (Number(this.state.data.settlementAmount) < Number(this.state.data.changeAmount)) { message.warning("退款金额大于已收款金额"); return; } } if (this.state.data.type == 0) { let reg1 = /^1[3456789]\d{9}$/ let reg2 = /^0\d{2,3}-?\d{7,8}$/ let reg3 = /[^\u4E00-\u9FA5]/g if (!this.state.data.managerContacts || reg3.test(this.state.data.managerContacts)) { message.warning("请正确填写企业总经理姓名"); return false; } if (!this.state.data.managerContactMobile) { message.warning("请正确填写企业总经理联系电话"); return false; } if (!reg1.test(this.state.data.managerContactMobile) && !reg2.test(this.state.data.managerContactMobile)) { message.warning("请正确填写企业总经理联系电话"); return false; } if (!this.state.data.contacts || reg3.test(this.state.data.contacts)) { message.warning("请正确填写企业联系人姓名"); return false; } if (!this.state.data.contactMobile) { message.warning("请正确填写企业联系人联系方式"); return false; } if (!reg1.test(this.state.data.contactMobile) && !reg2.test(this.state.data.contactMobile)) { message.warning("请正确填写企业联系人联系方式"); return false; } } let newContractUrl = []; if (this.state.newContractUrl.length) { let cArr = []; this.state.newContractUrl.map(function (item) { if ( item.response && item.response.data && item.response.data.length ) { cArr.push(item.response.data); } }); newContractUrl = cArr.join(","); } if (this.state.isNew && newContractUrl.length == 0) { message.warning("请上传新合同扫描件!"); return } 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(","); } Object.assign(this.state.data, { id: this.props.orderData.id, //订单编号 changeType: 0, voucherUrl: theorgCodeUrl.length ? theorgCodeUrl : "", consultantExamine: [], managerExamine: [], contractPictureUrl: this.state.isNew ? newContractUrl : undefined,//合同替换件 }); this.setState({ loading: true }) $.ajax({ method: "post", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/orderChange/updateOrderChange", data: this.state.data }).done( function (data) { if (!data.error.length) { message.success("变更成功!"); this.props.onCancel(); this.setState({ loading: false }); } else { message.warning(data.error[0].message); this.setState({ loading: false }); } }.bind(this) ); } // componentDidMount() { // window.setTimeout(() => { // this.loadDataChange(); // }, 10); // } // loadDataChange() { // console.log(this.props); // $.ajax({ // method: "get", // dataType: "json", // crossDomain: false, // url: globalConfig.context + "/api/admin/orderChange/orderChangeLogList", // data: { // changeId: this.props.data.id // }, // success: function(data) { // if (data.error.length || data.data.list == "") { // if (data.error && data.error.length) { // message.warning(data.error[0].message); // } // } else { // this.setState({ // dataSource: data.data // }); // } // }.bind(this) // }); // } // 拆分详细 showRes(record) { this.setState({ resVisible: true, resRecord: record }) } resCancel() { this.setState({ resVisible: false }) } cuiList(id) { this.setState({ loading: true, }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/orderChange/selectChangeDun", data: { id: id || this.state.data.id }, success: function (data) { this.setState({ cuiDataSource: data.data, loading: false, }); if (data.data && data.data.length) { if (id) { this.setState({ listCuiFlag: true, }); } this.setState({ cuiDataSource: data.data, }); this.setState({ loading: false, }); } else if (data.error && data.error.length) { message.warning(data.error[0].message); this.setState({ loading: false, }); } }.bind(this) }); } proList(id) { this.setState({ loading: true }) $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/orderChange/selectChangeTask", data: { id: id || this.state.data.id }, success: function (data) { this.setState({ loading: false }) if (data.data && data.data.length) { if (id) { this.setState({ listFlag: true }); } data.data.forEach(item => { item.key = item.id }) this.setState({ proDataSource: data.data }); this.setState({ loading: false, }); } else if (data.error && data.error.length) { // message.warning(data.error[0].message) this.setState({ loading: false, }); } }.bind(this) }); } departmentList() { $.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); } } else { thedata.map(function (item, index) { theArr.push({ key: index, name: item.name, id: item.id }); }); } this.setState({ departmentArr: theArr }); }.bind(this) }); } getVoucherUrl(e) { this.setState({ voucherUrl: e }); } getNewContractUrl(e) { this.setState({ newContractUrl: e }); } changeAddPro() { this.setState({ newData: this.state.proDataSource, changeVisible: true, gid: "", customerArr: [], commodityName: "", commodityQuantity: "", commodityId: "", taskComment: "", main: undefined, commodityPrice: "" }); } changeProSubmit() { if (this.state.gid == undefined || !this.state.gid) { message.warning("服务名称不匹配!"); return } let reg = /^([0]|[1-9][0-9]*)$/; if ( !this.state.commodityQuantity || !reg.test(this.state.commodityQuantity) ) { message.warning("请输入正确商品数量!"); return } if (this.state.displayFees === 'block') { if (this.state.patentType === "" && !this.state.patentTransfer) { message.warning("请选择专利类型!"); return } if (this.state.officialCost === '') { message.warning("请选择官费!"); return } if (this.state.costReduction === "" && (this.state.patentType === 0 || this.state.patentType === 2) && this.state.officialCost === 1) { message.warning("请选择费减!"); return } } if (isNaN(parseFloat(this.state.commodityPrice))) { message.warning("请输入正确的金额!"); return; } if (this.state.addProjectType == "3") {// 3审计 if (this.state.serviceLife.length === 0) { message.warning("请选择服务年限!"); return } if (this.state.serviceLife.length != this.state.commodityQuantity) { message.warning("服务数量与服务年限不符!"); return } } if (!this.state.main) { message.warning("请选择是否为主要项目!"); return } if (this.state.addProjectType === 5) {// 5高新 if (!this.state.declarationBatch) { message.warning("请选择企业要求申报批次!"); return } if (!this.state.serviceYear) { message.warning("请选择申报年份!"); return } } if (this.state.isVip == 6) {//会员 if (this.state.yearSum === undefined) { message.warning("请选择会员总服务年限!"); return } if (this.state.serviceLife.length === 0) { message.warning("请添加会员服务年限!"); return } if (this.state.serviceLife.length != this.state.yearSum) { message.warning("会员服务年限与总年限不符合!"); return } if (this.state.serviceYear === undefined) { message.warning("请选择本次派单年份!"); return } if (this.state.contractTerm.length === 0) { message.warning("请填写合同期!"); return } } this.setState({ loading: true }); let type = 0; if (this.state.typeChange == 4 || this.state.typeChange == 5) { type = 1; } let infor = { commodityId: this.state.gid, //商品ID orderNo: this.state.data.orderNo, //订单编号 commodityName: this.state.commodityName, //商品名称 commodityQuantity: this.state.commodityQuantity, //商品数量 commodityPrice: this.state.commodityPrice, //签单总价 taskComment: this.state.taskComment, //服务说明 main: this.state.main, //是否为主要项目 cid: this.state.data.id, //变更ID type, } if (this.state.displayFees === 'block') { infor.officialCost = this.state.officialCost //是否有官费 infor.costReduction = (this.state.patentType === 0 || this.state.patentType === 2) ? (this.state.officialCost === 1 ? this.state.costReduction : 0) : 0//是否有费减 infor.patentType = this.state.patentType //专利类型 } if (this.state.isIso) { infor.ifCertificationFee = this.state.ifCertificationFee || undefined;//是否包含认证费用 } if (this.state.addProjectType == "3") {//审计 infor.serviceLife = JSON.stringify(this.state.serviceLife) //服务年限 } if (this.state.addProjectType == "5") {//高新 infor.declarationBatch = this.state.declarationBatch || 1//申报批次 infor.serviceYear = this.state.serviceYear //申报年份 } if (this.state.isVip == 6) {//会员 infor.yearSum = this.state.yearSum //会员总服务年限 infor.serviceLife = JSON.stringify(this.state.serviceLife) //会员服务年限 infor.serviceYear = this.state.serviceYear //本次派单年份 infor.contractTerm = JSON.stringify(this.state.contractTerm)//合同期 } $.ajax({ method: "post", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/orderChange/addChangeTask", data: infor, success: function (data) { let theArr = []; if (data.error && data.error.length) { message.warning(data.error[0].message); } else { message.success("保存成功"); this.nextCancel(); this.proList(); } }.bind(this) }).always( function () { this.setState({ loading: false }); }.bind(this) ); } changeDeletePro(record) { this.setState({ loading: true }); $.ajax({ method: "post", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/orderChange/updateChangeTask", data: { id: record.id, type: 3, tid: record.tid, splitStatus: record.splitStatus }, success: function (data) { let theArr = []; if (data.error && data.error.length) { message.warning(data.error[0].message); } else { message.success("删除成功"); this.proList(); this.cuiList(); } }.bind(this) }).always( function () { this.setState({ loading: false }); }.bind(this) ); } //点击新增变更催款节点 changeAddCui() { this.state.cuiDataSource.push({ key: this.state.cuiDataSource.length, money: "", dunSubject: undefined, orderNo: this.state.data.orderNo, dunTarget: this.state.kehuId }); this.setState({ cuiDataSource: this.state.cuiDataSource, cuiFlag: true }); } //删除变更收款节点 changeDeleteCui(index) { if (index.id) { this.state.cuiDataSource.splice(index.id, 1); this.setState({ contactListNew: this.state.cuiDataSource, cuiFlag: false, addFlag: false, boFlag: false }); $.ajax({ url: globalConfig.context + "/api/admin/orderChange/updateChangeDun", method: "post", data: { id: index.id, type: 3, tid: index.tid, did: index.did } }).done( function (data) { this.setState({ loading: false }); if (!data.error.length) { message.success("删除成功!"); this.setState({ cuiFlag: false }); this.cuiList(); } else { message.warning(data.error[0].message); } }.bind(this) ); } else { this.state.cuiDataSource.splice(index.key, 1); this.setState({ cuiDataSource: this.state.cuiDataSource, cuiFlag: false, addFlag: false, boFlag: false }); } } changeSaveCui(record) { if (record.boStatus == "false") { record.boStatus = false; } else if (record.boStatus == "true") { record.boStatus = true; } if (!this.state.yearFlag) { if (!record.effectiveCount && !record.dunTypeCustom) { message.warning("请选择服务年限"); return; } } else { record.effectiveCount = ""; } if (isNaN(parseInt(record.money)) && !record.boStatus) { message.warning("请填写金额"); return; } else if ((isNaN(parseInt(record.money)) && record.boStatus)) { 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/orderChange/addChangeDun", method: "post", data: { orderNo: record.orderNo, ctid: record.ctid, projectType: record.sort, dunType: record.dunType, appropriationRatio: record.appropriationRatio, waitDay: record.waitDay, effectiveCount: record.effectiveCount, cid: this.state.data.id, //变更ID ustomizeTimes: 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.cuiList(); } else { message.warning(data.error[0].message); } }.bind(this) ); } else { $.ajax({ url: globalConfig.context + "/api/admin/orderChange/addChangeDun", method: "post", data: { orderNo: record.orderNo, ctid: record.ctid, projectType: record.sort, dunType: record.dunType, money: record.money, waitDay: record.waitDay, effectiveCount: record.effectiveCount, cid: this.state.data.id, //变更ID 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.cuiList(); } else { message.warning(data.error[0].message); } }.bind(this) ); } } submitChange() { if ( this.state.typeChange == undefined || (this.state.typeChange == "" && this.state.typeChange != 0) ) { message.warning("请选择变更类型"); return false; } if ( this.state.typeChange == 0 || this.state.typeChange == 1 || this.state.typeChange == 3 || this.state.typeChange == 8 ) { if (this.state.settlementAmount < this.state.changeAmount) { message.warning("退款金额大于已收款金额"); return; } } if (this.state.processStatus != 6 || this.state.processStatus != 7) { message.warning("当前订单流程不能发起变更!"); return false; } if (this.state.changeAmount === "") { message.warning("申请退款金额不能为空!"); return false; } if (this.state.remarksC.trim() == "") { message.warning("请正确填写变更原因"); return false; } if (this.state.startRemarks.trim() == "") { message.warning("请正确填写备注信息"); return false; } 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(","); } this.setState({ loading: true }); $.ajax({ url: globalConfig.context + "/api/admin/orderChange/updateOrderChange", method: "post", data: { id: this.state.changeId, changeType: 0, orderNo: this.state.orderNo, //订单编号 processState: 0, startRemarks: this.state.startRemarks, remarks: this.state.remarksC, voucherUrl: theorgCodeUrl.length ? theorgCodeUrl : "", totalAmount: this.state.totalAmount, settlementAmount: this.state.settlementAmount, changeAmount: this.state.changeAmount, applicant: this.state.salesmanName, depName: this.state.depName, type: this.state.typeChange } }).done( function (data) { if (!data.error.length) { this.setState({ loading: false }); message.success("发起变更成功"); this.handleCancelclose(); } else { message.warning(data.error[0].message); this.setState({ loading: false }); } }.bind(this) ); } editCui(record) { this.setState({ editCuiVisible: true, editCuiMoney: record.appropriationRatio ? record.appropriationRatio : record.money, appropriationRatio: record.appropriationRatio, editCuiTid: record.tid, editCuiId: record.id }); } editPro(record) { this.setState({ editProVisible: true, dataInfor: record, // newData: this.state.proDataSource, }); // this.setState({ // editProVisible: true, // editSplitStatus: record.splitStatus, // editProMoney: record.commodityPrice, // editProCommodityQuantity: record.commodityQuantity, // editProTid: record.tid, // editProId: record.id // }); } submitEditCui(type) { if (isNaN(parseFloat(this.state.editCuiMoney))) { if (type === 1) { message.warn('请输入比例') } else { message.warn('请输入金额') } return; } this.setState({ loading: true }); let data = { id: this.state.editCuiId, type: this.state.editCuiTid ? 2 : 1, tid: this.state.editCuiTid, } if (type === 1) { data.appropriationRatio = this.state.editCuiMoney; } else { data.money = this.state.editCuiMoney; } $.ajax({ url: globalConfig.context + "/api/admin/orderChange/updateChangeDun", method: "post", data }).done( function (data) { this.setState({ loading: false }); if (!data.error.length) { message.success("修改成功!"); this.cuiList(); this.proList() this.setState({ editCuiVisible: false }); } else { message.warning(data.error[0].message); } }.bind(this) ); } submitEditPro() { this.setState({ loading: true }); $.ajax({ url: globalConfig.context + "/api/admin/orderChange/updateChangeTask", method: "post", data: { id: this.state.editProId, type: this.state.editProTid ? 2 : 1, commodityPrice: this.state.editProMoney, commodityQuantity: this.state.editProCommodityQuantity, tid: this.state.editProTid } }).done( function (data) { this.setState({ loading: false }); if (!data.error.length) { message.success("修改成功!"); this.proList(); this.cuiList() this.setState({ editProVisible: false }); } else { message.warning(data.error[0].message); } }.bind(this) ); } componentWillMount() { this.departmentList(); this.state.data = this.props.orderData; this.state.data.oldPrice = this.props.orderData.totalAmount; this.setState({ data: this.state.data, voucherUrl: this.props.voucherUrl }); this.proList(); this.cuiList(); let e = this.props.orderData.type; if (e == 1) { this.setState({ hetongFlag: false, listFlag: false, listCuiFlag: false, tuiKuanFlag: false, displayList: false }); } else if (e == 2) { this.setState({ hetongFlag: true, listFlag: false, listCuiFlag: false, tuiKuanFlag: true, displayList: false }); } else if (e == 3) { this.setState({ listFlag: false, hetongFlag: false, listCuiFlag: false, tuiKuanFlag: false, displayList: true }); } else if (e == 4) { this.setState({ listFlag: false, listCuiFlag: false, hetongFlag: false, tuiKuanFlag: true, displayList: false }); } else if (e == 5) { this.setState({ listFlag: false, listCuiFlag: false, hetongFlag: true, tuiKuanFlag: true, displayList: false }); } else if (e == 6) { this.setState({ // listFlag: true, // listCuiFlag: true, // hetongFlag: true, // tuiKuanFlag: true, // displayList: false, listFlag: false, listCuiFlag: false, hetongFlag: false, tuiKuanFlag: false, displayList: false, }); } else if (e == 7) { this.setState({ listFlag: true, listCuiFlag: true, hetongFlag: true, tuiKuanFlag: true, displayList: false, isNew: true, }); } else { this.setState({ listFlag: false, listCuiFlag: false, hetongFlag: false, tuiKuanFlag: false, displayList: false, }); } } // componentWillReceiveProps(nextProps) { // this.state.data = nextProps.orderData; // this.state.data.oldPrice = nextProps.orderData.totalAmount; // this.setState({ // data: this.state.data, // voucherUrl: nextProps.voucherUrl // }); // // this.proList(); // // this.cuiList(); // let e = nextProps.orderData.type; // if (e == 1) { // this.setState({ // hetongFlag: false, // listFlag: false, // listCuiFlag: false, // tuiKuanFlag: false, // displayList: false // }); // } else if (e == 2) { // this.setState({ // hetongFlag: true, // listFlag: false, // listCuiFlag: false, // tuiKuanFlag: true, // displayList: false // }); // } else if (e == 3) { // this.setState({ // listFlag: false, // hetongFlag: false, // listCuiFlag: false, // tuiKuanFlag: false, // displayList: true // }); // } else if (e == 4) { // this.setState({ // listFlag: false, // listCuiFlag: false, // hetongFlag: false, // tuiKuanFlag: true, // displayList: false // }); // } else if (e == 5) { // this.setState({ // listFlag: false, // listCuiFlag: false, // hetongFlag: true, // tuiKuanFlag: true, // displayList: false // }); // } else { // this.setState({ // listFlag: true, // hetongFlag: true, // listCuiFlag: true, // tuiKuanFlag: false, // displayList: false // }); // } // } not() { } deleteChange() { this.setState({ loading: true, }); $.ajax({ url: globalConfig.context + "/api/admin/orderChange/cancelOrderChange", method: "post", data: { id: this.state.data.id, status: this.state.data.status, processState: this.state.data.processState, orderNo: this.state.data.orderNo }, }).done( function (data) { this.setState({ loading: false, }); if (!data.error.length) { message.success("取消成功!"); this.props.onCancel() } else { message.warning(data.error[0].message); } }.bind(this) ); } handleClose(removedTag) { let serviceLife = this.state.serviceLife.filter(tag => { return tag !== removedTag }); this.setState({ serviceLife, serviceYear: undefined }); } // 可展开颜色不同 addRowColor(record) { if (!!record.list && record.list.length > 0) { return 'light' } else { return 'dark' } } render() { const expandedRowRender = e => { const data = e.list; if (e.cSort != 6) { let columns = []; if (data instanceof Array && data.length) { columns = [ { title: "变更状态", dataIndex: "type", key: "type", render: (text, record) => { let str = ""; let color = ""; if (text == 1) { str = "增"; color = "#87d068"; } else if (text == 2) { str = "改"; color = "#108ee9"; } else if (text == 3) { str = "删"; color = "#f50"; } return ( <span> <Tag color={color} style={{ display: text == 0 ? "none" : "inline-block" }} > {str} </Tag> {/* {record.splitStatus == 1 ? ( <Tag color="#108ee9" // onClick={e => { // e.stopPropagation(); // this.showRes(record); // }} > 父项目 </Tag> ) : ( "" )} {record.splitStatus == 2 ? ( <Tag color="#108ee9" // onClick={e => { // e.stopPropagation(); // this.showRes(record); // }} > 子项目 </Tag> ) : ( "" )} */} </span> ); }, }, { title: "业务项目名称", dataIndex: "commodityName", key: "commodityName", render: (text, record) => { return <span> {text}<span style={{ color: "red" }}>{record.patentTypeName}</span>{"-" + record.id} <div> {record.cSort == 6 && record.projectType == 1 && <span>(含{record.htMember == 1 ? '高新会员&' : ''}{record.additionalDeduction == 1 ? '加计扣除&' : ''}{record.rdAwardsubsidy == 1 ? '研发奖补' : ''})</span>} {record.cSort == 6 && ([0, 3].indexOf(record.projectType) > -1) && <span>(仅提供单边会员服务)</span>} {record.cSort == 6 && record.projectType == 2 && <span>(仅填报表,仅咨询,不出备查资料)</span>} {record.cSort == 3 && <span>{record.technologyProjectType==0?'(简易项目)':record.technologyProjectType==1?'(市区级)':record.technologyProjectType==2?'(省级)':record.technologyProjectType==3?'(国家级)':''}</span>} {record.cSort == 8 ? (record.type != 2 && record.patentType == 1) ? <span>(变更)</span> : <span>{record.ordinaryRisk == 0 ? '(普通申请)' : record.ordinaryRisk == 1 ? '(风险代理)' : ''}</span> : ""} {record.type == 2 && <span>({record.days == 0 ? '普通' : record.days == 1 ? '加急' : ''}{record.scheme == 0 ? '&无方案' : record.scheme == 1 ? '&有方案' : ''})</span>} </div> </span> } }, { title: "项目类别", dataIndex: "cname", key: "cname", }, { title: "项目数量", dataIndex: "commodityQuantity", key: "commodityQuantity", }, { title: "金额(万元)", dataIndex: "commodityPrice", key: "commodityPrice", render: (text, record) => { if (record.splitStatus == 2) { return "/"; } else { return text; } }, }, { title: "主要项目", dataIndex: "main", key: "main", render: (text) => { return text ? "是" : "否"; }, }, { title: "项目负责人", dataIndex: "receiverName", key: "receiverName", }, { title: "总年限", dataIndex: "yearSum", key: "yearSum", render: (text, record) => { return ( <div>{["", "一年", "二年", "三年", "四年", "五年"][text]}</div> ); } }, { title: "年限", dataIndex: "serviceLife", key: "serviceLife", render: (text, record) => { return ( <div>{!!text && JSON.parse(text).toString()}</div> ); } }, { title: "本次派单", dataIndex: "serviceYear", key: "serviceYear", render: (text, record) => { return ( <div>{!text ? "" : text}</div> ); } }, { title: "项目说明", dataIndex: "taskComment", key: "taskComment", render: (text) => { return ( <Tooltip title={text}> <div style={{ width: 100, overflow: "hidden", whiteSpace: "nowrap", textOverflow: "ellipsis", }} >{text}</div> </Tooltip> ) }, }, { title: "操作", dataIndex: "ABC", key: "ABC", render: (text, record) => { return ( <div> <Button onClick={(e) => { e.stopPropagation(); this.showConfirm(this.changeDeletePro, record); }} disabled={this.state.listFlag} style={{ display: this.state.displayList ? "none" : "block", }} > 删除 </Button> </div> ); }, }, ]; return ( <Table columns={columns} dataSource={data} scroll={{ x: "max-content", y: 0 }} pagination={false} onRowDoubleClick={this.state.listFlag ? this.not : this.editPro} /> ); } else { columns = []; return ( <p style={{ fontWeight: "bold", color: "red", textAlign: "center" }}> 此项目暂未拆分 </p> ); } } else { let columns = []; if (data instanceof Array && data.length) { columns = [ { title: "变更状态", dataIndex: "type", key: "type", render: (text, record) => { let str = ""; let color = ""; if (text == 1) { str = "增"; color = "#87d068"; } else if (text == 2) { str = "改"; color = "#108ee9"; } else if (text == 3) { str = "删"; color = "#f50"; } return ( <span> <Tag color={color} style={{ display: text == 0 ? "none" : "inline-block" }} > {str} </Tag> </span> ); }, }, { title: "负责人", dataIndex: "receiverName", key: "receiverName", }, { title: "负责人电话", dataIndex: "receiverMobile", key: "receiverMobile", }, { title: "项目状态", dataIndex: "projectStatus", key: "projectStatus", render: (text) => { return text // return getProjectName(text); }, }, { title: "本次派单", dataIndex: "serviceYear", key: "serviceYear", }, { title: "项目说明", dataIndex: "taskComment", key: "taskComment", render: (text, record) => { let textStr = text; let textArr = []; if (record.htMember === 1) { textArr.push("高新会员"); } if (record.additionalDeduction === 1) { textArr.push("加计扣除"); } if (record.rdAwardsubsidy === 1) { textArr.push("研发补助"); } if (textArr.length) { textStr = `${textArr.join("&")} ${!!text ? `(${text})` : ''}` } return ( <Tooltip title={textStr}> <div >{textStr}</div> </Tooltip> ) }, }, ]; return ( <Table columns={columns} dataSource={data} pagination={false} /> ); } else { columns = []; return ( <p style={{ fontWeight: "bold", color: "red", textAlign: "center" }} > 暂无派单 </p> ); } } }; const { TextArea } = Input; const data = this.state.data; // let departmentArr = this.state.departmentArr || []; const dataSources = this.state.customerArr || []; const cuiDataList = this.state.contactList || []; 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> )); let children = vipYear.map(its => ( <Option key={its}>{its}</Option> )); const { isVip, histYear, isEdit } = this.state return ( <div> <Spin spinning={this.state.loading}> {this.state.resVisible ? ( <ResolutionDetail cancel={this.resCancel} detail={this.state.resRecord} visible={this.state.resVisible} id={this.state.resRecord.orderNo} /> ) : ( "" )} <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="客户名称" > <span>{data.userName}</span> <EnterpriseNameChange type='journal' style={{ marginLeft: 10 }} enterpriseId={this.props.orderUid} /> </FormItem> </div> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="合同编号" > <span>{data.contractNo}</span> </FormItem> </div> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="申请变更部门" > <span>{this.state.data.depName}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="申请人"> {/* <Input placeholder="请输入申请人" ref="signTotalAmount" value={data.applicant} onChange={e => { let data = this.state.data; data.applicant = e.target.value; this.setState({ data }); }} style={{ width: "240px" }} /> */} <span>{data.applicant}</span> </FormItem> </div> <div className="clearfix"> <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="变更类型" > <Select placeholder="选择合同变更类型" style={{ width: 200 }} disabled={this.state.changeFlag} onChange={(e) => { let data = this.state.data; data.type = e; this.setState({ data, changeFlag: true }); if (e == 1) { this.setState({ hetongFlag: false, listFlag: false, listCuiFlag: false, tuiKuanFlag: false, displayList: false, }); } else if (e == 2) { this.setState({ hetongFlag: true, listFlag: false, listCuiFlag: false, tuiKuanFlag: true, displayList: false, }); } else if (e == 3) { this.setState({ listFlag: false, hetongFlag: false, listCuiFlag: false, tuiKuanFlag: false, displayList: true, }); } else if (e == 4) { this.setState({ listFlag: false, listCuiFlag: false, hetongFlag: false, tuiKuanFlag: true, displayList: false, }); } else if (e == 5) { this.setState({ listFlag: false, listCuiFlag: false, hetongFlag: true, tuiKuanFlag: true, displayList: false, }); } else if (e == 6) { this.setState({ // listFlag: true, // listCuiFlag: true, // hetongFlag: true, // tuiKuanFlag: true, // displayList: false, listFlag: false, listCuiFlag: false, hetongFlag: false, tuiKuanFlag: false, displayList: false, }); } else if (e == 7) { this.setState({ listFlag: true, listCuiFlag: true, hetongFlag: true, tuiKuanFlag: true, displayList: false, isNew: true, //上传替换合同 }); } else { this.setState({ listFlag: false, listCuiFlag: false, hetongFlag: false, tuiKuanFlag: false, displayList: false, }); } }} value={data.type} > <Option value={0}>退单退款</Option> <Option value={1}>项目及金额变更</Option> <Option value={2}>仅项目变更</Option> <Option value={3}>仅金额变更</Option> <Option value={4}>重报</Option> <Option value={5}>赠送</Option> <Option value={6}>退单不退款</Option> <Option value={7}>仅变更合同</Option> <Option value={8}>框架协议(仅已签框架合同适用)</Option> </Select> <Button style={{ marginLeft: 10 }} onClick={(e) => { this.state.data.startRemarks = ""; this.state.data.remarks = ""; this.state.data.changeAmount = "0"; this.state.data.depNameChange = undefined; this.state.data.typeChange = undefined; this.state.data.totalAmount = this.state.data.oldPrice; this.setState({ listFlag: true, listCuiFlag: true, hetongFlag: true, tuiKuanFlag: true, displayList: false, isNew: false, // listFlag: false, // hetongFlag: false, // listCuiFlag: false, // tuiKuanFlag: false, // displayList: false, startRemarks: "", data: this.state.data, changeFlag: false, voucherUrl: [], // changeAmount: "0", // applicant: undefined, // depNameChange: undefined, // typeChange: [], // changeFlag: false }); }} > 重置 </Button> {(this.state.data.status == 3 || this.state.data.status == 0) ? ( <Button type="danger" style={{ float: "right", backgroundColor: "red", color: "white", position: "absolute", right: 0, height: 50, borderRadius: 20, }} onClick={(e) => { e.stopPropagation(); this.showConfirmChange(this.deleteChange); }} > 取消本次变更 </Button> ) : ( "" )} </FormItem> </div> <div className="clearfix"> <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="合同额(万元)" > <Input placeholder="请输入合同额" ref="signTotalAmount" disabled={this.state.hetongFlag} value={data.totalAmount} onChange={(e) => { let data = this.state.data; data.totalAmount = e.target.value; this.setState({ data }); }} style={{ width: "240px" }} /> </FormItem> <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="首付款(万元)" > <Input placeholder="请输入首付款" ref="signTotalAmount" disabled={this.state.hetongFlag} value={data.firstAmount} onChange={(e) => { let data = this.state.data; data.firstAmount = e.target.value; this.setState({ data }); }} style={{ width: "240px" }} /> </FormItem> <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="已收款(万元)" > {/* <Input placeholder="请输入已收款" ref="signTotalAmount" value={data.settlementAmount} onChange={e => { let data = this.state.data; data.settlementAmount = e.target.value; this.setState({ data }); }} style={{ width: "240px" }} /> */} <span> {this.state.data.settlementAmount} <span style={{ color: "red" }}> (注:已收款与现实收款不符,请与财务专员联系) </span> </span> </FormItem> <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="申请退款(万元)" > <Input placeholder="请输入申请退款" ref="signTotalAmount" disabled={this.state.tuiKuanFlag} value={data.changeAmount} onChange={(e) => { let data = this.state.data; data.changeAmount = e.target.value; this.setState({ data }); }} style={{ width: "240px" }} /> </FormItem> </div> {/* 退单退款 */} {this.state.data.type == 0 && <div className="clearfix"> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="企业总经理姓名" > <Input placeholder="请输入企业总经理姓名" value={data.managerContacts} onChange={(e) => { let data = this.state.data; data.managerContacts = e.target.value; this.setState({ data }); }} style={{ width: "240px" }} /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="企业总经理联系电话" > <Input placeholder="请输入企业总经理联系电话" value={data.managerContactMobile} onChange={(e) => { let data = this.state.data; data.managerContactMobile = e.target.value; this.setState({ data }); }} style={{ width: "240px" }} /> </FormItem> </div> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="企业联系人姓名" > <Input placeholder="请输入企业联系人姓名" value={data.contacts} onChange={(e) => { let data = this.state.data; data.contacts = e.target.value; this.setState({ data }); }} style={{ width: "240px" }} /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="企业联系人联系方式" > <Input placeholder="请输入企业联系人联系方式" value={data.contactMobile} onChange={(e) => { let data = this.state.data; data.contactMobile = e.target.value; this.setState({ data }); }} style={{ width: "240px" }} /> </FormItem> </div> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label={<span style={{ color: "red" }}>注</span>} > <span style={{ color: "red" }}> 请填写以上信息,公司总经理将与企业联系交流 </span> </FormItem> </div> </div> } <div> <div> <span style={{ marginLeft: "50px", fontSize: "20px", }} > 项目业务 </span> <span style={{ color: "red" }}> (注:项目删除后,此项目的全部节点、全部工时,全部被删除,请谨慎删除!) </span> <Button type="primary" onClick={this.changeAddPro} disabled={this.state.listFlag} style={{ float: "right", marginRight: "50px", marginBottom: "15px", display: this.state.displayList ? "none" : "block", }} > 添加项目明细 </Button> </div> <div className="patent-table" style={{ marginBottom: 10 }}> {/* <Spin spinning={this.state.loading}> */} <Table columns={this.state.proColumns} dataSource={this.state.proDataSource} scroll={{ x: "max-content", y: 0 }} expandedRowRender={expandedRowRender} rowClassName={this.addRowColor} pagination={false} // onRowDoubleClick={this.state.listFlag ? this.not : this.editPro} bordered size="small" /> {/* </Spin> */} </div> <div> <span style={{ marginLeft: "50px", fontSize: "20px", }} > 催款节点 </span> <span style={{ color: "red" }}> (注:节点删除后,无论节点是否触发,均会删除,请谨慎删除!双击可修改对应金额!) </span> <Button type="primary" onClick={(e) => { this.changeAddCui(); }} disabled={this.state.listCuiFlag} style={{ float: "right", marginRight: "50px", marginBottom: "15px", display: this.state.displayList ? "none" : "block", }} > 添加催款节点 </Button> </div> <div className="clearfix"> {/* <Spin spinning={this.state.loading}> */} <Form layout="horizontal"> <Table pagination={false} columns={this.state.changeCuiList} dataSource={this.state.cuiDataSource} scroll={{ x: "max-content", y: 0 }} onRowDoubleClick={ this.state.listCuiFlag ? this.not : this.editCui } bordered size="small" /> <Col span={24} offset={9} style={{ marginTop: "15px" }}></Col> </Form> {/* </Spin> */} </div> </div> <div className="clearfix"> <FormItem style={{ height: "auto" }} labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="变更原因" > <TextArea rows={4} placeholder="因企业政府补助费用与营销员签单承诺费用不一" ref="signTotalAmount" style={{ width: "95%" }} value={data.remarks} onChange={(e) => { let data = this.state.data; data.remarks = e.target.value; this.setState({ data }); }} /> </FormItem> </div> {/* 备注 */} <div className="clearfix"> <FormItem style={{ height: "auto" }} labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="备注" > <TextArea rows={4} placeholder="请输入备注信息" ref="signTotalAmount" style={{ width: "95%" }} value={data.startRemarks} onChange={(e) => { let data = this.state.data; data.startRemarks = e.target.value; this.setState({ data }); }} /> </FormItem> </div> <div className="clearfix"> <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="变更凭证" > <PicturesWall fileList={this.getVoucherUrl} pictureUrl={this.state.voucherUrl} url="/api/admin/orderChange/uploadFile" sign="order_change_file" /> <Rizhi changeId={data.id} /> <p>图片建议:要清晰。</p> </FormItem> </div> <div className="clearfix"> <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="上传替换合同" > <Switch disabled={data.type == 7} checked={this.state.isNew} onChange={e => { this.setState({ isNew: e }) }} />, <p style={{ color: "red" }}>注:原上传合同为空或作废时,需上传替换合同</p> </FormItem> </div> { this.state.isNew && <div className="clearfix"> <FormItem labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} label="合同扫描件" > <PicturesWall domId={"newcontract"} fileList={this.getNewContractUrl} pictureUrl={this.state.newContractUrl} url="/api/admin/orderChange/uploadFile" sign="" /> <p>图片建议:要清晰。</p> </FormItem> </div> } {/* <ul style={{ width: "868px", overflow: "hidden", paddingLeft: "90px", marginBottom: "20px" }} > {this.state.dataSource.map((item, index) => ( <li key={index} style={{ width: "100%", height: "auto", wordBreak: "break-all", color: "black", marginBottom: "10px" }} >{`${item.aname}: ${item.remarks}`}</li> ))} </ul> */} { // 新需求 除湖南和内蒙古外 不让其他省操作 (adminData.province == "21" || adminData.province == "11") && <div className="clearfix"> <Button type="primary" style={{ float: "right", marginRight: 40 }} onClick={this.changeApply} > 发起变更申请 </Button> </div> } { // 变更项目任务编辑 this.state.editProVisible && <NewEditProject type="change" children="list" typeChange={this.state.typeChange} cid={this.state.data.id} readOnly={false} orderNo={this.state.data.orderNo} visible={this.state.editProVisible} dataInfor={this.state.dataInfor} newData={this.state.newData} onCancel={() => [this.nextCancel("change")]} /> // <ProjectOperation // type="biangeng" // readOnly={false} // visible={this.state.editProVisible} // dataInfor={this.state.dataInfor} // newData={this.state.newData} // onCancel={() => { // this.setState({ // editProVisible: false, // }); // this.proList() // }} // /> } {/* <Modal maskClosable={false} title="修改项目金额及数量" visible={this.state.editProVisible} onOk={this.submitEditPro} width={300} okText={"保存"} onCancel={() => { this.setState({ editProVisible: false, }); }} > <div className="clearfix"> <FormItem labelCol={{ span: 6 }} wrapperCol={{ span: 14 }} label="项目金额" style={{ display: this.state.editSplitStatus == 2 ? "none" : "block", }} > <Input placeholder="请输入金额" rows={4} value={this.state.editProMoney} onChange={(e) => { this.setState({ editProMoney: e.target.value }); }} /> </FormItem> <FormItem labelCol={{ span: 6 }} wrapperCol={{ span: 14 }} label="项目数量" > <Input placeholder="请输入数量" rows={4} value={this.state.editProCommodityQuantity} onChange={(e) => { this.setState({ editProCommodityQuantity: e.target.value }); }} /> </FormItem> </div> </Modal> */} <Modal maskClosable={false} title={isNaN(parseFloat(this.state.appropriationRatio)) ? "修改催款节点金额" : "修改催款节点比例"} visible={this.state.editCuiVisible} onOk={() => { this.submitEditCui(isNaN(parseFloat(this.state.appropriationRatio)) ? 0 : 1); }} okText={"保存"} width={300} onCancel={(e) => { this.setState({ editCuiVisible: false, appropriationRatio: '' }); }} > <div className="clearfix"> <FormItem labelCol={{ span: 6 }} wrapperCol={{ span: 14 }} label={isNaN(parseFloat(this.state.appropriationRatio)) ? "催款金额" : "催款比例"} > <Input type='number' placeholder={isNaN(parseFloat(this.state.appropriationRatio)) ? "请输入金额" : "请输入比例"} rows={4} value={this.state.editCuiMoney} onChange={(e) => { this.setState({ editCuiMoney: e.target.value }); }} /> </FormItem> </div> </Modal> { this.state.changeVisible && <NewAddProject type="change" children="list" typeChange={this.state.typeChange} cid={this.state.data.id} readOnly={false} orderNo={this.state.data.orderNo} visible={this.state.changeVisible} newData={this.state.newData} onCancel={() => [this.nextCancel("change")]} /> } </Spin> { this.state.addYears && <Modal title="添加服务年限" visible={this.state.addYears} okText="添加" onOk={() => { if (!this.state.addyear) { message.warn("请选择年份!") return } if (this.state.isGive == undefined) { message.warn("请选择是否赠送!") return } let slist = this.state.serviceLife if (this.state.isGive == 0) { slist.push(this.state.addyear) } else if (this.state.isGive == 1) { let newYear = this.state.addyear + "(赠)" slist.push(newYear) } this.setState({ serviceLife: slist, addYears: false }) }} onCancel={() => { this.setState({ addYears: false }) }} > <Select style={{ width: '200px', marginRight: 50 }} placeholder="请选择年份" onChange={e => { this.setState({ addyear: e, }) }} > { vipYear.map(its => ( <Option key={its} disabled={this.state.serviceLife.toString().includes(its)} >{its}</Option> )) } </Select> <RadioGroup onChange={e => { this.setState({ isGive: e.target.value }) }} value={this.state.isGive} > <Radio value={0}>非赠送</Radio> <Radio value={1}>赠送</Radio> </RadioGroup> </Modal> } </div> ); } } export default ChangeApply;