Bladeren bron

Merge remote-tracking branch 'origin/dev_v2' into dev_v2

钱惠东 1 week geleden
bovenliggende
commit
e3438533e7

+ 12 - 8
RuoYi-Vue-fast-master/src/main/java/com/ruoyi/project/business/controller/contract/TqContractController.java

@@ -140,14 +140,18 @@ public class TqContractController extends BaseController
     @PutMapping("/editFlow")
     public AjaxResult editFlow(@RequestBody TqContractDto tqContractDto)
     {
-        //付款方式是信用证  || 付款比例不是是30/70  走财务流程
-        if("1".equals(tqContractDto.getPaymentMethod()) || !"1".equals(tqContractDto.getPaymentRatio())){
-            if("200".equals(flowMapper.getStatus(Long.valueOf(CONTRACT_FINANCE_YES.getValue()),tqContractDto.getContractNo()))){
-                return toAjax(tqContractService.updateTqContract(tqContractDto));
-            }
-        }
-        //否则走非财务流程
-        if("200".equals(flowMapper.getStatus(Long.valueOf(CONTRACT_FINANCE_NO.getValue()),tqContractDto.getContractNo()))){
+//        //付款方式是信用证  || 付款比例不是是30/70  走财务流程
+//        if("1".equals(tqContractDto.getPaymentMethod()) || !"1".equals(tqContractDto.getPaymentRatio())){
+//            if("200".equals(flowMapper.getStatus(Long.valueOf(CONTRACT_FINANCE_YES.getValue()),tqContractDto.getContractNo()))){
+//                return toAjax(tqContractService.updateTqContract(tqContractDto));
+//            }
+//        }
+//        //否则走非财务流程
+//        if("200".equals(flowMapper.getStatus(Long.valueOf(CONTRACT_FINANCE_NO.getValue()),tqContractDto.getContractNo()))){
+//            return toAjax(tqContractService.updateTqContract(tqContractDto));
+//        }
+        //如果查询状态是200表示审批通过   更新合同的状态
+        if("200".equals(flowMapper.getStatus(tqContractDto.getBusinessDesc(),tqContractDto.getContractNo()))){
             return toAjax(tqContractService.updateTqContract(tqContractDto));
         }
         return toAjax(1);

+ 4 - 0
RuoYi-Vue-fast-master/src/main/java/com/ruoyi/project/business/domain/vo/contract/TqContractDto.java

@@ -45,4 +45,8 @@ public class TqContractDto extends TqContract
 
     private String type;
 
+    private Long version;
+
+    private Long businessDesc;
+
 }

+ 8 - 4
RuoYi-Vue-fast-master/src/main/java/com/ruoyi/project/business/service/impl/TqContractServiceImpl.java

@@ -293,8 +293,9 @@ public class TqContractServiceImpl implements ITqContractService
             tqContractHistoryService.insertTqContractHistory(tqContractDto.getTqContractHistory());
         }
         //在合同变更或者编辑页面操作的   (设备的审批流要重新恢复到status的初始状态)audit_status
-        this.generateTasks(tqContractDto);
-
+        if(tqContractDto.getGenerateTasksFlag() != null){
+            this.generateTasks(tqContractDto);
+        }
         return tqContractMapper.updateTqContract(tqContractDto);
     }
 
