From 801770456ae3750a44e0989b0025a98ccbad24e6 Mon Sep 17 00:00:00 2001
From: bob <bob.zhang@highdatas.com>
Date: 星期四, 13 八月 2020 17:13:53 +0800
Subject: [PATCH] 最新

---
 src/components/popup/newProject.vue |  551 ++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 506 insertions(+), 45 deletions(-)

diff --git a/src/components/popup/newProject.vue b/src/components/popup/newProject.vue
index d93a4e0..cfbd6f7 100644
--- a/src/components/popup/newProject.vue
+++ b/src/components/popup/newProject.vue
@@ -5,14 +5,39 @@
        <el-step title="鏂规璁捐" description="纭珛鏂规"></el-step>
        <el-step title="棰勮" description=""></el-step>
      </el-steps>
-     <div style="height: 55vh; padding:0px; box-sizing:boder-box; overflow: auto;">
+     <div style="height: 400px; padding:0px; box-sizing:boder-box; overflow: auto;">
        <div v-if="add_Step == 0" style="width: 100%; height: 100%;" align="center">
         <div style="padding-top: 5%; box-sizing:boder-box">
-					<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
-					  <el-form-item label="椤圭洰鍚嶇О:" prop="name" style="width: 50%;">
-					    <el-input v-model="ruleForm.name"></el-input>
+					<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm">
+						<el-form-item label="椤圭洰鍙�:" prop="code" style="width: 50%;">
+						  <el-input v-model="ruleForm.code"></el-input>
+						</el-form-item>
+					  <el-form-item label="椤圭洰鍚嶇О:" style="width: 50%;">
+					    <el-input v-model="ruleForm.name" disabled></el-input>
 					  </el-form-item>
-					  <el-form-item label="鐮旂┒鐩殑:" prop="objective" style="width: 50%;">
+						<el-form-item label="鐮旂┒绫诲瀷鍒嗙被:" prop="type_array" style="width: 50%;">
+							<el-select @change="typeArrayChange_" multiple  v-model="ruleForm.type_array" style="width: 100%;">
+								<el-option
+									v-for="(item,k) in options_type"
+									:key="k"
+									:label="item"
+									:value="item"
+								></el-option>
+							</el-select>
+						</el-form-item>
+						
+						<el-form-item label="鐮旂┒鐩殑鍒嗙被:" prop="order_type_array" style="width: 50%;">
+							<el-select @change="order_typeArrayChange_" multiple  v-model="ruleForm.order_type_array" style="width: 100%;">
+								<el-option
+									v-for="(item,k) in options_order_type"
+									:key="k"
+									:label="item"
+									:value="item"
+								></el-option>
+							</el-select>
+						</el-form-item>
+						
+					  <!-- <el-form-item label="鐮旂┒鐩殑:" prop="objective" style="width: 50%;">
 					    <el-select v-model="ruleForm.objective" placeholder="璇烽�夋嫨" style="width: 100%;">
 					      <el-option
 					      	v-for="item in options_objectives"
@@ -21,9 +46,10 @@
 					      	:value="item.value"
 					      ></el-option>
 					    </el-select>
-					  </el-form-item>
+					  </el-form-item> -->
 						
 					  <el-form-item label="璧锋鏃堕棿:" prop="items" style="width: 50%;">
+								<!-- :picker-options="pickerOptions01" -->
 							<el-date-picker
 								v-model="ruleForm.items"
 								type="daterange"
@@ -35,17 +61,50 @@
 							</el-date-picker>
 					  </el-form-item>
 						
-					  <el-form-item label="椤圭洰鎻忚堪:" prop="desp" style="width: 50%;">
-					    <el-input type="textarea" v-model="ruleForm.desp"></el-input>
+					  <el-form-item label="椤圭洰寮曡繘浜�:" prop="leadUserList" style="width: 50%;">
+							<el-cascader
+									style="width: 100%;"
+							    :options="options_leadUserId"
+							    :props="props_"
+									@change="leadUserIdChange"
+									v-model="ruleForm.leadUserList"
+							    clearable>
+							</el-cascader>
 					  </el-form-item>
