liting2017 7 年 前
コミット
78ed3c5a4d
共有23 個のファイルを変更した1661 個の追加253 個の削除を含む
  1. 13 0
      js/component/dataDic.js
  2. 1 1
      js/component/manageCenter/achievement/techAchievement.jsx
  3. 0 2
      js/component/manageCenter/achievement/techAchievementAudit/auditDesc.jsx
  4. 11 15
      js/component/manageCenter/achievement/techAchievementAudit/techAchievementAudit.jsx
  5. 10 15
      js/component/manageCenter/achievement/techAchievementRelease/techAchievementAudit.jsx
  6. 3 3
      js/component/manageCenter/customer/customerData/myClient.jsx
  7. 4 4
      js/component/manageCenter/customer/customerManagement/organizationManages.jsx
  8. 3 3
      js/component/manageCenter/customer/customerManagement/publicManages.jsx
  9. 10 0
      js/component/manageCenter/customer/individualCustomer/individualCustomer.jsx
  10. 9 15
      js/component/manageCenter/demand/demandAudit/techDemandAudit.jsx
  11. 9 15
      js/component/manageCenter/demand/demandRelease/techDemandRelease.jsx
  12. 169 31
      js/component/manageCenter/index/content.jsx
  13. 323 8
      js/component/manageCenter/order/departmentOrder/servicesOrder/addService.jsx
  14. 335 18
      js/component/manageCenter/order/myOrder/servicesOrder/addService.jsx
  15. 6 0
      js/component/manageCenter/order/myOrder/servicesOrder/myService.jsx
  16. 6 0
      js/component/manageCenter/order/settlementOrder/mySettlement/mySettlement.jsx
  17. 299 2
      js/component/manageCenter/order/settlementOrder/mySettlement/mySettlementDetaile.jsx
  18. 14 0
      js/component/manageCenter/order/userMangagement.less
  19. 11 3
      js/component/manageCenter/servicesManage/projectOrder/projectManagement/projectManage.jsx
  20. 384 93
      js/component/manageCenter/servicesManage/projectOrder/projectManagement/projectManageDetaile.jsx
  21. 25 24
      js/component/manageCenter/topTab.jsx
  22. 15 1
      js/component/tools.js
  23. 1 0
      webpack.config.js

+ 13 - 0
js/component/dataDic.js

@@ -2081,4 +2081,17 @@ module.exports = {
 	        key: "材料已完成"
 	    }
     ],
+     //变更状态	
+    changeState:[
+    	{
+	        value: "0",
+	        key: "未变更"
+	    },{
+	        value: "1",
+	        key: "变更中"
+	    }, {
+	        value: "2",
+	        key: "变更完成"
+	    }
+    ],
 };

+ 1 - 1
js/component/manageCenter/achievement/techAchievement.jsx

