Browse Source

问题修复

gangyj 3 years ago
parent
commit
ca04e50380

+ 22 - 0
src/api/manager/projectinfo.js

@@ -30,6 +30,18 @@ export const getProjectDeatil = (id) => {
   })
 }
 
+export const getProjectDeatilWbsId = (id,ReferenceWbsTemplateId,ReferenceWbsTemplateType) => {
+  return request({
+    url: '/api/blade-manager/projectInfo/detail2',
+    method: 'get',
+    params: {
+      id,
+      ReferenceWbsTemplateId,
+      ReferenceWbsTemplateType
+    }
+  })
+}
+
 export const findWbsTreeList = (type) => {
   return request({
     url: '/api/blade-manager/projectInfo/findWbsTreeList',
@@ -59,3 +71,13 @@ export const submitWbsTreeInProject = (obj) => {
   })
 }
 
+export const removeProject = (ids) => {
+  return request({
+    url: '/api/blade-manager/projectInfo/remove',
+    method: 'post',
+    params: {
+      ids
+    }
+  })
+}
+

+ 18 - 2
src/views/manager/contractinfo/detail.vue

@@ -111,7 +111,7 @@
               <el-divider></el-divider>
               <el-row :gutter="20">
                 <el-col :span="12">
-                  <div>组卷归档默认信息</div>
+                  <div class="head-font">组卷归档默认信息</div>
                     <el-row>
                       <el-col :span="12">
                         <el-form-item label="立卷人" prop="filer">
@@ -157,7 +157,7 @@
                     </el-row>
                 </el-col>
                 <el-col :span="12">
-                  <div>附加信息</div>
+                  <div class="head-font">附加信息</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>
@@ -289,6 +289,12 @@
         }
         callback();
       };
+      var checkIsNumber = (rule, value, callback) => {
+        if (value != Number(value)) {
+          callback(new Error('金额必须是数字'));
+        }
+        callback();
+      };
 
       return {
         activeType:'1',
@@ -344,6 +350,9 @@
           ],
           actualEndTime:[
             {validator: checkDate2,trigger: 'blur'},
+          ],
+          contractAmount:[
+            {validator: checkIsNumber,trigger: 'blur'}
           ]
         },
 
@@ -501,6 +510,9 @@
             if(this.contractForm.projectPlace){
               this.flageData = ['','',this.contractForm.projectPlace]
             }
+            if(Number(this.contractForm.contractAmount) < 0){
+              this.contractForm.contractAmount = 0;
+            }
             this.$nextTick(()=>{
               this.typeChang['1'] = false;
             })
@@ -807,4 +819,8 @@
     width: 100%;
     height: 300px;
   }
+  .head-font{
+    font-size: 20px;
+    font-weight:bold;
+  }
 </style>

+ 98 - 23
src/views/manager/projectinfo/detail.vue

@@ -37,7 +37,7 @@
                   <el-form-item label="项目概况" prop="projectGist">
                     <el-input v-model="projectForm.projectGist" type="textarea" :rows="7"></el-input>
                   </el-form-item>
-                  <el-form-item label="内置里程">
+                  <el-form-item label="内置里程" prop="projectAllMileage">
                     <el-radio-group v-model="radioType">
                       <el-radio-button label="总里程"></el-radio-button>
                       <el-radio-button label="路面"></el-radio-button>
@@ -146,7 +146,8 @@
 </template>
 
 <script>
-  import {submitProject,getProjectDeatil,findWbsTreeList,findProjectTree,submitWbsTreeInProject} from "@/api/manager/projectinfo";
+  import {submitProject,getProjectDeatil,findWbsTreeList,findProjectTree,
+          submitWbsTreeInProject,getProjectDeatilWbsId} from "@/api/manager/projectinfo";
   import {findContractByProjectId,saveUserInfoByProject,findUserListByCondition,
           findUserByName,removeUsersByIds} from "@/api/manager/contractinfo";
   import {getRoleTree} from "@/api/system/role";
@@ -176,6 +177,31 @@
         }
         callback();
       };
