Browse Source

Merge branch 'master' of http://47.108.172.52:3000/dayou/item-management-web

GouGengquan 1 year ago
parent
commit
2a08675c5a
3 changed files with 74 additions and 64 deletions
  1. 4 1
      src/api/modules/workNodeTaskRecord.js
  2. 2 2
      src/views/major/detail.vue
  3. 68 61
      src/views/major/todoDetail.vue

+ 4 - 1
src/api/modules/workNodeTaskRecord.js

@@ -32,5 +32,8 @@ export default {
   // 获取资产业务已办列表
   getAssetsTaskDoneList(params){
     return request.get(`workTaskRecord/assets/getAssetsTaskDoneList`,{ params: params })
-  }
+  },
+  checkIfReverse(p1,p2){
+    return request.get(`workFlowNodeInstance/checkIfReverse/${p1}/${p2}`)
+   }
 }

+ 2 - 2
src/views/major/detail.vue

@@ -277,7 +277,7 @@
                         label="客户联系人:"
                         prop="clienteleContactId"
                         :rules="{required: true, message: '客户联系人不能为空', trigger: 'blur'}"
-                        label-width="120px"
+                        label-width="140px"
                         class="postInfo-container-item"
                       >   
                       <div  v-if="couldEdit">
@@ -448,7 +448,7 @@
                         label="委托联系人:"
                         prop="bailorContactName"
                         :rules="{required: true, message: '委托联系人不能为空', trigger: 'blur'}"
-                        label-width="120px"
+                        label-width="140px"
                         class="postInfo-container-item"
                       >
                       <el-input v-model="major.bailorContactName" clearable class="filter-item" />

+ 68 - 61
src/views/major/todoDetail.vue

@@ -87,7 +87,7 @@
                   </el-row>
                   <el-row class="row-style">
                     <el-col :xs="24" :sm="12" :lg="6" :span="6">
-                      <el-form-item label="项目负责人:" prop="principalId" label-width="120px"
+                      <el-form-item label="项目负责人:" prop="principalId" label-width="140px"
                         :class="['postInfo-container-item', currentNode.nodeCode === 'DEPARTMENT_ALLOCATION' ? 'task-class' : '']"
                         :rules="{ required: true, message: '项目负责人不能为空', trigger: 'blur' }">
                         <el-select v-model="major.principalId" placeholder="请选择" style=" width: 100%"
@@ -338,7 +338,7 @@
                     <el-row class="row-style">
                     <el-col :xs="24" :sm="12" :lg="6" :span="6">
                       <el-form-item label="委托联系人:" prop="bailorContactName"
-                        :rules="{ required: true, message: '委托联系人不能为空', trigger: 'blur' }" label-width="120px"
+                        :rules="{ required: true, message: '委托联系人不能为空', trigger: 'blur' }" label-width="140px"
                         class="postInfo-container-item">
                         <el-input v-model="major.bailorContactName" class="filter-item"  readonly
                           disabled />
@@ -513,19 +513,19 @@
             </el-table-column>
             <el-table-column prop="statementNo" label="价值意见书号" align="center" width="250">
               <template slot-scope="scope">
-                <el-tag type='success'>
+                <el-tag :type='scope.row.statementNo == null ? "danger": "success" '>
                   {{ scope.row.statementNo == null ? '未取号' : scope.row.statementNo }}</el-tag>
-              </template>
+              </template>``
             </el-table-column>
             <el-table-column prop="reportNo" label="报告号" align="center" width="250">
               <template slot-scope="scope">
-                <el-tag type='danger'>
+                <el-tag :type='scope.row.reportNo == null ? "danger": "success" '>
                   {{ scope.row.reportNo == null ? '未取号' : scope.row.reportNo }}</el-tag>
               </template>
             </el-table-column>
-            <el-table-column prop="letterNo" label="复评函号" align="center" width="250">
+            <el-table-column prop="letterNo" label="复评函号" align="center" width=250 >
               <template slot-scope="scope">
