Browse Source

1.新增资产绩效分配相关接口
2.归档审核、复审部归档审核、归档节点开发
3.资产绩效分配相关页面开发

GouGengquan 1 year ago
parent
commit
62a2ea1a98

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

@@ -129,5 +129,9 @@ export default {
     // 根据产品号获取产品实收款
     getProductionRealAmount(params){
         return request.get(`assetsProduction/getProductionRealAmount/${params}`);
+    },
+    // 获取资产项目所有参与人信息
+    getAssetsBusinessMembers(params){
+        return request.get(`assets/getAssetsBusinessMembers`, { params: params })
     }
 }

+ 37 - 0
src/api/modules/businessPerformanceDistribution.js

@@ -0,0 +1,37 @@
+import request from '@/utils/request'
+/*
+* 业务产品绩效分配
+*/
+export default {
+  list(params) {
+    return request.get(`businessPerformanceDistribution`, { params: params })
+  },
+  detail(params) {
+    return request.get(`businessPerformanceDistribution/detail`, { params: params })
+  },
+  simpleAll() {
+    return request.get(`businessPerformanceDistribution/simpleAll`)
+  },
+  add(params) {
+    return request.post(`businessPerformanceDistribution`, params)
+  },
+  edit(params) {
+    return request.put(`businessPerformanceDistribution`, params)
+  },
+  delete(params) {
+    return request.delete(`businessPerformanceDistribution/${params}`)
+  },
+  // 新增资产绩效分配信息
+  addAssetsPerformanceDistribution(params){
+    return request.post(`businessPerformanceDistribution/addAssetsPerformanceDistribution`, params)
+  },
+  // 获取资产绩效分配信息list
+  getPerformanceDistributionList(params){
+    return request.get(`businessPerformanceDistribution/getPerformanceDistributionList`, { params: params })
+  },
+  // 修改资产绩效分配信息
+  updateAssetsPerformanceDistribution(params){
+    return request.put(`businessPerformanceDistribution/updateAssetsPerformanceDistribution`, params )
+  }
+
+}

+ 220 - 23
src/views/assets/orderDetail.vue

@@ -19,11 +19,14 @@
       </el-collapse-item>
     </el-collapse>
     <div class="button-area">
-      <el-button @click="openProductionDialog" v-if="currentNode.nodeCode === 'PRODUCT_CHOICE' || currentNode.nodeCode === 'REPORT_CHOICE'" type="danger" round>
+      <el-button @click="openProductionDialog"
+        v-if="currentNode.nodeCode === 'PRODUCT_CHOICE' || currentNode.nodeCode === 'REPORT_CHOICE'" type="danger" round>
         选择产品
       </el-button>
-      <el-button @click="openAssetsAchievementRatioDialog()" v-if="currentNode.nodeCode === 'CHECK_ARCHIVING' || currentNode.nodeCode === 'RECHECK_ARCHIVING'" type="danger" round>
-        <span v-if="currentNode.nodeCode === 'RECHECK_ARCHIVING'">复审部</span> 归档审核
+      <el-button @click="openAssetsAchievementRatioDialog()"
+        v-if="currentNode.nodeCode === 'CHECK_ARCHIVING' || currentNode.nodeCode === 'RECHECK_ARCHIVING'" type="danger"
+        round>
+        <span v-if="currentNode.nodeCode === 'RECHECK_ARCHIVING'">复审部</span>归档审核
       </el-button>
       <el-button v-if="nodeBusinessInfo.currentNodePermission.commit" class="y-save" type="success" round
         @click="commit('PASS')" :disabled="!nodeBusinessInfo.doWorkflow">提交</el-button>
@@ -1056,7 +1059,7 @@
         </div>
       </el-form>
     </el-dialog>
-    <el-dialog :visible.sync="productionCheckDialogVisible" @close="resetProductionForm">
+    <el-dialog :visible.sync="productionCheckDialogVisible" @close="resetProductionForm()">
       <el-form ref="productionPerformanceForm" :model="productionPerformanceForm">
         <div class="createMajor-main-container">
           <div class="postInfo-container">
