huangfh 3 vuotta sitten
vanhempi
commit
b7b62cce97

+ 17 - 6
src/components/tree-tree/main.vue

@@ -19,7 +19,7 @@
     <div class="flex flex-d-c flex-center" style="width:50px;">
       <div><el-button @click="addTree" size="mini" icon="el-icon-arrow-right"></el-button></div>
       <div><el-button @click="delTree" size="mini" icon="el-icon-arrow-left"></el-button></div>
-      
+
     </div>
     <el-card class="box-card flex1">
       <div slot="header" class="clearfix">
@@ -59,7 +59,7 @@ export default {
     }
   },
   computed: {
-    
+
   },
   data(){
     return{
@@ -119,8 +119,8 @@ export default {
         this.$refs.rightTree.remove(node);
         this.$refs.leftTree.setChecked(node.id,false);
       })
-      this.rightNum = this.$refs.rightTree.getCheckedKeys().length;
-      this.leftNum = this.$refs.leftTree.getCheckedKeys().length;
+      this.getRightNum();
+      this.getLeftNum();
 
       this.$emit('onDelTree',delNodes);
     },
@@ -132,10 +132,10 @@ export default {
     checkChange(treeName){
       switch (treeName) {
         case 'leftTree':
-          this.leftNum = this.$refs.leftTree.getCheckedKeys().length;
+          this.getLeftNum();
           break;
         case 'rightTree':
-          this.rightNum = this.$refs.rightTree.getCheckedKeys().length;
+          this.getRightNum();
           break;
       }
     },
@@ -187,6 +187,17 @@ export default {
 
     checkChang(){
       this.$emit('onCheckAll');
+    },
+
+    getLeftNum(){
+      let checkNum = this.$refs.leftTree.getCheckedKeys().length;
+      let halfNum = this.$refs.leftTree.getHalfCheckedKeys().length;
+      this.leftNum = checkNum+halfNum;
+    },
+    getRightNum(){
+      let checkNum = this.$refs.rightTree.getCheckedKeys().length;
+      let halfNum = this.$refs.rightTree.getHalfCheckedKeys().length;
+      this.rightNum = checkNum+halfNum;
     }
   }
 };

+ 125 - 80
src/views/manager/contractinfo/detail.vue

@@ -95,7 +95,7 @@
                         <el-button size="small" type="primary">点击上传</el-button>
                       </el-upload>
                     </template>
-                    
+
                   </el-form-item>
                 </el-col>
               </el-row>
@@ -108,75 +108,71 @@
                 <el-col :span="12">
                 </el-col>
               </el-row>
+              <el-divider></el-divider>
+              <el-row :gutter="20">
+                <el-col :span="12">
+                  <div>组卷归档默认信息</div>
+                    <el-row>
+                      <el-col :span="12">
+                        <el-form-item label="立卷人" prop="filer">
+                          <el-input v-model="contractForm.filer"></el-input>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :span="12">
+                        <el-form-item label="保管期限" prop="storagePeriod">
+                          <el-select v-model="contractForm.storagePeriod" placeholder="请选择" class="w-100p">
+                            <el-option label="10年"  value="10年"></el-option>
+                            <el-option label="30年"  value="30年"></el-option>
+                            <el-option label="永久"  value="永久"></el-option>
+                          </el-select>
+                        </el-form-item>
+                      </el-col>
+                    </el-row>
+                    <el-row>
+                      <el-col :span="12">
+                        <el-form-item label="审核人" prop="reviewer">
+                          <el-input v-model="contractForm.reviewer"></el-input>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :span="12">
+                        <el-form-item label="保管密级" prop="securityLevel">
+                          <el-select v-model="contractForm.securityLevel" placeholder="请选择" class="w-100p">
+                            <el-option label="机密"  value="机密"></el-option>
+                            <el-option label="绝密"  value="绝密"></el-option>
+                            <el-option label="秘密"  value="秘密"></el-option>
+                            <el-option label="公开"  value="公开"></el-option>
+                          </el-select>
+                        </el-form-item>
+                      </el-col>
+                    </el-row>
+                    <el-row>
+                      <el-col :span="12">
+                        <el-form-item label="档案前缀" prop="prefix">
+                          <el-input v-model="contractForm.prefix"></el-input>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :span="12">
+
+                      </el-col>
+                    </el-row>
+                </el-col>
+                <el-col :span="12">
+                  <div>附加信息</div>
+                    <el-form-item label="项目地址" prop="projectPlace">
+                      <!-- <el-input v-model="contractForm.projectPlace" placeholder="点击后面地图选取地址">
+                        <el-button slot="append" icon="el-icon-map-location" @click="mapDialogVisible = true"></el-button>
+                      </el-input> -->
+                      <avue-input-map  :params="params" placeholder="请选择地图" v-model="flageData" @change="mapChange"></avue-input-map>
+                    </el-form-item>
+                    <el-form-item label="起始桩号" prop="startStation">
+                      <el-input v-model="contractForm.startStation"></el-input>
+                    </el-form-item>
+                    <el-form-item label="结束桩号" prop="endStation">
+                      <el-input v-model="contractForm.endStation"></el-input>
+                    </el-form-item>
+                </el-col>
+              </el-row>
             </el-form>
