import React from "react"; import $ from "jquery"; import moment from "moment"; import Picture from "@/manageCenter/publicComponent/picture"; import ResolutionDetail from "@/resolutionDetail"; import "@/manageCenter/financialManage/distribute/public.less"; import "@/manageCenter/financialManage/distribute/shouKuan.less"; import { Button, Form, Input, Select, Spin, Table, message, DatePicker, Modal, Radio, Cascader, Popconfirm, Tabs, Tag, notification } from "antd"; import Assign from "@/manageCenter/publicComponent/assign"; import { areaSelect } from "@/NewDicProvinceList"; import { ChooseList } from "../../order/orderNew/chooseList"; import OrderRiZi from "@/orderRiZi.jsx"; import "./table.less"; import { getProcessStatus, getApproval, getTaskStatus, getLiquidationStatus, getProjectStatus, splitUrl, getboutique, getprovince, moneyVerify, ShowModal } from "@/tools"; import { taskStatus, projectStatus } from "@/dataDic.js"; import ShowModalDiv from "@/showModal.jsx"; const FormItem = Form.Item; const { TabPane } = Tabs; const { MonthPicker, RangePicker } = DatePicker; const MyTaskOutsource = React.createClass({ loadData(pageNo) { this.state.data = []; this.setState({ page: pageNo, loading: true }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/orderProject/orderTaskList", data: { pageNo: pageNo || this.state.page || 1, pageSize: this.state.pagination.pageSize, specially: 0, //个人 name: this.state.nameSearch, //客户名称 depId: this.state.departmenttSearch, //订单部门 orderNo: this.state.orderNoSearch, //订单编号 contractNo: this.state.contractNoSearch, //合同编号 taskId: this.state.taskNoSearch, //项目编号 taskStatus: this.state.taskStatuSearch, //项目状态 projectStatus: this.state.projectStatusSearch, //项目状态 adminName: this.state.adminName, //项目受理人 outsource: 1, approval: this.state.approvalSearch //特批状态搜索 }, success: function(data) { ShowModal(this); let theArr = []; if (!data.data || !data.data.list) { if (data.error && data.error.length) { message.warning(data.error[0].message); } } else { for (let i = 0; i < data.data.list.length; i++) { let thisdata = data.data.list[i]; theArr.push({ key: i, orderNo: thisdata.orderNo, //订单编号 id: thisdata.id, //项目ID taskName: thisdata.taskName, //名称 cname: thisdata.cname, //项目品类 receiverName: thisdata.receiverName, //受理人 projectStatus: thisdata.projectStatus, //项目状态 taskStatus: thisdata.taskStatus, //项目状态 taskDate: thisdata.taskDate, //分配时间 userName: thisdata.taskName.substring(0, 5) === "软件著作权" ? thisdata.userName + "(" + thisdata.commodityQuantity.toString() + "/" + thisdata.alreadyNumber + ")" : thisdata.userName, //用户名 depName: thisdata.depName, //部门名称 commodityQuantity: thisdata.commodityQuantity, //项目数量 outsourceName: thisdata.outsourceName, hours: thisdata.hours, contractNo: thisdata.contractNo, approval: thisdata.approval, //特批状态 outsourceStatus: thisdata.outsourceStatus, //外包审核状态 splitStatus: thisdata.splitStatus, //是否为子项目 2是 1主项目 splitSuper: thisdata.splitSuper, splitId: thisdata.splitId }); } } if (data.data && data.data.list && !data.data.list.length) { this.state.pagination.current = 0; this.state.pagination.total = 0; } this.setState({ dataSource: theArr, pagination: this.state.pagination }); }.bind(this) }).always( function() { this.setState({ loading: false }); }.bind(this) ); }, getInitialState() { return { page: 1, timeVisible: false, searchMore: true, assignVisible: false, releaseDate: [], // 判断是否是退回给咨询师经理 flag: false, roleName: "", modKey: "1", testFlag: true, boHuivisible: false, companyProvinceArr: [], selectedRowKeys: [], departmentArr: [], selectedRows: [], attachmentUrl: [], contactList: [], //特批状态搜索 approvalSearch: undefined, paginations: false, loading: false, pagination: { defaultCurrent: 1, defaultPageSize: 10, showQuickJumper: true, pageSize: 10, onChange: function(page) { this.loadData(page); this.setState({ page }); }.bind(this), showTotal: function(total) { return "共" + total + "条数据"; } }, // 子组件改变的表格title数组 changeList: undefined, columnsTime: [ { title: "工作时长(小时)", dataIndex: "hours", key: "hours" }, { title: "工作时间", dataIndex: "taskDays", key: "taskDays" }, // { // title: "项目负责人", // dataIndex: "remarks", // key: "remarks" // }, { title: "备注", dataIndex: "remarks", key: "remarks" } ], columns: [ { title: "项目编号", dataIndex: "id", key: "id", render: (text, record) => { if (record.splitStatus == 2) { return <span>{record.splitSuper + "-" + record.splitId}</span>; } else { return text; } } }, { title: "项目名称", dataIndex: "taskName", key: "taskName", render: text => { return text && text.length > 8 ? text.substr(0, 8) + "…" : text; } }, { title: "项目数量", dataIndex: "commodityQuantity", key: "commodityQuantity" }, { title: "订单编号", dataIndex: "orderNo", key: "orderNo" }, { title: "合同编号", dataIndex: "contractNo", key: "contractNo" }, { title: "业务类别", dataIndex: "cname", key: "cname" }, { title: "客户名称", dataIndex: "userName", key: "userName", className: "userName" }, { title: "外包公司", dataIndex: "outsourceName", key: "outsourceName" }, { title: "分配状态", dataIndex: "taskStatus", key: "taskStatus", render: text => { return getTaskStatus(text); } }, { title: "项目状态", dataIndex: "projectStatus", key: "projectStatus", render: text => { return getProjectStatus(text); } }, { title: "特批状态", dataIndex: "approval", key: "approval", render: text => { return getApproval(text, true); } }, { title: "分配时间", dataIndex: "taskDate", key: "taskDate" }, { title: "订单部门", dataIndex: "depName", key: "depName" }, { title: "累计工时(小时)", dataIndex: "hours", key: "hours" }, { title: "操作", dataIndex: "caozuo", key: "caozuo", render: (text, record) => { return ( <div> <Button type="primary" onClick={e => { e.stopPropagation(), this.evaluate(record, "咨询师"); }} > 转交 </Button> <Button type="primary" style={{ marginLeft: 10 }} onClick={e => { e.stopPropagation(), this.evaluate(record, "咨询师经理", true); }} > 回退 </Button> <Button type="primary" style={{ margin: "0 10px" }} onClick={e => { e.stopPropagation(), this.okCancel(record); }} > 添加工时 </Button> <Button type="primary" onClick={e => { e.stopPropagation(); this.setState({ timeVisible: true }); this.timeDetail(record); }} > 工时记录 </Button> </div> ); } } ], dataSource: [], searchTime: [], columnsX: [ { 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: "main", key: "main", render: text => { return text ? "是" : "否"; } }, { title: "项目说明", dataIndex: "taskComment", key: "taskComment", render: text => { return text && text.length > 8 ? text.substr(0, 8) + "…" : text; } } ], columnsA: [ { title: "流程", dataIndex: "content", key: "content", align: "center" }, { title: "操作人", dataIndex: "aName", key: "aName", align: "center" }, { title: "时间", dataIndex: "createTimes", key: "createTimes", align: "center" } ], dataSourceX: [], dataSourceA: [], companys: [], ContactsLists: [ { title: "批次", dataIndex: "num", key: "num" }, { title: "下证时间", dataIndex: "licenceTimes", key: "licenceTimes", render: (text, record) => { return ( <div> <DatePicker style={{ marginTop: "5px" }} showTime format="YYYY-MM-DD" onOk={() => {}} value={ record.licenceTimes ? moment(record.licenceTimes) : null } onChange={(data, dataString) => { record.licenceTimes = dataString; this.setState({ contactList: this.state.contactList }); }} /> </div> ); } }, { title: "下证数量", dataIndex: "alreadyNumber", key: "alreadyNumber", render: (text, record) => { return ( <div> { <Input value={record.alreadyNumber} placeholder="请输入下证数量" key={record.id} required="required" onChange={e => { record.alreadyNumber = e.target.value; this.setState({ contactList: this.state.contactList }); }} style={{ width: "120px" }} /> } </div> ); } }, { title: "未下证数量", dataIndex: "notCount", key: "notCount" }, { title: "操作", dataIndex: "dels", key: "dels", render: (text, record, index) => { return ( <div> { <Popconfirm title="是否删除?" onConfirm={() => { this.confirmDelet(record); }} okText="删除" cancelText="不删除" > <Button style={{ marginRight: "10px", color: "#ffffff", background: "#f00", border: "none" }} > 删除 </Button> </Popconfirm> } {record.flag ? ( "" ) : ( <Button type="primary" onClick={e => { e.stopPropagation(), this.contactSave(record, index); }} > 保存 </Button> )} </div> ); } } ], companyColumns: [ { title: "公司", dataIndex: "name", key: "name", //fixed:'left', width: 160 }, { title: "联系人", dataIndex: "contacts", key: "contacts" }, { title: "联系人电话", dataIndex: "contactsMobile", key: "contactsMobile" }, { title: "地址", dataIndex: "companyProvinceArr", key: "companyProvinceArr", width: 140, render: test => { return test[0] === null ? "" : getprovince(test[0]) + "/" + getprovince(test[1]) + "/" + getprovince(test[2]); } }, { title: "详细地址", dataIndex: "address", key: "address" }, { title: "操作", width: 160, render: (text, record) => { return ( <div> <Button type="primary" onClick={() => { this.setState({ companyId: record.id, updataSwicth: true, cName: record.name, companyContacts: record.contacts, companyContactsMobile: record.contactsMobile, companyProvinceArr: record.companyProvinceArr, companyAddress: record.address, companyRemarks: record.remarks }); this.openNotification(); }} > 修改 </Button> <Popconfirm title="是否确认删除?" okText="确定" onConfirm={() => { this.deleteCompany(record.id); }} cancelText="取消" > <Button type="danger" style={{ marginLeft: "10px" }}> 删除 </Button> </Popconfirm> </div> ); } } ] }; }, /* 分派 */ evaluate(record, nub, flag) { this.state.assignData = record; this.setState( { nub, assignData: record, flag }, () => { this.setState({ assignVisible: true }); } ); }, componentWillMount() { this.departmentList(); this.loadData(); }, componentDidMount() { this.setColor(); }, setColor() { $(".userName span").after( "(<span class='ruanzhu'>软著数</span>/<span class='xiazheng'>下证数</span>)" ); }, tableRowClick(record) { this.state.RowData = record; if (record.taskName.substring(0, 5) === "软件著作权") { this.setState({ speVisible: true, id: record.id, splitStatus: record.splitStatus, splitSuper: record.splitSuper, splitId: record.splitId, dataArr: record, commodityQuantity: record.commodityQuantity }); } else { this.setState({ visible: true, splitStatus: record.splitStatus, splitSuper: record.splitSuper, splitId: record.splitId }); } this.xiangqing(record.id, record.taskName); this.xiangqings(record.orderNo); this.xiangmu(record.orderNo); this.loaduserss(record); }, //点击修改项目详情 tijiaoOk() { if (moneyVerify(this.state.setUpAmount)) { return; } let attachmentUrls = []; if (this.state.attachmentUrl.length) { let picArr = []; this.state.attachmentUrl.map(function(item) { if (item.response && item.response.data && item.response.data.length) { picArr.push(item.response.data); } }); attachmentUrls = picArr.join(","); } this.setState({ loading: true }); $.ajax({ method: "POST", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/orderProject/updateOrderTask", data: { id: this.state.id, //项目编号 orderNo: this.state.orderNo, //订单编号 projectStatus: this.state.projectStatus, //项目状态 taskStatus: this.state.taskStatus, //项目状态 taskComment: this.state.taskComment, //说明 startDate: this.state.startDate, //启动日期 endDate: this.state.endDate, //结束日期 acceptDate: this.state.acceptDate, //受理日期 reviewDate: this.state.reviewDate, //评审日期 publicityDate: this.state.publicityDate, //公示日期 licenceDate: this.state.licenceDate, //发证日期 attachmentUrl: attachmentUrls.length ? attachmentUrls : "", //附件 contacts: this.state.contacts, //联系人 contactMobile: this.state.contactMobile, //联系人电话 legalPerson: this.state.legalPerson, //法人 legalPersonTel: this.state.legalPersonTel, //法人电话 certificateNumber: this.state.certificateNumber, //证书编号 status: this.state.status, //状态 formRetrieve: this.state.formRetrieve, //满意度表格 taskRefund: this.state.taskRefund, //退单 refundContent: this.state.refundContent, //退单信息 retrieveContent: this.state.retrieveContent, //回收信息 locationProvince: this.state.ProvinceCity[0], locationCity: this.state.ProvinceCity[1], locationArea: this.state.ProvinceCity[2], postalAddress: this.state.postalAddress, //详细地址 arrivalMoney: this.state.arrivalMoney, //是否到款 setUpAmount: this.state.setUpAmount, //立项金额 declareUser: this.state.declareUser, //账号 declarePwd: this.state.declarePwd, //密码 outsourceName: this.state.outsourceName, //外包公司名称 outsourcePrice: this.state.outsourcePrice //外包价格 } }).done( function(data) { this.setState({ loading: false }); if (!data.error.length) { message.success("保存成功!"); this.visitCancel(); } else { message.warning(data.error[0].message); } }.bind(this) ); }, //点击修改项目详情 tianjiaOk() { if (this.state.attachmentUrl.length) { let picArr = []; this.state.attachmentUrl.map(function(item) { if (item.response && item.response.data && item.response.data.length) { picArr.push(item.response.data); } }); } $.ajax({ method: "POST", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/orderProject/addTaskHours", data: { taskId: this.state.taskId, //项目编号 hours: this.state.hours, //工时 remarks: this.state.remarks, //说明 taskDate: this.state.taskDate, //日期 taskComment: this.state.taskComment //说明 } }).done( function(data) { this.setState({ loading: false }); if (!data.error.length) { message.success("保存成功!"); this.noCancel(); } else { message.warning(data.error[0].message); } }.bind(this) ); }, //订单详情 xiangqing(id) { $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/orderProject/orderTaskDetail", data: { id: id }, success: function(data) { let thisdata = data.data; if (data.error.length || data.data.list == "") { if (data.error && data.error.length) { message.warning(data.error[0].message); } } else { this.setState({ id: thisdata.id, //ID orderNo: thisdata.orderNo, //订单编号 userName: thisdata.userName, //客户名称 taskName: thisdata.taskName, //项目名称 cname: thisdata.cname, //项目品类 contractNo: thisdata.contractNo, //合同编号 projectStatus: thisdata.projectStatus.toString(), //项目状态 taskStatus: thisdata.taskStatus.toString(), //项目状态 taskDate: thisdata.taskDate, //分配时间 taskComment: thisdata.taskComment, //说明 attachmentUrl: thisdata.attachmentUrl ? splitUrl( thisdata.attachmentUrl, ",", globalConfig.avatarHost + "/upload" ) : [], //图片地址 salesmanName: thisdata.salesmanName, //订单负责人 startDate: thisdata.startDate, //启动日期 endDate: thisdata.endDate, //结束日期 acceptDate: thisdata.acceptDate, //受理日期 reviewDate: thisdata.reviewDate, //评审日期 publicityDate: thisdata.publicityDate, //公示日期 licenceDate: thisdata.licenceDate, //发证日期 contacts: thisdata.contacts, //联系人 contactMobile: thisdata.contactMobile, //联系人电话 legalPerson: thisdata.legalPerson, //法人 legalPersonTel: thisdata.legalPersonTel, //法人电话 certificateNumber: thisdata.certificateNumber, //证书编号 status: thisdata.status, //状态 formRetrieve: thisdata.formRetrieve, //满意度表格 taskRefund: thisdata.taskRefund, //退单 refundContent: thisdata.refundContent, //退单信息 retrieveContent: thisdata.retrieveContent, //回收信息 arrivalMoney: thisdata.arrivalMoney, //是否到款 setUpAmount: thisdata.setUpAmount, //立项金额 declareUser: thisdata.declareUser, //账号 declarePwd: thisdata.declarePwd, //密码 outsourceName: thisdata.outsourceName, //外包公司名称 outsourcePrice: thisdata.outsourcePrice //外包价格 }); } }.bind(this) }).always( function() { this.setState({ loading: false }); }.bind(this) ); }, //订单详情 xiangqings(orderNos) { $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail", data: { orderNo: orderNos }, success: function(data) { let thisdata = data.data; let ProvinceCityArr = []; let ProvinceS = thisdata.locationProvince; //省 let citys = thisdata.locationCity; //市 let Areas = thisdata.locationArea; //区 ProvinceCityArr.push(ProvinceS, citys, Areas); if (data.error.length || data.data.list == "") { if (data.error && data.error.length) { message.warning(data.error[0].message); } } else { this.setState({ processStatus: thisdata.processStatus, //流程状态 liquidationStatus: thisdata.liquidationStatus, //结算状态 approval: thisdata.approval, //特批状态 orderRemarks: thisdata.orderRemarks, //订单留言 salesmanName: thisdata.salesmanName, //营销员名称 salesmanMobile: thisdata.salesmanMobile, //营销员电话 oldSalesmanName: thisdata.oldSalesmanName, //营销员名称 oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话 financeName: thisdata.financeName, //财务名称 financeMobile: thisdata.financeMobile, //财务电话 nowFinance: thisdata.nowFinance, //财务名称 nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话 depName: thisdata.depName, //订单部门 ProvinceCity: ProvinceCityArr[0] === null ? [] : ProvinceCityArr, postalAddress: thisdata.postalAddress //详细地址 }); } }.bind(this) }).always( function() { this.setState({ loading: false }); }.bind(this) ); }, //项目列表 xiangmu(orderNos) { $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/newOrder/getOrderTask", data: { orderNo: orderNos }, success: function(data) { let theArr = []; if (data.error.length || data.data.list == "") { if (data.error && data.error.length) { message.warning(data.error[0].message); } } else { for (let i = 0; i < data.data.length; i++) { let thisdata = data.data[i]; 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, //联系人电话 taskStatus: thisdata.taskStatus, //是否分配 contractNo: thisdata.contractNo, //合同编号 certificateNumber: thisdata.certificateNumber, splitStatus: thisdata.splitStatus, //是否为子项目 2是 1主项目 splitSuper: thisdata.splitSuper, splitId: thisdata.splitId }); } } this.setState({ dataSourceX: theArr }); }.bind(this) }).always( function() { this.setState({ loading: false }); }.bind(this) ); }, //导出 exportExec() { let departmentName = "", depart = this.state.departmentArr || []; depart.map(item => { if (this.state.departmentId == item.id) { departmentName = item.name; return; } }); let data = { departmentId: this.state.departmentId, departmentName: departmentName, salesName: this.state.orderRefundSearch, //订单负责人 startTime: this.state.releaseDate[0], endTime: this.state.releaseDate[1], grantStatus: this.state.grantStatus }; window.location.href = globalConfig.context + "/api/admin/orderProject/exportMyTaskList?" + $.param(data); }, //关闭详情 visitCancel() { this.setState({ visible: false, speVisible: false, modKey: "1", updataSwicth: false }); this.companyReset(); this.reset(); }, visitOk() { this.setState({ visible: false, speVisible: false }); this.reset(); }, closeDesc(e, s) { this.state.showDesc = e; if (s) { this.loadData(this.state.page); } }, closeAssign(e, s) { this.state.roleName = ""; this.state.assignVisible = e; if (s) { this.loadData(this.state.page); } }, //添加工时 okCancel(record) { this.setState({ lookVisible: true, taskId: record.id }); }, //测试 getOrgCodeUrl(e) { this.setState({ orgCodeUrl: e }); }, //查看下证信息 loaduserss(record) { $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/orderProject/selectTaskProgress", data: { tid: record.id }, success: function(data) { let theArr = []; let thisData = []; if (!thisData) { if (data.error && data.error.length) { message.warning(data.error[0].message); } thisData = {}; } else { for (let i = 0; i < data.data.length; i++) { thisData = data.data[i]; theArr.push({ num: i + 1, key: i, id: thisData.id, //编号 alreadyNumber: thisData.alreadyNumber, //下证数 licenceTimes: thisData.licenceTimes, //下证时间 notCount: thisData.notCount, //未下证数 flag: true }); } this.setState({ contactList: theArr }); } }.bind(this) }).always( function() { this.setState({ loading: false }); }.bind(this) ); }, //下证信息保存 contactSave(record) { if (!record.licenceTimes) { message.warning("下证日期不能为空"); return; } if (!record.alreadyNumber) { message.warning("下证数量不能为空"); return; } this.setState({ loading: true }); $.ajax({ url: globalConfig.context + "/api/admin/orderProject/createTaskProgress", method: "post", data: { taskId: this.state.id, licenceTimes: record.licenceTimes, alreadyNumber: record.alreadyNumber } }).done( function(data) { this.setState({ loading: false }); if (!data.error.length) { message.success("保存成功!"); record.flag = true; this.loaduserss(this.state.dataArr); } else { message.warning(data.error[0].message); } }.bind(this) ); }, //下证信息删除 contactDele(record) { this.setState({ loading: true }); $.ajax({ url: globalConfig.context + "/api/admin/orderProject/delectTaskProgress", method: "post", data: { id: record.id } }).done( function(data) { this.setState({ loading: false }); if (!data.error.length) { this.loaduserss(this.state.dataArr); } else { message.warning(data.error[0].message); } }.bind(this) ); }, //点击新增下证信息 addcontact() { this.state.contactList.push({ num: this.state.contactList.length + 1, key: this.state.contactList.length, licenceTimes: "", alreadyNumber: "", notCount: "", dels: "", flag: false, aflag: false }); this.setState({ contactList: this.state.contactList }); }, //删除下证信息 confirmDelet(record) { this.state.contactList.splice(record.key, 1); this.setState({ contactList: this.state.contactList }); if (record.id) { this.contactDele(record); } }, caozuorizhi() { this.setState({ visibleA: true }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/orderProject/TaskLogList", data: { id: this.state.id }, success: function(data) { let theArr = []; if (data.error.length || data.data.list == "") { if (data.error && data.error.length) { message.warning(data.error[0].message); } } else { for (let i = 0; i < data.data.length; i++) { let thisdata = data.data[i]; theArr.push({ key: i, id: thisdata.id, //日志ID content: thisdata.content, //流程 taskId: thisdata.taskId, //项目ID aName: thisdata.aName, //负责人 createTimes: thisdata.createTimes //时间 }); } } this.setState({ dataSourceA: theArr }); }.bind(this) }).always( function() { this.setState({ loading: false }); }.bind(this) ); }, //通知提醒 openNotification() { notification.open({ message: "提醒", description: "请在输入框中重新输入需要修改的选项!" }); }, //关闭操作工时 visitCancelA() { this.setState({ visibleA: false }); }, callBack(e) { this.setState({ modKey: e }); this.loadCompany(); }, //添加公司 addCompany() { this.setState({ switch: true }); }, //保存和修改公司 saveCompany(id) { if (this.companyJugle()) { let upAndde = this.state.updataSwicth ? { api: "/api/admin/outsourceOrg/updateOutsourceOrg", warn: "修改成功", data: { id: id, name: this.state.cName, contacts: this.state.companyContacts, contactsMobile: this.state.companyContactsMobile, province: this.state.companyProvinceArr[0], city: this.state.companyProvinceArr[1], area: this.state.companyProvinceArr[2], address: this.state.companyAddress, remarks: this.state.companyRemarks } } : { api: "/api/admin/outsourceOrg/addOutsourceOrg", warn: "保存成功", data: { name: this.state.cName, tid: this.state.RowData.id, contacts: this.state.companyContacts, contactsMobile: this.state.companyContactsMobile, orderNo: this.state.orderNo, province: this.state.companyProvinceArr[0], city: this.state.companyProvinceArr[1], area: this.state.companyProvinceArr[2], address: this.state.companyAddress, remarks: this.state.companyRemarks } }; this.setState({ loading: true }); $.ajax({ method: "post", dataType: "json", crossDomain: false, url: globalConfig.context + upAndde.api, data: upAndde.data, success: function(data) { if (data.error.length || data.data.list == "") { if (data.error && data.error.length) { message.warning(data.error[0].message); } } }.bind(this) }).done( function() { this.setState({ loading: false, updataSwicth: false }); this.companyReset(); message.success(upAndde.warn); this.loadCompany(); }.bind(this) ); } }, //判断 companyJugle() { if (this.state.cName === undefined) { console.log(2345); message.warning("公司名称不能为空!"); return; } if (this.state.companyContacts === undefined) { message.warning("联系人不能为空!"); return; } if (this.state.companyContactsMobile === undefined) { message.warning("联系人电话不能为空!"); return; } return true; }, //删除外包 deleteCompany(id) { $.ajax({ method: "post", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/outsourceOrg/deleteOutsourceOrg", data: { id: id }, success: function() {}.bind(this) }).done( function() { this.setState({ loading: false }); message.warning("删除成功"); this.loadCompany(); }.bind(this) ); }, //重置外包 companyReset() { this.setState({ cName: undefined, companyContacts: undefined, companyContactsMobile: undefined, companyProvinceArr: [], companyAddress: undefined, companyRemarks: undefined }); }, //加载外包 loadCompany() { this.setState({ loading: true }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/outsourceOrg/selectOutsourceOrg", data: { orderNo: this.state.RowData.orderNo, tid: this.state.RowData.id }, success: function(data) { let theArr = []; if (data.error.length || data.data.list == "") { if (data.error && data.error.length) { message.warning(data.error[0].message); } } else { for (let i = 0; i < data.data.length; i++) { let thisdata = data.data[i]; let ProvinceCityArr = []; let ProvinceS = thisdata.province; //省 let citys = thisdata.city; //市 let Areas = thisdata.area; //区 ProvinceCityArr.push(ProvinceS, citys, Areas); theArr.push({ key: i, id: thisdata.id, //外包Id name: thisdata.name, //名称 contacts: thisdata.contacts, //联系人 contactsMobile: thisdata.contactsMobile, //联系人电话 companyProvinceArr: ProvinceCityArr, address: thisdata.address, remarks: thisdata.remarks }); } } this.setState({ companys: theArr }); }.bind(this) }).always( function() { this.setState({ loading: false }); }.bind(this) ); }, foo2() { this.setState({ testFlag1: false }); }, foo1() { this.setState({ testFlag1: true }); }, foo() { this.setState({ testFlag: false }); }, nextCancel() { this.setState({ addnextVisible: false }); }, //点击打卡项目详情 tableRowClickX(record) { this.setState({ jid: record.id, //项目ID kid: record.commodityId, //商品ID commodityName: record.commodityName, //金额 commodityPrice: record.commodityPrice, //金额 commodityQuantity: record.commodityQuantity, //数量 taskComment: record.taskComment, //备注 main: record.main.toString(), //是否为主要 addnextVisible: true, addState: 0 }); }, //关闭添加工时 noCancel() { this.setState({ lookVisible: false }); this.reset(); }, search() { this.loadData(); }, reset() { this.state.id = ""; //项目编号 this.state.orderNo = ""; //订单编号 this.state.contractNoSearch = undefined; //订单编号 this.state.projectStatus = undefined; //项目状态 this.state.projectStatusSearch = undefined; //项目状态 this.state.taskStatuSearch = undefined; //项目状态 this.state.taskComment = ""; //说明 this.state.startDate = ""; //启动日期 this.state.endDate = ""; //结束日期 this.state.acceptDate = ""; //受理日期 this.state.reviewDate = ""; //评审日期 this.state.publicityDate = ""; //公示日期 this.state.licenceDate = ""; //发证日期 attachmentUrl: []; //附件 this.state.contacts = ""; //联系人 this.state.contactMobile = ""; //联系人电话 this.state.legalPerson = ""; //法人 this.state.legalPersonTel = ""; //法人电话 this.state.taskId = ""; //项目编号 this.state.hours = ""; //工时 this.state.remarks = ""; //说明 this.state.taskDate = ""; //日期 this.state.taskComment = ""; //说明 this.state.nameSearch = ""; this.state.releaseDate = []; this.state.orderNoSearch = ""; this.state.taskNoSearch = ""; this.state.distribution = undefined; this.state.departmenttSearch = undefined; this.state.outsourceName = ""; //外包公司名称 this.state.outsourcePrice = ""; //外包价格 this.loadData(this.state.page); this.state.approvalSearch = undefined; }, searchSwitch() { this.setState({ searchMore: !this.state.searchMore }); }, // 拆分详细 showRes(record) { this.setState({ resVisible: true, resRecord: record }); }, resCancel() { this.setState({ resVisible: false }); }, //部门 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 }); }); } this.setState({ departmentArr: theArr }); }.bind(this) }).always( function() { this.setState({ loading: false }); }.bind(this) ); }, changeList(arr) { const newArr = []; this.state.columns.forEach(item => { arr.forEach(val => { if (val === item.title) { newArr.push(item); } }); }); this.setState({ changeList: newArr }); }, timeClose() { this.setState({ timeVisible: false }); }, timeDetail(record) { console.log(record); this.setState({ loading: true, recordHour: record.hours }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/orderProject/taskHoursDetailsList", data: { taskId: record.id }, success: function(data) { if (data.error && data.error.length) { message.warning(data.error[0].message); } else { this.setState({ dataSourceTime: data.data }); console.log(this.state.dataSourceTime); } }.bind(this) }).always( function() { this.setState({ loading: false }); }.bind(this) ); }, rizhi() { this.setState({ loading: true }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: "/api/admin/newOrder/selectOrderLog", data: { orderNo: this.state.orderNo }, success: function(data) { let theArr = []; let thisData = data.data; if (!thisData.length) { if (data.error && data.error.length) { message.warning(data.error[0].message); } thisData = {}; } else { for (let i = 0; i < data.data.length; i++) { let thisdata = data.data[i]; theArr.push({ processName: thisdata.processName, adminName: thisdata.adminName, createDate: thisdata.createDate, remarks: thisdata.remarks }); } } this.setState({ dataSourceY: theArr }); }.bind(this) }).always( function() { this.setState({ loading: false }); }.bind(this) ); }, closeOrderLog() { this.setState({ avisible: false }); }, getOrderLog() { this.setState({ avisible: true }); this.rizhi(); }, render() { const { TabPane } = Tabs; const formItemLayout = { labelCol: { span: 8 }, wrapperCol: { span: 14 } }; let departmentArr = this.state.departmentArr || []; return ( <div className="user-content"> {this.state.resVisible ? ( <ResolutionDetail cancel={this.resCancel} detail={this.state.resRecord} visible={this.state.resVisible} id={this.state.resRecord.orderNo} /> ) : ( "" )} <ShowModalDiv ShowModal={this.state.showModal} /> <div className="content-title" style={{ marginBottom: 10 }}> <span style={{ fontWeight: 900, fontSize: 16 }}>我的外包项目</span> </div> <Tabs defaultActiveKey="2" onChange={this.callback} className="test"> <TabPane tab="更改表格显示数据" key="1"> <div style={{ marginLeft: 10 }}> <ChooseList columns={this.state.columns} changeFn={this.changeList} changeList={this.state.changeList} top={55} margin={11} /> </div> </TabPane> <TabPane tab="搜索" key="2"> <div className="user-search" style={{ marginLeft: 10 }}> <Input placeholder="客户名称" value={this.state.nameSearch} onChange={e => { this.setState({ nameSearch: e.target.value }); }} /> <Input placeholder="订单编号" value={this.state.orderNoSearch} onChange={e => { this.setState({ orderNoSearch: e.target.value }); }} /> <Input placeholder="合同编号" value={this.state.contractNoSearch} onChange={e => { this.setState({ contractNoSearch: e.target.value }); }} /> <Input placeholder="项目编号" value={this.state.taskNoSearch} onChange={e => { this.setState({ taskNoSearch: e.target.value }); }} /> <Select placeholder="选择部门" style={{ width: 150, marginRight: "10px" }} value={this.state.departmenttSearch} onChange={e => { this.setState({ departmenttSearch: e }); }} > {departmentArr.map(function(item) { return ( <Select.Option key={item.id}>{item.name}</Select.Option> ); })} </Select> <Select placeholder="项目状态" style={{ width: 150, marginRight: "10px" }} value={this.state.projectStatusSearch} onChange={e => { this.setState({ projectStatusSearch: e }); console.log(this.state.projectStatusSearch); }} > {projectStatus.map(function(item) { return ( <Select.Option key={item.value}>{item.key}</Select.Option> ); })} </Select> <Select placeholder="特批状态" style={{ width: 150, marginRight: "10px" }} value={this.state.approvalSearch} onChange={e => { this.setState({ approvalSearch: e }); console.log(this.state.approvalSearch); }} > <Select.Option key={0}>非特批</Select.Option> <Select.Option key={1}>特批</Select.Option> </Select> <Button type="primary" onClick={this.search}> 搜索 </Button> <Button onClick={this.reset}>重置</Button> {/* <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch.bind(this)} /></span> <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}> <span>订单时间 :</span> <RangePicker value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null, this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]} onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} /> </div> */} </div> </TabPane> <TabPane tab="导出Excel" key="3"> <Button type="primary" style={{ margin: "11px 0 10px 10px" }} onClick={this.exportExec} > 导出Excel </Button> </TabPane> {/* <TabPane tab="批量操作" key="6"> <Button type="primary" disabled={this.state.selectedRowKeys.length == 0} style={{ margin: "0px 0px 10px 10px" }} onClick={e => { e.stopPropagation(), this.evaluateY(this.state.selectedRowKeys, "财务专员"); }} > 转交 </Button> </TabPane> */} </Tabs> <div className="patent-table"> <Spin spinning={this.state.loading}> <Table columns={ this.state.changeList == undefined ? this.state.columns : this.state.changeList } dataSource={this.state.dataSource} pagination={this.state.pagination} onRowClick={this.tableRowClick.bind(this)} scroll={{ x: "max-content", y: 0 }} bordered size={"small"} /> </Spin> </div> <Assign title="项目" selApi={"/api/admin/orderProject/projectDistribution"} data={this.state.assignData} showDesc={this.state.assignVisible} closeDesc={this.closeAssign.bind(this)} fenpaiData={8} specially={0} roleName={this.state.nub} requestMethod={"post"} flag={this.state.flag} isZhuan={this.state.isZhuan} //是否转交 /> <Modal className="customeDetails" footer="" title="" width="900px" visible={this.state.visible} onOk={this.visitOk} onCancel={this.visitCancel} > <Tabs onChange={this.callBack} type="card" activeKey={this.state.modKey} > <TabPane tab="项目概况" key="1"> <Form layout="horizontal" onSubmit={this.handleSubmit} id="demand-form" style={{ paddingBottom: "00px" }} > <Spin spinning={this.state.loading}> <div className="clearfix"> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="当前项目情况" > <Radio.Group value={this.state.status} onChange={e => { this.setState({ status: e.target.value }); }} > <Radio value={0}>开启</Radio> <Radio value={1}>暂停</Radio> </Radio.Group> <Button type="primary" size="small" style={{ marginTop: "5px", position: "absolute" }} onClick={this.caozuorizhi} > 操作日志 </Button> </FormItem> <FormItem className="half-item" {...formItemLayout} label="合同编号" > <span>{this.state.contractNo}</span> </FormItem> </div> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="项目状态" > <Select placeholder="选择项目状态" style={{ width: "200px" }} value={this.state.projectStatus} onChange={e => { this.setState({ projectStatus: e }); }} > {projectStatus.map(function(item) { return ( <Select.Option key={item.value}> {item.key} </Select.Option> ); })} </Select> </FormItem> <FormItem className="half-item" {...formItemLayout} label="是否特批" > <span>{getApproval(this.state.approval)}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="结算状态" > <span> {getLiquidationStatus(this.state.liquidationStatus)} </span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="流程状态" > <span> {getProcessStatus(this.state.processStatus)} </span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="订单编号" > <span>{this.state.orderNo}</span> </FormItem> </div> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="满意度表格" > <Radio.Group value={this.state.formRetrieve} onChange={e => { this.setState({ formRetrieve: e.target.value }); }} > <Radio value={0}>未收回</Radio> <Radio value={1}>已收回</Radio> <Radio value={2}>其他</Radio> </Radio.Group> </FormItem> <FormItem className="half-item" {...formItemLayout} label="退单" > <Radio.Group value={this.state.taskRefund} onChange={e => { this.setState({ taskRefund: e.target.value }); }} > <Radio value={0}>已完成</Radio> <Radio value={1}>未完成</Radio> <Radio value={2}>其他</Radio> </Radio.Group> </FormItem> </div> <div className="clearfix"> { <FormItem className="half-item" {...formItemLayout} label="(满意度)备注" > <Input type="textarea" placeholder="请输入备注" rows={2} value={this.state.retrieveContent} onChange={e => { this.setState({ retrieveContent: e.target.value }); }} /> </FormItem> } { <FormItem className="half-item" {...formItemLayout} label="(退单)备注" > <Input type="textarea" placeholder="请输入备注" rows={2} value={this.state.refundContent} onChange={e => { this.setState({ refundContent: e.target.value }); }} /> </FormItem> } </div> <div className="clearfix"> <h3 className="sub-title">订单负责人信息</h3> <FormItem className="half-item" {...formItemLayout} label="负责人" > <span> {this.state.salesmanName + "(" + this.state.depName + ")"} </span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="负责人电话" > <span>{this.state.salesmanMobile}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="当前财务负责人" > <span>{this.state.nowFinance}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="当前财务负责人电话" > <span>{this.state.nowFinanceMobile}</span> </FormItem> <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> <FormItem className="half-item" {...formItemLayout} style={{ opacity: ".5" }} label="实际财务操作人" > <span>{this.state.financeName}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} style={{ opacity: ".5" }} label="实际财务操作人电话" > <span>{this.state.financeMobile}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="订单留言" > <span>{this.state.orderRemarks}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="" > <Button onClick={this.getOrderLog} > 查看订单日志 </Button> </FormItem> <OrderRiZi dataSourcerizhi={this.state.dataSourceY} closeOrderLog={this.closeOrderLog} visible={this.state.avisible} loading={this.state.loading} /> </div> {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/} <div className="clearfix"> <h3 className="sub-title">联系信息</h3> <FormItem className="half-item" {...formItemLayout} label="客户名称" > <span>{this.state.userName}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="企业法人" > <Input placeholder="请输入法人名称" value={this.state.legalPerson} style={{ width: "200px" }} onChange={e => { this.setState({ legalPerson: e.target.value }); }} ref="commodityQuantity" /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="法人电话" > <Input placeholder="请输入法人电话" value={this.state.legalPersonTel} style={{ width: "200px" }} onChange={e => { this.setState({ legalPersonTel: e.target.value }); }} ref="commodityQuantity" /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="客户联系人" > <Input placeholder="请输入联系人名称" value={this.state.contacts} style={{ width: "200px" }} onChange={e => { this.setState({ contacts: e.target.value }); }} ref="commodityQuantity" /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="联系人电话" > <Input placeholder="请输入联系人电话" value={this.state.contactMobile} style={{ width: "200px" }} onChange={e => { this.setState({ contactMobile: e.target.value }); }} ref="commodityQuantity" /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="企业地址" > <Cascader options={areaSelect()} value={this.state.ProvinceCity} placeholder="选择城市" style={{ width: "200px" }} onChange={e => { this.setState({ ProvinceCity: e }); }} /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="" ></FormItem> <FormItem className="half-item" {...formItemLayout} label="" > <Input placeholder="请输入详细地址" value={this.state.postalAddress} style={{ width: "200px", marginLeft: "12em" }} onChange={e => { this.setState({ postalAddress: e.target.value }); }} ref="commodityQuantity" /> </FormItem> </div> {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/} <div className="clearfix"> <h3 className="sub-title">项目信息</h3> <FormItem className="half-item" {...formItemLayout} label="项目编号" > <span> {this.state.splitStatus == 2 ? this.state.splitSuper + "-" + this.state.splitId : this.state.id} </span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="项目名称" > <span>{this.state.taskName}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="项目状态" > <Select placeholder="选择项目状态" style={{ width: "200px" }} value={this.state.taskStatus} onChange={e => { this.setState({ taskStatus: e }); }} > {taskStatus.map(function(item) { return ( <Select.Option key={item.value}> {item.key} </Select.Option> ); })} </Select> </FormItem> <FormItem className="half-item" {...formItemLayout} label="项目类别" > <span>{this.state.cname}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="证书编号" > <Input placeholder="请输入证书编号" value={this.state.certificateNumber} style={{ width: "200px" }} onChange={e => { this.setState({ certificateNumber: e.target.value }); }} ref="commodityQuantity" /> </FormItem> </div> <div className="clearfix"> <h3 className="sub-title">申报系统账户信息</h3> {/*<span style={{color:'red'}}>注:仅技术部可见</span>*/} <FormItem className="half-item" {...formItemLayout} label="用户名" > <Input placeholder="请输入用户名" value={this.state.declareUser} style={{ width: "200px" }} onChange={e => { this.setState({ declareUser: e.target.value }); }} /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="密码" > <Input placeholder="请输入密码" value={this.state.declarePwd} style={{ width: "200px" }} onChange={e => { this.setState({ declarePwd: e.target.value }); }} /> </FormItem> </div> <div className="clearfix"> <h3 className="sub-title">项目申报进度</h3> <FormItem className="half-item" {...formItemLayout} label="启动时间" > <DatePicker style={{ marginTop: "2px", width: "200px", height: "32px" }} showTime format="YYYY-MM-DD" onOk={() => {}} value={ this.state.startDate ? moment(this.state.startDate) : null } onChange={(data, dataString) => { this.setState({ startDate: dataString }); }} /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="完成时间" > <DatePicker style={{ marginTop: "2px", width: "200px", height: "32px" }} showTime format="YYYY-MM-DD" onOk={() => {}} value={ this.state.endDate ? moment(this.state.endDate) : null } onChange={(data, dataString) => { this.setState({ endDate: dataString }); }} /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="受理时间" > <DatePicker style={{ marginTop: "2px", width: "200px", height: "32px" }} showTime format="YYYY-MM-DD" onOk={() => {}} value={ this.state.acceptDate ? moment(this.state.acceptDate) : null } onChange={(data, dataString) => { this.setState({ acceptDate: dataString }); }} /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="评审时间" > <DatePicker style={{ marginTop: "2px", width: "200px", height: "32px" }} showTime format="YYYY-MM-DD" onOk={() => {}} value={ this.state.reviewDate ? moment(this.state.reviewDate) : null } onChange={(data, dataString) => { this.setState({ reviewDate: dataString }); }} /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="公示时间" > <DatePicker style={{ marginTop: "2px", width: "200px", height: "32px" }} showTime format="YYYY-MM-DD" onOk={() => {}} value={ this.state.publicityDate ? moment(this.state.publicityDate) : null } onChange={(data, dataString) => { this.setState({ publicityDate: dataString }); }} /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="发证时间" > <DatePicker style={{ marginTop: "2px", width: "200px", height: "32px" }} showTime format="YYYY-MM-DD" onOk={() => {}} value={ this.state.licenceDate ? moment(this.state.licenceDate) : null } onChange={(data, dataString) => { this.setState({ licenceDate: dataString }); }} /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="立项金额(万元)" > <Input placeholder="请输入立项金额" value={this.state.setUpAmount} style={{ width: "200px" }} onChange={e => { this.setState({ setUpAmount: e.target.value }); }} ref="commodityQuantity" /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="是否到款" > <Radio.Group value={this.state.arrivalMoney} onChange={e => { this.setState({ arrivalMoney: e.target.value }); }} > <Radio value={0}>未到企业</Radio> <Radio value={1}>已到企业</Radio> </Radio.Group> </FormItem> </div> <div className="clearfix"> <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 16 }} label="附件" > <Picture fileList={e => { this.setState({ attachmentUrl: e }); }} pictureUrl={this.state.attachmentUrl} visible={this.props.visible} data={{ sign: "order_task_file", url: "/api/admin/orderProject/uploadOrderTaskFile", number: 8 }} /> </FormItem> </div> <div className="clearfix"> <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 16 }} label="备注" > <Input type="textarea" placeholder="请输入备注" rows={4} value={this.state.taskComment} onChange={e => { this.setState({ taskComment: e.target.value }); }} /> </FormItem> </div> <div> <h3 className="sub-title">项目业务</h3> {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.columnsX} dataSource={this.state.dataSourceX} pagination={this.state.paginations} onRowClick={this.tableRowClickX} bordered size="small" /> </Spin> </div> <div className="clearfix"> <Button className="cancel" type="primary" onClick={this.tijiaoOk} style={{ marginLeft: "200px", marginTop: "10px" }} htmlType="submit" > 保存 </Button> <Button className="cancel" type="ghost" onClick={this.visitCancel} style={{ marginLeft: "50px", marginTop: "10px" }} > 取消 </Button> </div> </div> </Spin> </Form> </TabPane> <TabPane tab="外包接单公司信息" key="2"> {/*<Button type="primary" onClick={this.addCompany} style={{float:'right',marginBottom:'10px'}}>+新增接单公司</Button>*/} { <div className="clearfix"> <h3 className="sub-title" style={{ marginBottom: "10px" }}> 新增(编辑)接单公司 </h3> <FormItem className="three-item" {...formItemLayout} label={ <span> <strong style={{ color: "#f00" }}>*</strong>公司名称 </span> } > <Input placeholder="请输入公司名称" value={this.state.cName} style={{ width: "200px" }} onChange={e => { this.setState({ cName: e.target.value }); }} className="height-input" /> </FormItem> <FormItem className="three-item" {...formItemLayout} label={ <span> <strong style={{ color: "#f00" }}>*</strong>联系人 </span> } > <Input placeholder="请输入联系人名称" value={this.state.companyContacts} style={{ width: "200px" }} onChange={e => { this.setState({ companyContacts: e.target.value }); }} className="height-input" /> </FormItem> <FormItem className="three-item" {...formItemLayout} label={ <span> <strong style={{ color: "#f00" }}>*</strong>联系人电话 </span> } > <Input placeholder="请输入联系人电话" value={this.state.companyContactsMobile} style={{ width: "200px" }} onChange={e => { this.setState({ companyContactsMobile: e.target.value }); }} className="height-input" /> </FormItem> <FormItem className="three-item" {...formItemLayout} label="企业地址" > <Cascader options={areaSelect()} value={this.state.companyProvinceArr} placeholder="选择城市" style={{ width: "200px" }} onChange={e => { this.setState({ companyProvinceArr: e }); }} /> </FormItem> <FormItem className="three-item" {...formItemLayout} label=""> <Input placeholder="请输入详细地址" value={this.state.companyAddress} style={{ width: "200px", marginLeft: "12em" }} onChange={e => { this.setState({ companyAddress: e.target.value }); }} className="height-input" /> </FormItem> <FormItem className="three-item" {...formItemLayout} label="" ></FormItem> <div className="clearfix"> <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 16 }} label="备注" > <Input type="textarea" placeholder="请输入备注" rows={4} value={this.state.companyRemarks} onChange={e => { this.setState({ companyRemarks: e.target.value }); }} /> </FormItem> </div> <Button type="primary" style={{ float: "right", marginTop: "10px", marginRight: "50px" }} onClick={() => { this.saveCompany(this.state.companyId); }} > 保存 </Button> </div> } <p style={{ color: "red" }}> 提示:查看备注请点击表格左侧加号按钮~ </p> <div className="patent-table" style={{ marginTop: "10px" }}> <Spin spinning={this.state.loading}> <Table columns={this.state.companyColumns} dataSource={this.state.companys} scroll={{ x: 300, y: 0 }} bordered size="small" expandedRowRender={record => { return <p>{record.remarks}</p>; }} pagination={false} /> </Spin> </div> </TabPane> </Tabs> </Modal> <Modal maskClosable={false} visible={this.state.lookVisible} onOk={this.noCancel} onCancel={this.noCancel} width="500px" title={"添加工时"} footer="" className="admin-desc-content" > <Form layout="horizontal" id="demand-form"> <Spin spinning={this.state.loading}> <div className="clearfix"> <FormItem {...formItemLayout} label="工作日期"> <DatePicker style={{ marginTop: "2px", width: "200px", height: "32px" }} showTime format="YYYY-MM-DD" onOk={() => {}} value={ this.state.taskDate ? moment(this.state.taskDate) : null } onChange={(data, dataString) => { this.setState({ taskDate: dataString }); }} /> </FormItem> </div> <div className="clearfix"> <FormItem {...formItemLayout} label="工作时长"> <Input placeholder="请输入工作时长" value={this.state.hours} style={{ width: "200px" }} onChange={e => { this.setState({ hours: e.target.value }); }} ref="commodityQuantity" /> </FormItem> </div> <div className="clearfix"> <FormItem {...formItemLayout} label="工作内容"> <Input type="textarea" placeholder="请输入备注" rows={4} value={this.state.remarks} onChange={e => { this.setState({ remarks: e.target.value }); }} /> </FormItem> </div> <div className="clearfix"> <Button className="cancel" type="primary" onClick={this.tianjiaOk} style={{ marginLeft: "100px", marginTop: "10px" }} htmlType="submit" > 确定 </Button> <Button className="cancel" type="ghost" onClick={this.noCancel} style={{ marginLeft: "50px" }} > 取消 </Button> </div> </Spin> </Form> </Modal> <Modal maskClosable={false} visible={this.state.addnextVisible} onOk={this.nextCancel} onCancel={this.nextCancel} width="800px" title="项目项目详情" footer="" className="admin-desc-content" > <Form layout="horizontal" onSubmit={this.nextSubmit} id="demand-form"> <Spin spinning={this.state.loading}> <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: 3 }} wrapperCol={{ span: 18 }} label="服务说明" > <span>{this.state.taskComment}</span> </FormItem> </div> </div> </Spin> </Form> </Modal> <Modal maskClosable={false} visible={this.state.speVisible} onOk={this.visitOk} onCancel={this.visitCancel} width="900px" title="" footer="" className="admin-desc-content" > <Tabs activeKey={this.state.modKey} onChange={this.callBack} type="card" > <TabPane tab="项目概况" key="1"> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="当前项目情况" > <Radio.Group value={this.state.status} onChange={e => { this.setState({ status: e.target.value }); }} > <Radio value={0}>开启</Radio> <Radio value={1}>暂停</Radio> </Radio.Group> <Button type="primary" size="small" style={{ marginTop: "5px", position: "absolute" }} onClick={this.caozuorizhi} > 操作日志 </Button> </FormItem> <FormItem className="half-item" {...formItemLayout} label="合同编号" > <span>{this.state.contractNo}</span> </FormItem> </div> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="项目状态" > <Select placeholder="选择项目状态" style={{ width: "200px" }} value={this.state.projectStatus} onChange={e => { this.setState({ projectStatus: e }); }} > {projectStatus.map(function(item) { return ( <Select.Option key={item.value}> {item.key} </Select.Option> ); })} </Select> </FormItem> <FormItem className="half-item" {...formItemLayout} label="是否特批" > <span>{getApproval(this.state.approval)}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="结算状态" > <span> {getLiquidationStatus(this.state.liquidationStatus)} </span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="流程状态" > <span>{getProcessStatus(this.state.processStatus)}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="订单编号" > <span>{this.state.orderNo}</span> </FormItem> </div> <div className="clearfix"> <FormItem className="half-item" {...formItemLayout} label="满意度表格" > <Radio.Group value={this.state.formRetrieve} onChange={e => { this.setState({ formRetrieve: e.target.value }); }} > <Radio value={0}>未收回</Radio> <Radio value={1}>已收回</Radio> <Radio value={2}>其他</Radio> </Radio.Group> </FormItem> <FormItem className="half-item" {...formItemLayout} label="退单" > <Radio.Group value={this.state.taskRefund} onChange={e => { this.setState({ taskRefund: e.target.value }); }} > <Radio value={0}>已完成</Radio> <Radio value={1}>未完成</Radio> <Radio value={2}>其他</Radio> </Radio.Group> </FormItem> </div> <div className="clearfix"> { <FormItem className="half-item" {...formItemLayout} label="(满意度)备注" > <Input type="textarea" placeholder="请输入备注" rows={2} value={this.state.retrieveContent} onChange={e => { this.setState({ retrieveContent: e.target.value }); }} /> </FormItem> } { <FormItem className="half-item" {...formItemLayout} label="(退单)备注" > <Input type="textarea" placeholder="请输入备注" rows={2} value={this.state.refundContent} onChange={e => { this.setState({ refundContent: e.target.value }); }} /> </FormItem> } </div> <div className="clearfix"> <h3 className="sub-title">订单负责人信息</h3> <FormItem className="half-item" {...formItemLayout} label="负责人" > <span> {this.state.salesmanName + "(" + this.state.depName + ")"} </span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="负责人电话" > <span>{this.state.salesmanMobile}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="财务负责人" > <span>{this.state.financeName}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="财务负责人电话" > <span>{this.state.financeMobile}</span> </FormItem> </div> {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/} <div className="clearfix"> <h3 className="sub-title">联系信息</h3> <FormItem className="half-item" {...formItemLayout} label="客户名称" > <span>{this.state.userName}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="企业法人" > <Input placeholder="请输入法人名称" value={this.state.legalPerson} style={{ width: "200px" }} onChange={e => { this.setState({ legalPerson: e.target.value }); }} ref="commodityQuantity" /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="法人电话" > <Input placeholder="请输入法人电话" value={this.state.legalPersonTel} style={{ width: "200px" }} onChange={e => { this.setState({ legalPersonTel: e.target.value }); }} ref="commodityQuantity" /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="客户联系人" > <Input placeholder="请输入联系人名称" value={this.state.contacts} style={{ width: "200px" }} onChange={e => { this.setState({ contacts: e.target.value }); }} ref="commodityQuantity" /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="联系人电话" > <Input placeholder="请输入联系人电话" value={this.state.contactMobile} style={{ width: "200px" }} onChange={e => { this.setState({ contactMobile: e.target.value }); }} ref="commodityQuantity" /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="企业地址" > <Cascader options={areaSelect()} value={this.state.ProvinceCity} placeholder="选择城市" style={{ width: "200px" }} onChange={e => { this.setState({ ProvinceCity: e }); }} /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="" ></FormItem> <FormItem className="half-item" {...formItemLayout} label=""> <Input placeholder="请输入详细地址" value={this.state.postalAddress} style={{ width: "200px", marginLeft: "12em" }} onChange={e => { this.setState({ postalAddress: e.target.value }); }} ref="commodityQuantity" /> </FormItem> </div> {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/} <div className="clearfix"> <h3 className="sub-title">项目信息</h3> <FormItem className="half-item" {...formItemLayout} label="项目编号" > <span>{this.state.id}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="项目名称" > <span>{this.state.taskName}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="项目状态" > <Select placeholder="选择项目状态" style={{ width: "200px" }} value={this.state.taskStatus} onChange={e => { this.setState({ taskStatus: e }); }} > {taskStatus.map(function(item) { return ( <Select.Option key={item.value}> {item.key} </Select.Option> ); })} </Select> </FormItem> <FormItem className="half-item" {...formItemLayout} label="项目类别" > <span>{this.state.cname}</span> </FormItem> <FormItem className="half-item" {...formItemLayout} label="证书编号" > <Input placeholder="请输入证书编号" value={this.state.certificateNumber} style={{ width: "200px" }} onChange={e => { this.setState({ certificateNumber: e.target.value }); }} ref="commodityQuantity" /> </FormItem> </div> <div className="clearfix" style={{ marginTop: "10px" }}> <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 14 }} label="附件" > <Picture fileList={e => { this.setState({ attachmentUrl: e }); }} pictureUrl={this.state.attachmentUrl} visible={this.props.visible} data={{ sign: "order_task_file", url: "/api/admin/orderProject/uploadOrderTaskFile", number: 8 }} /> </FormItem> </div> <div className="clearfix"> <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 16 }} label="备注" > <Input type="textarea" placeholder="请输入备注" rows={4} value={this.state.taskComment} onChange={e => { this.setState({ taskComment: e.target.value }); }} /> </FormItem> </div> <div className="clearfix"> <h3 className="sub-title">项目申报进度</h3> <FormItem className="half-item" {...formItemLayout} label="启动时间" > <DatePicker style={{ marginTop: "5px" }} showTime format="YYYY-MM-DD" onOk={() => {}} value={ this.state.startDate ? moment(this.state.startDate) : null } onChange={(data, dataString) => { this.setState({ startDate: dataString }); }} /> </FormItem> <FormItem className="half-item" {...formItemLayout} label="软著派单数量" > <span>{this.state.commodityQuantity}</span> <Button type="primary" size="small" style={{ marginLeft: "45px" }} onClick={this.addcontact} > +增加下证信息 </Button> </FormItem> <div className="patent-table"> <Spin spinning={this.state.loading}> <Table columns={this.state.ContactsLists} dataSource={this.state.contactList} pagination={false} bordered size="small" /> </Spin> </div> </div> <div className="clearfix"> <h3 className="sub-title">项目业务</h3> <div className="patent-table"> <Spin spinning={this.state.loading}> <Table columns={this.state.columnsX} dataSource={this.state.dataSourceX} pagination={this.state.paginations} onRowClick={this.tableRowClickX} bordered size="small" /> </Spin> </div> </div> <div className="clearfix"> <Button className="cancel" type="primary" onClick={this.tijiaoOk} style={{ marginLeft: "200px", marginTop: "10px" }} htmlType="submit" > 保存 </Button> <Button className="cancel" type="ghost" onClick={this.visitCancel} style={{ marginLeft: "50px", marginTop: "10px" }} > 取消 </Button> </div> </TabPane> <TabPane tab="外包接单公司信息" key="2"> {/*<Button type="primary" onClick={this.addCompany} style={{float:'right',marginBottom:'10px'}}>+新增接单公司</Button>*/} { <div className="clearfix"> <h3 className="sub-title" style={{ marginBottom: "10px" }}> 新增(编辑)接单公司 </h3> <FormItem className="three-item" {...formItemLayout} label={ <span> <strong style={{ color: "#f00" }}>*</strong>公司名称 </span> } > <Input placeholder="请输入公司名称" value={this.state.cName} style={{ width: "200px" }} onChange={e => { this.setState({ cName: e.target.value }); }} className="height-input" /> </FormItem> <FormItem className="three-item" {...formItemLayout} label={ <span> <strong style={{ color: "#f00" }}>*</strong>联系人 </span> } > <Input placeholder="请输入联系人名称" value={this.state.companyContacts} style={{ width: "200px" }} onChange={e => { this.setState({ companyContacts: e.target.value }); }} className="height-input" /> </FormItem> <FormItem className="three-item" {...formItemLayout} label={ <span> <strong style={{ color: "#f00" }}>*</strong>联系人电话 </span> } > <Input placeholder="请输入联系人电话" value={this.state.companyContactsMobile} style={{ width: "200px" }} onChange={e => { this.setState({ companyContactsMobile: e.target.value }); }} className="height-input" /> </FormItem> <FormItem className="three-item" {...formItemLayout} label="企业地址" > <Cascader options={areaSelect()} value={this.state.companyProvinceArr} placeholder="选择城市" style={{ width: "200px" }} onChange={e => { this.setState({ companyProvinceArr: e }); }} /> </FormItem> <FormItem className="three-item" {...formItemLayout} label=""> <Input placeholder="请输入详细地址" value={this.state.companyAddress} style={{ width: "200px", marginLeft: "12em" }} onChange={e => { this.setState({ companyAddress: e.target.value }); }} className="height-input" /> </FormItem> <FormItem className="three-item" {...formItemLayout} label="" ></FormItem> <div className="clearfix"> <FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 16 }} label="备注" > <Input type="textarea" placeholder="请输入备注" rows={4} value={this.state.companyRemarks} onChange={e => { this.setState({ companyRemarks: e.target.value }); }} /> </FormItem> </div> <Button type="primary" style={{ float: "right", marginTop: "10px", marginRight: "50px" }} onClick={() => { this.saveCompany(this.state.companyId); }} > 保存 </Button> </div> } <p style={{ color: "red" }}> 提示:查看备注请点击表格左侧加号按钮~ </p> <div className="patent-table" style={{ marginTop: "10px" }}> <Spin spinning={this.state.loading}> <Table columns={this.state.companyColumns} dataSource={this.state.companys} scroll={{ x: 300, y: 0 }} expandedRowRender={record => { return <p>{record.remarks}</p>; }} bordered size="small" pagination={false} /> </Spin> </div> </TabPane> </Tabs> </Modal> {/* <Modal width="800px" visible={this.state.visibleA} onCancel={this.visitCancelA} title="操作日志" footer="" className="admin-desc-content" > <div className="patent-table patent-table-center"> <Spin spinning={this.state.loading}> <Table columns={this.state.columnsA} dataSource={this.state.dataSourceA} pagination={false} /> </Spin> </div> </Modal> */} <OrderRiZi dataSourcerizhi={this.state.dataSourceA} closeOrderLog={this.visitCancelA} visible={this.state.visibleA} loading={this.state.loading} /> <Modal title="工时记录" visible={this.state.timeVisible} onCancel={this.timeClose} width={800} footer={null} > <Spin spinning={this.state.loading}> <Table columns={this.state.columnsTime} dataSource={this.state.dataSourceTime} pagination={false} scroll={{ x: "max-content", y: 0 }} bordered size={"small"} /> <p style={{ marginTop: 10, color: "red" }}> 累计工时(小时):{this.state.recordHour} </p> </Spin> </Modal> </div> ); } }); export default MyTaskOutsource;