GouGengquan пре 1 година
родитељ
комит
663eb376e1
2 измењених фајлова са 84 додато и 19 уклоњено
  1. 4 0
      src/api/modules/assets.js
  2. 80 19
      src/views/assets/orderDetail.vue

+ 4 - 0
src/api/modules/assets.js

@@ -86,5 +86,9 @@ export default {
     // 根据业务id与产品号获取资产产品详细信息
     getAssetsProductionDetail(params) {
         return request.get(`assetsProduction/getAssetsProductionDetail`, { params: params })
+    },
+    // 资产撰写产品(意见书和报告都是这个接口)
+    writeAssetsProduction(params){
+        return request.post(`assetsProduction/writeAssetsProduction`, params)
     }
 }

+ 80 - 19
src/views/assets/orderDetail.vue

@@ -653,7 +653,7 @@
           <el-row class="row-style">
             <el-col :xs="24" :sm="12" :lg="18" :span="6">
               <el-form-item prop="filePath" label="资料附件:" label-width="120px" class="postInfo-container-item">
-                <el-upload action="/api/upload" :limit="3" :on-success="changeres" :on-exceed="handleExceed"
+                <el-upload action="/api/upload" :limit="3" :on-success="changeresTarget" :on-exceed="handleExceed"
                   :on-preview="handleAttachmentPreview" :before-remove="beforeRemove" :file-list="fileList">
                   <el-button plain type="info" round style="width: 100%">上传附件<i
                       class="el-icon-upload el-icon--right"></i></el-button>
@@ -716,7 +716,7 @@
       </el-form>
     </el-dialog>
 
-    <el-dialog :visible.sync="productionWriteDialogVisible">
+    <el-dialog :visible.sync="productionWriteDialogVisible" @close="resetProductionForm">
       <el-form ref="assetsProductionFrom" :model="assetsProductionFrom" :rules="assetsProductionFromRules">
         <div class="createMajor-main-container">
           <div class="postInfo-container">
@@ -735,7 +735,7 @@
                 </el-form-item>
               </el-col>
             </el-row>
-            <el-row class="row-style">
+            <el-row class="row-style" v-if="currentNode.nodeCode === 'WRITE_REPORT'">
               <el-col>
                 <el-form-item label="签字人:" prop="signatory" label-width="120px" class="postInfo-container-item">
                   <el-select v-model="assetsProductionFrom.signatory" placeholder="请选择" multiple>
@@ -771,8 +771,8 @@
             <el-row class="row-style">
               <el-col>
                 <el-form-item label="评估面积:" prop="evaluateAcreage" label-width="140px" class="postInfo-container-item">
-                  <el-input-number v-model="assetsProductionFrom.evaluateAcreage" controls-position="right" :precision="2"
-                    :step="0.1"></el-input-number>
+                  <el-input-number v-model="assetsProductionFrom.evaluateAcreage" @change="computeAmount"
+                    controls-position="right" :precision="2" :step="0.1"></el-input-number>
                   <span>(m²)</span>
                 </el-form-item>
               </el-col>
@@ -780,8 +780,8 @@
             <el-row class="row-style">
               <el-col>
                 <el-form-item label="评估单价:" prop="evaluatePrice" label-width="140px" class="postInfo-container-item">
-                  <el-input-number v-model="assetsProductionFrom.evaluatePrice" controls-position="right" :precision="2"
-                    :step="0.1"></el-input-number>
+                  <el-input-number v-model="assetsProductionFrom.evaluatePrice" @change="computeAmount"
+                    controls-position="right" :precision="2" :step="0.1"></el-input-number>
                   <span>(元)</span>
                 </el-form-item>
               </el-col>
@@ -822,8 +822,8 @@
             <el-row class="row-style">
               <el-col>
                 <el-form-item prop="filePath" label="资料附件:" label-width="120px" class="postInfo-container-item">