-                <el-tag type='primary'>
+                <el-tag :type='scope.row.letterNo == null ? "danger": "success" '>
                   {{ scope.row.letterNo == null ? '未取号' : scope.row.letterNo }}</el-tag>
               </template>
             </el-table-column>
@@ -619,19 +619,19 @@
             </el-table-column>
             <el-table-column prop="statementNo" label="价值意见书号" align="center" width="250">
               <template slot-scope="scope">
-                <el-tag type='success'>
+                <el-tag :type='scope.row.statementNo == null ? "danger": "success" '>
                   {{ scope.row.statementNo == null ? '未取号' : scope.row.statementNo }}</el-tag>
               </template>
             </el-table-column>
             <el-table-column prop="reportNo" label="报告号" align="center" width="250">
               <template slot-scope="scope">
-                <el-tag type='danger'>
+                <el-tag :type='scope.row.reportNo == null ? "danger": "success" '>
                   {{ scope.row.reportNo == null ? '未取号' : scope.row.reportNo }}</el-tag>
               </template>
             </el-table-column>
-            <el-table-column prop="letterNo" label="复评函号" align="center" width=200 show-overflow-tooltip>
+            <el-table-column prop="letterNo" label="复评函号" align="center" width=250>
               <template slot-scope="scope">
-                <el-tag>
+                <el-tag :type='scope.row.letterNo == null ? "danger": "success" '>
                   {{ scope.row.letterNo == null ? '未取号' : scope.row.letterNo }}</el-tag>
               </template>
             </el-table-column>
@@ -809,10 +809,11 @@
                         </el-date-picker>
                       </el-form-item>
                     </el-col>
-                    <el-col :xs="24" :sm="12" :lg="6" :span="6" v-if="props.row.production === 'REPORT'">
-                      <el-form-item prop="signatoryId" :rules="{ required: true, message: '签字人不能为空', trigger: 'blur' }"
+                    <el-col :xs="24" :sm="12" :lg="6" :span="6" v-if="props.row.production != 'STATEMENT'">
+                      <el-form-item prop="signatoryId" 
+                        :rules="{ required: (props.row.production==='REPORT'), message: '签字人不能为空', trigger: 'blur' }"
                         label-width="120px" class="postInfo-container-item" label="签字人:">
-                        <el-select v-model="props.row.signatoryId" placeholder="产品类型为报告,签字人必填" multiple clearable
+                        <el-select v-model="props.row.signatoryId" placeholder="产品类型为报告,签字人必填" filterable multiple clearable
                           style=" width: 100%">
                           <el-option v-for="(u, id) in allUsers" :label="u.name" :value="u.id"></el-option>
                         </el-select>
@@ -856,22 +857,6 @@
                   </el-row>
                 </div>
                 <div>
-                  <!-- <el-tag effect="plain" size="medium" disable-transitions><span style="font-size:16px">库存状态</span></el-tag> -->
-                  <el-row class="row-style" v-if="doWare">
-                    <el-col :xs="24" :sm="12" :lg="4" :span="6">
-                      <el-form-item label="出入库操作:" label-width="120px" class="postInfo-container-item">
-                        <el-button plain type="info" round style="width: 100%"
-                          @click="openWareHouseDialog(props.row)">{{ currentNode.nodeName }}<i
-                            class="el-icon-s-home el-icon--right"></i></el-button>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <!-- <el-steps :active="props.row.repertoryState==null?0:(props.row.repertoryState?2:1)" 
-                    process-status="success"	finish-status="success" simple style="margin: 10px 1% 20px 40px">
-                    <el-step title="未入库" ></el-step>
-                    <el-step title="已入库" ></el-step>
-                    <el-step title="已出库" ></el-step>
-                  </el-steps> -->
                 </div>
               </el-form>
             </template>
@@ -897,7 +882,10 @@
           </el-table-column>
           <el-table-column label="操作" align="center">
             <template slot-scope="props">
