Bladeren bron

1.新增对于同一产品重复提交流程的校验
2.新增审核定价
3.新增产品质检(未测试)

GouGengquan 1 jaar geleden
bovenliggende
commit
6e49bb681f
3 gewijzigde bestanden met toevoegingen van 386 en 95 verwijderingen
  1. 16 0
      src/api/modules/assets.js
  2. 4 4
      src/api/modules/businessProductionPerformance.js
  3. 366 91
      src/views/assets/orderDetail.vue

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

@@ -94,5 +94,21 @@ export default {
     // 根据业务id与产品号查询产品信息
     getProductionList(params) {
         return request.get(`assetsProduction/getProductionList`, { params: params })
+    },
+    // 根据业务id与产品号查询该产品是否已有提交的流程
+    getInatanceCount(params){
+        return request.get(`assetsProduction/getInatanceCount`, { params: params })
+    },
+    // 评估对象审核定价
+    checkValue(params){
+        return request.put(`assetsEvaluationTarget/checkValue`,params)
+    },
+    // 资产产品详情
+    getAssetsProductionDetail(params){
+        return request.get(`assetsProduction/detail/${params}`);
+    },
+    // 资产产品更新
+    productionUpdate(params){
+        return request.put(`assetsProduction/update`,params);
     }
 }

+ 4 - 4
src/api/modules/businessProductionPerformance.js

