|
@@ -1,31 +1,421 @@
|
|
import React from "react";
|
|
import React from "react";
|
|
-import { Spin, Button, Tabs, Table, message, Modal } from "antd";
|
|
|
|
-
|
|
|
|
|
|
+import $ from "jquery";
|
|
|
|
+import { Spin, Button, Tabs, Table, message, Modal, Form, Upload } from "antd";
|
|
|
|
+import {
|
|
|
|
+ getProcessStatus,
|
|
|
|
+ getApproval,
|
|
|
|
+ getTaskStatus,
|
|
|
|
+ getLiquidationStatus,
|
|
|
|
+ splitUrl,
|
|
|
|
+ getProjectStatus,
|
|
|
|
+ getboutique,
|
|
|
|
+ getprovince,
|
|
|
|
+ ShowModal
|
|
|
|
+} from "@/tools";
|
|
|
|
+const FormItem = Form.Item;
|
|
const project = React.createClass({
|
|
const project = React.createClass({
|
|
getInitialState() {
|
|
getInitialState() {
|
|
return {
|
|
return {
|
|
- newVisible: false
|
|
|
|
|
|
+ visible: false,
|
|
|
|
+ record: this.props.record,
|
|
|
|
+ paginations: false,
|
|
|
|
+ columnsX: [
|
|
|
|
+ {
|
|
|
|
+ title: "业务项目名称",
|
|
|
|
+ dataIndex: "commodityName",
|
|
|
|
+ key: "commodityName"
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: "项目类别",
|
|
|
|
+ dataIndex: "cname",
|
|
|
|
+ key: "cname"
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: "项目数量",
|
|
|
|
+ dataIndex: "commodityQuantity",
|
|
|
|
+ key: "commodityQuantity"
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: "金额(万元)",
|
|
|
|
+ dataIndex: "commodityPrice",
|
|
|
|
+ key: "commodityPrice"
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: "负责人",
|
|
|
|
+ dataIndex: "contacts",
|
|
|
|
+ key: "contacts"
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: "负责人电话",
|
|
|
|
+ dataIndex: "contactsMobile",
|
|
|
|
+ key: "contactsMobile"
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: "主要项目",
|
|
|
|
+ dataIndex: "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'
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
};
|
|
};
|
|
},
|
|
},
|
|
componentWillReceiveProps(nextProps) {
|
|
componentWillReceiveProps(nextProps) {
|
|
|
|
+ console.log(nextProps.visible);
|
|
|
|
+
|
|
this.setState({
|
|
this.setState({
|
|
- newVisible: nextProps.ShowModal
|
|
|
|
|
|
+ visible: nextProps.visible,
|
|
|
|
+ record: nextProps.record
|
|
});
|
|
});
|
|
|
|
+ if (nextProps.record) {
|
|
|
|
+ this.xiangqing(nextProps.record.id);
|
|
|
|
+ this.xiangqings(nextProps.record.orderNo);
|
|
|
|
+ this.xiangmu(nextProps.record.orderNo);
|
|
|
|
+ this.loaduserss(nextProps.record);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ // handleOk() {
|
|
|
|
+ // this.setState({
|
|
|
|
+ // newVisible: false
|
|
|
|
+ // });
|
|
|
|
+ // // window.setTimeout( () => {
|
|
|
|
+ // // this.setState({
|
|
|
|
+ // // newVisible: true
|
|
|
|
+ // // });
|
|
|
|
+ // // },)
|
|
|
|
+ // },
|
|
|
|
+ componentDidMount() {},
|
|
|
|
+ xiangqing(id) {
|
|
|
|
+ $.ajax({
|
|
|
|
+ method: "get",
|
|
|
|
+ dataType: "json",
|
|
|
|
+ crossDomain: false,
|
|
|
|
+ url: globalConfig.context + "/api/admin/orderProject/orderTaskDetail",
|
|
|
|
+ data: {
|
|
|
|
+ id: id
|
|
|
|
+ },
|
|
|
|
+ success: function(data) {
|
|
|
|
+ if (data.error.length || data.data.list == "") {
|
|
|
|
+ if (data.error && data.error.length) {
|
|
|
|
+ message.warning(data.error[0].message);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ let thisdata = data.data;
|
|
|
|
+ this.setState({
|
|
|
|
+ id: thisdata.id, //ID
|
|
|
|
+ orderNo: thisdata.orderNo, //订单编号
|
|
|
|
+ userName: thisdata.userName, //客户名称
|
|
|
|
+ taskName: thisdata.taskName, //任务名称
|
|
|
|
+ cname: thisdata.cname, //项目品类
|
|
|
|
+ contractNo: thisdata.contractNo, //合同编号
|
|
|
|
+ projectStatus: thisdata.projectStatus, //项目状态
|
|
|
|
+ taskStatus: thisdata.taskStatus, //任务状态
|
|
|
|
+ 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, //密码
|
|
|
|
+ depName: thisdata.depName, //订单部门
|
|
|
|
+ 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, //订单部门
|
|
|
|
+ locationProvince: thisdata.locationProvince,
|
|
|
|
+ locationCity: thisdata.locationCity,
|
|
|
|
+ locationArea: thisdata.locationArea,
|
|
|
|
+ ProvinceCity: ProvinceCityArr,
|
|
|
|
+ postalAddress: thisdata.postalAddress, //详细地址
|
|
|
|
+ outsource: thisdata.outsource
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }.bind(this)
|
|
|
|
+ }).always(
|
|
|
|
+ function() {
|
|
|
|
+ this.setState({
|
|
|
|
+ loading: false
|
|
|
|
+ });
|
|
|
|
+ }.bind(this)
|
|
|
|
+ );
|
|
|
|
+ },
|
|
|
|
+ //查看下证信息
|
|
|
|
+ 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)
|
|
|
|
+ );
|
|
|
|
+ },
|
|
|
|
+ //项目列表
|
|
|
|
+ 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 //是否分配
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ this.setState({
|
|
|
|
+ dataSourceX: theArr
|
|
|
|
+ });
|
|
|
|
+ }.bind(this)
|
|
|
|
+ }).always(
|
|
|
|
+ function() {
|
|
|
|
+ this.setState({
|
|
|
|
+ loading: false
|
|
|
|
+ });
|
|
|
|
+ }.bind(this)
|
|
|
|
+ );
|
|
},
|
|
},
|
|
- handleOk() {
|
|
|
|
|
|
+ tableRowClickX(record) {
|
|
this.setState({
|
|
this.setState({
|
|
- newVisible: false
|
|
|
|
|
|
+ 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
|
|
});
|
|
});
|
|
- // window.setTimeout( () => {
|
|
|
|
- // this.setState({
|
|
|
|
- // newVisible: true
|
|
|
|
- // });
|
|
|
|
- // },)
|
|
|
|
},
|
|
},
|
|
- componentDidMount() {
|
|
|
|
-
|
|
|
|
|
|
+ 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)
|
|
|
|
+ );
|
|
|
|
+ }, //关闭操作工时
|
|
|
|
+ visitCancelA() {
|
|
|
|
+ this.setState({
|
|
|
|
+ visibleA: false
|
|
|
|
+ });
|
|
},
|
|
},
|
|
render() {
|
|
render() {
|
|
|
|
+ const formItemLayout = {
|
|
|
|
+ labelCol: { span: 8 },
|
|
|
|
+ wrapperCol: { span: 14 }
|
|
|
|
+ };
|
|
|
|
+ const utils = {
|
|
|
|
+ getSatisfaction: function(num) {
|
|
|
|
+ switch (num) {
|
|
|
|
+ case 0:
|
|
|
|
+ return "未收回";
|
|
|
|
+ case 1:
|
|
|
|
+ return "已收回";
|
|
|
|
+ default:
|
|
|
|
+ return "其它";
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ getChargeback: function(num) {
|
|
|
|
+ switch (num) {
|
|
|
|
+ case 0:
|
|
|
|
+ return "已完成";
|
|
|
|
+ case 1:
|
|
|
|
+ return "未完成";
|
|
|
|
+ default:
|
|
|
|
+ return "其它";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ };
|
|
return (
|
|
return (
|
|
<Modal
|
|
<Modal
|
|
className="customeDetails"
|
|
className="customeDetails"
|
|
@@ -33,8 +423,10 @@ const project = React.createClass({
|
|
title="项目概况"
|
|
title="项目概况"
|
|
width="900px"
|
|
width="900px"
|
|
visible={this.state.visible}
|
|
visible={this.state.visible}
|
|
- onOk={this.visitOk}
|
|
|
|
- onCancel={this.visitCancel}
|
|
|
|
|
|
+ // onOk={this.visitOk}
|
|
|
|
+ onCancel={e => {
|
|
|
|
+ this.props.cancel()
|
|
|
|
+ }}
|
|
>
|
|
>
|
|
<Form
|
|
<Form
|
|
layout="horizontal"
|
|
layout="horizontal"
|
|
@@ -458,7 +850,7 @@ const project = React.createClass({
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div>
|
|
<h3 className="sub-title">项目业务</h3>
|
|
<h3 className="sub-title">项目业务</h3>
|
|
- {this.state.processStatus == 0 ? (
|
|
|
|
|
|
+ {/* {this.state.processStatus == 0 ? (
|
|
<Button
|
|
<Button
|
|
type="primary"
|
|
type="primary"
|
|
onClick={this.addDetailed}
|
|
onClick={this.addDetailed}
|
|
@@ -472,7 +864,7 @@ const project = React.createClass({
|
|
</Button>
|
|
</Button>
|
|
) : (
|
|
) : (
|
|
""
|
|
""
|
|
- )}
|
|
|
|
|
|
+ )} */}
|
|
</div>
|
|
</div>
|
|
<div className="patent-table">
|
|
<div className="patent-table">
|
|
<Spin spinning={this.state.loading}>
|
|
<Spin spinning={this.state.loading}>
|
|
@@ -489,6 +881,26 @@ const project = React.createClass({
|
|
</div>
|
|
</div>
|
|
</Spin>
|
|
</Spin>
|
|
</Form>
|
|
</Form>
|
|
|
|
+ <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}
|
|
|
|
+ bordered
|
|
|
|
+ size="small"
|
|
|
|
+ />
|
|
|
|
+ </Spin>
|
|
|
|
+ </div>
|
|
|
|
+ </Modal>
|
|
</Modal>
|
|
</Modal>
|
|
);
|
|
);
|
|
}
|
|
}
|