@@ -1140,11 +1143,70 @@
       </span>
     </el-dialog>
 
-    <el-dialog :visible.sync="assetsAchievementRatioDialogVisible" width="50%">
-      
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="warehouseDialog = false">取 消</el-button>
-        <el-button type="primary" @click="">确 定</el-button>
+    <el-dialog :visible.sync="assetsAchievementRatioDialogVisible" @close="resetProductionForm()"
+      @closed="resetBusinessPerformanceDistributionForm()" width="25%">
+      <div v-if="businessPerformanceDistributionForm.distributionList !== null" 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>
+          <p style="margin-top: 50px; color: red;">绩效比例:</p>
+          <el-row style="margin-top: 10px;" v-for="(member, index) in assetsBusinessMembers" :key="index"
+            class="row-style">
+            <el-col>
+              <p style="width: 65px; display: inline-block; text-align: right;">
+                {{ member.memberName }}:
+              </p>
+              <el-input-number
+                v-model="businessPerformanceDistributionForm.distributionList[index].performanceDistribution"
+                :precision="2" :step="0.1" :max="100">
+              </el-input-number>
+              <p style="margin-left: 5px; display: inline-block;">
+                %
+              </p>
+              <p style="margin-left: 5px; display: inline-block;">
+                <span v-if="member.memberType === '项目负责人'" style="color: blueviolet;">
+                  * {{ member.memberType }}
+                </span>
+                <span v-if="member.memberType === '项目参与人'">
+                  * {{ member.memberType }}
+                </span>
+                <span v-if="member.memberType === '签字师'" style="color: red;">
+                  * {{ member.memberType }}
+                </span>
+              </p>
+            </el-col>
+          </el-row>
+          <span v-if="currentNode.nodeCode === 'CHECK_ARCHIVING'">
+            <el-row style="margin-top: 10px;" class="row-style">
+              <el-col>
+                <el-form>
+                  <el-form-item :rules="{ required: true, message: '请上传附件资料', trigger: 'changes' }" prop="filePath"
+                    label="资料附件:" label-width="120px" class="postInfo-container-item">
+                    <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>
+                  </el-form-item>
+                </el-form>
+              </el-col>
+            </el-row>
+          </span>
+
+        </div>
+      </div>
+      <span v-if="businessPerformanceDistributionForm.distributionList !== null" slot="footer" class="dialog-footer">
+        <el-button @click="assetsAchievementRatioDialogVisible = false">取 消</el-button>
+        <el-button v-if="showDistributionButton" type="primary" @click="saveBusinessPerformanceDistribution()">新
+          增</el-button>
+        <el-button v-if="!showDistributionButton" type="primary" @click="updateAssetsPerformanceDistribution()">修
+          改</el-button>
       </span>
     </el-dialog>
   </div>