-              <el-button round type="danger" @click="saveProduction(props.row)">更新产品信息</el-button>
+              <el-button round type="danger" @click="saveProduction(props.row)" 
+              :disabled="!updateProductionNode.includes(currentNode.nodeCode)">更新产品信息</el-button>
+              <el-button type="success" round v-if="doWare"
+                          @click="openWareHouseDialog(props.row)">{{ currentNode.nodeName }}</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -1059,7 +1047,7 @@
           <el-row>
             <el-col :xs="24" :sm="12" :lg="12" :span="6">
               <el-form-item label="土地类型:" prop="landType" :rules="{ required: true, message: '土地类型不能为空', trigger: 'blur' }"
-                label-width="120px" class="postInfo-container-item">
+                label-width="140px" class="postInfo-container-item">
                 <el-radio v-model="landTarget.landType" label="国有" size="mini"
                   :readonly="currentNode.nodeCode != 'SPOT_RECONNAISSANCE'"
                   :disabled="currentNode.nodeCode != 'SPOT_RECONNAISSANCE'">国有</el-radio>
@@ -1069,7 +1057,7 @@
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="12" :span="6">
-              <el-form-item label="使用权面积:" prop="useAcreage" label-width="120px" class="postInfo-container-item">
+              <el-form-item label="使用权面积:" prop="useAcreage" label-width="140px" class="postInfo-container-item">
                 <el-input v-model="landTarget.useAcreage" class="filter-item"
                   :readonly="currentNode.nodeCode != 'SPOT_RECONNAISSANCE'"
                   :disabled="currentNode.nodeCode != 'SPOT_RECONNAISSANCE'">
@@ -1081,7 +1069,7 @@
           <el-row>
             <el-col :xs="24" :sm="12" :lg="12" :span="6">
               <el-form-item label="使用权类型:" prop="rightType"
-                :rules="{ required: true, message: '使用权类型不能为空', trigger: 'blur' }" label-width="120px"
+                :rules="{ required: true, message: '使用权类型不能为空', trigger: 'blur' }" label-width="140px"
                 class="postInfo-container-item">
                 <el-radio v-model="landTarget.rightType" label="出让" size="mini"
                   :readonly="currentNode.nodeCode != 'SPOT_RECONNAISSANCE'"
@@ -1484,7 +1472,7 @@ import YDetailPageLayout from '@/components/YDetailPageLayout/index_detail'
 import WorkflowBoard from '@/components/workflowBoard'
 import ScanEntry from '@/components/ScanEntry'
 import { isNumber, phoneNumber, postiveInteger, isIdNumber } from '@/utils/validate'
