zhangyanpeng
2020-05-07 dca74c76b85c5ece7b87beae9d9f921883b55564
src/components/popup/newProject.vue
@@ -5,7 +5,7 @@
       <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">
@@ -24,6 +24,7 @@
                 </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 +36,29 @@
                     </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="desp" 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="项目描述:" prop="desp" style="width: 50%;">
                    <el-input type="textarea" v-model="ruleForm.desp"></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,7 +87,40 @@
      substepReadOnly
   },
  data () {
      var validateTtems = (rule, value, callback) => {
               if (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();
               }
        };
    return {
      props_: {multiple: true},
      userId: undefined,
      assign: undefined,
      add_Step: 0,
@@ -85,8 +131,12 @@
         
         ruleForm: {},
         xmId: null,
         totalItems: null,
         showData_: null,
         form_objs: null,
         parttimeLists: null,
         options_leadUserId: [],
         options_objectives: [
           {
             value: "干预性系统评价",
@@ -123,9 +173,10 @@
            items: [
               {
                  type: "array",
                  validator: validateTtems,
                  required: true,
                  message: "不能为空",
                  trigger: ["change", "blur"]
                  //message: "不能为空",
                  trigger: ["change"]
               }
            ]
            
@@ -133,15 +184,84 @@
         
      }
  },
   created() {
     this.getUsers();
   },
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;
         this.ruleForm = {
            id:selected_.id,
            desp:selected_.desp,
            name: selected_.name,
            beginDate: selected_.beginDate,
            endDate: selected_.endDate,
            objective:selected_.reseachType,
            leadUserId: selected_.leadUserId,
            leadUserList: selected_.leadUserList,
            items:[this.$moment(selected_.startTime).format('YYYY-MM-DD'),this.$moment(selected_.endTime).format('YYYY-MM-DD')]
         }
      }).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 =>{
        })
      },
      Cancel() {
         this.add_Step = 0;
         this.nextStepName = "下一步";
@@ -172,8 +292,8 @@
              }
            });
            if(is_null1) {
              this.loading_nextStep = true;
               this.saveStep1();
              this.loading_save = true;
            }
            
         //   this.xmId = "c3b7f55c800e4726b53fdc18dd994603";
@@ -190,35 +310,70 @@
      },
      
      saveStep1() {
         let me = this;
         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,
            name: ruleForm_.name,
            startTime: items1,
            endTime: items2,
            id: me.xmId,
            desp:ruleForm_.desp,
            userId: me.userId,
            leadUserId: ruleForm_.leadUserId
         };
         
         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.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.get(url_,{
              params: params_
            }).then(data_ => {
               me.xmId = data_.data.data;
               me.totalItems = ruleForm_.items;
               let url = "/api/topic/exam/" + listId;
               this.$axios.get(url,{
                  params: {
                     projectId: me.xmId
                  }
               }).then(data_1 => {
                  if(data_1.data.success) {
                     me.add_Step = 1;
                     me.loading_nextStep = false;
                  }else {
                     this.$message({message:'创建项目失败', type: 'warning'});
                  }
               }).catch(error => {
               })
            }).catch(error =>{
            })
         }
         else {
            let url_ = "/api/scheme/addOrUpdate";
            this.$axios.get(url_,{
              params: params_
            }).then(data_ => {
               me.xmId = data_.data.data;
               me.totalItems = ruleForm_.items;
               me.add_Step = 1;
               me.loading_nextStep = false;
            }).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;
@@ -236,6 +391,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();
@@ -244,6 +404,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;
               
@@ -261,12 +442,10 @@
            let datas = "?datas=" + encodeURI(JSON.stringify(form_array));
            let url = "/api/detail/updates";
            this.$axios.get(url + datas).then(data_ => {
               console.log(data_);
               window.console.log(data_);
               this.add_Step = 2;
               this.nextStepName = "完 成";
            }).catch(error =>{
                  console.log(error);
            })
         }
      },
@@ -281,9 +460,25 @@
               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_;
      },
  }
}
</script>