-            <el-divider></el-divider>
-            <el-row :gutter="20">
-              <el-col :span="12">
-                <div>组卷归档默认信息</div>
-                <el-form label-width="90px">
-                  <el-row>
-                    <el-col :span="12">
-                      <el-form-item label="立卷人" prop="filer">
-                        <el-input v-model="contractForm.filer"></el-input>
-                      </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                      <el-form-item label="保管期限" prop="storagePeriod">
-                        <el-select v-model="contractForm.storagePeriod" placeholder="请选择" class="w-100p">
-                          <el-option label="10年"  value="10年"></el-option>
-                          <el-option label="30年"  value="30年"></el-option>
-                          <el-option label="永久"  value="永久"></el-option>
-                        </el-select>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <el-row>
-                    <el-col :span="12">
-                      <el-form-item label="审核人" prop="reviewer">
-                        <el-input v-model="contractForm.reviewer"></el-input>
-                      </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                      <el-form-item label="保管密级" prop="securityLevel">
-                        <el-select v-model="contractForm.securityLevel" placeholder="请选择" class="w-100p">
-                          <el-option label="机密"  value="机密"></el-option>
-                          <el-option label="绝密"  value="绝密"></el-option>
-                          <el-option label="秘密"  value="秘密"></el-option>
-                          <el-option label="公开"  value="公开"></el-option>
-                        </el-select>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <el-row>
-                    <el-col :span="12">
-                      <el-form-item label="档案前缀" prop="prefix">
-                        <el-input v-model="contractForm.prefix"></el-input>
-                      </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                      
-                    </el-col>
-                  </el-row>
-                </el-form>
-              </el-col>
-              <el-col :span="12">
-                <div>附加信息</div>
-                <el-form label-width="90px">
-                  <el-form-item label="项目地址" prop="projectPlace">
-                    <!-- <el-input v-model="contractForm.projectPlace" placeholder="点击后面地图选取地址">
-                      <el-button slot="append" icon="el-icon-map-location" @click="mapDialogVisible = true"></el-button>
-                    </el-input> -->
-                    <avue-input-map  :params="params" placeholder="请选择地图" v-model="flageData" ></avue-input-map>
-                  </el-form-item>
-                  <el-form-item label="起始桩号" prop="startStation">
-                    <el-input v-model="contractForm.startStation"></el-input>
-                  </el-form-item>
-                  <el-form-item label="结束桩号" prop="endStation">
-                    <el-input v-model="contractForm.endStation"></el-input>
-                  </el-form-item>
-                </el-form>
-              </el-col>
-            </el-row>
           </div>
         </el-tab-pane>
         <el-tab-pane label="分配WBS" name="2">
@@ -240,9 +236,9 @@
       <div class="flex jc-sb">
         <div></div>
         <div>
