bob
2020-08-13 801770456ae3750a44e0989b0025a98ccbad24e6
src/components/popup/newProject.vue
@@ -8,11 +8,36 @@
     <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,7 +46,7 @@
                        :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" -->
@@ -36,7 +61,7 @@
                     </el-date-picker>
                 </el-form-item>
                  
                 <el-form-item label="项目引进人:" prop="desp" style="width: 50%;">
                 <el-form-item label="项目引进人:" prop="leadUserList" style="width: 50%;">
                     <el-cascader
                           style="width: 100%;"
                         :options="options_leadUserId"
@@ -47,8 +72,29 @@
                     </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 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>
@@ -88,7 +134,7 @@
   },
  data () {
      var validateTtems = (rule, value, callback) => {
               if (value.length > 1) {
               if (value && value.length > 1) {
                  let a1 = new Date(value[0]);
                  let a2 = new Date(this.ruleForm.items[1]);
                  
@@ -118,7 +164,37 @@
                  }
                  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,
@@ -129,6 +205,7 @@
         loading_cancel: false,
         cancelName: "关 闭",
         
         //disabled_code: true,
         ruleForm: {},
         xmId: null,
         totalItems: null,
@@ -137,6 +214,27 @@
         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: "干预性系统评价",
@@ -155,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"]
              }
            ],
@@ -187,6 +309,7 @@
   
   created() {
     this.getUsers();
      this.getUserCharge();
   },
mounted() {
   if(this.rowData.id) {
@@ -195,18 +318,27 @@
      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')]
         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 =>{
            
      })
@@ -262,6 +394,45 @@
        })
      },
      
      //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 = "下一步";
@@ -283,6 +454,7 @@
      
      NextStep() {
         if (this.add_Step == 0) {
            this.isRules = true;
            let is_null1 = false;
            this.$refs['ruleForm'].validate((valid) => {
              if (valid) {
@@ -292,6 +464,7 @@
              }
            });
            if(is_null1) {
               this.isRules = false;
              this.loading_nextStep = true;
               this.saveStep1();
            }
@@ -311,6 +484,7 @@
      
      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');
@@ -319,13 +493,17 @@
         let listId = "";
         let params_ = {
            reseachType: ruleForm_.objective,
            code: ruleForm_.code,
            name: ruleForm_.name,
            startTime: items1,
            endTime: items2,
            id: me.xmId,
            desp:ruleForm_.desp,
            desc:ruleForm_.desc,
            userId: me.userId,
            leadUserId: ruleForm_.leadUserId
            leadUserId: ruleForm_.leadUserId,
            type: ruleForm_.type,
            orderType: ruleForm_.orderType,
            chargeId: ruleForm_.chargeId
         };
         
         if (this.rowData.parentid) {
@@ -334,37 +512,61 @@
         
         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
            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'});
                  }
               }).then(data_1 => {
                  if(data_1.data.success) {
                     me.add_Step = 1;
                     me.loading_nextStep = false;
                  }else {
                     this.$message({message:'创建项目失败', type: 'warning'});
                  else {
                     me.$message({message:data_.data.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;
            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 =>{
            })
         }
@@ -377,7 +579,7 @@
         
         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) => {
@@ -439,13 +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_ => {
            this.$axios.post(url,
            {
               schemeId: me.xmId,
               datas: form_array
            }).then(data_ => {
               window.console.log(data_);
               this.add_Step = 2;
               this.nextStepName = "完 成";
               me.loading_nextStep = false;
               if (data_.data.success) {
                  me.add_Step = 2;
                  me.nextStepName = "完 成";
               }
               else {
                  me.$message.error(data_.data.message);
               }
            }).catch(error =>{
               me.$message.error("接口错误");
               me.loading_nextStep = false;
            })
         }
      },
@@ -479,6 +694,54 @@
         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>