-                  <el-upload action="/api/upload" :limit="3" :on-success="changeres" :on-exceed="handleExceed"
-                    :on-preview="handleAttachmentPreview" :before-remove="beforeRemove" :file-list="fileList">
+                  <el-upload action="/api/upload" :limit="3" :on-success="changeresProduction" :on-exceed="handleExceed"
+                    :on-preview="handleAttachmentPreview" :before-remove="beforeRemovePro" :file-list="fileList">
                     <el-button plain type="info" round style="width: 100%">上传附件<i
                         class="el-icon-upload el-icon--right"></i></el-button>
                   </el-upload>
@@ -840,10 +840,7 @@
             </el-row>
 
             <el-row class="row-style">
-              <el-button v-if="productionChoiceStatus == 0" @click="assetsProductionSave"
-                style="width:100%;">提交</el-button>
-              <el-button v-if="productionChoiceStatus == 1" @click="assetsProductionUpdate"
-                style="width:100%;">提交</el-button>
+              <el-button @click="writeAssetsProduction" style="width:100%;">提交</el-button>
             </el-row>
           </div>
         </div>
@@ -952,6 +949,7 @@ export default {
         currentNodeInstanceId: null,
         currentNodeInstanceCode: null,
         production: [],
+        reportNos: ["川友预报字(2024)第0106-1号","川友预报字(2024)第0106-2号"],
         businessSubId: null,
         ifFeedback: null
       },