-          <el-button type="success" size="medium" @click="saveQuit">保存并退出</el-button>
-          <el-button type="info" size="medium" v-if="activeType != 1" @click="saveNext('p')">保存并返回上一步</el-button>
-          <el-button type="info" size="medium" v-if="activeType != 3" @click="saveNext('n')">保存并进入下一步</el-button>
+          <el-button type="success" size="medium" :loading="btnLoad" @click="saveQuit">保存并退出</el-button>
+          <el-button type="info" size="medium" :loading="btnLoad" v-if="activeType != 1" @click="saveNext('p')">保存并返回上一步</el-button>
+          <el-button type="info" size="medium" :loading="btnLoad" v-if="activeType != 3" @click="saveNext('n')">保存并进入下一步</el-button>
         </div>
       </div>
     </div>
@@ -270,6 +266,14 @@
       treeTree
     },
     data() {
+      var checkPlace = (rule, value, callback) => {
+        if (this.flageData && this.flageData.length >2 && this.flageData[2]) {
+          callback();
+        } else {
+          callback(new Error('请选取项目地址'));
+        }
+      };
+
       return {
         activeType:'1',
         typeChang:{
@@ -277,6 +281,7 @@
           2:false,
           3:false,
         },
+        btnLoad:false,
 
         pid:'',
         cid:'',
@@ -287,11 +292,37 @@
         headers:{},
         isBackShow:false,
 
-        contractForm:{},
+        contractForm:{
+          contractAmount:0
+        },
         contractRules:{
           contractName: [
             { required: true, message: '请输入合同段名称', trigger: 'blur' },
           ],
+          contractType: [
+            { required: true, message: '请选择合同段类型', trigger: 'change' }
+          ],
+          contractNumber: [
+            { required: true, message: '请输入合同段编号', trigger: 'blur' },
+          ],
+          contractorUnitName: [
+            { required: true, message: '请输入业主单位名称', trigger: 'blur' },
+          ],
+          constructionUnitName: [
+            { required: true, message: '请输入施工单位名称', trigger: 'blur' },
+          ],
+          supervisionUnitName: [
+            { required: true, message: '请输入监理单位名称', trigger: 'blur' },
+          ],
+          startStation: [
+            { required: true, message: '请输入起始桩号', trigger: 'blur' },
+          ],
+          endStation: [
+            { required: true, message: '请输入结束桩号', trigger: 'blur' },
+          ],
+          projectPlace: [
+            { required: true,validator: checkPlace, trigger: 'blur' }
+          ]
         },
 
         mapDialogVisible:false,
@@ -379,7 +410,7 @@
         }
 
         this.getContractTypeList();
-        this.setHeaders(); 
+        this.setHeaders();
       },
       beforeLeave(activeName, oldActiveName){
         return new Promise((resolve,reject)=>{
@@ -458,6 +489,7 @@
       },
 
       async saveQuit(){
+        this.btnLoad = true;
         if(this.activeType == '1'){
           await this.savecontract();
         }else if(this.activeType == '2'){
@@ -467,15 +499,23 @@
           type: "success",
           message: "保存成功!"
         });
+        this.btnLoad = false;
         this.$router.go(-1);
       },
       async saveNext(type){
-        if(this.activeType == '1'){
-          let res = await this.savecontract();
-          this.contractForm.id = res.data.data.id;
-        }else if(this.activeType == '2'){
-          await this.saveWbsTree();
+        this.btnLoad = true;
+        try {
+          if(this.activeType == '1'){
+            let res = await this.savecontract();
+            this.contractForm.id = res.data.data.id;
+          }else if(this.activeType == '2'){
+            await this.saveWbsTree();
+          }
+        } catch (error) {
+          this.btnLoad = false;
+          return;
         }
+
         this.$message({
           type: "success",
           message: "保存成功!"
@@ -489,6 +529,7 @@
         }
 
         this.activeType = num.toString();
+        this.btnLoad = false;
       },
 
       savecontract(){
@@ -631,7 +672,7 @@
             message: "成功复制在剪贴板!"
           });
         })