+      var checkIsNumber = (rule, value, callback) => {
+        if (value != Number(value)) {
+          callback(new Error('金额必须是数字'));
+        }
+        callback();
+      };
+      var checkMileage = (rule, value, callback) => {
+        if (this.projectForm.projectPavement || this.projectForm.projectSubgrade) {
+          if(this.projectForm.projectPavement){
+            if(this.projectForm.projectPavement > value){
+              callback(new Error('总里程必须是最大的'));
+            }
+          }else if(this.projectForm.projectSubgrade){
+            if(this.projectForm.projectSubgrade > value){
+              callback(new Error('总里程必须是最大的'));
+            }
+          }
+          if(this.projectForm.projectPavement && this.projectForm.projectSubgrade){
+            if((this.projectForm.projectPavement + this.projectForm.projectSubgrade) > value){
+              callback(new Error('总里程必须大于两项总和'));
+            }
+          }
+        }
+        callback();
+      };
 
       return {
         activeType:'1',
@@ -205,6 +231,12 @@
           ],
           actualEndTime:[
             {validator: checkDate2,trigger: 'blur'}
+          ],
+          estimatedAmount:[
+            {validator: checkIsNumber,trigger: 'blur'}
+          ],
+          projectAllMileage:[
+            {validator: checkMileage,trigger: 'blur'}
           ]
         },
 
@@ -238,32 +270,14 @@
         },
         deep: true
       },
-      activeType: async function (newValue) {
+      activeType: function (newValue) {
         if(newValue == '3'){
           this.getContractList();
           this.getRoleList();
           this.getUserByCondition();
           this.getUserByName();
         }else if(newValue == '2'){
-          let refId = this.projectForm.referenceWbsTemplateId;
-          if(refId && refId>0){
-            //有引用id,回显
-            this.wbsId = refId;
-            this.selected = true;
-            let projectTree = await findProjectTree(this.projectForm.id,refId)
-            if(Array.isArray(projectTree.data.data)){
-              this.templateType = projectTree.data.data[0].wbsType;
-              let leftData = await getAlltree(this.userInfo.tenant_id,'1',refId)
-              if(Array.isArray(leftData.data.data)){
-                this.leftTreeData = leftData.data.data;
-              }else{
-                this.leftTreeData = [];
-              }
-              this.$refs.treetotree.setRightTree(projectTree.data.data);
-            }
-          }
-
-          this.getTreeList();
+          this.treeInit();
         }
       }
     },
@@ -337,9 +351,19 @@
      getProjectDeatil(){
         getProjectDeatil(this.id).then((res)=>{
           this.projectForm = res.data.data;
+          if(Number(this.projectForm.estimatedAmount) < 0){
+            this.projectForm.estimatedAmount = 0
+          }
           this.$nextTick(()=>{
             this.typeChang['1'] = false;
           })
+          let templateType = 'public';
+          if(this.projectForm.referenceWbsTemplateType){
+            templateType = this.projectForm.referenceWbsTemplateType;
+          }
+          getProjectDeatilWbsId(this.id,this.projectForm.referenceWbsTemplateId,templateType).then((res)=>{
+            this.projectForm.wbsType = res.data.data.wbsType;
+          })
         })
       },
 