@@ -181,7 +181,7 @@ const AchievementList = React.createClass({
         this.state.auditStatusOption = auditArr;
         //从信息中跳转到页面
         let data=localStorage.getItem('newData');
-    	if(data){
+    	if(data!='{}'&&data){
     		var newData = JSON.parse(data);
     		console.log(newData);
     		this.tableRowClick(newData);

+ 0 - 2
js/component/manageCenter/achievement/techAchievementAudit/auditDesc.jsx

@@ -151,8 +151,6 @@ const AchievementDetailShow = Form.create()(React.createClass({
         this.setState({
             loading: true
         });
-      	console.log(ownerType);
-      	console.log(this.props.data.ownerType);
         $.ajax({
             method: "get",
             dataType: "json",

+ 11 - 15
js/component/manageCenter/achievement/techAchievementAudit/techAchievementAudit.jsx

@@ -173,15 +173,12 @@ const AchievementList = React.createClass({
         });
         this.state.achievementCategoryOption = theArr;
         this.state.auditStatusOption = auditArr;
-        if (window.location.search) {
-            let theObj = getSearchUrl(window.location.search);
-            if (theObj.rid) {
-                theObj.id = theObj.rid;
-                if (theObj.rid != 'null') {
-                    this.tableRowClick(theObj);
-                };
-            };
-        };
+        //管理中心跳转
+        let data=localStorage.getItem('newData');
+    	if(data!='{}'&&data){
+    		var newData = JSON.parse(data);
+    		this.tableRowClick(newData);
+    	};
         this.loadData();
     },
     componentWillReceiveProps(nextProps) {
@@ -203,12 +200,11 @@ const AchievementList = React.createClass({
         };
     },
     tableRowClick(record, index) {
-        if(index!=undefined){
-        	this.setState({
-        		RowData:record,
-            	showDesc: true
-        	});
-        }
+    	this.setState({
+    		RowData:record,
+        	showDesc: true
+    	});
+        localStorage.setItem('newData','{}');
     },
 //  delectRow() {
 //      let deletedIds = [];

+ 10 - 15
js/component/manageCenter/achievement/techAchievementRelease/techAchievementAudit.jsx

@@ -195,24 +195,19 @@ const AchievementList = React.createClass({
         });
         this.state.achievementCategoryOption = theArr;
         this.state.auditStatusOption = auditArr;
-        if (window.location.search) {
-            let theObj = getSearchUrl(window.location.search);
-            if (theObj.rid) {
-                theObj.id = theObj.rid;
-                if (theObj.rid != 'null') {
-                    this.tableRowClick(theObj);
-                };
-            };
-        };
+        let data=localStorage.getItem('newData');
+    	if(data!='{}'&&data){
+    		var newData = JSON.parse(data);
+    		this.tableRowClick(newData);
+    	};
         this.loadData();
     },
     tableRowClick(record, index) {
-        if(index!=undefined){
-        	this.setState({
-            	showDesc: true
-        	});
-        	this.state.RowData=record;
-        }
+        this.state.RowData=record;
+    	this.setState({
+        	showDesc: true
+    	});
+    	localStorage.setItem('newData','{}');
     },
      //撤销发布
     examineCancel(record){

+ 3 - 3
js/component/manageCenter/customer/customerData/myClient.jsx

@@ -1237,9 +1237,9 @@ const MyClient = Form.create()(React.createClass({
 	//拜访保存函数
 	visitSubmit(e) {
 		e.preventDefault();
-		let GlossoryId;
+		let GlossoryId=false;
 		this.state.data.map(function(item) {
-			if(!item.businessGlossoryId) {
+			if(!item.businessGlossoryId||!item.followSituation||!item.customerStatus) {
 				GlossoryId = true
 			}
 		})
@@ -1254,7 +1254,7 @@ const MyClient = Form.create()(React.createClass({
 			}
 		};
 		if(GlossoryId) {
-			message.warning("请选择业务名称!")
+			message.warning("业务名称/最新进度/最新状态不能为空!")
 			return false;
 		};
 		this.setState({

+ 4 - 4
js/component/manageCenter/customer/customerManagement/organizationManages.jsx

@@ -1278,12 +1278,12 @@ const PublicCustomer = Form.create()(React.createClass({
 	//拜访保存函数
 	visitSubmit(e) {
 		e.preventDefault();
-		let GlossoryId;
+		let GlossoryId=false;
 		this.state.data.map(function(item) {
-			if(!item.businessGlossoryId) {
+			if(!item.businessGlossoryId||!item.followSituation||!item.customerStatus) {
 				GlossoryId = true
 			}
-		})
+		});
 		if(this.state.contactType == undefined) {
 			message.warning('请选择拜访方式')
 			return false;
@@ -1295,7 +1295,7 @@ const PublicCustomer = Form.create()(React.createClass({
 			}
 		};
 		if(GlossoryId) {
-			message.warning("请选择业务名称!")
+			message.warning("业务名称/最新进度/最新状态不能为空!")
 			return false;
 		};
 		this.setState({

+ 3 - 3
js/component/manageCenter/customer/customerManagement/publicManages.jsx

@@ -1321,9 +1321,9 @@ const PublicCustomer = Form.create()(React.createClass({
 	//拜访保存函数
 	visitSubmit(e) {
 		e.preventDefault();
-		let GlossoryId;
+		let GlossoryId=false;
 		this.state.data.map(function(item) {
-			if(!item.businessGlossoryId) {
+			if(!item.businessGlossoryId||!item.followSituation||!item.customerStatus) {
 				GlossoryId = true
 			}
 		})
@@ -1338,7 +1338,7 @@ const PublicCustomer = Form.create()(React.createClass({
 			}
 		};
 		if(GlossoryId) {
-			message.warning("请选择业务名称!")
+			message.warning("业务名称/最新进度/最新状态不能为空!")
 			return false;
 		};
 		this.setState({

+ 10 - 0
js/component/manageCenter/customer/individualCustomer/individualCustomer.jsx

@@ -1346,6 +1346,12 @@ const IndividualCustomer = Form.create()(React.createClass({
 	//拜访保存函数
 	visitSubmit(e) {
 		e.preventDefault();
+		let GlossoryId=false;
+		this.state.data.map(function(item) {
+			if(!item.businessGlossoryId||!item.followSituation||!item.customerStatus) {
+				GlossoryId = true
+			}
+		})
 		if(this.state.contactType == undefined) {
 			message.warning('请选择拜访方式')
 			return false;
@@ -1359,6 +1365,10 @@ const IndividualCustomer = Form.create()(React.createClass({
 		this.setState({
 			selectedRowKeys: [],
 		});
+		if(GlossoryId) {
+			message.warning("业务名称/最新进度/最新状态不能为空!")
+			return false;
+		};
 		this.setState({
 			loading: true
 		});

+ 9 - 15
js/component/manageCenter/demand/demandAudit/techDemandAudit.jsx

@@ -335,16 +335,11 @@ const TechDemandPublish = React.createClass({
             )
         });
         this.state.demandTypeOption = theArr;
-        if (window.location.search) {
-            let theObj = getSearchUrl(window.location.search);
-            if (theObj.rid) {
-                theObj.id = theObj.rid;
-                theObj.employerId = theObj.uid;
-                if (theObj.rid != 'null') {
-                    this.tableRowClick(theObj);
-                };
-            };
-        };
+        let data=localStorage.getItem('newData');
+    	if(data!='{}'&&data){
+    		var newData = JSON.parse(data);
+    		this.tableRowClick(newData);
+    	};
         this.loadData();
         this.getCompanyList();
         this.getUserList();
@@ -371,11 +366,10 @@ const TechDemandPublish = React.createClass({
     },
     tableRowClick(record, index) {
         this.state.RowData = record;
-        if(index!=undefined){
-        	this.setState({
-           	 showDesc: true
-        	});
-        }
+    	this.setState({
+       	   showDesc: true
+    	});
+    	localStorage.setItem('newData','{}');
     },
 //  delectRow() {
 //      let deletedIds = [];

+ 9 - 15
js/component/manageCenter/demand/demandRelease/techDemandRelease.jsx

@@ -345,16 +345,11 @@ const TechDemandPublish = React.createClass({
             )
         });
         this.state.demandTypeOption = theArr;
-        if (window.location.search) {
-            let theObj = getSearchUrl(window.location.search);
-            if (theObj.rid) {
-                theObj.id = theObj.rid;
-                theObj.employerId = theObj.uid;
-                if (theObj.rid != 'null') {
-                    this.tableRowClick(theObj);
-                };
-            };
-        };
+        let data=localStorage.getItem('newData');
+    	if(data!='{}'&&data){
+    		var newData = JSON.parse(data);
+    		this.tableRowClick(newData);
+    	};
         this.loadData();
         this.getCompanyList();
         this.getUserList();
@@ -381,11 +376,10 @@ const TechDemandPublish = React.createClass({
     },
     tableRowClick(record, index) {
         this.state.RowData = record;
-        if(index!=undefined){
-        	this.setState({
-           	 showDesc: true
-        	});
-        }
+    	this.setState({
+       	 showDesc: true
+    	});
+    	localStorage.setItem('newData','{}');
     },
 //  delectRow() {
 //      let deletedIds = [];

+ 169 - 31
js/component/manageCenter/index/content.jsx

@@ -49,30 +49,12 @@ const MessageModal = React.createClass({
                     dataIndex: 'noticeType',
                     key: 'noticeType',
                     render: (text, record) => {
-                        switch (text) {
-                            case 1:
-                                return <a href={globalConfig.context + "/admin/servicesManage/patent.html?rid=" + record.rid + "&uid=" + record.uid + "#comprehensive"}> {record.noticeTypeName} </a>;
-                            case 3:
-                                return <a href={globalConfig.context + "/admin/servicesManage/copyright.html?rid=" + record.rid + "&uid=" + record.uid + "#copyright"}> {record.noticeTypeName} </a>;
-                            case 2:
-                                return <a href={globalConfig.context + "/admin/servicesManage/highTech.html?rid=" + record.rid + "&uid=" + record.uid + "&year=" + record.year + "#highTechApply"}> {record.noticeTypeName} </a>;
-                            case 4:
-                                return <a href={globalConfig.context + "/admin/servicesManage/technology.html?rid=" + record.rid + "&uid=" + record.uid + "#applyManage"}> {record.noticeTypeName} </a>;
-                            case 5:
-                                return <a href={globalConfig.context + "/admin/userManage.html?id=" + record.uid + "&type=0" + (window.showUserList ? "#userList" : "#customerList")}> {record.noticeTypeName} </a>;
-                            case 6:
-                                return <a href={globalConfig.context + "/admin/userManage.html?id=" + record.uid + "&type=1" + (window.showOrgList ? "#orgList" : "#customerList")}> {record.noticeTypeName} </a >;
-                            case 7:
-                                return <a href={globalConfig.context + "/admin/servicesManage/contract.html?rid=" + record.rid + "&uid=" + record.uid + "#contract"}> {record.noticeTypeName} </a >;
-                            case 8:
-                                return <a href={globalConfig.context + "/admin/demand.html?rid=" + record.rid + "#techDemandUser"}> {record.noticeTypeName} </a >;
-                            case 9:
-                                return <a href={globalConfig.context + "/admin/demand.html?rid=" + record.rid + "&uid=" + record.uid + "#techDemandOrg"}> {record.noticeTypeName} </a >;
-                            case 10:
-                                return <a href='#' onClick={(e) =>{ e.stopPropagation(),this.setStore(record)}}> {record.noticeTypeName} </a >;
-                            case 11:
-                                return <a href='#' onClick={(e) =>{ e.stopPropagation(),this.setStore(record)}}> {record.noticeTypeName+'123'} </a >;
-                        }
+//                      return <div>{
+//                   		text<8?<a href='#' onClick={(e) =>{ e.stopPropagation(),this.setStore(record)}}> {record.noticeTypeName} </a >:
+//                      <span>{record.noticeTypeName}</span>
+//                          }</div>
+						//return <a href='#' onClick={(e) =>{ e.stopPropagation(),this.setStore(record)}}> {record.noticeTypeName} </a >
+                       return(<span>{record.noticeTypeName}</span>)  
                     }
                 }, {
                     title: '时间',
@@ -95,14 +77,169 @@ const MessageModal = React.createClass({
             data: []
         };
     },
+    //主菜单请求
+    mainMenu(){
+    	this.setState({
+    		loading:true
+    	});
+    	$.ajax({
+    		method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/selectNavList",
+            data: {
+            	
+            },
+            success:function(data){
+            	if (!data.data) {
+	                if (data.error && data.error.length) {
+	                    message.warning(data.error[0].message);
+	                    return;
+	                };
+	            };
+	           this.setState({
+	           		menu:data.data
+	           });
+            }.bind(this),
+    	}).always(function(data){
+    		this.setState({
+    			loading:false
+    		})
+    	}.bind(this))
+    },
+    finId(text){
+    	var data=this.state.menu||[];
+    	var rid='';
+	  	switch(text) {
+			case 1:
+				data.map(function(nub, index) {
+					if(nub.url.indexOf('demand') != -1) {
+						rid = nub.id;
+					}
+				});
+				break;
+			case 2:
+				data.map(function(nub, index) {
+					if(nub.url.indexOf('demand') != -1) {
+						rid = nub.id;
+					}
+				});
+				break;
+			case 3:
+				data.map(function(nub, index) {
+					if(nub.url.indexOf('achievement') != -1) {
+						rid = nub.id;
+					}
+				});
+				break;
+			case 4:
+				data.map(function(nub, index) {
+					if(nub.url.indexOf('achievement') != -1) {
+						rid = nub.id;
+					}
+				});
+				break;
+			case 5:
+				data.map(function(nub, index) {
+					if(nub.url.indexOf('order') != -1) {
+						rid = nub.id;
+					}
+				});
+				break;
+			case 6:
+				data.map(function(nub, index) {
+					if(nub.url.indexOf('order') != -1) {
+						rid = nub.id;
+					}
+				});
+				break;
+			case 7:
+				data.map(function(nub, index) {
+					if(nub.url.indexOf('servicesManage') != -1) {
+						rid = nub.id;
+					}
+				});	
+				break;
+			default:
+				rid='';
+		}
+    	return rid;
+    },
+    //跳转详情
     setStore(record){
-    	var data = {
-		    		"id":"506f0ba0-9c0d-4c98-a8e9-e1323f1974c0",
-		    		"ownerType":"1"
-		    	};
-    	var newData = JSON.stringify(data);
-    	localStorage.setItem('newData',newData);
-    	window.location.href=globalConfig.context + "/admin/achievement.html?rid=409bf85f-5cd7-459b-9c7c-4865001a87a2#techAchievementManage"
+    	localStorage.setItem('newData',{});
+    	let ids = record.noticeType;
+    	console.log(record);
+    	ids=7;
+    	let rid = this.finId(ids) || "";
+    	var urls='',
+    	    dataJson={};
+    	switch (ids) {
+            case 1:
+                urls = "/admin/demand.html?rid=" + rid +"#techDemandAudit";
+                dataJson = {
+                	"id":record.uid,
+                	//"id":"3f93588b-332e-4353-bbfd-f1451b4b390c",
+                	"dataCategory":"0"
+                };
+                break;
+            case 2:
+                urls = "/admin/demand.html?rid=" + rid+ "#techDemandPublish";
+                dataJson = {
+                	"id":record.uid,
+                	//"id":"40f77e32-29fa-4a85-a6f0-7c4986bdc5e3",
+                	"dataCategory":'1'
+                };
+                break ;
+            case 3:
+                urls =  "/admin/achievement.html?rid=" + rid +"#techAchievementAudit";
+           		dataJson = {
+           			"id":record.uid,
+           			//"id":"f09d5c08-4a8b-48a6-9753-86006f1a53cb",
+           			"ownerType":'1'
+           		};
+           		break ;
+            case 4:
+                urls = "/admin/achievement.html?rid=" + rid + "#techAchievementPublish";
+                dataJson = {
+           			"id":record.uid,
+           			//"id":"953c9ef7-6cf6-4ab7-af89-c01521998fed",
+                	"ownerType":'1'
+           		};
+           		break ;
+            case 5:
+                urls = "/admin/order.html?rid=" + rid + "#myService";
+            	dataJson = {
+            		"orderNo":record.orderNo
+           			//"orderNo":"175557414077480960"
+           		};
+           		break ;
+            case 6:
+                urls = "/admin/order.html?rid=" + rid + "#mySettlement";
+            	dataJson = {
+           			"orderNo":record.orderNo
+           			//"orderNo":"180714111314051072"
+           		};
+           		break ;
+            case 7:
+                urls = "/admin/servicesManage/projectOrder.html?rid=" + rid + "#projectManage";
+           		dataJson = {
+           			//"id":record.id,
+           			"id":"69e2d8ca984240a4b9c90daac69fe5e3",
+           			"buyerType":"1"
+           		};
+           		break ;
+           	default :
+           	    urls:'#';
+           	    dataJson = {};
+          };
+          console.log(rid);
+          if(rid){
+	    	  var data = dataJson;
+	    	  var newData = JSON.stringify(data);
+	    	  localStorage.setItem('newData',newData);
+	    	  window.location.href = globalConfig.context +urls;
+          }
     },
     loadReaded(pageNo) {
         this.state.data = [];
@@ -211,6 +348,7 @@ const MessageModal = React.createClass({
     componentWillMount() {
         this.loadReaded();
         this.loadUnread();
+        this.mainMenu();
     },
     render() {
         return (

+ 323 - 8
js/component/manageCenter/order/departmentOrder/servicesOrder/addService.jsx

@@ -1,10 +1,10 @@
 import React from 'react';
-import { Icon, Table, Modal, message, Spin, Input, Select, Button, Form ,Upload,Popconfirm,AutoComplete,DatePicker} from 'antd';
+import { Icon, Table, Modal, message, Spin, Input, Select, Button, Radio,Form ,Upload,Popconfirm,AutoComplete,DatePicker} from 'antd';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 import '../../userMangagement.less';
 import {orderType} from '../../../../dataDic.js';  
-import {splitUrl,getOrderType,getOrderStage,getProjectState,getOrderState,getTransactionProject,getPaymentState,getOrderChannel,getApprovedState,getLock,getPaymentMethod,getTransactionChannel,beforeUploadFile} from '../../../../tools.js';
+import {splitUrl,getOrderType,getOrderStage,getProjectState,getOrderState,getTransactionProject,getChangeState,getPaymentState,getOrderChannel,getApprovedState,getLock,getPaymentMethod,getTransactionChannel,beforeUploadFile} from '../../../../tools.js';
 const Option = AutoComplete.Option;
 //图片组件
 const PicturesWall = React.createClass({
@@ -285,15 +285,14 @@ const NewService = Form.create()(React.createClass({
 	},
 	//查看基本详情基本信息
     loaduser(record){
-    	if(record){
-    	this.state.orderList=[]
+    	this.state.orderList=[];
     	$.ajax({
             method: "get",
 			dataType: "json",
 			crossDomain: false,
 			url: globalConfig.context + '/api/admin/order/getServiceOrderDetail',
             data: {
-              orderNo: record.orderNo
+              orderNo: record?record.orderNo:this.props.datauser.orderNo
             },
             success: function (data) {
                 let thisData = data.data;                
@@ -324,7 +323,6 @@ const NewService = Form.create()(React.createClass({
                 loading: false
             });
         }.bind(this));  
-       }
     },
 	handleOk(e) {
 		this.setState({
@@ -736,6 +734,166 @@ const NewService = Form.create()(React.createClass({
 			lookVisible:false
 		})
 	},
+	/* -----变更操作开始----- */
+	//新建变更
+	addChange(){
+		this.setState({
+			addChangeState:true,
+			stateAdd:1,
+			changeRemarks:''
+		})
+	},
+	//产看变更记录
+	lookChange(){
+		this.setState({
+			addChangeState:true,
+			stateAdd:0
+		})
+		this.lookChangeData()
+	},
+	//查看变更列表修改变更
+	modifyChangeCancel(){
+		this.setState({
+			modifyChangeState:false
+		})
+	},
+	//获取变更记录
+	lookChangeData(){
+		this.setState({
+			loading:true
+		});
+		 $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context +'/api/admin/order/viewOrderChange',
+            data: {
+            	orderNo:this.props.datauser.orderNo,
+            },
+            success: function (data) {
+                let theArr = [];
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    for (let i = 0; i < data.data.length; i++) {
+                        theArr = data.data;
+                    };
+                };
+                this.setState({
+                    changeHtml: theArr,
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+	},
+	//添加变更状态
+	addChangeCancel(){
+		this.setState({
+			addChangeState:false
+		})
+	},
+	//新建变更
+	subChangeState(e){
+		e.preventDefault();
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "POST",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +'/api/admin/order/addOrderChange' ,
+			data: {
+				orderNo:this.props.datauser.orderNo,
+				changeComment:this.state.changeRemarks
+			}
+		}).done(function(data) {
+			this.setState({
+				loading: false
+			});
+			if(!data.error.length) {
+				message.success('保存成功!');
+				this.addChangeCancel();
+				this.loaduser();
+			} else {
+				message.warning(data.error[0].message);
+			}
+		}.bind(this));
+	},
+	//查看修改变更
+	modifyChange(item){
+		this.setState({
+			modifyChangeState:true,
+			changePromoter:item.creater,
+			changeTime:item.createTime,
+			changeState:item.changeStatus,
+			changeRemarks:item.changeComment,
+			idt:item.changeId,
+			orderNot:item.orderNo
+		})
+	},
+	//删除变更
+	modifyDelete(item){
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "get",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +'/api/admin/order/deleteOrderChange' ,
+			data: {
+				changeId:item.changeId,
+			}
+		}).done(function(data) {
+			this.setState({
+				loading: false
+			});
+			if(!data.error.length) {
+				message.success('删除成功!');
+				this.lookChangeData();
+				this.loaduser()
+			} else {
+				message.warning(data.error[0].message);
+			}
+		}.bind(this));
+	},
+	//修改变更保存
+	changeModify(e){
+		e.preventDefault();
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "POST",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +'/api/admin/order/updateOrderChange' ,
+			data: {
+				changeId:this.state.idt,
+				changeStatus:this.state.changeState,
+				changeComment:this.state.changeRemarks
+			}
+		}).done(function(data) {
+			this.setState({
+				loading: false
+			});
+			if(!data.error.length) {
+				message.success('保存成功!');
+				this.modifyChangeCancel();
+				this.lookChangeData();
+				this.loaduser()
+			} else {
+				message.warning(data.error[0].message);
+			}
+		}.bind(this));
+	},
+	/*-----变更操作结束----*/
 	componentWillReceiveProps(nextProps) { //props改变时触发
 		this.state.visible = nextProps.showDesc;
 		this.state.signBillVisible=nextProps.signBillVisible;
@@ -760,6 +918,7 @@ const NewService = Form.create()(React.createClass({
 			labelCol: { span: 8 },
 			wrapperCol: { span: 14 },
 		};
+		const changeHtml=this.state.changeHtml ||[];
 		const editFws=this.state.editFw;
 		const orderDetaiel=this.state.orderList || []
 		const dataSources=this.state.customerArr || [];
@@ -832,7 +991,7 @@ const NewService = Form.create()(React.createClass({
 							                            label="市价首款金额" >   
 							                            <span>{orderDetaiel.firstPayment+'万元'}</span>
 								                    </FormItem>
-								                    {orderDetaiel.deleteSign==0&&orderDetaiel.orderStatus==2?
+								                    {orderDetaiel.deleteSign==0&&orderDetaiel.orderStatus==2||orderDetaiel.changeStatus==1?
 							                    	<div className='clearfix'>
 									                    <FormItem className="half-item"
 								                            {...formItemLayout}
@@ -866,6 +1025,28 @@ const NewService = Form.create()(React.createClass({
 														    				onChange={(e)=>{this.setState({orderRemarks:e.target.value})}}/>			                      
 													        </FormItem>
 												        </div>
+												        <div className='clearfix'>
+												        	<div className="changeStatusTxt">
+													        	<FormItem className="half-item"
+														            {...formItemLayout}
+														            style={{color:'red'}}
+														            label="变更状态" >
+													        		<span>{getChangeState(orderDetaiel.changeStatus)}</span>
+														        </FormItem>
+													        </div>
+													        {orderDetaiel.orderStatus>=3&&<div className="clearfix">
+													        	<FormItem className="half-item"
+													            	{...formItemLayout}
+													           		label="变更操作" >
+												        			<Button onClick={this.addChange}>添加变更</Button>
+													        	</FormItem>
+													        	<FormItem className="half-item"
+													            	{...formItemLayout}
+													           		label="变更操作" >
+												        			<Button onClick={this.lookChange}>查看变更纪录</Button>
+													        	</FormItem>
+												            </div>}
+												        </div>
 											        </div>:
 											        <div className='clearfix'>
 											        	<FormItem className="half-item"
@@ -921,6 +1102,26 @@ const NewService = Form.create()(React.createClass({
 												        		<span>{orderDetaiel.orderRemarks}</span>
 													        </FormItem>
 												        </div>
+												        <div className='clearfix changeStatusTxt'>
+												        	<FormItem className="half-item"
+													            {...formItemLayout}
+													            style={{color:'red'}}
+													            label="变更状态" >
+												        		<span>{getChangeState(orderDetaiel.changeStatus)}</span>
+													        </FormItem>
+												        </div>
+												        {orderDetaiel.orderStatus>=3&&<div className="clearfix">
+												        	<FormItem className="half-item"
+												            	{...formItemLayout}
+												           		label="变更操作" >
+											        			<Button onClick={this.addChange}>添加变更</Button>
+												        	</FormItem>
+												        	<FormItem className="half-item"
+												            	{...formItemLayout}
+												           		label="变更操作" >
+											        			<Button onClick={this.lookChange}>查看变更纪录</Button>
+												        	</FormItem>
+												        </div>}
 											        </div>}
 										        <div className='clearfix'>
 						                    		<FormItem className="half-item"
@@ -982,7 +1183,7 @@ const NewService = Form.create()(React.createClass({
 									            </div>
 					                        </div>}
 						               		<div className='addSave' style={{marginTop:'15px'}}>
-							                    {!this.props.userDetaile||orderDetaiel.deleteSign==0&&orderDetaiel.orderStatus==2?<Button className="setSave" type="primary" htmlType="submit">保存</Button>:''}
+							                    {!this.props.userDetaile||orderDetaiel.deleteSign==0&&orderDetaiel.orderStatus==2||orderDetaiel.changeStatus==1?<Button className="setSave" type="primary" htmlType="submit">保存</Button>:''}
 				                                {this.props.userDetaile?<div className='operations'>
 						                            {this.props.datauser.active.confirmIntention&&<Popconfirm title={'请确认您是否受理来自【'+this.props.datauser.buyerName+'】发起的服务意向订单?'} onConfirm={(e)=>{this.admissibleOrderOK()}} onCancel={(e)=>{this.admissibleOrderCancel()}} okText="同意" cancelText="拒绝">
 													    <Button style={{marginRight:'15px',marginLeft:'200px'}} type="primary">受理意向</Button>                 
@@ -1265,6 +1466,120 @@ const NewService = Form.create()(React.createClass({
 			                </Spin>
 			            </Form >
 			        </Modal>
+			        <Modal maskClosable={false} visible={this.state.addChangeState}
+                        onOk={this.addChangeCancel} onCancel={this.addChangeCancel}
+                        width='800px'
+                        title= {this.state.stateAdd?'添加变更':'查看变更记录'}                    
+                        footer=''
+                        className="admin-desc-content">
+			            <Form layout="horizontal" id="demand-form">
+			                <Spin spinning={this.state.loading}>
+		                        <div className="clearfix">
+                        	   		{this.state.stateAdd?<div className="clearfix">
+						                <FormItem
+									            labelCol={{ span: 4 }}
+									            wrapperCol={{ span: 16 }}
+									            label="变更说明" >
+								                <Input type="textarea" placeholder="请输入变更说明" rows={4}  value={this.state.changeRemarks} 
+									    				onChange={(e)=>{this.setState({changeRemarks:e.target.value})}}/>			                      
+									    </FormItem>
+									    <div className="clearfix">
+									    	<Button type="primary" onClick={this.subChangeState} style={{margin:"10px 50px 10px 128px"}}>保存</Button>
+									    	<Button onClick={this.addChangeCancel}>取消</Button>
+									    </div>
+				                    </div>:
+				                    <div>
+				                    	{
+				                    	changeHtml.length?changeHtml.map(function(item,index){
+				                    			return (<div className="changeBorder" key={index}>
+													    <FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更发起人" >                             
+													               <span>{item.creater}</span>
+													    </FormItem>
+													    <FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更申请时间" >                             
+													               <span>{item.createTime}</span>
+													    </FormItem>
+													    <div className='clearfix'>
+													    	<FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更状态" >                             
+													                <span>{getChangeState(item.changeStatus)}</span>
+													   		</FormItem>
+													   		<FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更操作" >                             
+													               <Button onClick={(e)=>{this.modifyChange(item)}}>修改</Button>
+													               <Button type="danger" onClick={(e)=>{this.modifyDelete(item)}}>删除</Button>
+													   		</FormItem>
+													    </div>
+													    <div className='clearfix changeRemark'>
+													    	<FormItem
+													            labelCol={{ span: 4 }}
+													            wrapperCol={{ span: 16 }}
+													            label="变更说明" >
+													    		<p>{item.changeComment}</p>
+													        </FormItem>
+													    </div>
+													</div>)
+				                    		},this):<p style={{textAlign:"center"}}>暂无变更记录</p>}
+								    </div>
+                        	   		}
+		                        </div>
+			                </Spin>
+			            </Form >
+			        </Modal>
+			        <Modal maskClosable={false} visible={this.state.modifyChangeState} 
+                        onOk={this.modifyChangeCancel} onCancel={this.modifyChangeCancel}
+                        width='600px'
+                        title= "修改变更  "                 
+                        footer=''
+                        className="admin-desc-content">
+			            <Form layout="horizontal" id="demand-form">
+			                <Spin spinning={this.state.loading}>
+		                        <div className="clearfix">
+		                       		<div className="clearfix">
+									    <FormItem className="half-item"
+									            {...formItemLayout}
+									            label="变更发起人" >                             
+									               <span>{this.state.changePromoter}</span>
+									    </FormItem>
+									    <FormItem className="half-item"
+									            {...formItemLayout}
+									            label="变更申请时间" >                             
+									               <span>{this.state.changeTime}</span>
+									    </FormItem>
+									    <div className='clearfix'>
+									    	<FormItem 
+					                             labelCol={{ span: 4 }}
+										         wrapperCol={{ span: 16 }}
+					                             label="变更状态" >  
+												<Radio.Group onChange={(e)=>{this.setState({changeState:e.target.value})}} value={this.state.changeState}>
+											        <Radio value={1}>变更中</Radio>
+											        <Radio value={2}>变更完成</Radio>
+											    </Radio.Group>    
+						                	</FormItem>
+									    </div>
+									    <div className='clearfix'>
+									    	<FormItem
+									            labelCol={{ span: 4 }}
+									            wrapperCol={{ span: 16 }}
+									            label="变更说明" >
+								                <Input type="textarea" placeholder="请输入变更说明" rows={4}  value={this.state.changeRemarks} 
+									    				onChange={(e)=>{this.setState({changeRemarks:e.target.value})}}/>			                      
+									   		</FormItem>
+									    </div>
+									    <div className="clearfix">
+									    	<Button type="primary" onClick={this.changeModify} style={{margin:"10px 95px"}}>保存</Button>
+									    	<Button onClick={this.modifyChangeCancel}>取消</Button>
+									    </div>
+									</div>
+		                        </div>
+			                </Spin>
+			            </Form >
+			        </Modal>
     	    </div>
 		)
 	}

+ 335 - 18
js/component/manageCenter/order/myOrder/servicesOrder/addService.jsx

@@ -1,10 +1,10 @@
 import React from 'react';
-import { Icon, Table, Modal, message, Spin, Input, Select, Button, Form ,Upload,Popconfirm,AutoComplete,DatePicker} from 'antd';
+import { Icon, Table, Modal, message, Spin, Input, Select, Button, Form ,Upload,Popconfirm,AutoComplete,DatePicker,Radio} from 'antd';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 import '../../userMangagement.less';
 import {orderType} from '../../../../dataDic.js';  
-import {splitUrl,getOrderType,getOrderStage,getProjectState,getOrderState,getTransactionProject,getPaymentState,getOrderChannel,getApprovedState,getLock,getPaymentMethod,getTransactionChannel,beforeUploadFile} from '../../../../tools.js';
+import {splitUrl,getOrderType,getOrderStage,getProjectState,getOrderState,getTransactionProject,getChangeState,getPaymentState,getOrderChannel,getApprovedState,getLock,getPaymentMethod,getTransactionChannel,beforeUploadFile} from '../../../../tools.js';
 const Option = AutoComplete.Option;
 //图片组件
 const PicturesWall = React.createClass({
@@ -15,6 +15,11 @@ const PicturesWall = React.createClass({
             fileList: [],
         }
     },
+    getDefaultProps(){
+    	return{
+    		changeClick:this.modifyChange
+    	}
+    },
     handleCancel() {
         this.setState({ previewVisible: false })
     },
@@ -836,6 +841,168 @@ const NewService = Form.create()(React.createClass({
 			lookVisible:false
 		})
 	},
+	
+	/* -----变更操作开始----- */
+	//新建变更
+	addChange(){
+		this.setState({
+			addChangeState:true,
+			stateAdd:1,
+			changeRemarks:''
+		})
+	},
+	//产看变更记录
+	lookChange(){
+		this.setState({
+			addChangeState:true,
+			stateAdd:0
+		})
+		this.lookChangeData()
+	},
+	//查看变更列表修改变更
+	modifyChangeCancel(){
+		this.setState({
+			modifyChangeState:false
+		})
+	},
+	//获取变更记录
+	lookChangeData(){
+		this.setState({
+			loading:true
+		});
+		 $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context +'/api/admin/order/viewOrderChange',
+            data: {
+            	orderNo:this.props.datauser.orderNo,
+            },
+            success: function (data) {
+                let theArr = [];
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    for (let i = 0; i < data.data.length; i++) {
+                        theArr = data.data;
+                    };
+                };
+                this.setState({
+                    changeHtml: theArr,
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+	},
+	//添加变更状态
+	addChangeCancel(){
+		this.setState({
+			addChangeState:false
+		})
+	},
+	//新建变更
+	subChangeState(e){
+		e.preventDefault();
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "POST",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +'/api/admin/order/addOrderChange' ,
+			data: {
+				orderNo:this.props.datauser.orderNo,
+				changeComment:this.state.changeRemarks
+			}
+		}).done(function(data) {
+			this.setState({
+				loading: false
+			});
+			if(!data.error.length) {
+				message.success('保存成功!');
+				this.addChangeCancel();
+				this.loaduser();
+			} else {
+				message.warning(data.error[0].message);
+			}
+		}.bind(this));
+	},
+	//查看修改变更
+	modifyChange(item){
+		this.setState({
+			modifyChangeState:true,
+			changePromoter:item.creater,
+			changeTime:item.createTime,
+			changeState:item.changeStatus,
+			changeRemarks:item.changeComment,
+			idt:item.changeId,
+			orderNot:item.orderNo
+		})
+	},
+	//删除变更
+	modifyDelete(item){
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "get",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +'/api/admin/order/deleteOrderChange' ,
+			data: {
+				changeId:item.changeId,
+			}
+		}).done(function(data) {
+			this.setState({
+				loading: false
+			});
+			if(!data.error.length) {
+				message.success('删除成功!');
+				this.lookChangeData();
+				this.loaduser()
+			} else {
+				message.warning(data.error[0].message);
+			}
+		}.bind(this));
+	},
+	//修改变更保存
+	changeModify(e){
+		e.preventDefault();
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "POST",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +'/api/admin/order/updateOrderChange' ,
+			data: {
+				changeId:this.state.idt,
+				changeStatus:this.state.changeState,
+				changeComment:this.state.changeRemarks
+			}
+		}).done(function(data) {
+			this.setState({
+				loading: false
+			});
+			if(!data.error.length) {
+				message.success('保存成功!');
+				this.modifyChangeCancel();
+				this.lookChangeData();
+				this.loaduser()
+			} else {
+				message.warning(data.error[0].message);
+			}
+		}.bind(this));
+	},
+	/*-----变更操作结束----*/
+	
 	 //查看流失。项目列表
     lookSee(state) {
     	this.state.lookSource=[];
@@ -894,6 +1061,7 @@ const NewService = Form.create()(React.createClass({
 	    		bussStats:true,
 	    		orderType:e
     		})
+	    	this.category();
     	}else{
     		this.setState({
     			contractType:undefined,
@@ -904,9 +1072,6 @@ const NewService = Form.create()(React.createClass({
     },
     //品类数据获取
     category(){
-    	this.setState({
-			loading: true
-		});
 		$.ajax({
 			method: "get",
 			dataType: "json",
@@ -937,11 +1102,7 @@ const NewService = Form.create()(React.createClass({
 					categoryArr:theArr,
 				})
 			}.bind(this),
-			}).always(function() {
-				this.setState({
-					loading: false
-				});
-			}.bind(this));
+			});
     },
 	componentWillReceiveProps(nextProps) { //props改变时触发
 		this.state.visible = nextProps.showDesc;
@@ -953,14 +1114,13 @@ const NewService = Form.create()(React.createClass({
 			this.loaduser(nextProps.datauser);
 			this.loadData(nextProps.datauser);
 		}else{
-			this.category();
 			this.setState({
 				orderType:undefined,
 				customerName:'',
 				autoId:'',
 				customerArr:[],
 				contractType:undefined,
-				bussStats:false
+				bussStats:false,
 			})
 		}
 	},
@@ -970,14 +1130,15 @@ const NewService = Form.create()(React.createClass({
 			labelCol: { span: 8 },
 			wrapperCol: { span: 14 },
 		};
+		const changeHtml=this.state.changeHtml ||[];
 		const editFws=this.state.editFw;
 		const categoryList=this.state.categoryArr ||[];
 		const orderDetaiel=this.state.orderList || [];
 		const dataSources=this.state.customerArr || [];
         const options = this.state.states?dataSources.map((group,index) =>
-				      <Select.Option key={index} value={group.name}>{group.name}</Select.Option>
+				      <Select.Option key={group.id} value={group.name}>{group.name}</Select.Option>
 				     ):dataSources.map((group,index) =>
-				      <Select.Option key={group.id} value={group.bname}>{group.bname}</Select.Option>
+				      <Select.Option key={index} value={group.bname}>{group.bname}</Select.Option>
 				     )
 		    
 		return(
@@ -1101,7 +1262,7 @@ const NewService = Form.create()(React.createClass({
 							                            label="市价首款金额" >   
 							                            <span>{orderDetaiel.firstPayment+'万元'}</span>
 								                    </FormItem>
-								                    {orderDetaiel.deleteSign==0&&orderDetaiel.orderStatus==2?
+								                    {orderDetaiel.deleteSign==0&&orderDetaiel.orderStatus==2||orderDetaiel.changeStatus==1?
 							                    	<div className='clearfix'>
 									                    <FormItem className="half-item"
 								                            {...formItemLayout}
@@ -1146,6 +1307,28 @@ const NewService = Form.create()(React.createClass({
 														    				onChange={(e)=>{this.setState({orderRemarks:e.target.value})}}/>			                      
 													        </FormItem>
 												        </div>
+												        <div className='clearfix'>
+												        	<div className="changeStatusTxt">
+													        	<FormItem className="half-item"
+														            {...formItemLayout}
+														            style={{color:'red'}}
+														            label="变更状态" >
+													        		<span>{getChangeState(orderDetaiel.changeStatus)}</span>
+														        </FormItem>
+													        </div>
+													        {orderDetaiel.orderStatus>=3&&<div className="clearfix">
+													        	<FormItem className="half-item"
+													            	{...formItemLayout}
+													           		label="变更操作" >
+												        			<Button onClick={this.addChange}>添加变更</Button>
+													        	</FormItem>
+													        	<FormItem className="half-item"
+													            	{...formItemLayout}
+													           		label="变更操作" >
+												        			<Button onClick={this.lookChange}>查看变更纪录</Button>
+													        	</FormItem>
+												            </div>}
+												        </div>
 											        </div>:
 											        <div className='clearfix'>
 											        	<FormItem className="half-item"
@@ -1199,6 +1382,26 @@ const NewService = Form.create()(React.createClass({
 												        		<span>{orderDetaiel.orderRemarks}</span>
 													        </FormItem>
 												        </div>
+												        <div className='clearfix changeStatusTxt'>
+												        	<FormItem className="half-item"
+													            {...formItemLayout}
+													            style={{color:'red'}}
+													            label="变更状态" >
+												        		<span>{getChangeState(orderDetaiel.changeStatus)}</span>
+													        </FormItem>
+												        </div>
+												        {orderDetaiel.orderStatus>=3&&<div className="clearfix">
+												        	<FormItem className="half-item"
+												            	{...formItemLayout}
+												           		label="变更操作" >
+											        			<Button onClick={this.addChange}>添加变更</Button>
+												        	</FormItem>
+												        	<FormItem className="half-item"
+												            	{...formItemLayout}
+												           		label="变更操作" >
+											        			<Button onClick={this.lookChange}>查看变更纪录</Button>
+												        	</FormItem>
+												        </div>}
 											        </div>}
 										        <div className='clearfix'>
 						                    		<FormItem className="half-item"
@@ -1247,7 +1450,7 @@ const NewService = Form.create()(React.createClass({
 					                    		</div>
 					                    		<div>
 								                	<span style={{marginLeft:'50px',fontSize:'20px'}}>项目业务</span>
-								                	{this.props.datauser.active.applySign?<Button type='primary' onClick={this.addDetailed} style={{float:'right',marginRight:'50px',marginBottom:'15px',display:true?'block':'none'}}>添加明细</Button>:''}
+								                	{this.props.datauser.active.applySign?<Button type='primary' onClick={this.addDetailed} style={{float:'right',marginRight:'50px',marginBottom:'15px'}}>添加明细</Button>:''}
 								                </div>
 								                <div className="patent-table">
 								                    <Spin spinning={this.state.loading}>
@@ -1260,7 +1463,7 @@ const NewService = Form.create()(React.createClass({
 									            </div>
 					                        </div>}
 						               		<div className='addSave' style={{marginTop:'15px'}}>
-							                    {!this.props.userDetaile||orderDetaiel.deleteSign==0&&orderDetaiel.orderStatus==2?<Button className="setSave" type="primary" htmlType="submit">保存</Button>:''}
+							                    {!this.props.userDetaile||orderDetaiel.deleteSign==0&&orderDetaiel.orderStatus==2||orderDetaiel.changeStatus==1?<Button className="setSave" type="primary" htmlType="submit">保存</Button>:''}
 				                                {this.props.userDetaile?<div className='operations'>
 						                            {this.props.datauser.active.confirmIntention&&<Popconfirm title={'请确认您是否受理来自【'+this.props.datauser.buyerName+'】发起的服务意向订单?'} onConfirm={(e)=>{this.admissibleOrderOK()}} onCancel={(e)=>{this.admissibleOrderCancel()}} okText="同意" cancelText="拒绝">
 													    <Button style={{marginRight:'15px',marginLeft:'200px'}} type="primary">受理意向</Button>                 
@@ -1288,7 +1491,7 @@ const NewService = Form.create()(React.createClass({
 			        <Modal maskClosable={false} visible={this.state.addnextVisible}
                         onOk={this.nextCancel} onCancel={this.nextCancel}
                         width='800px'
-                        title={this.state.addState?'添加服务':'编辑服务'}                     
+                        title={this.state.addState?'添加服务':'服务详情'}                     
                         footer=''
                         className="admin-desc-content">
 			            <Form layout="horizontal" onSubmit={this.nextSubmit} id="demand-form">
@@ -1562,6 +1765,120 @@ const NewService = Form.create()(React.createClass({
 			                </Spin>
 			            </Form >
 			        </Modal>
+			        <Modal maskClosable={false} visible={this.state.addChangeState}
+                        onOk={this.addChangeCancel} onCancel={this.addChangeCancel}
+                        width='800px'
+                        title= {this.state.stateAdd?'添加变更':'查看变更记录'}                    
+                        footer=''
+                        className="admin-desc-content">
+			            <Form layout="horizontal" id="demand-form">
+			                <Spin spinning={this.state.loading}>
+		                        <div className="clearfix">
+                        	   		{this.state.stateAdd?<div className="clearfix">
+						                <FormItem
+									            labelCol={{ span: 4 }}
+									            wrapperCol={{ span: 16 }}
+									            label="变更说明" >
+								                <Input type="textarea" placeholder="请输入变更说明" rows={4}  value={this.state.changeRemarks} 
+									    				onChange={(e)=>{this.setState({changeRemarks:e.target.value})}}/>			                      
+									    </FormItem>
+									    <div className="clearfix">
+									    	<Button type="primary" onClick={this.subChangeState} style={{margin:"10px 50px 10px 128px"}}>保存</Button>
+									    	<Button onClick={this.addChangeCancel}>取消</Button>
+									    </div>
+				                    </div>:
+				                    <div>
+				                    	{
+				                    	changeHtml.length?changeHtml.map(function(item,index){
+				                    			return (<div className="changeBorder" key={index}>
+													    <FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更发起人" >                             
+													               <span>{item.creater}</span>
+													    </FormItem>
+													    <FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更申请时间" >                             
+													               <span>{item.createTime}</span>
+													    </FormItem>
+													    <div className='clearfix'>
+													    	<FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更状态" >                             
+													                <span>{getChangeState(item.changeStatus)}</span>
+													   		</FormItem>
+													   		<FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更操作" >                             
+													               <Button onClick={(e)=>{this.modifyChange(item)}}>修改</Button>
+													               <Button type="danger" onClick={(e)=>{this.modifyDelete(item)}}>删除</Button>
+													   		</FormItem>
+													    </div>
+													    <div className='clearfix changeRemark'>
+													    	<FormItem
+													            labelCol={{ span: 4 }}
+													            wrapperCol={{ span: 16 }}
+													            label="变更说明" >
+													    		<p>{item.changeComment}</p>
+													        </FormItem>
+													    </div>
+													</div>)
+				                    		},this):<p style={{textAlign:"center"}}>暂无变更记录</p>}
+								    </div>
+                        	   		}
+		                        </div>
+			                </Spin>
+			            </Form >
+			        </Modal>
+			        <Modal maskClosable={false} visible={this.state.modifyChangeState} 
+                        onOk={this.modifyChangeCancel} onCancel={this.modifyChangeCancel}
+                        width='600px'
+                        title= "修改变更  "                 
+                        footer=''
+                        className="admin-desc-content">
+			            <Form layout="horizontal" id="demand-form">
+			                <Spin spinning={this.state.loading}>
+		                        <div className="clearfix">
+		                       		<div className="clearfix">
+									    <FormItem className="half-item"
+									            {...formItemLayout}
+									            label="变更发起人" >                             
+									               <span>{this.state.changePromoter}</span>
+									    </FormItem>
+									    <FormItem className="half-item"
+									            {...formItemLayout}
+									            label="变更申请时间" >                             
+									               <span>{this.state.changeTime}</span>
+									    </FormItem>
+									    <div className='clearfix'>
+									    	<FormItem 
+					                             labelCol={{ span: 4 }}
+										         wrapperCol={{ span: 16 }}
+					                             label="变更状态" >  
+												<Radio.Group onChange={(e)=>{this.setState({changeState:e.target.value})}} value={this.state.changeState}>
+											        <Radio value={1}>变更中</Radio>
+											        <Radio value={2}>变更完成</Radio>
+											    </Radio.Group>    
+						                	</FormItem>
+									    </div>
+									    <div className='clearfix'>
+									    	<FormItem
+									            labelCol={{ span: 4 }}
+									            wrapperCol={{ span: 16 }}
+									            label="变更说明" >
+								                <Input type="textarea" placeholder="请输入变更说明" rows={4}  value={this.state.changeRemarks} 
+									    				onChange={(e)=>{this.setState({changeRemarks:e.target.value})}}/>			                      
+									   		</FormItem>
+									    </div>
+									    <div className="clearfix">
+									    	<Button type="primary" onClick={this.changeModify} style={{margin:"10px 95px"}}>保存</Button>
+									    	<Button onClick={this.modifyChangeCancel}>取消</Button>
+									    </div>
+									</div>
+		                        </div>
+			                </Spin>
+			            </Form >
+			        </Modal>
     	    </div>
 		)
 	}

+ 6 - 0
js/component/manageCenter/order/myOrder/servicesOrder/myService.jsx

@@ -296,6 +296,11 @@ const MyService=Form.create()(React.createClass({
     },
     componentWillMount() {
         this.loadData();
+        let data=localStorage.getItem('newData');
+    	if(data!='{}'&&data){
+    		var newData = JSON.parse(data);
+    		this.tableRowClick(newData);
+    	};
     },
     tableRowClick(record, index) {
     	this.state.userDetaile=true;
@@ -305,6 +310,7 @@ const MyService=Form.create()(React.createClass({
         	signBillState:true,
             showDesc: true
         });
+    	localStorage.setItem('newData','{}');
     },
     //列表各种骚操作
     operation(record,index) {

+ 6 - 0
js/component/manageCenter/order/settlementOrder/mySettlement/mySettlement.jsx

@@ -298,6 +298,11 @@ const MySettlement=Form.create()(React.createClass({
     },
     componentWillMount() {
         this.departmentList();
+        let data=localStorage.getItem('newData');
+    	if(data!='{}'&&data){
+    		var newData = JSON.parse(data);
+    		this.tableRowClick(newData);
+    	};
     },
     tableRowClick(record, index) {
     	this.state.userDetaile=true;
@@ -305,6 +310,7 @@ const MySettlement=Form.create()(React.createClass({
         this.setState({
             showDesc: true
         });
+        
     },
     closeDesc(e, s) {
     	this.state.userDetaile=false;

+ 299 - 2
js/component/manageCenter/order/settlementOrder/mySettlement/mySettlementDetaile.jsx

@@ -1,9 +1,9 @@
 import React from 'react';
-import { Icon, Table, Modal, message, Spin, Input, Select, Button, Form ,Upload,Popconfirm,AutoComplete} from 'antd';
+import { Icon, Table, Modal, message, Spin, Input, Select, Button, Form ,Upload,Popconfirm,AutoComplete,Radio} from 'antd';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 import '../../userMangagement.less';
-import {getApprovedState,getPaymentState,getOrderState,getProjectState,getOrderChannel,getOrderType,getTransactionProject,getTransactionChannel} from '../../../../tools.js';
+import {getApprovedState,getPaymentState,getOrderState,getProjectState,getOrderChannel,getChangeState,getOrderType,getTransactionProject,getTransactionChannel} from '../../../../tools.js';
 
 const MySettlementDetaile = Form.create()(React.createClass({
 	loadData(record) {
@@ -313,6 +313,166 @@ const MySettlementDetaile = Form.create()(React.createClass({
         	addnextVisible:true,
         });
     },
+    /* -----变更操作开始----- */
+	//新建变更
+	addChange(){
+		this.setState({
+			addChangeState:true,
+			stateAdd:1,
+			changeRemarks:''
+		})
+	},
+	//产看变更记录
+	lookChange(){
+		this.setState({
+			addChangeState:true,
+			stateAdd:0
+		})
+		this.lookChangeData()
+	},
+	//查看变更列表修改变更
+	modifyChangeCancel(){
+		this.setState({
+			modifyChangeState:false
+		})
+	},
+	//获取变更记录
+	lookChangeData(){
+		this.setState({
+			loading:true
+		});
+		 $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context +'/api/admin/order/viewOrderChange',
+            data: {
+            	orderNo:this.props.datauser.orderNo,
+            },
+            success: function (data) {
+                let theArr = [];
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    for (let i = 0; i < data.data.length; i++) {
+                        theArr = data.data;
+                    };
+                };
+                this.setState({
+                    changeHtml: theArr,
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+	},
+	//添加变更状态
+	addChangeCancel(){
+		this.setState({
+			addChangeState:false
+		})
+	},
+	//新建变更
+	subChangeState(e){
+		e.preventDefault();
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "POST",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +'/api/admin/order/addOrderChange' ,
+			data: {
+				orderNo:this.props.datauser.orderNo,
+				changeComment:this.state.changeRemarks
+			}
+		}).done(function(data) {
+			this.setState({
+				loading: false
+			});
+			if(!data.error.length) {
+				message.success('保存成功!');
+				this.addChangeCancel();
+				this.loaduser();
+			} else {
+				message.warning(data.error[0].message);
+			}
+		}.bind(this));
+	},
+	//查看修改变更
+	modifyChange(item){
+		this.setState({
+			modifyChangeState:true,
+			changePromoter:item.creater,
+			changeTime:item.createTime,
+			changeState:item.changeStatus,
+			changeRemarks:item.changeComment,
+			idt:item.changeId,
+			orderNot:item.orderNo
+		})
+	},
+	//删除变更
+	modifyDelete(item){
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "get",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +'/api/admin/order/deleteOrderChange' ,
+			data: {
+				changeId:item.changeId,
+			}
+		}).done(function(data) {
+			this.setState({
+				loading: false
+			});
+			if(!data.error.length) {
+				message.success('删除成功!');
+				this.lookChangeData();
+				this.loaduser()
+			} else {
+				message.warning(data.error[0].message);
+			}
+		}.bind(this));
+	},
+	//修改变更保存
+	changeModify(e){
+		e.preventDefault();
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "POST",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +'/api/admin/order/updateOrderChange' ,
+			data: {
+				changeId:this.state.idt,
+				changeStatus:this.state.changeState,
+				changeComment:this.state.changeRemarks
+			}
+		}).done(function(data) {
+			this.setState({
+				loading: false
+			});
+			if(!data.error.length) {
+				message.success('保存成功!');
+				this.modifyChangeCancel();
+				this.lookChangeData();
+				this.loaduser(this.props.datauser)
+			} else {
+				message.warning(data.error[0].message);
+			}
+		}.bind(this));
+	},
+	/*-----变更操作结束----*/
 	componentWillReceiveProps(nextProps) { //props改变时触发
 		this.state.visible = nextProps.showDesc;
 		if(nextProps.userDetaile && nextProps.showDesc ) {
@@ -326,6 +486,7 @@ const MySettlementDetaile = Form.create()(React.createClass({
 			labelCol: { span: 8 },
 			wrapperCol: { span: 14 },
 		};
+		const changeHtml=this.state.changeHtml ||[];
 		const editFws=this.state.editFw || [];
 		const orderDetaiel=this.state.orderList || [];
 		return(
@@ -419,6 +580,28 @@ const MySettlementDetaile = Form.create()(React.createClass({
 									        		<span>{orderDetaiel.orderRemarks}</span>
 										        </FormItem>
 									        </div>
+									        <div className='clearfix'>
+									        	<div className="changeStatusTxt">
+										        	<FormItem className="half-item"
+											            {...formItemLayout}
+											            style={{color:'red'}}
+											            label="变更状态" >
+										        		<span>{getChangeState(orderDetaiel.changeStatus)}</span>
+											        </FormItem>
+										        </div>
+										        <div className="clearfix">
+										        	<FormItem className="half-item"
+										            	{...formItemLayout}
+										           		label="变更操作" >
+									        			<Button onClick={this.addChange}>添加变更</Button>
+										        	</FormItem>
+										        	<FormItem className="half-item"
+										            	{...formItemLayout}
+										           		label="变更操作" >
+									        			<Button onClick={this.lookChange}>查看变更纪录</Button>
+										        	</FormItem>
+									            </div>
+									        </div>
 								        </div>
 			                        </div>
 			                        <div className='clearfix'>
@@ -559,6 +742,120 @@ const MySettlementDetaile = Form.create()(React.createClass({
 			                </Spin>
 			            </Form >
 			        </Modal>
+			        <Modal maskClosable={false} visible={this.state.addChangeState}
+                        onOk={this.addChangeCancel} onCancel={this.addChangeCancel}
+                        width='800px'
+                        title= {this.state.stateAdd?'添加变更':'查看变更记录'}                    
+                        footer=''
+                        className="admin-desc-content">
+			            <Form layout="horizontal" id="demand-form">
+			                <Spin spinning={this.state.loading}>
+		                        <div className="clearfix">
+                        	   		{this.state.stateAdd?<div className="clearfix">
+						                <FormItem
+									            labelCol={{ span: 4 }}
+									            wrapperCol={{ span: 16 }}
+									            label="变更说明" >
+								                <Input type="textarea" placeholder="请输入变更说明" rows={4}  value={this.state.changeRemarks} 
+									    				onChange={(e)=>{this.setState({changeRemarks:e.target.value})}}/>			                      
+									    </FormItem>
+									    <div className="clearfix">
+									    	<Button type="primary" onClick={this.subChangeState} style={{margin:"10px 50px 10px 128px"}}>保存</Button>
+									    	<Button onClick={this.addChangeCancel}>取消</Button>
+									    </div>
+				                    </div>:
+				                    <div>
+				                    	{
+				                    	changeHtml.length?changeHtml.map(function(item,index){
+				                    			return (<div className="changeBorder" key={index}>
+													    <FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更发起人" >                             
+													               <span>{item.creater}</span>
+													    </FormItem>
+													    <FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更申请时间" >                             
+													               <span>{item.createTime}</span>
+													    </FormItem>
+													    <div className='clearfix'>
+													    	<FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更状态" >                             
+													                <span>{getChangeState(item.changeStatus)}</span>
+													   		</FormItem>
+													   		<FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更操作" >                             
+													               <Button onClick={(e)=>{this.modifyChange(item)}}>修改</Button>
+													               <Button type="danger" onClick={(e)=>{this.modifyDelete(item)}}>删除</Button>
+													   		</FormItem>
+													    </div>
+													    <div className='clearfix changeRemark'>
+													    	<FormItem
+													            labelCol={{ span: 4 }}
+													            wrapperCol={{ span: 16 }}
+													            label="变更说明" >
+													    		<p>{item.changeComment}</p>
+													        </FormItem>
+													    </div>
+													</div>)
+				                    		},this):<p style={{textAlign:"center"}}>暂无变更记录</p>}
+								    </div>
+                        	   		}
+		                        </div>
+			                </Spin>
+			            </Form >
+			        </Modal>
+			        <Modal maskClosable={false} visible={this.state.modifyChangeState} 
+                        onOk={this.modifyChangeCancel} onCancel={this.modifyChangeCancel}
+                        width='600px'
+                        title= "修改变更  "                 
+                        footer=''
+                        className="admin-desc-content">
+			            <Form layout="horizontal" id="demand-form">
+			                <Spin spinning={this.state.loading}>
+		                        <div className="clearfix">
+		                       		<div className="clearfix">
+									    <FormItem className="half-item"
+									            {...formItemLayout}
+									            label="变更发起人" >                             
+									               <span>{this.state.changePromoter}</span>
+									    </FormItem>
+									    <FormItem className="half-item"
+									            {...formItemLayout}
+									            label="变更申请时间" >                             
+									               <span>{this.state.changeTime}</span>
+									    </FormItem>
+									    <div className='clearfix'>
+									    	<FormItem 
+					                             labelCol={{ span: 4 }}
+										         wrapperCol={{ span: 16 }}
+					                             label="变更状态" >  
+												<Radio.Group onChange={(e)=>{this.setState({changeState:e.target.value})}} value={this.state.changeState}>
+											        <Radio value={1}>变更中</Radio>
+											        <Radio value={2}>变更完成</Radio>
+											    </Radio.Group>    
+						                	</FormItem>
+									    </div>
+									    <div className='clearfix'>
+									    	<FormItem
+									            labelCol={{ span: 4 }}
+									            wrapperCol={{ span: 16 }}
+									            label="变更说明" >
+								                <Input type="textarea" placeholder="请输入变更说明" rows={4}  value={this.state.changeRemarks} 
+									    				onChange={(e)=>{this.setState({changeRemarks:e.target.value})}}/>			                      
+									   		</FormItem>
+									    </div>
+									    <div className="clearfix">
+									    	<Button type="primary" onClick={this.changeModify} style={{margin:"10px 95px"}}>保存</Button>
+									    	<Button onClick={this.modifyChangeCancel}>取消</Button>
+									    </div>
+									</div>
+		                        </div>
+			                </Spin>
+			            </Form >
+			        </Modal>
     	    </div>
 		)
 	}

+ 14 - 0
js/component/manageCenter/order/userMangagement.less

@@ -82,3 +82,17 @@
 .btnSave{text-align: center;margin-top: 10px;overflow: hidden;}
 .ant-calendar-picker{vertical-align: top;margin-top: 11px;}
 .ant-calendar-picker-input{height: 27px;}
+/*变更说明*/
+.changeBorder .half-item{
+    margin-bottom: 0;
+}
+.changeRemark {
+    border-bottom: 1px solid #ccc;
+}
+.changeRemark div{
+     margin-bottom: 0px;
+}
+.changeStatusTxt label{
+    color: red;
+}
+

+ 11 - 3
js/component/manageCenter/servicesManage/projectOrder/projectManagement/projectManage.jsx

@@ -386,9 +386,16 @@ const ProjectOrder=Form.create()(React.createClass({
 			}.bind(this));
     },
     componentWillMount() {
+        let data=localStorage.getItem('newData');
+    	if(data!='{}'&&data){
+    		var newData = JSON.parse(data);
+    		this.tableRowClick(newData);
+    	};
+    },
+    componentDidMount(){
+    	this.loadData();
+        this.departmentList();
     	this.category();
-        this.loadData();
-        this.departmentList()
     },
     //项目管理
     Knot(record){
@@ -463,6 +470,7 @@ const ProjectOrder=Form.create()(React.createClass({
         	newProject:false,
             showDesc: true
         });
+        localStorage.setItem('newData','{}');
     },
     reset() {
     	this.state.buyerNameSearch='';
@@ -570,7 +578,7 @@ const ProjectOrder=Form.create()(React.createClass({
 	                    datauser={this.state.datauser}
 	                    showDesc={this.state.showDesc}
 	                    closeDesc={this.closeDesc} />
-	            </div >
+	             </div >
 	             <Modal maskClosable={false} visible={this.state.signBillVisible}
                         onOk={this.noProject} onCancel={this.noProject}
                         width='800px'

+ 384 - 93
js/component/manageCenter/servicesManage/projectOrder/projectManagement/projectManageDetaile.jsx

@@ -1,10 +1,10 @@
 import React from 'react';
-import { Icon, Table, Modal, message, Spin, Input, Select, Button, Form ,Upload,Popconfirm,AutoComplete} from 'antd';
+import { Icon, Table, Modal, message, Spin, Input, Select, Button, Form ,Upload,Popconfirm,AutoComplete,Radio} from 'antd';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 import '../userMangagement.less';
 import {orderType} from '../../../../dataDic.js';
-import {getOrderType,getProjectState,getTaskStatus,getOrderChannel,getOrderState,getPaymentState ,getApprovedState} from '../../../../tools.js';
+import {getOrderType,getProjectState,getTaskStatus,getOrderChannel,getOrderState,getPaymentState ,getChangeState,getApprovedState} from '../../../../tools.js';
 
 const MySettlementDetaile = Form.create()(React.createClass({
 	loadData(record) {
@@ -186,13 +186,6 @@ const MySettlementDetaile = Form.create()(React.createClass({
             ],
 		};
 	},
-	seeOrder(){
-		this.seeOrderAjax();
-		this.setState({
-			seeState:true,
-			orderVisible:true
-		})
-	},
 	seeContract(){
 		this.contract();
 		this.setState({
@@ -234,14 +227,20 @@ const MySettlementDetaile = Form.create()(React.createClass({
         }.bind(this));  
     },
     //查看订单
-	seeOrderAjax(){
+	seeOrderAjax(data){
+		if(!data.orderNo){
+			return false;
+		};
+		this.setState({
+			loading:true
+		});
     	$.ajax({
             method: "get",
 			dataType: "json",
 			crossDomain: false,
 			url: globalConfig.context + '/api/admin/order/getServiceOrderDetail',
             data: {
-              orderNo: this.state.orderNok
+              orderNo:data.orderNo
             },
             success: function (data) {
                 let thisData = data.data;                
@@ -768,6 +767,167 @@ const MySettlementDetaile = Form.create()(React.createClass({
 		});
 		this.resetOrder();
 	},
+	/* -----变更操作开始----- */
+	//新建变更
+	addChange(){
+		this.setState({
+			addChangeState:true,
+			stateAdd:1,
+			changeRemarks:''
+		})
+	},
+	//产看变更记录
+	lookChange(){
+		this.setState({
+			addChangeState:true,
+			stateAdd:0
+		})
+		this.lookChangeData()
+	},
+	//查看变更列表修改变更
+	modifyChangeCancel(){
+		this.setState({
+			modifyChangeState:false
+		})
+	},
+	//获取变更记录
+	lookChangeData(){
+		this.setState({
+			loading:true
+		});
+		 $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context +'/api/admin/order/viewOrderChange',
+            data: {
+            	orderNo:this.props.datauser.orderNo,
+            },
+            success: function (data) {
+                let theArr = [];
+                if (!data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    for (let i = 0; i < data.data.length; i++) {
+                        theArr = data.data;
+                    };
+                };
+                this.setState({
+                    changeHtml: theArr,
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+	},
+	//添加变更状态
+	addChangeCancel(){
+		this.setState({
+			addChangeState:false
+		})
+	},
+	//新建变更
+	subChangeState(e){
+		e.preventDefault();
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "POST",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +'/api/admin/order/addOrderChange' ,
+			data: {
+				orderNo:this.props.datauser.orderNo,
+				changeComment:this.state.changeRemarks
+			}
+		}).done(function(data) {
+			this.setState({
+				loading: false
+			});
+			if(!data.error.length) {
+				message.success('保存成功!');
+				this.addChangeCancel();
+				this.seeOrderAjax(this.props.datauser);
+			} else {
+				message.warning(data.error[0].message);
+			}
+		}.bind(this));
+	},
+	//查看修改变更
+	modifyChange(item){
+		this.setState({
+			modifyChangeState:true,
+			changePromoter:item.creater,
+			changeTime:item.createTime,
+			changeState:item.changeStatus,
+			changeRemarks:item.changeComment,
+			idt:item.changeId,
+			orderNot:item.orderNo
+		})
+	},
+	//删除变更
+	modifyDelete(item){
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "get",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +'/api/admin/order/deleteOrderChange' ,
+			data: {
+				changeId:item.changeId,
+			}
+		}).done(function(data) {
+			this.setState({
+				loading: false
+			});
+			if(!data.error.length) {
+				message.success('删除成功!');
+				this.lookChangeData();
+				this.seeOrderAjax(this.props.datauser)
+			} else {
+				message.warning(data.error[0].message);
+			}
+		}.bind(this));
+	},
+	//修改变更保存
+	changeModify(e){
+		e.preventDefault();
+		this.setState({
+			loading: true
+		});
+		$.ajax({
+			method: "POST",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +'/api/admin/order/updateOrderChange' ,
+			data: {
+				changeId:this.state.idt,
+				changeStatus:this.state.changeState,
+				changeComment:this.state.changeRemarks
+			}
+		}).done(function(data) {
+			this.setState({
+				loading: false
+			});
+			if(!data.error.length) {
+				message.success('保存成功!');
+				this.modifyChangeCancel();
+				this.lookChangeData();
+				this.seeOrderAjax(this.props.datauser)
+			} else {
+				message.warning(data.error[0].message);
+			}
+		}.bind(this));
+	},
+	/*-----变更操作结束----*/
+	
 	tableRowClick(record, index) {
         this.setState({
         	addTaskState:false,
@@ -782,6 +942,7 @@ const MySettlementDetaile = Form.create()(React.createClass({
 			if(nextProps.datauser && nextProps.datauser.id ) {
 				this.loaduser(nextProps.datauser);
 				this.loadData(nextProps.datauser);
+				this.seeOrderAjax(nextProps.datauser);
 			}
 		}else{
 			this.setState({
@@ -815,6 +976,7 @@ const MySettlementDetaile = Form.create()(React.createClass({
 			   })
 			},
         };
+		const changeHtml=this.state.changeHtml ||[];
         const categoryList=this.props.categoryArr ||[];
         let departmentArr = this.props.departmentArr || [];
         const hasSelected = this.state.selectedRowKey.length > 0;
@@ -837,12 +999,11 @@ const MySettlementDetaile = Form.create()(React.createClass({
 		            <Form layout="horizontal" id="demand-form" style={{paddingBottom:'40px'}} onSubmit={this.handleSubmit}>
 		                <Spin spinning={this.state.loading}>
 	                        <div className="clearfix">
-	                            <div className="clearfix">
+	                        	<div className="clearfix">
 		                       		<FormItem className="half-item"
 			                            {...formItemLayout}
 			                            label="订单编号" >
 			                            <span>{orderDetaiel.orderNo}</span>
-			                            {orderDetaiel.orderNo&&!this.props.queryProject?<Button  onClick={this.seeOrder} style={{float:'right',fontSize:'12px'}}>查看订单</Button>:''}
 		                    		</FormItem>
 		                    		<FormItem className="half-item"
 			                            {...formItemLayout}
@@ -855,11 +1016,80 @@ const MySettlementDetaile = Form.create()(React.createClass({
 			                            <span>{orderDetaiel.buyerName}</span>
 			                            {orderDetaiel.buyerName&&<Button  onClick={this.seeContract} style={{float:'right',fontSize:'12px'}}>查看联系人</Button>}
 		                    		</FormItem>
-		                    		<FormItem className="half-item"
-			                            {...formItemLayout}
-			                            label="客户省份" >  
-			                            <span>{orderDetaiel.buyerProvince}</span>
-		                    		</FormItem>
+		                    		{orderDetaiel.orderNo&&<div>
+			                    		<FormItem className="half-item"
+				                            {...formItemLayout}
+				                            label="客户省份" >  
+				                            <span>{orderDetaiel.buyerProvince}</span>
+			                    		</FormItem>
+			                    		<FormItem className="half-item"
+				                            {...formItemLayout}
+				                            label="下单时间" >  
+				                            <span>{orderArr.createTime}</span>
+			                    		</FormItem>
+			                    		<FormItem className="half-item"
+				                            {...formItemLayout}
+				                            label="订单类型" >  
+				                            <span>{getOrderType(orderArr.orderType)}</span>
+			                    		</FormItem>
+			                    		<FormItem className="half-item"
+				                            {...formItemLayout}
+				                            label="订单渠道" >  
+				                            <span>{getOrderChannel(orderArr.orderChannel)}</span>
+			                    		</FormItem>
+			                    		<FormItem className="half-item"
+				                            {...formItemLayout}
+				                            label="订单状态" >  
+				                            <span>{getOrderState(orderArr.orderStatus)}</span>
+			                    		</FormItem>
+			                    		<FormItem className="half-item"
+				                            {...formItemLayout}
+				                            label="已收款项" >  
+				                            <span>{orderArr.actuallyTotalAmount+'万元'}</span>
+			                    		</FormItem>
+			                    		<FormItem className="half-item"
+				                            {...formItemLayout}
+				                            label="结算状态" >  
+				                            <span>{getPaymentState(orderArr.liquidationStatus)}</span>
+			                    		</FormItem>
+			                    		<FormItem className="half-item"
+				                            {...formItemLayout}
+				                            label="市价订单金额" >    
+			                            	<span>{orderArr.orderAmount+'万元'}</span>
+					                    </FormItem>
+					                    <FormItem className="half-item"
+				                            {...formItemLayout}
+				                            label="市价首款金额" >   
+				                            <span>{orderArr.firstPayment+'万元'}</span>
+					                    </FormItem>
+					                    <div className='clearfix'>
+								        	<FormItem className="half-item"
+					                            {...formItemLayout}
+					                            label="实签订单金额" >   
+					                            <span>{orderArr.signTotalAmount+'万元'}</span>
+				                    		</FormItem>
+				                    		<FormItem className="half-item"
+					                            {...formItemLayout}
+					                            label="实签首款金额" >   
+					                            <span>{orderArr.signFirstPayment+'万元'}</span>
+				                    		</FormItem>
+				                    		<FormItem className="half-item"
+					                            {...formItemLayout}
+					                            label="特批立项" >   
+					                            <span>{getApprovedState(orderArr.approval)}</span>
+				                    		</FormItem>
+					                        <div className='clearfix'>
+									        	<FormItem
+										            labelCol={{ span: 4 }}
+										            wrapperCol={{ span: 16 }}
+										            label="订单留言" >
+									        		<span>{orderArr.orderRemarks}</span>
+										        </FormItem>
+									        </div>
+								        </div>
+							        </div>}
+				                </div>
+	                            <div className="clearfix">
 		                    		<FormItem className="half-item"
 			                            {...formItemLayout}
 			                            label="项目类型" >  
@@ -922,6 +1152,28 @@ const MySettlementDetaile = Form.create()(React.createClass({
 			                            <span>{orderDetaiel.deleteSign==1?'作废':'未作废'}</span>
 		                    		</FormItem>
 	                    		</div>
+	                    		{orderDetaiel.orderNo&&<div className='clearfix'>
+						        	<div className="changeStatusTxt">
+							        	<FormItem className="half-item"
+								            {...formItemLayout}
+								            style={{color:'red'}}
+								            label="变更状态" >
+							        		<span>{getChangeState(orderArr.changeStatus)}</span>
+								        </FormItem>
+							        </div>
+							        <div className="clearfix">
+							        	{!this.props.queryProject&&<FormItem className="half-item"
+							            	{...formItemLayout}
+							           		label="变更操作" >
+						        			<Button onClick={this.addChange}>添加变更</Button>
+							        	</FormItem>}
+							        	<FormItem className="half-item"
+							            	{...formItemLayout}
+							           		label="变更操作" >
+						        			<Button onClick={this.lookChange}>查看变更纪录</Button>
+							        	</FormItem>
+						            </div>
+						        </div>}
 				                <div>
 				                	<span style={{marginLeft:'50px',fontSize:'20px'}}>项目任务</span>
 				                	{orderDetaiel.projectStatus<3&&!this.props.queryProject?<Button type='primary' onClick={this.addTask} style={{float:'right',marginRight:'100px'}}>添加任务</Button>:''}
@@ -1204,81 +1456,6 @@ const MySettlementDetaile = Form.create()(React.createClass({
 				                    <Spin spinning={this.state.loading}>
 				                        {this.state.seeState?
 				                        	<div className="clearfix">
-					                       		<FormItem className="half-item"
-						                            {...formItemLayout}
-						                            label="订单编号" >
-						                            <span>{orderArr.orderNo}</span>
-					                    		</FormItem>
-					                    		<FormItem className="half-item"
-						                            {...formItemLayout}
-						                            label="下单时间" >  
-						                            <span>{orderArr.createTime}</span>
-					                    		</FormItem>
-					                    		<FormItem className="half-item"
-						                            {...formItemLayout}
-						                            label="客户名称" >  
-						                            <span>{orderArr.buyerName}</span>
-					                    		</FormItem>
-					                    		<FormItem className="half-item"
-						                            {...formItemLayout}
-						                            label="订单类型" >  
-						                            <span>{getOrderType(orderArr.orderType)}</span>
-					                    		</FormItem>
-					                    		<FormItem className="half-item"
-						                            {...formItemLayout}
-						                            label="订单渠道" >  
-						                            <span>{getOrderChannel(orderArr.orderChannel)}</span>
-					                    		</FormItem>
-					                    		<FormItem className="half-item"
-						                            {...formItemLayout}
-						                            label="订单状态" >  
-						                            <span>{getOrderState(orderArr.orderStatus)}</span>
-					                    		</FormItem>
-					                    		<FormItem className="half-item"
-						                            {...formItemLayout}
-						                            label="已收款项" >  
-						                            <span>{orderArr.actuallyTotalAmount+'万元'}</span>
-					                    		</FormItem>
-					                    		<FormItem className="half-item"
-						                            {...formItemLayout}
-						                            label="结算状态" >  
-						                            <span>{getPaymentState(orderArr.liquidationStatus)}</span>
-					                    		</FormItem>
-					                    		<FormItem className="half-item"
-						                            {...formItemLayout}
-						                            label="市价订单金额" >    
-					                            	<span>{orderArr.orderAmount+'万元'}</span>
-							                    </FormItem>
-							                    <FormItem className="half-item"
-						                            {...formItemLayout}
-						                            label="市价首款金额" >   
-						                            <span>{orderArr.firstPayment+'万元'}</span>
-							                    </FormItem>
-							                    <div className='clearfix'>
-										        	<FormItem className="half-item"
-							                            {...formItemLayout}
-							                            label="实签订单金额" >   
-							                            <span>{orderArr.signTotalAmount+'万元'}</span>
-						                    		</FormItem>
-						                    		<FormItem className="half-item"
-							                            {...formItemLayout}
-							                            label="实签首款金额" >   
-							                            <span>{orderArr.signFirstPayment+'万元'}</span>
-						                    		</FormItem>
-						                    		<FormItem className="half-item"
-							                            {...formItemLayout}
-							                            label="特批立项" >   
-							                            <span>{getApprovedState(orderArr.approval)}</span>
-						                    		</FormItem>
-							                        <div className='clearfix'>
-											        	<FormItem
-												            labelCol={{ span: 4 }}
-												            wrapperCol={{ span: 16 }}
-												            label="订单留言" >
-											        		<span>{orderArr.orderRemarks}</span>
-												        </FormItem>
-											        </div>
-										        </div>
 				                        	</div>:
 				                             <Table columns={this.state.contractList}
 				                            dataSource={this.state.contractArr}
@@ -1289,6 +1466,120 @@ const MySettlementDetaile = Form.create()(React.createClass({
 			                </Spin>
 			            </Form>
 			    </Modal>
+			    <Modal maskClosable={false} visible={this.state.addChangeState}
+                        onOk={this.addChangeCancel} onCancel={this.addChangeCancel}
+                        width='800px'
+                        title= {this.state.stateAdd?'添加变更':'查看变更记录'}                    
+                        footer=''
+                        className="admin-desc-content">
+			            <Form layout="horizontal" id="demand-form">
+			                <Spin spinning={this.state.loading}>
+		                        <div className="clearfix">
+                        	   		{this.state.stateAdd?<div className="clearfix">
+						                <FormItem
+									            labelCol={{ span: 4 }}
+									            wrapperCol={{ span: 16 }}
+									            label="变更说明" >
+								                <Input type="textarea" placeholder="请输入变更说明" rows={4}  value={this.state.changeRemarks} 
+									    				onChange={(e)=>{this.setState({changeRemarks:e.target.value})}}/>			                      
+									    </FormItem>
+									    <div className="clearfix">
+									    	<Button type="primary" onClick={this.subChangeState} style={{margin:"10px 50px 10px 128px"}}>保存</Button>
+									    	<Button onClick={this.addChangeCancel}>取消</Button>
+									    </div>
+				                    </div>:
+				                    <div>
+				                    	{
+				                    	changeHtml.length?changeHtml.map(function(item,index){
+				                    			return (<div className="changeBorder" key={index}>
+													    <FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更发起人" >                             
+													               <span>{item.creater}</span>
+													    </FormItem>
+													    <FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更申请时间" >                             
+													               <span>{item.createTime}</span>
+													    </FormItem>
+													    <div className='clearfix'>
+													    	<FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更状态" >                             
+													                <span>{getChangeState(item.changeStatus)}</span>
+													   		</FormItem>
+													   		<FormItem className="half-item"
+													            {...formItemLayout}
+													            label="变更操作" >                             
+													               <Button onClick={(e)=>{this.modifyChange(item)}}>修改</Button>
+													               <Button type="danger" onClick={(e)=>{this.modifyDelete(item)}}>删除</Button>
+													   		</FormItem>
+													    </div>
+													    <div className='clearfix changeRemark'>
+													    	<FormItem
+													            labelCol={{ span: 4 }}
+													            wrapperCol={{ span: 16 }}
+													            label="变更说明" >
+													    		<p>{item.changeComment}</p>
+													        </FormItem>
+													    </div>
+													</div>)
+				                    		},this):<p style={{textAlign:"center"}}>暂无变更记录</p>}
+								    </div>
+                        	   		}
+		                        </div>
+			                </Spin>
+			            </Form >
+			        </Modal>
+			        <Modal maskClosable={false} visible={this.state.modifyChangeState} 
+                        onOk={this.modifyChangeCancel} onCancel={this.modifyChangeCancel}
+                        width='600px'
+                        title= "修改变更  "                 
+                        footer=''
+                        className="admin-desc-content">
+			            <Form layout="horizontal" id="demand-form">
+			                <Spin spinning={this.state.loading}>
+		                        <div className="clearfix">
+		                       		<div className="clearfix">
+									    <FormItem className="half-item"
+									            {...formItemLayout}
+									            label="变更发起人" >                             
+									               <span>{this.state.changePromoter}</span>
+									    </FormItem>
+									    <FormItem className="half-item"
+									            {...formItemLayout}
+									            label="变更申请时间" >                             
+									               <span>{this.state.changeTime}</span>
+									    </FormItem>
+									    <div className='clearfix'>
+									    	<FormItem 
+					                             labelCol={{ span: 4 }}
+										         wrapperCol={{ span: 16 }}
+					                             label="变更状态" >  
+												<Radio.Group onChange={(e)=>{this.setState({changeState:e.target.value})}} value={this.state.changeState}>
+											        <Radio value={1}>变更中</Radio>
+											        <Radio value={2}>变更完成</Radio>
+											    </Radio.Group>    
+						                	</FormItem>
+									    </div>
+									    <div className='clearfix'>
+									    	<FormItem
+									            labelCol={{ span: 4 }}
+									            wrapperCol={{ span: 16 }}
+									            label="变更说明" >
+								                <Input type="textarea" placeholder="请输入变更说明" rows={4}  value={this.state.changeRemarks} 
+									    				onChange={(e)=>{this.setState({changeRemarks:e.target.value})}}/>			                      
+									   		</FormItem>
+									    </div>
+									    <div className="clearfix">
+									    	<Button type="primary" onClick={this.changeModify} style={{margin:"10px 95px"}}>保存</Button>
+									    	<Button onClick={this.modifyChangeCancel}>取消</Button>
+									    </div>
+									</div>
+		                        </div>
+			                </Spin>
+			            </Form >
+			        </Modal>
     	    </div>
 		)
 	}

+ 25 - 24
js/component/manageCenter/topTab.jsx

@@ -45,30 +45,31 @@ const MessageModal = React.createClass({
                     dataIndex: 'noticeType',
                     key: 'noticeType',
                     render: (text, record) => {
-                        switch (text) {
-                            case 1:
-                                return <a href={globalConfig.context + "/admin/servicesManage/patent.html?rid=" + record.rid + "&uid=" + record.uid + "#comprehensive"}> {record.noticeTypeName} </a>;
-                            case 3:
-                                return <a href={globalConfig.context + "/admin/servicesManage/copyright.html?rid=" + record.rid + "&uid=" + record.uid + "#copyright"}> {record.noticeTypeName} </a>;
-                            case 2:
-                                return <a href={globalConfig.context + "/admin/servicesManage/highTech.html?rid=" + record.rid + "&uid=" + record.uid + "&year=" + record.year + "#highTechApply"}> {record.noticeTypeName} </a>;
-                            case 4:
-                                return <a href={globalConfig.context + "/admin/servicesManage/technology.html?rid=" + record.rid + "&uid=" + record.uid + "#applyManage"}> {record.noticeTypeName} </a>;
-                            case 5:
-                                return <a href={globalConfig.context + "/admin/userManage.html?id=" + record.uid + "&type=0" + (window.showUserList ? "#userList" : "#customerList")}> {record.noticeTypeName} </a>;
-                            case 6:
-                                return <a href={globalConfig.context + "/admin/userManage.html?id=" + record.uid + "&type=1" + (window.showOrgList ? "#orgList" : "#customerList")}> {record.noticeTypeName} </a >;
-                            case 7:
-                                return <a href={globalConfig.context + "/admin/servicesManage/contract.html?rid=" + record.rid + "&uid=" + record.uid + "#contract"}> {record.noticeTypeName} </a >;
-                            case 8:
-                                return <a href={globalConfig.context + "/admin/demand.html?rid=" + record.rid + "#techDemandUser"}> {record.noticeTypeName} </a >;
-                            case 9:
-                                return <a href={globalConfig.context + "/admin/demand.html?rid=" + record.rid + "&uid=" + record.uid + "#techDemandOrg"}> {record.noticeTypeName} </a >;
-                            case 10:
-                                return <a href={globalConfig.context + "/admin/achievement.html?rid=" + record.rid + "#orgTechAchievement"}> {record.noticeTypeName} </a >;
-                            case 11:
-                                return <a href={globalConfig.context + "/admin/achievement.html?rid=" + record.rid + "#userTechAchievement"}> {record.noticeTypeName} </a >;                           
-                        }
+//                      switch (text) {
+//                          case 1:
+//                              return <a href={globalConfig.context + "/admin/servicesManage/patent.html?rid=" + record.rid + "&uid=" + record.uid + "#comprehensive"}> {record.noticeTypeName} </a>;
+//                          case 3:
+//                              return <a href={globalConfig.context + "/admin/servicesManage/copyright.html?rid=" + record.rid + "&uid=" + record.uid + "#copyright"}> {record.noticeTypeName} </a>;
+//                          case 2:
+//                              return <a href={globalConfig.context + "/admin/servicesManage/highTech.html?rid=" + record.rid + "&uid=" + record.uid + "&year=" + record.year + "#highTechApply"}> {record.noticeTypeName} </a>;
+//                          case 4:
+//                              return <a href={globalConfig.context + "/admin/servicesManage/technology.html?rid=" + record.rid + "&uid=" + record.uid + "#applyManage"}> {record.noticeTypeName} </a>;
+//                          case 5:
+//                              return <a href={globalConfig.context + "/admin/userManage.html?id=" + record.uid + "&type=0" + (window.showUserList ? "#userList" : "#customerList")}> {record.noticeTypeName} </a>;
+//                          case 6:
+//                              return <a href={globalConfig.context + "/admin/userManage.html?id=" + record.uid + "&type=1" + (window.showOrgList ? "#orgList" : "#customerList")}> {record.noticeTypeName} </a >;
+//                          case 7:
+//                              return <a href={globalConfig.context + "/admin/servicesManage/contract.html?rid=" + record.rid + "&uid=" + record.uid + "#contract"}> {record.noticeTypeName} </a >;
+//                          case 8:
+//                              return <a href={globalConfig.context + "/admin/demand.html?rid=" + record.rid + "#techDemandUser"}> {record.noticeTypeName} </a >;
+//                          case 9:
+//                              return <a href={globalConfig.context + "/admin/demand.html?rid=" + record.rid + "&uid=" + record.uid + "#techDemandOrg"}> {record.noticeTypeName} </a >;
+//                          case 10:
+//                              return <a href={globalConfig.context + "/admin/achievement.html?rid=" + record.rid + "#orgTechAchievement"}> {record.noticeTypeName} </a >;
+//                          case 11:
+//                              return <a href={globalConfig.context + "/admin/achievement.html?rid=" + record.rid + "#userTechAchievement"}> {record.noticeTypeName} </a >;                           
+//                      }
+					return (<span>{record.noticeTypeName}</span>)
                     }
                 }, {
                     title: '时间',

+ 15 - 1
js/component/tools.js

@@ -69,7 +69,8 @@ import {
     orderType, orderStage, orderState,paymentState, orderChannel, approvedState, lock,paymentMethod,transactionChannel,projectState,transactionProject,
     client,
     stick,
-    taskStatus
+    taskStatus,
+    changeState
 } from './dataDic.js';
 
 import { provinceList} from './NewDicProvinceList.js';
@@ -1315,4 +1316,17 @@ module.exports = {
             return theType;
         }
 	},
+	//变更状态
+	getChangeState:function(e){
+   		if (e||e==0) {
+   			let str=e.toString()
+            let theType = '';
+            changeState.map(function (item) {
+                if (item.value == str) {
+                    theType = item.key;
+                };
+            });
+            return theType;
+        }
+	}
 }

+ 1 - 0
webpack.config.js

@@ -294,6 +294,7 @@ module.exports = (function () {
     staticHost = staticHost + '/' + version + '/';
     theme['@icon-url'] = '"' + staticHost + 'css/iconfont/iconfont"'
     return {
+    	//devtool:"source-map",
         entry: isWatch ? entries.watch : entries.prod,
         output: {
             path: path.resolve(__dirname, './build/' + argv.env.deploy + '/' + version),