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 | 544 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 498 insertions(+), 46 deletions(-) diff --git a/src/components/popup/newProject.vue b/src/components/popup/newProject.vue index 7d042cf..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: 45vh; 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,9 +61,41 @@ </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> @@ -45,7 +103,8 @@ <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,7 +133,70 @@ 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 { + props_: {multiple: true}, userId: undefined, assign: undefined, add_Step: 0, @@ -83,11 +205,36 @@ 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: "骞查鎬х郴缁熻瘎浠�", @@ -106,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"] } ], @@ -124,9 +295,10 @@ items: [ { type: "array", + validator: validateTtems, required: true, - message: "涓嶈兘涓虹┖", - trigger: ["change", "blur"] + //message: "涓嶈兘涓虹┖", + trigger: ["change"] } ] @@ -134,15 +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 =>{ + + }) + } - this.userId = localStorage.getItem('userId'); - this.assign = localStorage.getItem('assign'); + 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 = "涓嬩竴姝�"; @@ -164,6 +454,7 @@ NextStep() { if (this.add_Step == 0) { + this.isRules = true; let is_null1 = false; this.$refs['ruleForm'].validate((valid) => { if (valid) { @@ -173,8 +464,9 @@ } }); if(is_null1) { + this.isRules = false; + this.loading_nextStep = true; this.saveStep1(); - this.loading_save = true; } // this.xmId = "c3b7f55c800e4726b53fdc18dd994603"; @@ -191,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"; - let me = this; - this.$axios.get(url,{ - params: { - reseachType: ruleForm_.objective, - name: ruleForm_.name, - startTime: items1, - endTime: items2, - id: me.xmId, - desp:ruleForm_.desp, - userId: me.userId - } - }).then(data_ => { - me.xmId = data_.data.data; - me.totalItems = ruleForm_.items; - me.add_Step = 1; - }).catch(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) => { @@ -237,10 +593,10 @@ if (!form_obj.mustAttach) { form_obj.mustAttach = false; } - if (form_obj.items.length > 0) { - form_obj.startTime = form_obj.items[0]; - form_obj.endTime = form_obj.items[1]; - } + /* 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'); @@ -250,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; @@ -264,15 +641,26 @@ } 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; }) } }, @@ -287,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