@@ -1293,6 +1291,7 @@ export default {
     // 获取页面参数
     this.pageParams.back = this.$route.query.back;
     this.pageParams.row = JSON.parse(this.$route.query.row);
+    this.nodeBusinessInfo.businessSubId=this.pageParams.row.productionNo;
     this.getProductionTypes(this.pageParams.row.assetsId);
     this.getCurrentNodeInfo();
     this.getAllotDepartment();
@@ -1327,9 +1326,8 @@ export default {
       verify.nextHandlerId = this.secondCheckUserId;
       if (commit.state === 'PASS') {
         let nodeCode = this.currentNode.nodeCode;
-        console.log('3:', this.nodeBusinessInfo);
         switch (nodeCode) {
-          case 'WRITE_STATEMENT':
+          case 'GENERATE_STATEMENT':
             let notTakeNumberTargets = this.evaluateLandData.filter(function (e) {
               return e.statementNo == null;
             })
@@ -1471,7 +1469,7 @@ export default {
         }
         callback(verify);
       }
-      let specialNodesForReverse = ["WRITE_STATEMENT", "WRITE_REPORT", "WRITE_LETTER"];
+      let specialNodesForReverse = ["GENERATE_STATEMENT", "WRITE_REPORT", "WRITE_LETTER"];
       if (commit.state === 'REVERSE' && specialNodesForReverse.includes(this.currentNode.nodeCode)) {
         this.$refs.board.getPreviousNode();
         let reportNos = this.evaluateLandData.map(item => item.reportNo);
@@ -1710,6 +1708,9 @@ export default {
       this.$api.assets.getAETargetListByAssetsId(aETargetListSelectDTO).then(res => {
         if (res.code === 200) {
           this.assetsEvaluationTarget = res.data;
+          for (let i = 0; i < res.data.length; i++) {
+            // this.nodeBusinessInfo.reportNos.push(res.data[i].productionNo);
+          }
         }
       })
     },
@@ -1771,7 +1772,7 @@ export default {
 
     },
     // 文件选择改变触发事件
-    changeres(res, file, fileList) {
+    changeresTarget(res, file, fileList) {
       // 上传成功向表单附件信息数组添加信息
       if (res.code === 200) {
         this.targetForm.filePath.push({ name: file.name, url: res.data.url });
@@ -1785,6 +1786,20 @@ export default {
       }
 
     },
+    changeresProduction(res, file, fileList) {
+      // 上传成功向表单附件信息数组添加信息
+      if (res.code === 200) {
+        this.assetsProductionFrom.filePath.push({ name: file.name, url: res.data.url });
+      } else {
+        this.$notify({
+          title: '错误',
+          message: '电子文档上传失败',
+          type: 'error',
+          duration: 2000
+        });
+      }
+
+    },
     // 文件上传数量限制
     handleExceed() {
       this.$message.warning(`当前限制选择 3个文件!`);
@@ -1802,6 +1817,15 @@ export default {
         return o.name !== file.name
       });
     },
+    // 移除文件
+    beforeRemovePro(file, fileList) {
+      fileList = fileList.filter((o) => {
+        return o.name !== file.name
+      });
+      this.assetsProductionFrom.filePath = this.assetsProductionFrom.filePath.filter((o) => {
+        return o.name !== file.name
+      });
+    },
     resettargetForm() {
       this.targetForm = this.targetFormBack;
       this.fileList = [];
@@ -1969,13 +1993,14 @@ export default {
             this.assetsProductionFrom.productionType = 'REPORT';
           }
           this.assetsProductionFrom.filePath = JSON.stringify(this.assetsProductionFrom.filePath);
+          this.assetsProductionFrom.signatory = JSON.stringify(this.assetsProductionFrom.signatory);
           this.taskRecordDTO.recordId = this.currentNode.tasks[0].recordId;
           this.taskRecordDTO.taskData = this.assetsProductionFrom;
           this.$api.assets.assetsProductionSave(this.taskRecordDTO).then(res => {
             if (res.code === 200) {
               this.$notify({
                 title: '成功',
-                message: '选择产品成功!',
+                message: '选择产品成功!请继续提交流程节点!',
                 type: 'success',
                 duration: 2000
               });
@@ -2003,6 +2028,7 @@ export default {
             this.assetsProductionFrom.productionType = 'REPORT';
           }
           this.assetsProductionFrom.filePath = JSON.stringify(this.assetsProductionFrom.filePath);
+          this.assetsProductionFrom.signatory = JSON.stringify(this.assetsProductionFrom.signatory);
           this.$api.assets.assetsProductionUpdate(this.assetsProductionFrom).then(res => {
             if (res.code === 200) {
               this.$notify({
@@ -2084,12 +2110,47 @@ export default {
       assetsProductionDetailDTO.productionNo = this.pageParams.row.productionNo;
       this.$api.assets.getAssetsProductionDetail(assetsProductionDetailDTO).then(res => {
         if (res.code == 200 && res.data !== null) {
-          this.assetsProductionFrom = res.data;
+          this.assetsProductionFrom.printCount = res.data.printCount;
+          this.assetsProductionFrom.clientName = this.assetsForm.bailorContactName;
+          this.assetsProductionFrom.clientTel = this.assetsForm.bailorContactTel;
           this.assetsProductionFrom.assetsName = this.assetsForm.name;
           this.assetsProductionFrom.owner = this.assetsEvaluationTarget[0].theHolder;
           this.assetsProductionFrom.valuationBasisDate = this.assetsEvaluationTarget[0].valuationBasisDate;
+          this.assetsProductionFrom.filePath = [];
+          this.assetsProductionFrom.signatory = [];
+          console.log(this.assetsProductionFrom);
         }
       })
+    },
+    // 当产品单价或面积改变时触发
+    computeAmount() {
+      this.assetsProductionFrom.evaluateAmount = (this.assetsProductionFrom.evaluatePrice * this.assetsProductionFrom.evaluateAcreage) / 10000;
+    },
+    // 资产撰写产品(意见书和报告都是这个接口)
+    writeAssetsProduction() {
+      this.assetsProductionFrom.filePath = JSON.stringify(this.assetsProductionFrom.filePath);
+      if (this.assetsProductionFrom.signatory.length > 0) {
+        this.assetsProductionFrom.signatory = JSON.stringify(this.assetsProductionFrom.signatory);
+      } else {
+        this.assetsProductionFrom.signatory = null;
+      }
+      this.assetsProductionFrom.businessId = this.assetsForm.id;
+      this.assetsProductionFrom.productionNo = this.assetsEvaluationTarget[0].productionNo;
+      this.taskRecordDTO.recordId = this.currentNode.tasks[0].recordId;
+      this.taskRecordDTO.taskData = this.assetsProductionFrom;
+      this.$api.assets.writeAssetsProduction(this.taskRecordDTO).then(res => {
+        if (res.code == 200) {
+          this.$notify({
+            title: '成功',
+            message: '产品撰写成功!请继续提交流程节点!',
+            type: 'success',
+            duration: 2000
+          });
+        }
+      })
+    },
+    resetProductionForm() {
+      this.fileList = [];
     }
 
   }