@@ -399,6 +423,7 @@
       obj = {
         wbsId:this.wbsId,
         projectId:this.projectForm.id,
+        wbsType:this.templateType,
         wbsTreeIds:ids
       }
       if(this.wbsId.toString().indexOf(',') >= 0){
@@ -407,7 +432,7 @@
           let ids = this.wbsId.toString().split(',');
           obj.wbsId = ids[0];
           obj.referencePrivateWbsProjectId = ids[1];
-          // obj.primaryKeyId = this.leftTreeData[0].primaryKeyId;
+          obj.primaryKeyId = this.leftTreeData[0].primaryKeyId;
         }else{
           //公有库
           obj.referenceType =  "public";
@@ -620,6 +645,56 @@
 
         this.wbsId = '';
         this.leftTreeData = [];
+      },
+      async treeInit(){
+        let refId = this.projectForm.referenceWbsTemplateId;
+          if(refId && refId>0){
+            //有引用id,回显
+            this.selected = true;
+            this.templateType = this.projectForm.wbsType;
+            await this.getTreeList();
+            let priv={};
+            if(this.projectForm.referenceWbsTemplateType=='private'){
+              //私有
+              let list = this.treeList[1].options;
+              for (let i = 0; i < list.length; i++) {
+                if(list[i].pkeyId == refId){
+                  this.wbsId = list[i].wbsId +','+ list[i].projectId;
+                  priv.wbsId = list[i].wbsId;
+                  priv.projectId = list[i].projectId;
+                  break;
+                }
+              }
+            }else{
+              //公有
+              this.wbsId = refId;
+            }
+                     
+            let projectTree = await findProjectTree(this.projectForm.id,refId)
+            if(Array.isArray(projectTree.data.data)){
+              if(this.projectForm.referenceWbsTemplateType=='private'){
+                //私有
+                let leftData = await findProjectTree(priv.projectId,priv.wbsId)
+                if(Array.isArray(leftData.data.data)){
+                  this.leftTreeData = leftData.data.data;
+                }else{
+                  this.leftTreeData = [];
+                }
+              }else{
+                //公有
+                let leftData = await getAlltree(this.userInfo.tenant_id,'1',refId)
+                if(Array.isArray(leftData.data.data)){
+                  this.leftTreeData = leftData.data.data;
+                }else{
+                  this.leftTreeData = [];
+                }
+              }
+              
+              this.$refs.treetotree.setRightTree(projectTree.data.data);
+            }
+          }else{
+            this.getTreeList();
+          }
       }
 
     }

+ 28 - 3
src/views/manager/projectinfo/list.vue

@@ -63,6 +63,7 @@
           <el-button size="small" @click="editTree" type="success">WBS树管理</el-button>
           <el-button size="small" @click="editProject" type="primary">编辑项目信息</el-button>
           <el-button size="small" @click="addContract" type="info">创建新合同段</el-button>
+          <el-button size="small" @click="dellProject" type="danger">删除项目</el-button>
           <el-button size="small" @click="projectVisible = false">返回</el-button>
         </div>
       </div>
@@ -76,12 +77,12 @@
           :key="item.id"
         >
           <div class="flex jc-sb">
-            <div class="flex jc-al-c">
+            <div class="flex jc-al-c flex1">
               <el-avatar
                 :size="50"
                 :class="getAvatarBg(item.contractType)"
               >{{getFont(item.contractType)}}</el-avatar>
-              <span class="mg-l-10">{{item.contractName}}</span>
+              <span class="mg-l-10 flex1 mg-r-10">{{item.contractName}}</span>
             </div>
             <div class="flex jc-al-c">
               <el-link
@@ -118,7 +119,7 @@
 </template>
 
 <script>
-import { getProjectList } from "@/api/manager/projectinfo";
+import { getProjectList,removeProject } from "@/api/manager/projectinfo";
 import { findContractByProjectId, removeContractInfo } from "@/api/manager/contractinfo";
 // import {getDictionary} from "@/api/system/dict";
 import { mapGetters } from "vuex";
@@ -249,6 +250,30 @@ export default {
         })
       })
     },
+    dellProject(){
+      if(this.contractList.length){
+        this.$message({
+          type: "warning",
+          message: "只能删除下面无合同段的项目!"
+        });
+        return;
+      }
+
+      this.$confirm('是否删除【' + this.curProjiect.projectName + '】?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        removeProject(this.curProjiect.id).then(()=>{
+          this.$message({
+            type: "success",
+            message: "删除成功!"
+          });
+          this.init();
+          this.projectVisible = false;
+        })
+      })
+    },
 
     getFont (type) {
       if (type == 1) {

+ 3 - 0
src/views/manager/projectinfo/tree.vue

@@ -1542,6 +1542,9 @@ export default {
 
     updateTreeNewNode () {
       getLazytree(this.id, this.nodeDetail.parentId,this.userInfo.tenant_id, this.projectid).then((res) => {
+        let node = this.$refs.tree.getNode(this.nodeDetail.parentId);
+        node.isLeaf = false;
+        node.isLeafByUser = false;
         this.$refs.tree.updateKeyChildren(this.nodeDetail.parentId, res.data.data)
       })
     },