- 
+
       },
 
       resetPassword(row){
@@ -729,6 +770,10 @@
 
      treeChang(){
       this.typeChang[2] = true;
+    },
+
+    mapChange(){
+      this.$refs['contractForm'].validateField('projectPlace');
     }
 
     }

+ 44 - 7
src/views/manager/projectinfo/detail.vue

@@ -61,7 +61,7 @@
         <el-tab-pane label="分配WBS模版" name="2">
           <div>
             <div class="text-align-c">
-              <el-radio-group v-model="templateType">
+              <el-radio-group v-model="templateType" @change="templateTypeChange">
                 <el-radio :label="2">试验</el-radio>
                 <el-radio :label="1">质检</el-radio>
               </el-radio-group>
@@ -136,9 +136,9 @@
       <div class="flex jc-sb">
         <div></div>
         <div>
-          <el-button type="success" size="medium" @click="saveQuit">保存并退出</el-button>
-          <el-button type="info" size="medium" v-if="activeType != 1" @click="saveNext('p')">保存并返回上一步</el-button>
-          <el-button type="info" size="medium" v-if="activeType != 3" @click="saveNext('n')">保存并进入下一步</el-button>
+          <el-button type="success" size="medium" :loading="btnLoad" @click="saveQuit">保存并退出</el-button>
+          <el-button type="info" size="medium" :loading="btnLoad" v-if="activeType != 1" @click="saveNext('p')">保存并返回上一步</el-button>
+          <el-button type="info" size="medium" :loading="btnLoad" v-if="activeType != 3" @click="saveNext('n')">保存并进入下一步</el-button>
         </div>
       </div>
     </div>
@@ -167,6 +167,7 @@
           2:false,
           3:false,
         },
+        btnLoad:false,
 
         id:'',
         highwayGradeList:[],
@@ -234,7 +235,7 @@
               this.$refs.treetotree.setRightTree(projectTree.data.data);
             }
           }
-          
+
           this.getTreeList();
         }
       }
@@ -316,6 +317,7 @@
       },
 
      async saveQuit(){
+       this.btnLoad = true;
        if(this.activeType == '1'){
           await this.saveProject();
         }else if(this.activeType == '2'){
@@ -325,9 +327,11 @@
           type: "success",
           message: "保存成功!"
         });
+        this.btnLoad = false;
         this.$router.go(-1);
      },
      async saveNext(type){
+        this.btnLoad = true;
         if(this.activeType == '1'){
           let res = await this.saveProject();
           this.projectForm.id = res.data.data.id;
@@ -345,8 +349,9 @@
         }else if(type == 'p'){
             num--;
         }
-        
+
         this.activeType = num.toString();
+        this.btnLoad = false;
      },
 
      saveProject(){
@@ -544,6 +549,38 @@
 
       treeChang(){
         this.typeChang[2] = true;
+      },
+
+      templateTypeChange(){
+        findWbsTreeList(this.templateType).then((res)=>{
+          let arr = [{
+            label:'公有库',
+            options:[],
+          },
+          {
+            label:'私有库',
+            options:[],
+          }];
+          let data = res.data.data;
+          if(data.wbsInfos && data.wbsInfos.length){
+            data.wbsInfos.forEach((element)=>{
+              element.label = element.wbsName;
+              element.value = element.id;
+            })
+            arr[0].options = data.wbsInfos;
+          }
+          if(data.wbsTreePrivates && data.wbsTreePrivates.length){
+            data.wbsTreePrivates.forEach((element)=>{
+              element.label = element.projectName;
+              element.value = element.wbsId +','+ element.projectId;
+            })
+            arr[1].options = data.wbsTreePrivates;
+          }
+          this.treeList = arr;
+        })
+
+        this.wbsId = '';
+        this.leftTreeData = [];
       }
 
     }
@@ -551,5 +588,5 @@
 </script>
 
 <style scoped lang="scss">
-  
+
 </style>