@@ -305,15 +306,18 @@ public class TqContractServiceImpl implements ITqContractService
 
 
     private void generateTasks(TqContractDto tqContractDto){
-        //付款方式是信用证  || 付款比例不是是30/70  走财务流程
+        //变更或者作废(版本大于1) ||付款方式是信用证  || 付款比例不是是30/70  走财务流程
         AuditFlowEnum contract = null;
-        contract = "1".equals(tqContractDto.getPaymentMethod()) || !"1".equals(tqContractDto.getPaymentRatio())? CONTRACT_FINANCE_YES : CONTRACT_FINANCE_NO;
+        contract =tqContractDto.getVersion() > 1|| "1".equals(tqContractDto.getPaymentMethod()) || !"1".equals(tqContractDto.getPaymentRatio())? CONTRACT_FINANCE_YES : CONTRACT_FINANCE_NO;
+        //删除不需要的流程
+        flowService.remove("1".equals(tqContractDto.getPaymentMethod()) || !"1".equals(tqContractDto.getPaymentRatio())? CONTRACT_FINANCE_YES : CONTRACT_FINANCE_NO, Collections.singletonList(tqContractDto.getId()));
         //判断是不是变更或者编辑界面操作的数据
         if(GENERATE_TASKS_FLAG.equals(tqContractDto.getGenerateTasksFlag())){
             flowService.generateTasks(
                     new TaskGenerateParams(contract, tqContractDto, SecurityUtils.getUserId(),
                             tqContractDto.getContractNo()));
         }
+        //手动删除同一流程下多余的数据
     }
     private void updateFlow(TqContract tqContract){
         FlowAuditParam taskGenerateParams = new FlowAuditParam();

+ 1 - 1
RuoYi-Vue-fast-master/src/main/resources/mybatis/business/contract/TqContractLiftMapper.xml

@@ -127,7 +127,7 @@
         <include refid="selectTqContractLiftVo"/>
         <where>
             l.del_flag != '1'
-            <if test="version != null  "> and CAST(SUBSTRING_INDEX(l.contract_no_version_no, '-', -1)  = {version}</if>
+            <if test="version != null  "> and SUBSTRING_INDEX(l.contract_no_version_no, '-', -1)  = #{version}</if>
             <if test="approveStatus != null  and approveStatus != ''"> and (contract.approve_status = #{approveStatus} or CAST(SUBSTRING_INDEX(l.contract_no_version_no, '-', -1) AS UNSIGNED) &lt; contract.version)</if>
             <if test="contractNo != null  and contractNo != ''"> and l.contract_no like concat('%', #{contractNo}, '%')</if>
             <if test="contractName != null  and contractName != ''"> and l.contract_name like concat('%', #{contractName}, '%')</if>

+ 121 - 7
ruoyi-ui-vue2/src/views/contract/edit.vue

@@ -3,15 +3,16 @@
     <div class="top"  style="margin-bottom: 20px">
       <div class="account-title">{{ contractTitle }}</div>
       <div class="button-group">
+        <!--通过"-->
+        <el-button icon="el-icon-circle-check"  type="success" v-if="type === 'approve'"  @click="approveYes">{{ $t('contract.approveYes') }}</el-button>
+        <!--驳回v-if="type === 'approve'"-->
+        <el-button icon="el-icon-circle-close"  type="primary" v-if="type === 'approve'" @click="approveNoOpen">{{ $t('contract.approveNo') }}</el-button>
         <el-button v-if="!disableFlag" type="primary" icon="el-icon-circle-check" @click="submitForm"
                    :loading="submitLoading">{{ $t('common.confirm') }}
         </el-button>
         <el-button  @click="cancel" icon="el-icon-remove-outline">
           {{ $t('common.cancel') }}
         </el-button>
-        <!--        <el-button v-if="type == 'view'" icon="el-icon-arrow-left" plain size="mini" @click="cancel">-->
-        <!--          {{ $t('common.back') }}-->
-        <!--        </el-button>-->
       </div>
     </div>
 
@@ -577,6 +578,26 @@
         <el-button @click="additionalCostFormCancel" icon="el-icon-remove-outline">{{ $t('common.cancel') }}</el-button>
       </div>
     </el-dialog>
+    <!--驳回-->
+    <el-dialog width="35%" :title="$t('contract.approve')" :visible.sync="approveOpen" :close-on-click-modal="false" append-to-body>
+      <el-form ref="approveForm" class="account-form" label-position="top" :model="approveForm" :rules="approveFormRules">
+        <el-row>
+          <el-col :span="24">
+            <!--驳回原因 -->
+            <el-form-item :label="$t('quotation.rejectReason')" prop="approveRemark">
+              <el-input v-model="approveForm.approveRemark" type="textarea" maxlength="500" show-word-limit :rows="5" style="width: 100%;margin-right: 20px"
+                        :placeholder="$t('common.pleaseInput') + $t('quotation.rejectReason')"/>
+            </el-form-item>
+          </el-col>
+
+        </el-row>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" icon="el-icon-circle-check" @click="approveNo">{{ $t('common.confirm') }}</el-button>
+        <el-button icon="el-icon-remove-outline" @click="approveOpen = false">{{ $t('common.cancel') }}</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -601,13 +622,14 @@ import MoneyInput from "@/components/element/form/items/moneyInput.vue";
 import CardTableZy from "@/components/element/table/CardTableZy.vue";
 import {align} from "quill/ui/icons";
 import {getProjectName} from "@/api/business/crm/project";
-import {addContract, getContractById, updateContract} from "@/api/contract/contract";
+import {addContract, editFlow, getContractById, updateContract} from "@/api/contract/contract";
 import {listLift} from "@/api/contract/lift";
 import {comdify, delcommafy} from "@/utils/money";
 import {getContractHistory4Contract, listContractHistory} from "@/api/contract/contractHistory";
 import {getAccountByAgent} from "@/api/business/crm/account";
 import Vue from "vue";
 import {getI18nDictName} from "@/utils/dict/DictFind";
+import {audit} from "@/api/system/flow";
 
 export default {
   name: "Contract-Edit",
@@ -719,6 +741,15 @@ export default {
       tableLoading:false,
       contractHistory:{},
       currentEquipmentRow:{},
+
+      //审批
+      approveOpen:false,
+      approveFormRules: {
+        approveRemark: [
+          {required: true, message: this.$t('common.pleaseInput') + this.$t('quotation.rejectReason'), trigger: 'blur'}
+        ],
+      },
+      approveForm:{approveRemark:''},
     };
   },
 
@@ -811,9 +842,12 @@ export default {
         case 'history':
           this.contractTitle = "合同履历";
           break;
+        case 'approve':
+          this.contractTitle = "合同审批";
+          break;
 
       }
-      this.disableFlag = this.type == 'view' || this.type == 'history';
+      this.disableFlag = this.type == 'view' || this.type == 'history' || this.type == 'approve';
     },
     // 区域发生变化
     async areaChange(val) {
@@ -978,12 +1012,11 @@ export default {
           if(this.form.contractNo && this.type != 'history'){
             //获取履历信息
             listContractHistory({contractNo:this.form.contractNo}).then(resHis=>{
-              // if(res && res.)
               this.amendmentList = resHis.rows
             })
           }
           //获取设备数据
-          listLift({contractNo:this.form.contractNo}).then(res=>{
+          listLift({contractNo:this.form.contractNo,version:this.form.version}).then(res=>{
             if(res ){
               this.equipmentList = res.rows
               //暂存履历信息
@@ -991,6 +1024,13 @@ export default {
               this.contractHistory.tqContractLiftHistoryList = [...this.equipmentList]
             }
           })
+          if(this.type == 'approve'){
+            getContractById(this.contractId).then(response => {
+              this.approveForm = response.data;
+              //确定走审批流程3  还是 4(少)    1.首先如果是不是第一版本  || 付款方式是信用证  || 付款比例不是是30/70  走财务流程3   3.否则还是走4
+              this.approveForm.businessDesc = this.form.version > 1 || this.approveForm.paymentMethod === '1' || this.approveForm.paymentRatio !=='1' ? 3 : 4
+            })
+          }
         });
       }
     },
@@ -1445,6 +1485,77 @@ export default {
     handleHistory(row){
       this.$tab.openPage("查看合同", '/contract-edit/index/' + row.id, {type: 'history'});
     },
+    //审核通过
+    async approveYes(){
+      this.$set(this.approveForm,"approveStatus","2")
+      let bargainObj = {
+        paymentMethod:this.approveForm.paymentMethod,
+        paymentRatio:this.approveForm.paymentRatio
+      }
+
+      let auditForm = {
+        // 审批流
+        auditFlow: this.approveForm.businessDesc,
+        // 业务id  报价id
+        businessId: this.approveForm.id,
+        // 审批结果
+        status: 200,
+        // 备注
+        remark: '审核通过',
+        // 业务参数
+        businessObj: bargainObj
+      }
+      const response  = await audit(auditForm)
+      if(response && response.code == 200){
+        const res = await editFlow({...this.approveForm})
+        if(res && res.code == 200){
+          this.$message.success(this.$t('common.operateSuccess'))
+        }else{
+          this.$message.error("操作失败")
+        }
+      }
+      this.approveOpen = false
+      this.$tab.closeOpenPage({path: "/contract/contract"});
+
+    },
+    approveNoOpen(){
+
+      this.approveOpen = true;
+    },
+    //审核驳回
+    async approveNo(){
+      let valid = await this.$refs['approveForm'].validate()
+      if (!valid) {
+        return
+      }
+      this.$set(this.approveForm,"approveStatus","1")
+      let bargainObj = {}
+      let auditForm = {
+        // 审批流
+        auditFlow: this.approveForm.businessDesc,
+        // 业务id  报价id
+        businessId: this.approveForm.id,
+        // 审批结果
+        status: 30,
+        // 备注
+        remark: this.approveForm.approveRemark,
+        // 业务参数
+        businessObj: bargainObj
+      }
+      const response  = await audit(auditForm)
+      if(response && response.code == 200){
+        const res = await updateContract({...this.approveForm})
+        if(res && res.code == 200){
+          this.$message.success(this.$t('common.operateSuccess'))
+          this.approveOpen = false
+        }else{
+          this.$message.error("操作失败")
+        }
+      }
+      this.approveOpen = false
+      this.$tab.closeOpenPage({path: "/contract/contract"});
+
+    },
   }
 }
 </script>
@@ -1675,5 +1786,8 @@ export default {
     white-space: nowrap;
   }
 }
+::v-deep .account-form .el-form-item--medium .el-form-item__label {
+  line-height: 10px;
+}
 
 </style>

+ 7 - 6
ruoyi-ui-vue2/src/views/contract/index.vue

@@ -527,11 +527,12 @@ export default {
     },
     //打开审批按钮
     handleApprove(row){
-      this.approveForm = []
-      getContractById(row.id).then(response => {
-        this.approveForm = response.data;
-      })
-      this.approveOpen = true
+      // this.approveForm = []
+      // getContractById(row.id).then(response => {
+      //   this.approveForm = response.data;
+      // })
+      // this.approveOpen = true
+      this.$tab.openPage('合同审批', '/contract-edit/index/' + row.id, {type: 'approve'});
     },
     handleAmendment(row){
       this.$tab.openPage(this.$t('contract.amendmentContract'), '/contract-edit/index/' + row.id, {type: 'amendment'});
@@ -574,7 +575,7 @@ export default {
       }
       let auditForm = {
         // 审批流
-        auditFlow: row.paymentMethod === '1' || row.paymentRatio !=='1' ? 3 :4,
+        auditFlow: row.version > 1 || row.paymentMethod === '1' || row.paymentRatio !=='1' ? 3 : 4,
         // 业务id  报价id
         businessId: row.id,
         // 审批结果