+						
+						<el-form-item label="椤圭洰璐熻矗浜�:" style="width: 50%;">
+							<el-cascader
+								style="width: 100%;"
+								:options="options_charge"
+								@change="chargeArrayChange_"
+								:props="{ expandTrigger: 'hover' }"
+								
+								v-model="ruleForm.charge_id_array"
+								placeholder="璇烽�夋嫨璐熻矗浜�"
+								>
+							</el-cascader>
+							<!-- <el-select @change="chargeArrayChange_" v-model="ruleForm.charge_id_array" style="width: 100%;">
+								<el-option
+									v-for="(item,k) in options_charge"
+									:key="k"
+									:label="item.label"
+									:value="item.value"
+								></el-option>
+							</el-select> -->
+						</el-form-item>
+						
+						<el-form-item label="椤圭洰鎻忚堪:" prop="desc" style="width: 50%;">
+						  <el-input type="textarea" v-model="ruleForm.desc"></el-input>
+						</el-form-item>
 					</el-form>
         </div>
       </div>
       <div v-if="add_Step == 1" style="width: 100%; height: 100%;" align="center">
-				<substep ref="substep_zj" v-bind:xmId="xmId"></substep>
+				<substep ref="substep_zj" v-bind:xmId="xmId" v-bind:totalItems="totalItems"></substep>
       </div>
       <div v-if="add_Step == 2" style="width: 100%; height: 100%;" align="center">
-        <substepReadOnly v-bind:form_objs="form_objs" v-bind:showData_="showData_"></substepReadOnly>
+        <!-- <substepReadOnly v-bind:form_objs="form_objs" v-bind:showData_="showData_"></substepReadOnly> -->
+        <substepReadOnly v-bind:xmId="xmId"></substepReadOnly>
       </div>
     </div>
 		 