@@ -7,7 +7,7 @@ export default {
     return request.get(`businessProductionPerformance`, { params: params })
   },
   detail(params) {
-    return request.get(`businessProductionPerformance/detail`,{ params: params })
+    return request.get(`businessProductionPerformance/detail`, { params: params })
   },
   simpleAll() {
     return request.get(`businessProductionPerformance/simpleAll`)
@@ -18,8 +18,8 @@ export default {
   edit(params) {
     return request.put(`businessProductionPerformance`, params)
   },
-   delete(params) {
-     return request.delete(`businessProductionPerformance/${params}`)
-   },
+  delete(params) {
+    return request.delete(`businessProductionPerformance/${params}`)
+  },
 
 }

+ 366 - 91
src/views/assets/orderDetail.vue

@@ -376,7 +376,7 @@
               <el-col :span="2"
                 v-if="currentNode.nodeCode === 'GENERATE_STATEMENT' || currentNode.nodeCode === 'WRITE_REPORT'">
                 <el-tooltip class="item" effect="dark" content="请仔细确认产品内容" placement="right">
-                  <el-button type="success" @click="openWriteProductionDialog" round>撰写产品信息</el-button>
+                  <el-button type="success" @click="openWriteProductionDialog(false, 'add')" round>撰写产品信息</el-button>
                 </el-tooltip>
               </el-col>
             </el-row>
@@ -430,6 +430,8 @@
                   </el-button>
                   <el-button v-if="currentNode.nodeCode === 'SPOT_RECONNAISSANCE_DETERMINE_PRICE'" type="text"
                     size="small" @click="assetsTargetDelete(scope.row.id)">删除</el-button>
+                  <el-button v-if="currentNode.nodeCode === 'REVIEW_STATEMENT'" type="text" size="small"
+                    @click="openCheckValueDialog(scope.row.id);">审核定价</el-button>
                 </template>
               </el-table-column>
             </el-table>
@@ -504,11 +506,20 @@
               </el-table-column>
               <el-table-column prop="delivery" label="送达状态" align="center" show-overflow-tooltip>
               </el-table-column>
-              <el-table-column label="操作" align="center" width="130" fixed="right">
+              <el-table-column label="操作" align="center" width="180" fixed="right">
                 <template slot-scope="scope">
-                  <el-button type="text" size="small">
+                  <el-button type="text" size="small"
+                    @click="openWriteProductionDialog(true, 'detail'), getAssetsProductionDetail(scope.row.id)">
                     查看
                   </el-button>
+                  <el-button v-if="currentNode.nodeCode === 'REVIEW_STATEMENT'" type="text" size="small"
+                    @click="openWriteProductionDialog(false, 'edit'), getAssetsProductionDetail(scope.row.id)">
+                    编辑
+                  </el-button>
+                  <el-button v-if="currentNode.nodeCode === 'REVIEW_STATEMENT'" type="text" size="small"
+                    @click="productionCheckDialogVisible = true, productionPerformanceForm.productionId = scope.row.id">
+                    产品质检
+                  </el-button>
                 </template>
               </el-table-column>
             </el-table>
@@ -747,7 +758,7 @@
       </div>
     </el-dialog>
     <el-dialog :visible.sync="productionChoiceDialogVisible">
-      <el-form ref="assetsProductionFrom" :model="assetsProductionFrom" :rules="assetsProductionFromRules">
+      <el-form ref="assetsProductionForm" :model="assetsProductionForm" :rules="assetsProductionFormRules">
         <div class="createMajor-main-container">
           <div class="postInfo-container">
             <div>
@@ -761,17 +772,17 @@
             <el-row class="row-style">
               <el-col :xs="24" :sm="12" :lg="12" :span="6" style="width: 800px;">
                 <el-form-item label="产品类型:" prop="productionType" label-width="120px" class="postInfo-container-item">
-                  <el-radio v-model="assetsProductionFrom.productionType" :label="1" border size="medium">价值意见书</el-radio>
-                  <el-radio v-model="assetsProductionFrom.productionType" :label="2" border size="medium">咨询报告</el-radio>
-                  <el-radio v-model="assetsProductionFrom.productionType" :label="3" border size="medium">评估报告</el-radio>
-                  <el-radio v-model="assetsProductionFrom.productionType" :label="4" border size="medium">意见函</el-radio>
+                  <el-radio v-model="assetsProductionForm.productionType" :label="1" border size="medium">价值意见书</el-radio>
+                  <el-radio v-model="assetsProductionForm.productionType" :label="2" border size="medium">咨询报告</el-radio>
+                  <el-radio v-model="assetsProductionForm.productionType" :label="3" border size="medium">评估报告</el-radio>
+                  <el-radio v-model="assetsProductionForm.productionType" :label="4" border size="medium">意见函</el-radio>
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row class="row-style">
               <el-col :xs="24" :sm="12" :lg="12" :span="6" style="width: 345px;">
                 <el-form-item label="打印份数:" prop="printCount" label-width="120px" class="postInfo-container-item">
-                  <el-input v-model.number="assetsProductionFrom.printCount" class="filter-item" />
+                  <el-input v-model.number="assetsProductionForm.printCount" class="filter-item" />
                 </el-form-item>
               </el-col>
             </el-row>
@@ -787,7 +798,8 @@
     </el-dialog>
 
     <el-dialog :visible.sync="productionWriteDialogVisible" @close="resetProductionForm">
-      <el-form ref="assetsProductionFrom" :model="assetsProductionFrom" :rules="assetsProductionFromRules">
+      <el-form ref="assetsProductionForm" :model="assetsProductionForm" :rules="assetsProductionFormRules"
+        :disabled="productionDisabledStatus">
         <div class="createMajor-main-container">
           <div class="postInfo-container">
             <div>
@@ -801,7 +813,7 @@
             <el-row class="row-style">
               <el-col>
                 <el-form-item label="评估对象:" prop="productionNo" label-width="120px" class="postInfo-container-item">
-                  <el-select v-model="assetsProductionFrom.productionNo" @change="getAssetsProductionDetail()"
+                  <el-select v-model="assetsProductionForm.productionNo" @change="getAssetsProductionDetail()"
                     placeholder="请选择" style="width: 300px;">
                     <el-option v-for="(target, productionNo) in assetsEvaluationTarget" :label="target.productionNo"
                       :value="target.productionNo" :key="target.id"></el-option>
@@ -812,14 +824,14 @@
             <el-row class="row-style">
               <el-col>
                 <el-form-item label="项目名称:" prop="assetsName" label-width="120px" class="postInfo-container-item">
-                  <el-input v-model.number="assetsProductionFrom.assetsName" class="filter-item" />
+                  <el-input v-model.number="assetsProductionForm.assetsName" class="filter-item" />
                 </el-form-item>
               </el-col>
             </el-row>
             <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>
+                  <el-select v-model="assetsProductionForm.signatory" placeholder="请选择" multiple>
                     <el-option v-for="(u, id) in allUsers" :label="u.name" :value="u.id" :key="u.id"></el-option>
                   </el-select>
                 </el-form-item>
@@ -828,14 +840,14 @@
             <el-row class="row-style">
               <el-col>
                 <el-form-item label="委托方名称:" prop="clientName" label-width="120px" class="postInfo-container-item">
-                  <el-input v-model.number="assetsProductionFrom.clientName" class="filter-item" />
+                  <el-input v-model.number="assetsProductionForm.clientName" class="filter-item" />
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row class="row-style">
               <el-col>
                 <el-form-item label="委托方电话:" prop="clientTel" label-width="120px" class="postInfo-container-item">
-                  <el-input v-model.number="assetsProductionFrom.clientTel" class="filter-item" />
+                  <el-input v-model.number="assetsProductionForm.clientTel" class="filter-item" />
                 </el-form-item>
               </el-col>
             </el-row>
@@ -843,7 +855,7 @@
               <el-col>
                 <el-form-item label="估价基准日:" prop="valuationBasisDate" label-width="120px"
                   class="postInfo-container-item">
-                  <el-date-picker v-model="assetsProductionFrom.valuationBasisDate" type="date" placeholder="选择日期"
+                  <el-date-picker v-model="assetsProductionForm.valuationBasisDate" type="date" placeholder="选择日期"
                     style="width:100%">
                   </el-date-picker>
                 </el-form-item>
@@ -852,7 +864,7 @@
             <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" @change="computeAmount"
+                  <el-input-number v-model="assetsProductionForm.evaluateAcreage" @change="computeAmount"
                     controls-position="right" :precision="2" :step="0.1"></el-input-number>
                   <span>(m²)</span>
                 </el-form-item>
@@ -861,7 +873,7 @@
             <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" @change="computeAmount"
+                  <el-input-number v-model="assetsProductionForm.evaluatePrice" @change="computeAmount"
                     controls-position="right" :precision="2" :step="0.1"></el-input-number>
                   <span>(元)</span>
                 </el-form-item>
@@ -870,7 +882,7 @@
             <el-row class="row-style">
               <el-col>
                 <el-form-item label="评估总价:" prop="evaluateAmount" label-width="140px" class="postInfo-container-item">
-                  <el-input-number v-model="assetsProductionFrom.evaluateAmount" controls-position="right" :precision="2"
+                  <el-input-number v-model="assetsProductionForm.evaluateAmount" controls-position="right" :precision="2"
                     :step="0.1"></el-input-number>
                   <span>(万)</span>
                 </el-form-item>
@@ -879,14 +891,14 @@
             <el-row class="row-style">
               <el-col>
                 <el-form-item label="资产持有人:" prop="owner" label-width="120px" class="postInfo-container-item">
-                  <el-input v-model.number="assetsProductionFrom.owner" class="filter-item" />
+                  <el-input v-model.number="assetsProductionForm.owner" class="filter-item" />
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row class="row-style">
               <el-col>
                 <el-form-item label="产品打印份数:" prop="printCount" label-width="150px" class="postInfo-container-item">
-                  <el-input v-model.number="assetsProductionFrom.printCount" class="filter-item" />
+                  <el-input v-model.number="assetsProductionForm.printCount" class="filter-item" />
                 </el-form-item>
               </el-col>
             </el-row>
@@ -894,7 +906,7 @@
               <el-col>
                 <el-form-item label="出具产品日期:" prop="createProductionDate" label-width="150px"
                   class="postInfo-container-item">
-                  <el-date-picker v-model="assetsProductionFrom.createProductionDate" type="date" placeholder="选择日期"
+                  <el-date-picker v-model="assetsProductionForm.createProductionDate" type="date" placeholder="选择日期"
                     style="width:100%">
                   </el-date-picker>
                 </el-form-item>
@@ -914,14 +926,113 @@
             <el-row class="row-style">
               <el-col>
                 <el-form-item label="特殊情况说明:" prop="comment" label-width="150px" class="postInfo-container-item">
-                  <el-input v-model="assetsProductionFrom.comment" :autosize="{ minRows: 4, maxRows: 4 }"
+                  <el-input v-model="assetsProductionForm.comment" :autosize="{ minRows: 4, maxRows: 4 }"
                     class="filter-item" type="textarea" />
                 </el-form-item>
               </el-col>
             </el-row>
 
             <el-row class="row-style">
-              <el-button @click="writeAssetsProduction" style="width:100%;">提交</el-button>
+              <el-button v-if="writeType === 'add'" @click="writeAssetsProduction()" style="width:100%;">提交</el-button>
+            </el-row>
+            <el-row class="row-style">
+              <el-button v-if="writeType === 'edit'" @click="productionUpdate()" style="width:100%;">提交</el-button>
+            </el-row>
+          </div>
+        </div>
+      </el-form>
+    </el-dialog>
+    <el-dialog :visible.sync="checkValueDialogVisible">
+      <el-divider content-position="left">【资产】审核定价</el-divider>
+      <el-form ref="targetForm" :model="targetForm" :rules="targetFormRules">
+        <div class="createMajor-main-container">
+          <div class="postInfo-container">
+            <el-row>
+              <el-col>
+                <el-form-item label="评估方法:" prop="evaluationMethodId" label-width="120px" class="postInfo-container-item">
+                  <el-select v-model="targetForm.evaluationMethodId">
+                    <el-option v-for="(m, id) in assetsEvaluationMethod" :label="m.methodName" :value="m.id"
+                      :key="m.id"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col>
+                <el-form-item label="最终选择的评估方法:" prop="choiceEvaluationMethodId" label-width="200px"
+                  class="postInfo-container-item">
+                  <el-select v-model="targetForm.choiceEvaluationMethodId">
+                    <el-option v-for="(m, id) in assetsEvaluationMethod" :label="m.methodName" :value="m.id"
+                      :key="m.id"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col>
+                <el-form-item label="审核价格:" prop="checkValue" label-width="140px" class="postInfo-container-item">
+                  <el-input-number v-model="targetForm.checkValue" controls-position="right" :precision="2"
+                    :step="0.1"></el-input-number>
+                  <span>(万)</span>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col>
+                <el-button @click="checkValue()" style="width:100%;">审核定价</el-button>
+              </el-col>
+            </el-row>
+          </div>
+        </div>
+      </el-form>
+    </el-dialog>
+    <el-dialog :visible.sync="productionCheckDialogVisible">
+      <el-form ref="productionPerformanceForm" :model="productionPerformanceForm">
+        <div class="createMajor-main-container">
+          <div class="postInfo-container">
+            <div>
+              <el-divider content-position="left">
+                <h3 class="title">
+                  <div class="avatar-wrapper icon-title">产品</div>
+                  <div class="icon-info">产品质检</div>
+                </h3>
+              </el-divider>
+            </div>
+            <el-row class="row-style">
+              <el-col>
+                <el-form-item prop="normalMistake" label-width="120px" class="postInfo-container-item" label="一般错误个数:">
+                  <el-input-number :min="0" style="width:50%;" type="number"
+                    v-model="productionPerformanceForm.normalMistake" class="filter-item" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row class="row-style">
+              <el-col>
+                <el-form-item prop="normalMistake" label-width="120px" class="postInfo-container-item" label="较大错误个数:">
+                  <el-input-number :min="0" style="width:50%;" type="number"
+                    v-model="productionPerformanceForm.hardMistake" class="filter-item" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row class="row-style">
+              <el-col>
+                <el-form-item prop="fatalMistake" label-width="120px" class="postInfo-container-item" label="重大错误个数:">
+                  <el-input-number :min="0" style="width:50%;" type="number"
+                    v-model="productionPerformanceForm.fatalMistake" class="filter-item" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row class="row-style">
+              <el-col :xs="24" :sm="12" :lg="24" :span="6">
+                <el-form-item prop="reason" label-width="120px" class="postInfo-container-item" label="扣分原因:">
+                  <el-input v-model.trim="productionPerformanceForm.reason" class="filter-item" type="textarea" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col>
+                <el-button style="width:100%;" @click="saveQuality()">提交</el-button>
+              </el-col>
             </el-row>
           </div>
         </div>
@@ -1155,6 +1266,7 @@ export default {
       totalEvaluateValue: 0.00,
       // 评估对象表单
       targetForm: {
+        id: null,
         // 资产评估目的id
         evaluationPurposeId: null,
         // 资产评估对象类型一级id
@@ -1267,6 +1379,9 @@ export default {
         ],
         filePath: [
           { required: true, message: '请上传附件资料', trigger: 'change' }
+        ],
+        checkValue: [
+          { required: true, message: '请填写审核价格', trigger: 'blur' }
         ]
       },
       // 款项信息
@@ -1292,10 +1407,12 @@ export default {
       productionChoiceDialogVisible: false,
       // 产品信息撰写表单可视状态
       productionWriteDialogVisible: false,
+      // 评估对象审核定价表单可视状态
+      checkValueDialogVisible: false,
       // 0:新增,1:更新
       productionChoiceStatus: 0,
       // 产品表单
-      assetsProductionFrom: {
+      assetsProductionForm: {
         businessId: null,
         productionNo: null,
         productionType: null,
@@ -1314,7 +1431,7 @@ export default {
         assetsName: null
       },
       // 产品选择表单校验规则
-      assetsProductionFromRules: {
+      assetsProductionFormRules: {
         productionType: [
           { required: true, message: '请选择产品类型', trigger: 'change' }
         ],
@@ -1366,7 +1483,26 @@ export default {
         printCount: null
       },
       assetsProductionData: null,
-      commitProductionNo: null
+      commitProductionNo: null,
+      proInatanceCount: null,
+      // 产品撰写表单禁用状态
+      productionDisabledStatus: false,
+      // 产品表单编辑类型
+      writeType: null,
+      // 产品质检表单可视状态
+      productionCheckDialogVisible: false,
+      // 产品质检信息
+      productionPerformanceForm: {
+        id: null,
+        businessType: null,
+        productionId: null,
+        checkLoop: null,
+        fatalMistake: 0,
+        hardMistake: 0,
+        normalMistake: 0,
+        reason: null,
+        checkId: null
+      }
     }
   },
   watch: {
@@ -1380,7 +1516,6 @@ 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;
-    console.log(this.nodeBusinessInfo.businessSubId)
     this.getProductionTypes(this.pageParams.row.assetsId);
     this.getCurrentNodeInfo();
     this.getAllotDepartment();
@@ -1418,13 +1553,11 @@ export default {
         let nodeCode = this.currentNode.nodeCode;
         switch (nodeCode) {
           case 'GENERATE_STATEMENT':
-            let notTakeNumberTargets = this.assetsEvaluationTarget.filter(function (e) {
-              return e.productionNo == null;
-            })
+            let notTakeNumberTargets = this.assetsEvaluationTarget.filter(obj => !obj.productionNo).length;
             if (notTakeNumberTargets.length > 0) {
               this.$notify({
                 title: '提示',
-                message: '还有价值意见书号未取的估价对象,请先完成取号操作。',
+                message: '还有意见书号未取的估价对象,请先完成取号操作。',
                 type: 'error',
                 duration: 3000
               });
@@ -1443,13 +1576,11 @@ export default {
               callback(verify);
               return;
             }
-            let selected = this.productions.filter(function (e) {
-              return e.reportNo === commit.businessSubId
-            })
-            if (!selected[0].name) {
+            if (this.proInatanceCount > 0) {
+
               this.$notify({
                 title: '提示',
-                message: '请完成所选产品的基本信息后,再进行流程提交。',
+                message: '该产品已提交相应流程,不可重复提交。',
                 type: 'error',
                 duration: 3000
               });
@@ -1457,6 +1588,20 @@ export default {
               callback(verify);
               return;
             }
+            // let selected = this.productions.filter(function (e) {
+            //   return e.reportNo === commit.businessSubId
+            // })
+            // if (!selected[0].name) {
+            //   this.$notify({
+            //     title: '提示',
+            //     message: '请完成所选产品的基本信息后,再进行流程提交。',
+            //     type: 'error',
+            //     duration: 3000
+            //   });
+            //   verify.state = false;
+            //   callback(verify);
+            //   return;
+            // }
             break;
           case 'WRITE_REPORT':
             let notTakeReportNoTargets = this.evaluateLandData.filter(function (e) {
@@ -1649,15 +1794,15 @@ export default {
       // 打开前判断是否已经选择客户信息
       if (this.targetFassetsFormorm.clienteleType === "个人" || this.assetsForm.clienteleType != null && this.assetsForm.clienteleId != null && this.assetsForm.clienteleSubId != null) {
         this.createLinkmanVisible = true;
-        this.linkmanFrom.terminal = val;
-        this.linkmanFrom.clienteleType = this.assetsForm.clienteleType;
-        this.linkmanFrom.clienteleId = this.assetsForm.clienteleId;
-        this.linkmanFrom.clienteleSubId = this.assetsForm.clienteleSubId;
+        this.linkmanForm.terminal = val;
+        this.linkmanForm.clienteleType = this.assetsForm.clienteleType;
+        this.linkmanForm.clienteleId = this.assetsForm.clienteleId;
+        this.linkmanForm.clienteleSubId = this.assetsForm.clienteleSubId;
         if (this.assetsForm.clienteleType === '企业') {
-          this.linkmanFrom.ccId = this.assetsForm.clienteleSubId
+          this.linkmanForm.ccId = this.assetsForm.clienteleSubId
         } else {
           this.assetsForm.clienteleSubId = 1;
-          this.linkmanFrom.ccId = this.assetsForm.clienteleSubId;
+          this.linkmanForm.ccId = this.assetsForm.clienteleSubId;
         }
       } else {
         this.$notify({
@@ -1879,7 +2024,7 @@ export default {
     changeresProduction(res, file, fileList) {
       // 上传成功向表单附件信息数组添加信息
       if (res.code === 200) {
-        this.assetsProductionFrom.filePath.push({ name: file.name, url: res.data.url });
+        this.assetsProductionForm.filePath.push({ name: file.name, url: res.data.url });
       } else {
         this.$notify({
           title: '错误',
@@ -1912,7 +2057,7 @@ export default {
       fileList = fileList.filter((o) => {
         return o.name !== file.name
       });
-      this.assetsProductionFrom.filePath = this.assetsProductionFrom.filePath.filter((o) => {
+      this.assetsProductionForm.filePath = this.assetsProductionForm.filePath.filter((o) => {
         return o.name !== file.name
       });
     },
@@ -2058,7 +2203,7 @@ export default {
         if (res.code === 200) {
           // 产品信息不为null,则证明已经选择过产品,将按钮改为修改
           if (res.data !== null) {
-            this.assetsProductionFrom = res.data;
+            this.assetsProductionForm = res.data;
             this.productionChoiceStatus = 1;
           }
         }
@@ -2066,26 +2211,26 @@ export default {
     },
     // 选择产品,新增产品信息
     assetsProductionSave() {
-      this.$refs.assetsProductionFrom.validate(valid => {
+      this.$refs.assetsProductionForm.validate(valid => {
         if (valid) {
-          this.assetsProductionFrom.businessId = this.assetsForm.id;
-          if (this.assetsProductionFrom.productionType == 1) {
+          this.assetsProductionForm.businessId = this.assetsForm.id;
+          if (this.assetsProductionForm.productionType == 1) {
             // 价值意见书
-            this.assetsProductionFrom.productionType = 'STATEMENT';
-          } else if (this.assetsProductionFrom.productionType == 4) {
+            this.assetsProductionForm.productionType = 'STATEMENT';
+          } else if (this.assetsProductionForm.productionType == 4) {
             // 意见函
-            this.assetsProductionFrom.productionType = 'LETTER';
-          } else if (this.assetsProductionFrom.productionType == 2) {
+            this.assetsProductionForm.productionType = 'LETTER';
+          } else if (this.assetsProductionForm.productionType == 2) {
             // 咨询报告
-            this.assetsProductionFrom.productionType = 'CONSULT';
+            this.assetsProductionForm.productionType = 'CONSULT';
           } else {
             // 评估报告
-            this.assetsProductionFrom.productionType = 'REPORT';
+            this.assetsProductionForm.productionType = 'REPORT';
           }
-          this.assetsProductionFrom.filePath = JSON.stringify(this.assetsProductionFrom.filePath);
-          this.assetsProductionFrom.signatory = JSON.stringify(this.assetsProductionFrom.signatory);
+          this.assetsProductionForm.filePath = JSON.stringify(this.assetsProductionForm.filePath);
+          this.assetsProductionForm.signatory = JSON.stringify(this.assetsProductionForm.signatory);
           this.taskRecordDTO.recordId = this.currentNode.tasks[0].recordId;
-          this.taskRecordDTO.taskData = this.assetsProductionFrom;
+          this.taskRecordDTO.taskData = this.assetsProductionForm;
           this.$api.assets.assetsProductionSave(this.taskRecordDTO).then(res => {
             if (res.code === 200) {
               this.$notify({
@@ -2096,7 +2241,7 @@ export default {
               });
               this.getProductionTypes(this.assetsForm.id);
               this.productionChoiceDialogVisible = false;
-              this.$refs.assetsProductionFrom.resetFields();
+              this.$refs.assetsProductionForm.resetFields();
             }
           })
         }
@@ -2104,22 +2249,22 @@ export default {
     },
     // 选择产品,更新已选择产品信息
     assetsProductionUpdate() {
-      this.$refs.assetsProductionFrom.validate(valid => {
+      this.$refs.assetsProductionForm.validate(valid => {
         if (valid) {
-          this.assetsProductionFrom.businessId = this.assetsForm.id;
-          if (this.assetsProductionFrom.productionType == 1) {
+          this.assetsProductionForm.businessId = this.assetsForm.id;
+          if (this.assetsProductionForm.productionType == 1) {
             // 价值意见书
-            this.assetsProductionFrom.productionType = 'STATEMENT';
-          } else if (this.assetsProductionFrom.productionType == 4) {
+            this.assetsProductionForm.productionType = 'STATEMENT';
+          } else if (this.assetsProductionForm.productionType == 4) {
             // 意见函
-            this.assetsProductionFrom.productionType = 'LETTER';
+            this.assetsProductionForm.productionType = 'LETTER';
           } else {
             // 报告
-            this.assetsProductionFrom.productionType = 'REPORT';
+            this.assetsProductionForm.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 => {
+          this.assetsProductionForm.filePath = JSON.stringify(this.assetsProductionForm.filePath);
+          this.assetsProductionForm.signatory = JSON.stringify(this.assetsProductionForm.signatory);
+          this.$api.assets.assetsProductionUpdate(this.assetsProductionForm).then(res => {
             if (res.code === 200) {
               this.$notify({
                 title: '成功',
@@ -2129,7 +2274,7 @@ export default {
               });
               this.getProductionTypes(this.assetsForm.id);
               this.productionChoiceDialogVisible = false;
-              this.$refs.assetsProductionFrom.resetFields();
+              this.$refs.assetsProductionForm.resetFields();
             }
           })
         }
@@ -2151,7 +2296,7 @@ export default {
       this.takeAssetsProductionNoDTO.businessId = this.assetsForm.id;
       this.takeAssetsProductionNoDTO.productionType = this.nodeBusinessInfo.production[0];
       this.getProductionByBusinessId(this.assetsForm.id);
-      this.takeAssetsProductionNoDTO.printCount = this.assetsProductionFrom.printCount;
+      this.takeAssetsProductionNoDTO.printCount = this.assetsProductionForm.printCount;
 
       if (!this.takeAssetsProductionNoDTO.targetIdList.length == 0) {
         this.$api.assets.takeAssetsProductionNo(this.takeAssetsProductionNoDTO).then(res => {
@@ -2189,44 +2334,46 @@ export default {
         return true;
       }
     },
-    openWriteProductionDialog() {
+    openWriteProductionDialog(status, type) {
       this.productionWriteDialogVisible = true;
+      this.productionDisabledStatus = status;
+      this.writeType = type;
     },
     // 根据业务id与产品号获取资产产品详细信息
     getAssetsProductionDetail(index) {
       let assetsProductionDetailDTO = { businessId: null, productionNo: null };
       assetsProductionDetailDTO.businessId = this.assetsForm.id;
-      assetsProductionDetailDTO.productionNo = this.assetsProductionFrom.productionNo;
+      assetsProductionDetailDTO.productionNo = this.assetsProductionForm.productionNo;
       this.$api.assets.getAssetsProductionDetail(assetsProductionDetailDTO).then(res => {
         if (res.code == 200 && res.data !== null) {
-          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.find(obj => obj.productionNo === assetsProductionDetailDTO.productionNo)?.theHolder;
-          this.assetsProductionFrom.valuationBasisDate = this.assetsEvaluationTarget[0].valuationBasisDate;
-          this.assetsProductionFrom.filePath = [];
-          this.assetsProductionFrom.signatory = [];
+          this.assetsProductionForm.printCount = res.data.printCount;
+          this.assetsProductionForm.clientName = this.assetsForm.bailorContactName;
+          this.assetsProductionForm.clientTel = this.assetsForm.bailorContactTel;
+          this.assetsProductionForm.assetsName = this.assetsForm.name;
+          this.assetsProductionForm.owner = this.assetsEvaluationTarget.find(obj => obj.productionNo === assetsProductionDetailDTO.productionNo)?.theHolder;
+          this.assetsProductionForm.valuationBasisDate = this.assetsEvaluationTarget[0].valuationBasisDate;
+          this.assetsProductionForm.filePath = [];
+          this.assetsProductionForm.signatory = [];
         }
       })
     },
     // 当产品单价或面积改变时触发
     computeAmount() {
-      this.assetsProductionFrom.evaluateAmount = (this.assetsProductionFrom.evaluatePrice * this.assetsProductionFrom.evaluateAcreage) / 10000;
+      this.assetsProductionForm.evaluateAmount = (this.assetsProductionForm.evaluatePrice * this.assetsProductionForm.evaluateAcreage) / 10000;
     },
     // 资产撰写产品(意见书和报告都是这个接口)
     writeAssetsProduction() {
-      this.$refs.assetsProductionFrom.validate(valid => {
+      this.$refs.assetsProductionForm.validate(valid => {
         if (valid) {
-          this.assetsProductionFrom.filePath = JSON.stringify(this.assetsProductionFrom.filePath);
-          if (this.assetsProductionFrom.signatory !== null) {
-            this.assetsProductionFrom.signatory = JSON.stringify(this.assetsProductionFrom.signatory);
+          this.assetsProductionForm.filePath = JSON.stringify(this.assetsProductionForm.filePath);
+          if (this.assetsProductionForm.signatory !== null) {
+            this.assetsProductionForm.signatory = JSON.stringify(this.assetsProductionForm.signatory);
           } else {
-            this.assetsProductionFrom.signatory = null;
+            this.assetsProductionForm.signatory = null;
           }
-          this.assetsProductionFrom.businessId = this.assetsForm.id;
+          this.assetsProductionForm.businessId = this.assetsForm.id;
           this.taskRecordDTO.recordId = this.currentNode.tasks[0].recordId;
-          this.taskRecordDTO.taskData = this.assetsProductionFrom;
+          this.taskRecordDTO.taskData = this.assetsProductionForm;
           this.$api.assets.writeAssetsProduction(this.taskRecordDTO).then(res => {
             if (res.code == 200) {
               this.$notify({
@@ -2238,7 +2385,7 @@ export default {
             }
             this.getAETargetListByAssetsId();
             this.productionWriteDialogVisible = false;
-            this.getProductionList()
+            this.getProductionList();
           })
         }
       })
@@ -2264,7 +2411,17 @@ export default {
       this.nodeBusinessInfo.reportNos.push(this.commitProductionNo);
       this.nodeBusinessInfo.businessSubId = this.commitProductionNo;
 
-      //判断是否还有未撰写的产品(false:无,提交时完成节点任务 true:有,提交时不完成节点任务)
+      // 查询该产品是否已有提交的流程
+      let aProListSelectDTO = { businessId: null, productionNo: null }
+      aProListSelectDTO.businessId = this.assetsForm.id;
+      aProListSelectDTO.productionNo = this.commitProductionNo;
+      this.$api.assets.getInatanceCount(aProListSelectDTO).then(res => {
+        if (res.code == 200) {
+          this.proInatanceCount = res.data;
+        }
+      })
+
+      //判断是否还有未撰写的产品(false:无,提交时完成节点 true:有,提交时不完成节点)
       let isNotWriteAllPro = this.assetsEvaluationTarget.some(obj =>
         (obj.createProductionDate === null || obj.createProductionDate === '')
       );
@@ -2274,6 +2431,124 @@ export default {
         this.nodeBusinessInfo.ifCheckTask = true;
       }
 
+    },
+    // 打开审核定价弹窗表单
+    openCheckValueDialog(id) {
+      this.checkValueDialogVisible = true;
+      this.$api.assets.getAssetsTargetDetail(id).then(res => {
+        if (res.code === 200) {
+          this.targetForm = res.data;
+        }
+      })
+      this.getAssetsEvaluationMethod()
+    },
+    // 评估对象审核定价
+    checkValue() {
+      this.$refs.targetForm.validate(valid => {
+        if (valid) {
+          this.$api.assets.checkValue(this.targetForm).then(res => {
+            if (res.code == 200) {
+              this.$notify({
+                title: '成功',
+                message: '审核定价已完成!',
+                type: 'success',
+                duration: 2000
+              });
+              this.checkValueDialogVisible = false;
+              this.getAETargetListByAssetsId();
+            }
+          })
+        }
+      })
+    },
+    // 根据产品id获取产品详情
+    getAssetsProductionDetail(id) {
+      this.$api.assets.getAssetsProductionDetail(id).then(res => {
+        if (res.code == 200) {
+          this.assetsProductionForm = res.data;
+          this.assetsProductionForm.filePath = JSON.parse(res.data.filePath);
+          this.fileList = this.assetsProductionForm.filePath;
+          this.productionWriteDialogVisible = true;
+        }
+      })
+    },
+    // 更新产品信息
+    productionUpdate() {
+      this.$refs.assetsProductionForm.validate(valid => {
+        if (valid) {
+          this.assetsProductionForm.filePath = JSON.stringify(this.assetsProductionForm.filePath);
+          if (this.assetsProductionForm.signatory !== null) {
+            this.assetsProductionForm.signatory = JSON.stringify(this.assetsProductionForm.signatory);
+          } else {
+            this.assetsProductionForm.signatory = null;
+          }
+          this.$api.assets.productionUpdate(this.assetsProductionForm).then(res => {
+            if (res.code == 200) {
+              this.$notify({
+                title: '成功',
+                message: '产品修改成功!',
+                type: 'success',
+                duration: 2000
+              });
+            }
+            this.getAETargetListByAssetsId();
+            this.productionWriteDialogVisible = false;
+            this.getProductionList();
+          })
+        }
+      })
+    },
+    // 保存产品质检信息(新增与保存都是这个方法)
+    saveQuality() {
+      if ((this.productionPerformanceForm.hardMistake + this.productionPerformanceForm.fatalMistake + this.productionPerformanceForm.normalMistake) > 0 &&
+        this.productionPerformanceForm.reason !== null && this.productionPerformanceForm.reason !== '') {
+        this.taskRecordDTO.recordId = this.currentNode.tasks[0].recordId;
+        this.taskRecordDTO.taskData = this.productionPerformanceForm;
+        this.productionPerformanceForm.businessType = 'ASSET_BUSINESS';
+        const curNode = this.currentNode.nodeCode;
+        if (curNode==='REVIEW_STATEMENT' || curNode==='CHECK_REPORT'){
+          this.productionPerformanceForm.checkLoop = "初审";
+        }
+        if (curNode==='REEXAMINE_STATEMENT' || curNode==='RECHECK_REPORT'){
+          this.productionPerformanceForm.checkLoop = "复审";
+        }
+        if (curNode==='FOURTH_CHECK_REPORT'){
+          this.productionPerformanceForm.checkLoop = "三审";
+        }
+        // id不为空更新
+        if (this.productionPerformanceForm.id) {
+          this.$api.businessProductionPerformance.edit(this.taskRecordDTO).then(res => {
+            if (res.code === 200 && res.data) {
+              this.$notify({
+                title: '成功',
+                message: '质检信息更新成功',
+                type: 'success',
+                duration: 3000
+              });
+              this.productionCheckDialogVisible = false;
+            }
+          })
+        } else { // id为空新增
+          this.$api.businessProductionPerformance.add(this.taskRecordDTO).then(res => {
+            if (res.code === 200 && res.data) {
+              this.$notify({
+                title: '成功',
+                message: '质检信息保存成功',
+                type: 'success',
+                duration: 3000
+              });
+              this.productionCheckDialogVisible = false;
+            }
+          })
+        }
+      } else {
+        this.$notify({
+          title: '错误',
+          message: '错误个数大于0时必须填写扣分原因',
+          type: 'error',
+          duration: 3000
+        });
+      }
     }
   }