@@ -1623,14 +1685,21 @@ export default {
       wareHouseProductionType: null,
       wareHouseproductionId: null,
       assetsAchievementRatioDialogVisible: false,
+      // 项目所有参与人信息
+      assetsBusinessMembers: [],
       // 资产绩效比例表单
-      evaluationMemberForm: {
-        id: null,
+      businessPerformanceDistributionForm: {
+        businessId: null,
         businessType: null,
-        memberId: null,
-        achievementRatio: null,
-        reportNo: null
-      }
+        reportNo: null,
+        distributionList: [
+          // {
+          //   memberId: null,
+          //   performanceDistribution: null
+          // }
+        ]
+      },
+      showDistributionButton: null
     }
   },
   watch: {
@@ -1663,11 +1732,11 @@ export default {
       this.$api.assets.getAssetsDetailById(id).then(res => {
         if (res.code === 200) {
           this.assetsForm = res.data;
+          this.$refs.board.getInstanceQueue();
           this.assetsForm.members = JSON.parse(res.data.members);
           this.initCustomerSelect(this.assetsForm.clienteleType);
           this.getPrincipalByAllotDepartment();
           this.getAllUser();
-          this.$refs.board.getInstanceQueue();
         }
       })
     },
@@ -2152,7 +2221,7 @@ export default {
             if (res.code === 200) {
               this.$notify({
                 title: '成功',
-                message: '添加资产业务评估对象成功',
+                message: '添加资产业务评估对象成功,可继续添加或提交节点',
                 type: 'success',
                 duration: 2000
               });
@@ -2337,7 +2406,7 @@ export default {
             if (res.code === 200) {
               this.$notify({
                 title: '成功',
-                message: '选择产品成功!',
+                message: '选择产品成功!请继续提交流程节点!',
                 type: 'success',
                 duration: 2000
               });
@@ -2493,7 +2562,7 @@ export default {
             if (res.code == 200) {
               this.$notify({
                 title: '成功',
-                message: '产品撰写成功!',
+                message: '产品撰写成功!请继续提交流程节点!',
                 type: 'success',
                 duration: 2000
               });
@@ -2698,7 +2767,7 @@ export default {
             if (res.code === 200 && res.data) {
               this.$notify({
                 title: '成功',
-                message: '质检信息更新成功',
+                message: '质检信息更新成功,请继续提交流程节点!',
                 type: 'success',
                 duration: 3000
               });
@@ -2711,7 +2780,7 @@ export default {
             if (res.code === 200 && res.data) {
               this.$notify({
                 title: '成功',
-                message: '质检信息保存成功',
+                message: '质检信息保存成功,请继续提交流程节点!',
                 type: 'success',
                 duration: 3000
               });
@@ -2778,7 +2847,7 @@ export default {
         if (res.code === 200 && res.data) {
           this.$notify({
             title: '成功',
-            message: '库存操作成功',
+            message: '库存操作成功,请继续提交流程节点!',
             type: 'success',
             duration: 2000
           });
@@ -2819,8 +2888,136 @@ export default {
       })
     },
     // 打开绩效比例分配弹窗
-    openAssetsAchievementRatioDialog(){
+    openAssetsAchievementRatioDialog() {
+      this.businessPerformanceDistributionForm.distributionList = [];
+      //获取报告附件信息
+      let assetsProductionDetailDTO = new Object();
+      assetsProductionDetailDTO.businessId = this.pageParams.row.assetsId;
+      assetsProductionDetailDTO.productionNo = this.pageParams.row.reportNo;
+      this.$api.assets.getAssetsProductionDetailByNo(assetsProductionDetailDTO).then(res => {
+        if (res.code == 200 && res.data !== null) {
+          this.assetsProductionForm = res.data;
+          this.assetsProductionForm.filePath = JSON.parse(res.data.filePath);
+          this.fileList = this.assetsProductionForm.filePath;
+        }
+      })
+
       this.assetsAchievementRatioDialogVisible = true;
+      this.getPerformanceDistributionList();
+
+      // console.log(this.businessPerformanceDistributionForm.distributionList);
+      // if (this.businessPerformanceDistributionForm.distributionList !== null && this.businessPerformanceDistributionForm.distributionList[0].id !== null) {
+      //   this.showDistributionButton = false;
+      // } else {
+      //   this.showDistributionButton = true;
+      // }
+
+    },
+    // 新增资产绩效分配信息
+    saveBusinessPerformanceDistribution() {
+      const sum = this.businessPerformanceDistributionForm.distributionList.reduce((accumulator, obj) => {
+        return accumulator + obj.performanceDistribution;
+      }, 0);
+      if (sum === 100) {
+        this.taskRecordDTO.recordId = this.currentNode.tasks[0].recordId;
+        this.taskRecordDTO.taskData = this.businessPerformanceDistributionForm;
+        this.$api.businessPerformanceDistribution.addAssetsPerformanceDistribution(this.taskRecordDTO).then(res => {
+          if (res.code === 200) {
+            this.$notify({
+              title: '成功',
+              message: '绩效分配新增完成,请继续提交流程节点!',
+              type: 'success',
+              duration: 3000
+            });
+            if(this.currentNode.nodeCode === 'CHECK_ARCHIVING'){
+              this.updateProductionFileInfo();
+            }
+            this.resetBusinessPerformanceDistributionForm();
+          }
+        })
+      } else {
+        this.$notify({
+          title: '警告',
+          message: '所有人员分配的绩效之和必须等于100%!',
+          type: 'error',
+          duration: 3000
+        });
+      }
+    },
+    // 重置绩效分配表单
+    resetBusinessPerformanceDistributionForm() {
+      this.assetsAchievementRatioDialogVisible = false;
+      this.businessPerformanceDistributionForm.businessId = null;
+      this.businessPerformanceDistributionForm.businessType = null;
+      this.businessPerformanceDistributionForm.reportNo = null;
+    },
+    // 获取资产绩效分配信息list
+    getPerformanceDistributionList() {
+      this.businessPerformanceDistributionForm.businessId = this.pageParams.row.assetsId;
+      this.businessPerformanceDistributionForm.businessType = 'ASSET_BUSINESS';
+      this.businessPerformanceDistributionForm.reportNo = this.pageParams.row.reportNo;
+      let selectDTO = this.businessPerformanceDistributionForm;
+      selectDTO.distributionList = null;
+      this.$api.businessPerformanceDistribution.getPerformanceDistributionList(this.businessPerformanceDistributionForm).then(res => {
+        if (res.code === 200 && res.data !== null && res.data.length > 0) {
+          this.businessPerformanceDistributionForm.distributionList = res.data;
+          this.getAssetsBusinessMembers();
+          this.showDistributionButton = false;
+        } else {
+          this.showDistributionButton = true;
+          this.getAssetsBusinessMembers(true);
+        }
+      })
+    },
+    // 获取项目参与人信息
+    getAssetsBusinessMembers(state) {
+      let assetsBusinessMembersDTO = { businessId: null, reportNo: null };
+      assetsBusinessMembersDTO.businessId = this.pageParams.row.assetsId;
+      assetsBusinessMembersDTO.reportNo = this.pageParams.row.reportNo;
+      this.$api.assets.getAssetsBusinessMembers(assetsBusinessMembersDTO).then(res => {
+        // 返回不为空,且没有绩效分配信息
+        if (res.code === 200 && res.data !== null) {
+          this.assetsBusinessMembers = res.data;
+          if (state) {
+            this.businessPerformanceDistributionForm.distributionList = [];
+            for (let i = 0; i < this.assetsBusinessMembers.length; i++) {
+              let memberInfo = { memberId: this.assetsBusinessMembers[i].memberId, performanceDistribution: 0, memberType: this.assetsBusinessMembers[i].memberType }
+              this.businessPerformanceDistributionForm.distributionList.push(memberInfo)
+            }
+          }
+        }
+      })
+    },
+    // 修改资产绩效分配信息
+    updateAssetsPerformanceDistribution() {
+      const sum = this.businessPerformanceDistributionForm.distributionList.reduce((accumulator, obj) => {
+        return accumulator + obj.performanceDistribution;
+      }, 0);
+      if (sum === 100) {
+        this.taskRecordDTO.recordId = this.currentNode.tasks[0].recordId;
+        this.taskRecordDTO.taskData = this.businessPerformanceDistributionForm;
+        this.$api.businessPerformanceDistribution.updateAssetsPerformanceDistribution(this.taskRecordDTO).then(res => {
+          if (res.code === 200) {
+            this.$notify({
+              title: '成功',
+              message: '绩效分配修改完成,请继续提交流程节点!',
+              type: 'success',
+              duration: 3000
+            });
+            if(this.currentNode.nodeCode === 'CHECK_ARCHIVING'){
+              this.updateProductionFileInfo();
+            }
+            this.resetBusinessPerformanceDistributionForm();
+          }
+        })
+      } else {
+        this.$notify({
+          title: '警告',
+          message: '所有人员分配的绩效之和必须等于100%!',
+          type: 'error',
+          duration: 3000
+        });
+      }
     }
   }