-import { readonly } from 'vue'
+
 
 export default {
   name: 'majorTodoDetail',
@@ -1611,6 +1599,9 @@ export default {
   },
   data() {
     return {
+     updateProductionNode :['WRITE_STATEMENT','CHECK_STATEMENT','RECHECK_STATEMENT','THIRD_CHECK_STATEMENT'
+                              ,'WRITE_REPORT','CHECK_REPORT','RECHECK_REPORT','THIRD_CHECK_REPORT',
+                               'WRITE_LETTER','CHECK_LETTER','RECHECK_LETTER','THIRD_CHECK_LETTER'],
       rules: {
         buildAcreage: [{ required: true, message: "建筑面积不能为空", trigger: 'blur' }, { validator: isNumber, trigger: 'blur' }],
         landAcreage: [{ required: false, validator: isNumber, trigger: 'blur' }],
@@ -1828,6 +1819,9 @@ export default {
       if (this.major.businessObjectType === '土地') {
         this.getLandTargetList();
       }
+      setTimeout(() => {
+        this.getProductions(this.majorId, (this.reportNo == null ? this.statementNo : this.reportNo));
+      },1000)
     }
     if (this.activeTagName === 'workflowLog') {
       this.getWorkflowLogs();
@@ -1951,10 +1945,15 @@ export default {
     getAllUser() {
       this.$api.user.simpleAll().then(res => {
         if (res.code === 200) {
-          this.allUsers = this.principals;
-          for (let i in res.data) {
-            this.allUsers.push(res.data[i]);
-          }
+          let principals = this.principals;
+          let all = res.data;
+          let arr = principals.concat(all);
+          let obj = {}
+          arr = arr.reduce((pre,next) => {
+            obj[next.id]? null: (obj[next.id] = true && pre.push(next))
+            return pre;
+          },[])
+          this.allUsers = arr;
         }
       })
     },
@@ -1985,6 +1984,7 @@ export default {
         let picked = new Object();
         picked.id = val[i].id;
         picked.amount = val[i].checkValue;
+        picked.name = val[i].statementNo;
         if (this.major.businessObjectType === '土地') {
           picked.acreage = val[i].useAcreage;
         } else {
@@ -2434,7 +2434,6 @@ export default {
       if (productionNo) {
         let totalAcreage = 0;
         let totalAmount = 0;
-        console.log(this.takeNumberItems)
         this.takeNumberItems.map(item => item.acreage).map(function (e) {
           totalAcreage += e;
         });
@@ -2452,6 +2451,7 @@ export default {
         production.clientAddress = this.major.bailorAddress;
         production.owner = this.major.owner;
         production.name = this.major.name;
+        production.statementNo = this.takeNumberItems[0].name;
         if (totalAcreage != 0) {
           production.evaluatePrice = (totalAmount * 10000 / totalAcreage).toFixed(0);
         } else {
@@ -2845,10 +2845,9 @@ export default {
       let commit = val.commit;
       let verify = new Object();
       verify.state = true;
-      verify.cleanReport = false;
       verify.nextHandlerId = this.secondCheckUserId;
+      let nodeCode = this.currentNode.nodeCode;
       if (commit.state === 'PASS') {
-        let nodeCode = this.currentNode.nodeCode;
         this.getProductions(this.majorId, (this.reportNo == null ? this.statementNo : this.reportNo));
         switch (nodeCode) {
           case 'WRITE_STATEMENT':
@@ -3036,33 +3035,41 @@ export default {
               callback(verify);
               return;
             }
+            break;
         }
         callback(verify);
       }
-      let specialNodesForReverse = ["WRITE_STATEMENT", "WRITE_REPORT", "WRITE_LETTER"];
-      if (commit.state === 'REVERSE' && specialNodesForReverse.includes(this.currentNode.nodeCode)) {
+      if (commit.state === 'REVERSE') {
         this.$refs.board.getPreviousNode();
-        let reportNos = this.evaluateLandData.map(item => item.reportNo);
-        //取了子号不能退回节点
-        if (this.pNode.nodeCode === "QUOTATION_FEEDBACK" && reportNos[0].includes("-")) {
-          this.$notify({
-            title: '提示',
-            message: '该订单已取了其他子号,不能退回节点。',
-            type: 'info',
-            duration: 2000,
-            offset: 100
-          });
-          verify.state = false;
-          verify.cleanReport = false;
-          callback(verify);
-        }
-        if (this.pNode.nodeCode === "QUOTATION_FEEDBACK" && !reportNos[0].includes("-")) {
-          verify.cleanReport = true;
-          callback(verify);
+        switch (nodeCode){
+          case "WRITE_STATEMENT":
+          case "WRITE_REPORT":
+          case "WRITE_LETTER":
+            if(this.productions.length>0){
+              if (!this.productions[0].ifReverse && this.pNode.nodeCode === "QUOTATION_FEEDBACK") {
+              // 需要验证兄弟流程节点信息
+                this.$notify({
+                  title: '提示',
+                  message: '已有其他子号流程正在进行中,不能退回到上一节点。',
+                  type: 'info',
+                  duration: 2000,
+                  offset: 100
+                });
+                verify.state = false;
+                callback(verify);
+                return
+              }else{
+                  verify.state = true;
+                  verify.cleanReport = true;
+                  callback(verify);
+                  return;
+              } 
+            }
         }
         callback(verify);
       }
     },
+    
     createPerformance(info) {
       let allots = this.performance.allots;
       let total = 0;