@@ -74,17 +133,108 @@
 		substepReadOnly
 	},
   data () {
+		var validateTtems = (rule, value, callback) => {
+					if (value && value.length > 1) {
+						let a1 = new Date(value[0]);
+						let a2 = new Date(this.ruleForm.items[1]);
+						
+						
+						if (this.rowData.beginDate && !this.rowData.endDate) {
+							let bb0 = new Date(this.rowData.beginDate);
+							let bb0str = this.$moment(bb0).format('YYYY-MM-DD');
+							if (a1 > bb0) {
+								callback(new Error('寮�濮嬫椂闂村簲灏忎簬' + bb0str));
+							}
+							else if (a2 < bb0) {
+								callback(new Error('缁撴潫鏃堕棿搴斿ぇ浜�' + bb0str));
+							}
+						}
+						
+						else if (this.rowData.beginDate && this.rowData.endDate) {
+							let bb0 = new Date(this.rowData.beginDate);
+							let bb1 = new Date(this.rowData.endDate);
+							let bb0str = this.$moment(bb0).format('YYYY-MM-DD');
+							let bb1str = this.$moment(bb1).format('YYYY-MM-DD');
+							if (a1 > bb0) {
+								callback(new Error('寮�濮嬫椂闂村簲灏忎簬' + bb0str));
+							}
+							else if (a2 < bb1) {
+								callback(new Error('缁撴潫鏃堕棿搴斿ぇ浜�' + bb1str));
+							}
+						}
+						callback();
+					}
+					else {
+						callback(new Error('閫夋嫨寮�濮嬫椂闂村拰缁撴潫鏃堕棿'));
+					}
+		  };
+		var validateOrder_type_array = (rule, value, callback) => {
+			if (this.isRules) {
+				if (value && value.length > 0) {
+					callback();
+				}
+				else {
+					callback(new Error('涓嶈兘涓虹┖'));
+				}
+			}
+			else {
+				callback();
+			}
+		};
+		var validateType_array = (rule, value, callback) => {
+			if (this.isRules) {
+				if (value && value.length > 0) {
+					callback();
+				}
+				else {
+					callback(new Error('涓嶈兘涓虹┖'));
+				}
+			}
+			else {
+				callback();
+			}
+		};
+			
     return {
-      add_Step: 0,
+		props_: {multiple: true},
+		userId: undefined,
+		assign: undefined,
+		add_Step: 0,
 			loading_nextStep: false,
 			nextStepName: "涓嬩竴姝�",
 			loading_cancel: false,
 			cancelName: "鍏� 闂�",
 			
+			//disabled_code: true,
 			ruleForm: {},
 			xmId: null,
+			totalItems: null,
 			showData_: null,
 			form_objs: null,
+			parttimeLists: null,
+			
+			options_leadUserId: [],
+			options_charge: [],
+			options_type:[
+				"Health technology assessment (HTA)",
+				"Clinical practice guideline (CPG)",
+				"Evidence mapping",
+				"Overview of review",
+				"Scoping review",
+				"Rapid review",
+				"Systematic review",
+				"Rapid review",
+				"Randomised controlled trial (RCT)",
+				"Other"
+			],
+			options_order_type: [
+				"娌荤枟",
+				"棰勯槻",
+				"璇婃柇涓庨壌鍒瘖鏂�",
+				"棰勫悗",
+				"鐥呭洜",
+				"鐤剧梾绛涙煡"
+			],
 			options_objectives: [
 			  {
 			    value: "骞查鎬х郴缁熻瘎浠�",
@@ -103,11 +253,35 @@
 				  label: "鐩稿叧鎬х郴缁熻瘎浠�"
 				}
 			],
+			isRules: false,
 			rules: {
+				code: [
+				  {
+				    required: true,
+				    message: "涓嶈兘涓虹┖",
+				    trigger: ["change", "blur"]
+				  }
+				],
 				name: [
 				  {
 				    required: true,
 				    message: "涓嶈兘涓虹┖",
+				    trigger: ["change", "blur"]
+				  }
+				],
+				type_array: [
+				  {
+				    required: true,
+				    //message: "涓嶈兘涓虹┖",
+						validator: validateType_array,
+				    trigger: ["change", "blur"]
+				  }
+				],
+				order_type_array: [
+				  {
+				    required: true,
+				    //message: "涓嶈兘涓虹┖",
+						validator: validateOrder_type_array,
 				    trigger: ["change", "blur"]
 				  }
 				],
@@ -121,9 +295,10 @@
 				items: [
 					{
 						type: "array",
+						validator: validateTtems,
 						required: true,
-						message: "涓嶈兘涓虹┖",
-						trigger: ["change", "blur"]
+						//message: "涓嶈兘涓虹┖",
+						trigger: ["change"]
 					}
 				]
 				
@@ -131,13 +306,133 @@
 			
 		}
   },
+	
+	created() {
+	  this.getUsers();
+		this.getUserCharge();
+	},
 mounted() {
 	if(this.rowData.id) {
-		this.ruleForm = this.rowData;
 		this.xmId = this.rowData.id;
+		let url = "/api/scheme/get/" + this.rowData.id;
+		this.$axios.get(url).then(data_ => {
+			window.console.log(data_);
+			let selected_ = data_.data.data;
+			if (selected_) {
+				this.ruleForm = {
+					id:selected_.id,
+					desc:selected_.desc,
+					name: selected_.name,
+					beginDate: selected_.beginDate,
+					endDate: selected_.endDate,
+					objective:selected_.reseachType,
+					leadUserId: selected_.leadUserId,
+					leadUserList: selected_.leadUserList,
+					code: selected_.code,
+					type: selected_.type,
+					orderType: selected_.orderType,
+					chargeId: selected_.chargeId,
+					charge_id_array: selected_.chargeId ? selected_.chargeId.split(";") : [],
+					type_array: selected_.type ? selected_.type.split(";") : [],
+					order_type_array: selected_.orderType ? selected_.orderType.split(";") : [],
+					items:[this.$moment(selected_.startTime).format('YYYY-MM-DD'),this.$moment(selected_.endTime).format('YYYY-MM-DD')]
+				}
+			}
+			//this.$refs.ruleForm.clearValidate();
+		}).catch(error =>{
+				
+		})
+		
 	}
+	else {
+		this.ruleForm = this.rowData;
+	}
+	
+	//this.userId = localStorage.getItem('userId');
+	//this.assign = localStorage.getItem('assign');
+	
+	this.userId = this.$cookies.get('userId');
+	this.assign = this.$cookies.get('assign');
 },
   methods:{
+		getUsers() {
+		  let me = this;
+		  let url = "/api/sysRoleMapping/all";
+		  this.$axios.get(url)
+		  .then(data_ => {
+		    let list = data_.data.data;
+		    let parId = "";
+		    let obj = {};
+		    let result = [];
+		
+		    list.map(el => {
+		        obj[el.id] = el;
+		    })
+		    for(let i=0, len = list.length; i < len; i++) {
+		        let id = list[i].roleName;
+		        //璁剧疆鏄剧ず瀛楁
+		        list[i].value = list[i].id;
+		        list[i].label = list[i].name;
+		
+		        if(id == parId || !id) {
+		            if(!obj[list[i].id].children) {
+		              obj[list[i].id].children = [];
+		            }
+		            result.push(list[i]);
+		            continue;
+		        }
+		        if(obj[id].children) {
+		            obj[id].children.push(list[i]);
+		        } else {
+		            obj[id].children = [list[i]];
+		        }
+		    }
+			
+		    me.options_leadUserId = result;
+		  }).catch(error =>{
+				
+		  })
+		},
+		
+		//options_charge
+		getUserCharge() {
+			let me = this;
+			let url = "/api/sysRoleMapping/detail";
+			this.$axios.get(url)
+			.then(data_ => {
+				let list = data_.data.data;
+				let parId = "";
+				let obj = {};
+				let result = [];
+		
+				list.map(el => {
+						obj[el.id] = el;
+				})
+				for(let i=0, len = list.length; i < len; i++) {
+						let id = list[i].roleName;
+						//璁剧疆鏄剧ず瀛楁
+						list[i].value = list[i].id;
+						list[i].label = list[i].name;
+		
+						if(id == parId || !id) {
+								if(!obj[list[i].id].children) {
+									obj[list[i].id].children = [];
+								}
+								result.push(list[i]);
+								continue;
+						}
+						if(obj[id].children) {
+								obj[id].children.push(list[i]);
+						} else {
+								obj[id].children = [list[i]];
+						}
+				}
+			
+				me.options_charge = result;
+		
+			}).catch(error =>{
+			})
+		},
 		Cancel() {
 			this.add_Step = 0;
 			this.nextStepName = "涓嬩竴姝�";
@@ -159,18 +454,19 @@
 		
 		NextStep() {
 			if (this.add_Step == 0) {
+				this.isRules = true;
 				let is_null1 = false;
 				this.$refs['ruleForm'].validate((valid) => {
 				  if (valid) {
 				    is_null1 = true;
 				  } else {
-				    console.log('error submit!!');
 				    return false;
 				  }
 				});
 				if(is_null1) {
+					this.isRules = false;
+				  this.loading_nextStep = true;
 					this.saveStep1();
-				  this.loading_save = true;
 				}
 				
 			//	this.xmId = "c3b7f55c800e4726b53fdc18dd994603";
@@ -187,39 +483,103 @@
 		},
 		
 		saveStep1() {
+			let me = this;
+			//me.disabled_code = true;
 			let ruleForm_ = this.ruleForm;
 			var items1 = this.$moment(ruleForm_.items[0]).format('YYYY-MM-DD');
 			var items2 = this.$moment(ruleForm_.items[1]).format('YYYY-MM-DD');
 			//let items1 = new Date(ruleForm_.items[0]).Format("yyyy-MM-dd").toLocaleString();
 		//	let items2 = new Date(ruleForm_.items[1]).Format("yyyy-MM-dd").toLocaleString();
+			let listId = "";
+			let params_ = {
+				reseachType: ruleForm_.objective,
+				code: ruleForm_.code,
+				name: ruleForm_.name,
+				startTime: items1,
+				endTime: items2,
+				id: me.xmId,
+				desc:ruleForm_.desc,
+				userId: me.userId,
+				leadUserId: ruleForm_.leadUserId,
+				type: ruleForm_.type,
+				orderType: ruleForm_.orderType,
+				chargeId: ruleForm_.chargeId
+			};
 			
-			let url = "/api/scheme/addOrUpdate";
-			this.$axios.get(url,{
-			  params: {
-			    reseachType: ruleForm_.objective,
-			    name: ruleForm_.name,
-					startTime: items1,
-					endTime: items2,
-					id: this.xmId,
-					desp:ruleForm_.desp
-			  }
-			}).then(data_ => {
-			  console.log(data_);
-				this.xmId = data_.data.data;
-				
-				this.add_Step = 1;
-			}).catch(error =>{
-			    console.log(error);
-			})
+			if (this.rowData.parentid) {
+				listId = this.rowData.parentid;
+			}
+			
+			if (!me.xmId && this.rowData.parentid) {
+				let url_ = "/api/scheme/addOrUpdate";
+				this.$axios.post(url_,
+				  params_
+				).then(data_ => {
+					if(data_.data.success) {
+						me.xmId = data_.data.data;
+						me.totalItems = ruleForm_.items;
+						let url = "/api/topic/exam/" + listId;
+						me.$axios.get(url,{
+							params: {
+								projectId: me.xmId
+							}
+						}).then(data_1 => {
+							if(data_1.data.success) {
+								me.loading_nextStep = false;
+								me.add_Step = 1;
+							}else {
+								me.$message({message:'鍒涘缓椤圭洰澶辫触', type: 'warning'});
+							}
+						}).catch(error => {
+						})
+					}
+					else {
+						me.loading_nextStep = false;
+						if (data_.data.status == "2004") {
+							//me.disabled_code = false;
+							me.$message({message:"椤圭洰鍙峰凡瀛樺湪", type: 'warning'});
+						}
+						else {
+							me.$message({message:data_.data.message, type: 'warning'});
+						}
+					}
+					
+				}).catch(error =>{
+				})
+			}
+			else {
+				let url_ = "/api/scheme/addOrUpdate";
+				this.$axios.post(url_,
+				  params_
+				).then(data_ => {
+					if(data_.data.success) {
+						me.xmId = data_.data.data;
+						me.totalItems = ruleForm_.items;
+						me.add_Step = 1;
+						me.loading_nextStep = false;
+					}
+					else {
+						me.loading_nextStep = false;
+						if (data_.data.status == "2004") {
+							me.$message({message:"椤圭洰鍙峰凡瀛樺湪", type: 'warning'});
+						}
+						else {
+							me.$message({message:data_.data.message, type: 'warning'});
+						}
+					}
+				}).catch(error =>{
+				})
+			}
 		},
 		
 		saveStep2() {
 			this.showData_ = this.$refs.substep_zj.showData;
 			this.form_objs = this.$refs.substep_zj.form_;
+			this.parttimeLists = this.$refs.substep_zj.parttimeList_;
 			
 			let form_array = [];
 			let is_null1 = true;
-			
+			let me = this;
 			for (let itm_k in this.showData_) {
 				let ref_k = "ref_" + itm_k;
 				this.$refs.substep_zj.$refs[ref_k].validate((valid) => {
@@ -233,6 +593,11 @@
 				if (!form_obj.mustAttach) {
 					form_obj.mustAttach = false;
 				}
+				/* if (form_obj.items_fz.length > 0) {
+					form_obj.startTime = form_obj.items_fz[0];
+					form_obj.endTime = form_obj.items_fz[1];
+				} */
+				
 				if (form_obj.startTime) {
 					form_obj.startTime = this.$moment(form_obj.startTime).format('YYYY-MM-DD');
 			//		form_obj.startTime = new Date(form_obj.startTime).Format("yyyy-MM-dd").toLocaleString();
@@ -241,6 +606,27 @@
 					form_obj.endTime = this.$moment(form_obj.endTime).format('YYYY-MM-DD');
 				//	form_obj.endTime = new Date(form_obj.endTime).Format("yyyy-MM-dd").toLocaleString();
 				}
+				
+				if (form_obj.createTime) {
+					form_obj.createTime = this.$moment(form_obj.createTime).format('YYYY-MM-DD');
+				}
+				
+				/* if (form_obj.parttimeUser && form_obj.parttimeUser.length>0) {
+					let parttimeUser_ = "";
+					for (let i = 0; i<form_obj.parttimeUser.length; i++) {
+						if (parttimeUser_ == "") {
+							parttimeUser_ = form_obj.parttimeUser[i];
+						}
+						else {
+							parttimeUser_ = parttimeUser_ + ";" + form_obj.parttimeUser[i];
+						}
+					}
+					
+					form_obj.parttimeUser = parttimeUser_;
+				} */
+				
+				//form_obj.parttimeList = this.parttimeLists[itm_k];
+				
 				if (form_obj.userIds) {
 					let leng = form_obj.userIds.length;
 					
@@ -255,21 +641,32 @@
 			}
 			
 			if (is_null1) {
-				let datas = "?datas=" + encodeURI(JSON.stringify(form_array));
+				this.loading_nextStep = true;
+			//	let datas = "?datas=" + encodeURI(JSON.stringify(form_array));
 				let url = "/api/detail/updates";
-				this.$axios.get(url + datas).then(data_ => {
-					console.log(data_);
-					
-					this.add_Step = 2;
-					this.nextStepName = "瀹� 鎴�";
+				this.$axios.post(url,
+				{
+					schemeId: me.xmId,
+					datas: form_array
+				}).then(data_ => {
+					window.console.log(data_);
+					me.loading_nextStep = false;
+					if (data_.data.success) {
+						me.add_Step = 2;
+						me.nextStepName = "瀹� 鎴�";
+					}
+					else {
+						me.$message.error(data_.data.message);
+					}
 				}).catch(error =>{
-						console.log(error);
+					me.$message.error("鎺ュ彛閿欒");
+					me.loading_nextStep = false;
 				})
 			}
 		},
 		saveStep3() {
-			let url = "/api/scheme/working/" + this.ruleForm.id;
-			this.$axios.get(url + datas).then(data_ => {
+			let url = "/api/scheme/working/" + this.xmId;
+			this.$axios.get(url).then(data_ => {
 				if(data_.data.success) {
 					this.$message('椤圭洰鍚姩鎴愬姛');
 					this.Cancel();
@@ -278,9 +675,73 @@
 					this.$message({message:'椤圭洰鍚姩澶辫触', type: 'warning'});
 				}
 			}).catch(error =>{
-					console.log(error);
 			})
 		},
+		
+		leadUserIdChange(val) {
+			let aa = val;
+			let s_ = "";
+			for (let i=0; i<val.length; i++) {
+				if (i == 0) {
+					let val_ = val[i];
+					s_ = val_[val_.length - 1];
+				}
+				else {
+					let val_ = val[i];
+					s_ = s_ + ";" + val_[val_.length - 1];
+				}
+			}
+			this.ruleForm.leadUserId = s_;
+		},
+		
+		typeArrayChange_(val) {
+			if (val.length > 0) {
+			  for (let i = 0; i< val.length; i++) {
+					if (i == 0) {
+					  this.ruleForm.type = val[i];
+					}
+					else {
+						this.ruleForm.type += ";" + val[i];
+					}
+			  }
+			}
+			else {
+				this.ruleForm.type = "";
+			}
+		},
+		
+		order_typeArrayChange_(val) {
+			if (val.length > 0) {
+			  for (let i = 0; i< val.length; i++) {
+					if (i == 0) {
+					  this.ruleForm.orderType = val[i];
+					}
+					else {
+						this.ruleForm.orderType += ";" + val[i];
+					}
+			  }
+			}
+			else {
+				this.ruleForm.orderType = "";
+			}
+		},
+		
+		chargeArrayChange_(val) {
+			if (val.length > 0) {
+			  for (let i = 0; i< val.length; i++) {
+					if (i == 0) {
+					  this.ruleForm.chargeId = val[i];
+					}
+					else {
+						this.ruleForm.chargeId += ";" + val[i];
+					}
+			  }
+			}
+			else {
+				this.ruleForm.chargeId = "";
+			}
+		},
+		
   }
 }
 </script>

--
Gitblit v1.8.0