ソースを参照

融资企业融资流程修改

dudm 3 年 前
コミット
092c2d5aba

+ 9 - 0
front-vue/src/api/service/financeRecord/record.js

@@ -107,4 +107,13 @@ export function getRecordSealFile(data) {
     method: 'put',
     data: data
   })
+}
+
+// 合同作废
+export function cancelContract(data) {
+  return request({
+    url: '/sc-service/financeRecord/cancelContract',
+    method: 'put',
+    data: data
+  })
 }

+ 1 - 1
front-vue/src/router/index.js

@@ -392,7 +392,7 @@ export const constantRoutes = [
         path: 'recordSeal/:zfrId',
         component: (resolve) => require(['@/views/service/financeRecord/recordSeal'], resolve),
         name: 'recordSeal',
-        meta: { title: '盖章',noCache: true }
+        meta: { title: '融资签署',noCache: true }
       },
     ]
   },

+ 2 - 2
front-vue/src/views/service/credit/credit.vue

@@ -1827,10 +1827,10 @@
         <el-dialog title="流程进度" :visible.sync="hisTaskForm">
         <div>
           <el-steps direction="vertical" :active="histaskList[histaskList.length-1] && histaskList[histaskList.length-1].activityType == 'endEvent' ? histaskList.length : histaskList.length-1" finish-status="success" space = "60px">
-            <el-step :title="item.name" v-for="item in histaskList" :key="item.id">
+            <el-step :title="item.name" v-for="(item,index) in histaskList" :key="index">
               <template slot="description">
                   <span v-if="item.activityType == 'userTask'">办理人:  {{item.displayName}}</span>  节点名称:  {{item.activityName}}   任务接收时间  {{parseTime(new Date(item.startTime), '{y}-{m}-{d} {h}:{i}:{s}')}}     任务办结时间  {{parseTime(new Date(item.endTime), '{y}-{m}-{d} {h}:{i}:{s}')}}
-                    <div v-for="comment in item.commentList" class="text item" :key="comment.id">
+                    <div v-for="(comment,index) in item.commentList" class="text item" :key="index">
                       {{'审批意见: ' + comment.message }}
                     </div>
               </template>

+ 616 - 11
front-vue/src/views/service/credit/goFinance.vue

@@ -308,7 +308,7 @@
     </el-row> -->
     <el-row style="height: 109px;" type="flex" align="middle" justify="center">
       <el-button type="primary" plain @click="cancel">取 消</el-button>
-      <el-button type="primary" @click="submitForm">确 定</el-button>
+      <el-button type="primary" @click="submitForm" v-if="!zfrId">确 定</el-button>
     </el-row>
     <!-- 附件详情 -->
     <el-dialog title="详情" :visible.sync="openDetailBill" width="1120px" append-to-body>
@@ -319,6 +319,125 @@
       <img :src="wordUrl" v-if="show" width="800px" height="500px" />
       <iframe :src="wordUrl" width="800px" height="500px" frameborder="1" v-if="heid" />
     </el-dialog>
+
+    <!-- 合同预览 -->
+    <el-dialog title="预览" :visible.sync="pdfShowDialog" width="60%">
+      <pdf-show :pdfFileList="pdfFileList" :zfiId="this.form.zfiId" :parent="parent"></pdf-show>
+      <el-button type="success" @click="cancelFtp">作废</el-button>
+      <el-button type="primary" @click="selectType">盖章</el-button>
+      <el-button type="primary" plain="" @click="cancel">取消</el-button>
+    </el-dialog>
+    
+    <!--选择签署意愿类型-->
+    <el-dialog
+      :visible.sync="confirmIsShow"
+      width="600px"
+      append-to-body
+      :before-close="cancelUpdate"
+      center
+    >
+      <el-form
+        ref="updateForm"
+        :disabled="false"
+        :model="updateForm"
+        v-if="confirmIsShow"
+        label-width="150px"
+        class="demo-form-inline"
+        :inline="true"
+      >
+        <el-radio-group v-model="updateForm.radio">
+          <el-radio label="01">人脸</el-radio>
+          <el-radio label="02">短信</el-radio>
+        </el-radio-group>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="confirmSelect">确 定</el-button>
+        <el-button @click="cancelUpdate">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!--盖章短信-->
+    <el-dialog
+      :visible.sync="messageIsShow"
+      width="600px"
+      append-to-body
+      :before-close="cancelMessage"
+      center
+    >
+      <el-form
+        ref="messageForm"
+        :disabled="false"
+        :model="messageForm"
+        v-if="messageIsShow"
+        label-width="150px"
+        class="demo-form-inline"
+        :inline="true"
+        @submit.native.prevent
+      >
+        <el-form-item label="验证码" prop="validCode">
+          <el-input v-model="messageForm.validCode" style="width: 200px" maxlength="6" />
+        </el-form-item>
+        <el-form-item>
+          <el-button :disabled="!showCode" type="success" @click="send">
+            点击获取验证码
+            <span v-show="!showCode" class="count">{{count}} s</span>
+          </el-button>
+        </el-form-item>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="checkCode">确定</el-button>
+        <el-button @click="cancelMessage">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!--授权编号激活短信-->
+    <el-dialog
+      :visible.sync="messageIfShow"
+      width="600px"
+      append-to-body
+      :before-close="cancelMessages"
+      center
+    >
+      <el-divider content-position="left">cfca签章授权编号激活</el-divider>
+      <el-form
+        ref="messageForm"
+        :disabled="false"
+        :model="messagesForm"
+        v-if="messageIfShow"
+        label-width="150px"
+        class="demo-form-inline"
+        :inline="true"
+        @submit.native.prevent
+      >
+        <el-form-item label="验证码" prop="validCode">
+          <el-input v-model="messagesForm.validCode" style="width: 200px" maxlength="6" />
+        </el-form-item>
+        <el-form-item>
+          <el-button :disabled="!showCodes" type="success" @click="proSend">
+            点击获取验证码
+            <span v-show="!showCodes" class="count">{{countCode}} s</span>
+          </el-button>
+        </el-form-item>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="checkProCode">确定</el-button>
+        <el-button @click="cancelMessages">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!--人脸二维码-->
+    <el-dialog
+      :visible.sync="faceIsShow"
+      width="500px"
+      append-to-body
+      :before-close="cancelFace"
+      center
+    >
+      <img
+        :src="'data:image/jpeg;base64,' + this.fileUrl"
+        style="overflow: auto; width: 100%; height: 100%;"
+      />
+    </el-dialog>
   </div>
 </template>
 
@@ -326,7 +445,13 @@
 import {
   addRecord,
   listBillInf,
-  listAccInf
+  listAccInf,
+  getContractFile,
+  getRecord,
+  contractSigning,
+  updateChargeStatus,
+  listChargeStatus,
+  cancelContract
 } from "@/api/service/financeRecord/record";
 import { listFinanceInf } from "@/api/common/financeInf";
 import { getFile } from "@/api/service/credit/credit";
@@ -335,6 +460,20 @@ import { getUserProfile } from "@/api/system/user";
 import {getCreditDetail} from "@/api/service/credit/credit";
 import DetailBill from "@/views/service/credit/billDetail";
 import {getCreditSealFile} from "@/api/service/credit/creditHandle";
+import {isOpenApproval} from "@/api/service/credit/approvalRelatedCredit";
+import { listCompanyHandler } from "@/api/common/companyHandler";
+import {
+  sendMessage,
+  checkCode,
+  faceAuth,
+  checkFaceAuth
+} from "@/api/service/credit/message";
+import {
+  cfcaProjectNo,
+  projectSendMessage,
+  checkProCode
+} from "@/api/service/credit/cfcaProject";
+import { balance,transfer } from "@/api/bank/bankInterface";
 export default {
   name: "financeRecord",
   components: {DetailBill},
@@ -433,7 +572,30 @@ export default {
         zfrAmount: [
           { required: true, message: "融资金额不能为空", trigger: "blur" }
         ]
-      }
+      },
+      //盖章预览
+      parent: this,
+      pdfShowDialog: false,
+      pdfFileList: [],
+      confirmIsShow: false,
+      messageIsShow: false,
+      messageIfShow: false,
+      faceIsShow: false,
+      fileUrl: '',
+      //意愿
+      updateForm: {},
+      messageForm: {},
+      messagesForm: {},
+      count: "",
+      timer: null,
+      //授权编号激活短信验证码倒计时
+      //项目编号
+      projectCode: "",
+      showCode: true,
+      showCodes: true,
+      countCode: "",
+      timerCode: null,
+      zfrId: null
     };
   },
   created() {
@@ -461,7 +623,6 @@ export default {
     getFinanceInf(zfrFinanceId) {
       this.loading = true;
       listFinanceInf(zfrFinanceId).then(response => {
-        debugger;
         if (response.data) {
           this.financeInfList = response.data;
           for (let item of this.financeInfList) {
@@ -475,7 +636,6 @@ export default {
     },
     getUserProfile(){
       getUserProfile().then(response => {
-        debugger
           if(response.company){
               this.$set(this.form, "companyName", response.company.scyName);
           }
@@ -484,7 +644,6 @@ export default {
     //获取盖章文件
     getCreditSealFile(){
       getCreditSealFile(this.forms).then((response) => {
-        debugger
           if(response.data.list){
               this.creditSealList = response.data.list;
           }
@@ -497,7 +656,6 @@ export default {
     },
     //文件下载
     handleDownload(row) {
-      debugger
       const pfiFileUrl = row.pfiFileUrl;
       if (pfiFileUrl != null && pfiFileUrl != "") {
               const pfiFileName = row.pfiFileName;
@@ -568,7 +726,6 @@ export default {
     },
     /* 融信编号赋值融资金额 */
     amount(item) {
-      debugger;
       this.$set(this.form, "zfiAmount", item.zfiAmount);
       this.$set(this.form, "zfrAmount", item.zfiAmount);
       this.$set(this.form, "zfrRepaymentDate", item.zfiExpireDate);
@@ -647,10 +804,13 @@ export default {
           console.log(this.form, "AAHAHAHAH");
           addRecord(this.form)
             .then(response => {
-              this.msgSuccess("融资申请成功");
+              console.log(response)
               loading.close();
-              this.$store.dispatch("tagsView/delView", this.$route);
-              this.$router.go(-1);
+              this.zfrId = response.data.zfrId
+              this.isOpenApproval();
+              // this.msgSuccess("融资申请成功");
+              // this.$store.dispatch("tagsView/delView", this.$route);
+              // this.$router.go(-1);
             })
             .catch(response => {
               loading.close();
@@ -819,6 +979,451 @@ export default {
         }
       }
       this.openFile = true;
+    },
+    // 取消按钮
+    cancelFtp() {
+        let form = {}
+        form.zfrId = this.zfrId
+        cancelContract(form).then((response) => {
+            this.cancel();
+        });
+        this.pdfShowDialog = false
+    },
+    //查询有无融资内部审批
+    isOpenApproval(){
+         var confirmParam = {};
+         confirmParam.menuId = "1000000006";
+         isOpenApproval(confirmParam).then((response) => {
+             var result = response.data.isOpen;
+            //有融资内部审批
+            if(true == result){
+              this.msgSuccess("已提交内部审批,请内部审批通过后签署融资协议");
+              this.cancel();
+            }else{//无融资内部审批,显示融资合同预览页面
+              // this.zfrId = '2c83a92dc238468aabd9cd3261748ae0'
+              getRecord(this.zfrId).then(response => {
+                this.zcFinanceInf = response.data.zcFinanceInf;
+                this.needPay = response.data.needPay;
+                //意愿类型
+                this.zfpAuthType = response.data.zfpAuthType;
+                this.selectPayment();
+              });
+            }
+        });
+    },
+    //取消选择意愿
+    cancelUpdate() {
+      this.confirmIsShow = false;
+      this.resetUpdate();
+    },
+    //关闭盖章短信
+    cancelMessage() {
+      this.messageIsShow = false;
+      this.resetMessage();
+    },
+    //关闭授权编号激活短信
+    cancelMessages() {
+      this.messageIfShow = false;
+      this.resetMessages();
+    },
+    //关闭二维码
+    cancelFace() {
+      this.faceIsShow = false;
+    },
+    closePdfShow() {
+      this.pdfShowDialog = false;
+    },
+    resetUpdate() {
+      this.updateForm = {
+        radio: ""
+      };
+      //意愿类型还原为全部
+      this.zfpAuthType = "00";
+      this.resetForm("updateForm");
+    },
+    resetMessage() {
+      this.messageForm = {
+        validCode: ""
+      };
+      this.resetForm("messageForm");
+    },
+    resetMessages() {
+      this.messagesForm = {
+        validCode: ""
+      };
+      this.resetForm("messagesForm");
+    },
+    //获取合同文件
+    getContractFile() {
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        background: "rgba(0, 0, 0,0)"
+      });
+      getContractFile(this.zcFinanceInf)
+        .then(response => {
+          loading.close();
+          if (response.data.list) {
+            this.pdfFileList = response.data.list;
+          }
+          //文件存在
+          if (this.pdfFileList.length > 0) {
+            this.pdfShowDialog = true;
+          } else {
+            this.$message({
+              message: "文件不存在!",
+              type: "warning"
+            });
+          }
+        })
+        .catch(response => {
+          loading.close();
+        });
+    },
+    //缴费查询
+    selectPayment() {
+      listCompanyHandler().then(response => {
+        var self = this;
+        // self.paiAccno = '3115730025233104147';
+        if (response.data == true) {
+          cfcaProjectNo().then(response => {
+            if (response.data.scyCfcaAuthNumber == null) {
+              this.messageIfShow = true;
+            } 
+            else {
+              var zfrId = self.zfrId;
+              listChargeStatus(zfrId).then(response => {
+                if(response.data.accInfList[0]){
+                  self.paiAccno = response.data.accInfList[0].paiAccno;
+                }
+                if (response.data.chargeInfList[0]) {
+                  if (response.data.chargeInfList[0].zciStatus == "00") {
+                    self.zciId = response.data.chargeInfList[0].zciId;
+                    self.$confirm(
+                      "请缴纳手续费" + self.needPay + "元","警告",
+                      {
+                        confirmButtonText: "去缴费",
+                        cancelButtonText: "取消",
+                        type: "warning"
+                      }).then(function() {
+                        const loading = self.$loading({
+                          lock: true,
+                          text: "Loading",
+                          spinner: "el-icon-loading",
+                          background: "rgba(0, 0, 0, 0.7)",
+                        });
+                        if(self.paiAccno){
+                          balance(self.paiAccno).then(response => {
+                            if(eval(self.needPay) > eval(response.data.kyAmt)){
+                              self.$message({
+                                message: '余额为'+response.data.kyAmtT+'不足以抵扣本次缴费费用,请及时充值',
+                                type: 'warning'
+                              });
+                              loading.close();
+                            }else{
+                              console.log()
+                              var map = {'recvAccNo':'','recvAccNm':'','tranAmt':self.needPay,'businessId':self.zciId}
+                              transfer(map).then(response => {
+                                loading.close();
+                                self.msgSuccess("缴费成功");
+                                setTimeout(() => {
+                                  if(response.data.status == "AAAAAAA"){
+                                    updateChargeStatus(zfrId).then(res => {
+                                      self.getContractFile();
+                                    });
+                                  }
+                                }, 1000);
+                              }).catch(() => {
+                                  loading.close();
+                              });
+                            }
+                          }).catch(() => {
+                              loading.close();
+                          });
+                        }else{
+                          self.$message({
+                            message: '您还没有电子账户,请联系平台开通电子账户',
+                            type: 'warning'
+                          });
+                          loading.close();
+                        }
+                      })
+                  } else {
+                      self.getContractFile();
+                  }
+                } else {
+                    self.getContractFile();
+                }
+              });
+            }
+          });
+        } else {
+          this.$message.error("此操作需经办人权限,请确认您是否是经办人");
+        }
+      });
+    },
+    //缴费
+    selectType() {
+        //选择签署意愿
+        if (this.zfpAuthType == "00") {
+          this.confirmIsShow = true;
+        } else {
+          this.checking();
+        }
+    },
+    //确认选择
+    confirmSelect() {
+      if (!this.updateForm.radio) {
+        this.$message({
+          message: "请选择签署意愿类型",
+          type: "warning"
+        });
+        return;
+      }
+
+      this.confirmIsShow = false;
+      this.zfpAuthType = this.updateForm.radio;
+      //调用人脸识别或者短信验证
+      this.checking();
+    },
+    //去签署
+    checking() {
+      //人脸
+      if (this.zfpAuthType == "01") {
+        //调用人脸识别生成二维码
+        faceAuth().then(response => {
+          if (response.data) {
+            //获取二维码
+            this.fileUrl = response.data.fileUrl;
+            //获取源流水号
+            var originalTxSN = response.data.originalTxSN;
+            this.faceIsShow = true;
+            //每5秒查证人脸识别结果
+            var timeInterval = window.setInterval(() => {
+              setTimeout(() => {
+                //源流水不为空并且结果为空
+                if (originalTxSN && !this.faceResult) {
+                  this.authForm.originalTxSN = originalTxSN;
+                  //调用查证方法
+                  checkFaceAuth(this.authForm).then(res => {
+                    //认证结果
+                    this.faceResult = res.data.Verification;
+                    //成功
+                    if (this.faceResult == "20") {
+                      this.msgSuccess("验证成功");
+                      //关闭验证码
+                      this.faceIsShow = false;
+                      //关闭定时
+                      window.clearInterval(timeInterval);
+                      //调用盖章
+                      this.contractSigning();
+                    } else if (this.faceResult == "30") {
+                      this.$message({
+                        message: "验证失败",
+                        type: "warning"
+                      });
+                      //关闭验证码
+                      this.faceIsShow = false;
+                      window.clearInterval(timeInterval);
+                    }
+                  });
+                }
+              }, 0);
+            }, 10000);
+          }
+        });
+      } else if (this.zfpAuthType == "02") {
+        //短信
+        this.messageIsShow = true;
+      }
+    },
+    //发送短信验证码
+    send() {
+      //发送
+      sendMessage().then(response => {
+        if (response.data) {
+          //手机号
+          var newIphone = response.data.newIphone;
+          //结果
+          var result = response.data.result;
+          //倒计时
+          const TIME_COUNT = 60;
+          if (!this.timer) {
+            this.count = TIME_COUNT;
+            this.showCode = false;
+            this.timer = setInterval(() => {
+              if (this.count > 0 && this.count <= TIME_COUNT) {
+                this.count--;
+              } else {
+                this.showCode = true;
+                clearInterval(this.timer);
+                this.timer = null;
+              }
+            }, 1000);
+          }
+          //成功
+          if ("20" == result) {
+            this.$message({
+              message:
+                "已向经办人手机号为" + newIphone + "发送短信验证码,请注意查收",
+              type: "warning"
+            });
+          } else if ("10" == result) {
+            //失败
+            this.$message({
+              message: "短信发送失败",
+              type: "warning"
+            });
+          }
+        }
+      });
+    },
+    //校验验证码是否正确
+    checkCode() {
+      if (!this.messageForm.validCode) {
+        this.$message({
+          message: "请输入验证码",
+          type: "warning"
+        });
+        return;
+      }
+      //校验验证码
+      checkCode(this.messageForm).then(response => {
+        if (response.data) {
+          //结果
+          var verification = response.data.verification;
+          //匹配
+          if ("20" == verification) {
+            //进行下一步-- 盖章
+            this.contractSigning();
+          } else if ("30" == verification) {
+            //不匹配
+            this.$message({
+              message: "验证有误,请重新输入",
+              type: "warning"
+            });
+          }
+        }
+      });
+    },
+    //生成项目授权编号发送短信
+    proSend() {
+      //发送
+      projectSendMessage().then(response => {
+        if (response.data) {
+          //手机号
+          var newIphone = response.data.newIphone;
+          //结果
+          var result = response.data.result;
+          //项目编号
+          this.projectCode = response.data.projectCode;
+          //倒计时
+          const TIME_COUNT = 60;
+          if (!this.timerCode) {
+            this.countCode = TIME_COUNT;
+            this.showCodes = false;
+            this.timerCode = setInterval(() => {
+              if (this.countCode > 0 && this.countCode <= TIME_COUNT) {
+                this.countCode--;
+              } else {
+                this.showCodes = true;
+                clearInterval(this.timerCode);
+                this.timerCode = null;
+              }
+            }, 1000);
+          }
+          //成功
+          if ("60000000" == result) {
+            this.$message({
+              message:
+                "已向经办人手机号为" + newIphone + "发送短信验证码,请注意查收",
+              type: "warning"
+            });
+          } else {
+            //失败
+            this.$message({
+              message: "短信发送失败",
+              type: "warning"
+            });
+          }
+        }
+      });
+    },
+    //校验授权编号验证码
+    checkProCode() {
+      if (!this.projectForm.code) {
+        this.$message({
+          message: "请输入验证码",
+          type: "warning"
+        });
+        return;
+      }
+      //项目编号
+      this.projectForm.projectCode = this.projectCode;
+      //校验验证码
+      checkProCode(this.projectForm).then(response => {
+        if (response.data) {
+          //结果
+          var verification = response.data.verification;
+          //匹配
+          if ("60000000" == verification) {
+            var zfrId = this.zfrId;
+            listChargeStatus(zfrId).then(response => {
+              if (response.data[0]) {
+                if (response.data[0].zciStatus == "00") {
+                  this.$confirm("请缴纳手续费" + this.needPay + "元", "警告", {
+                    confirmButtonText: "去缴费",
+                    cancelButtonText: "取消",
+                    type: "warning"
+                  })
+                    .then(function() {
+                      return updateChargeStatus(zfrId);
+                    })
+                    .then(() => {
+                        this.getContractFile();
+                    });
+                } else {
+                    this.getContractFile();
+                }
+              } else {
+                  this.getContractFile();
+              }
+            });
+          } else {
+            //不匹配
+            this.$message({
+              message: "验证有误,请重新输入",
+              type: "warning"
+            });
+          }
+        }
+      });
+    },
+    //盖章
+    contractSigning() {
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        background: "rgba(0, 0, 0,0)"
+      });
+      this.zcFinanceInf.zfrId = this.zfrId;
+      contractSigning(this.zcFinanceInf)
+        .then(response => {
+          loading.close();
+          this.msgSuccess("盖章成功");
+          if (this.zfpAuthType == "02") {
+            //关闭短信验证
+            this.messageIsShow = false;
+          } else if (this.zfpAuthType == "01") {
+            //关闭人脸二维码
+            this.faceIsShow = false;
+          }
+          this.$store.dispatch("tagsView/delView", this.$route);
+          this.$router.go(-1);
+        })
+        .catch(response => {
+          loading.close();
+        });
     }
   }
 };

+ 614 - 5
front-vue/src/views/service/financeRecord/addFinanceRecord.vue

@@ -257,7 +257,7 @@
             </el-table>
         </el-row> -->
         <el-row type="flex" align="middle" justify="center" style="height: 77px;">
-            <el-button type="primary" @click="submitForm">确 定</el-button>
+            <el-button type="primary" @click="submitForm" v-if="!zfrId">确 定</el-button>
             <!-- <el-button @click="cancel">取 消</el-button> -->
         </el-row>
     </el-row>
@@ -270,6 +270,125 @@
         <img :src="wordUrl" v-if="show" width='700px' height='500px' />
         <iframe :src="wordUrl" width='800px' height='600px' frameborder='1' v-if="heid" />
     </el-dialog>
+    
+    <!-- 合同预览 -->
+    <el-dialog title="预览" :visible.sync="pdfShowDialog" width="60%">
+      <pdf-show :pdfFileList="pdfFileList" :zfiId="this.form.zfiId" :parent="parent"></pdf-show>
+      <el-button type="success" @click="cancelFtp">作废</el-button>
+      <el-button type="primary" @click="selectType">盖章</el-button>
+      <el-button type="primary" plain="" @click="cancel">取消</el-button>
+    </el-dialog>
+    
+    <!--选择签署意愿类型-->
+    <el-dialog
+      :visible.sync="confirmIsShow"
+      width="600px"
+      append-to-body
+      :before-close="cancelUpdate"
+      center
+    >
+      <el-form
+        ref="updateForm"
+        :disabled="false"
+        :model="updateForm"
+        v-if="confirmIsShow"
+        label-width="150px"
+        class="demo-form-inline"
+        :inline="true"
+      >
+        <el-radio-group v-model="updateForm.radio">
+          <el-radio label="01">人脸</el-radio>
+          <el-radio label="02">短信</el-radio>
+        </el-radio-group>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="confirmSelect">确 定</el-button>
+        <el-button @click="cancelUpdate">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!--盖章短信-->
+    <el-dialog
+      :visible.sync="messageIsShow"
+      width="600px"
+      append-to-body
+      :before-close="cancelMessage"
+      center
+    >
+      <el-form
+        ref="messageForm"
+        :disabled="false"
+        :model="messageForm"
+        v-if="messageIsShow"
+        label-width="150px"
+        class="demo-form-inline"
+        :inline="true"
+        @submit.native.prevent
+      >
+        <el-form-item label="验证码" prop="validCode">
+          <el-input v-model="messageForm.validCode" style="width: 200px" maxlength="6" />
+        </el-form-item>
+        <el-form-item>
+          <el-button :disabled="!showCode" type="success" @click="send">
+            点击获取验证码
+            <span v-show="!showCode" class="count">{{count}} s</span>
+          </el-button>
+        </el-form-item>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="checkCode">确定</el-button>
+        <el-button @click="cancelMessage">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!--授权编号激活短信-->
+    <el-dialog
+      :visible.sync="messageIfShow"
+      width="600px"
+      append-to-body
+      :before-close="cancelMessages"
+      center
+    >
+      <el-divider content-position="left">cfca签章授权编号激活</el-divider>
+      <el-form
+        ref="messageForm"
+        :disabled="false"
+        :model="messagesForm"
+        v-if="messageIfShow"
+        label-width="150px"
+        class="demo-form-inline"
+        :inline="true"
+        @submit.native.prevent
+      >
+        <el-form-item label="验证码" prop="validCode">
+          <el-input v-model="messagesForm.validCode" style="width: 200px" maxlength="6" />
+        </el-form-item>
+        <el-form-item>
+          <el-button :disabled="!showCodes" type="success" @click="proSend">
+            点击获取验证码
+            <span v-show="!showCodes" class="count">{{countCode}} s</span>
+          </el-button>
+        </el-form-item>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="checkProCode">确定</el-button>
+        <el-button @click="cancelMessages">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!--人脸二维码-->
+    <el-dialog
+      :visible.sync="faceIsShow"
+      width="500px"
+      append-to-body
+      :before-close="cancelFace"
+      center
+    >
+      <img
+        :src="'data:image/jpeg;base64,' + this.fileUrl"
+        style="overflow: auto; width: 100%; height: 100%;"
+      />
+    </el-dialog>
 </div>
 </template>
 
@@ -277,7 +396,13 @@
 import {
     addRecord,
     listBillInf,
-    listAccInf
+    listAccInf,
+    getContractFile,
+    getRecord,
+    contractSigning,
+    updateChargeStatus,
+    listChargeStatus,
+    cancelContract
 } from "@/api/service/financeRecord/record";
 import {
     listFinanceInf
@@ -292,6 +417,20 @@ import { getUserProfile } from "@/api/system/user";
 import {getCreditDetail} from "@/api/service/credit/credit";
 import {getCreditSealFile} from "@/api/service/credit/creditHandle";
 import DetailBill from "@/views/service/credit/billDetail";
+import {isOpenApproval} from "@/api/service/credit/approvalRelatedCredit";
+import { listCompanyHandler } from "@/api/common/companyHandler";
+import {
+  sendMessage,
+  checkCode,
+  faceAuth,
+  checkFaceAuth
+} from "@/api/service/credit/message";
+import {
+  cfcaProjectNo,
+  projectSendMessage,
+  checkProCode
+} from "@/api/service/credit/cfcaProject";
+import { balance,transfer } from "@/api/bank/bankInterface";
 export default {
     name: "financeRecord",
     components: {DetailBill},
@@ -394,6 +533,29 @@ export default {
             wordUrl: "",
             heid: false,
             show: false,
+            //盖章预览
+            parent: this,
+            pdfShowDialog: false,
+            pdfFileList: [],
+            confirmIsShow: false,
+            messageIsShow: false,
+            messageIfShow: false,
+            faceIsShow: false,
+            fileUrl: '',
+            //意愿
+            updateForm: {},
+            messageForm: {},
+            messagesForm: {},
+            count: "",
+            timer: null,
+            //授权编号激活短信验证码倒计时
+            //项目编号
+            projectCode: "",
+            showCode: true,
+            showCodes: true,
+            countCode: "",
+            timerCode: null,
+            zfrId: null
         };
     },
     created() {
@@ -553,10 +715,12 @@ export default {
                         background: "rgba(0, 0, 0, 0.7)",
                     });
                     addRecord(this.form).then(response => {
-                        this.msgSuccess("融资申请成功");
                         loading.close();
-                        this.$store.dispatch("tagsView/delView", this.$route);
-                        this.$router.go(-1);
+                        this.zfrId = response.data.zfrId
+                        this.isOpenApproval();
+                        // this.msgSuccess("融资申请成功");
+                        // this.$store.dispatch("tagsView/delView", this.$route);
+                        // this.$router.go(-1);
                     }).catch((response) => {
                         loading.close();
                     });
@@ -737,6 +901,451 @@ export default {
             this.download('sc-service/record/export', {
                 ...this.queryParams
             }, `sc-service_record.xlsx`)
+        },
+        // 取消按钮
+        cancelFtp() {
+            let form = {}
+            form.zfrId = this.zfrId
+            cancelContract(form).then((response) => {
+                this.cancel();
+            });
+            this.pdfShowDialog = false
+        },
+        //查询有无融资内部审批
+        isOpenApproval(){
+            var confirmParam = {};
+            confirmParam.menuId = "1000000006";
+            isOpenApproval(confirmParam).then((response) => {
+                var result = response.data.isOpen;
+                //有融资内部审批
+                if(true == result){
+                this.msgSuccess("已提交内部审批,请内部审批通过后签署融资协议");
+                this.cancel();
+                }else{//无融资内部审批,显示融资合同预览页面
+                // this.zfrId = '2c83a92dc238468aabd9cd3261748ae0'
+                getRecord(this.zfrId).then(response => {
+                    this.zcFinanceInf = response.data.zcFinanceInf;
+                    this.needPay = response.data.needPay;
+                    //意愿类型
+                    this.zfpAuthType = response.data.zfpAuthType;
+                    this.selectPayment();
+                });
+                }
+            });
+        },
+        //取消选择意愿
+        cancelUpdate() {
+        this.confirmIsShow = false;
+        this.resetUpdate();
+        },
+        //关闭盖章短信
+        cancelMessage() {
+        this.messageIsShow = false;
+        this.resetMessage();
+        },
+        //关闭授权编号激活短信
+        cancelMessages() {
+        this.messageIfShow = false;
+        this.resetMessages();
+        },
+        //关闭二维码
+        cancelFace() {
+        this.faceIsShow = false;
+        },
+        closePdfShow() {
+        this.pdfShowDialog = false;
+        },
+        resetUpdate() {
+        this.updateForm = {
+            radio: ""
+        };
+        //意愿类型还原为全部
+        this.zfpAuthType = "00";
+        this.resetForm("updateForm");
+        },
+        resetMessage() {
+        this.messageForm = {
+            validCode: ""
+        };
+        this.resetForm("messageForm");
+        },
+        resetMessages() {
+        this.messagesForm = {
+            validCode: ""
+        };
+        this.resetForm("messagesForm");
+        },
+        //获取合同文件
+        getContractFile() {
+        const loading = this.$loading({
+            lock: true,
+            text: "Loading",
+            background: "rgba(0, 0, 0,0)"
+        });
+        getContractFile(this.zcFinanceInf)
+            .then(response => {
+            loading.close();
+            if (response.data.list) {
+                this.pdfFileList = response.data.list;
+            }
+            //文件存在
+            if (this.pdfFileList.length > 0) {
+                this.pdfShowDialog = true;
+            } else {
+                this.$message({
+                message: "文件不存在!",
+                type: "warning"
+                });
+            }
+            })
+            .catch(response => {
+            loading.close();
+            });
+        },
+        //缴费查询
+        selectPayment() {
+        listCompanyHandler().then(response => {
+            var self = this;
+            // self.paiAccno = '3115730025233104147';
+            if (response.data == true) {
+            cfcaProjectNo().then(response => {
+                if (response.data.scyCfcaAuthNumber == null) {
+                this.messageIfShow = true;
+                } 
+                else {
+                var zfrId = self.zfrId;
+                listChargeStatus(zfrId).then(response => {
+                    if(response.data.accInfList[0]){
+                    self.paiAccno = response.data.accInfList[0].paiAccno;
+                    }
+                    if (response.data.chargeInfList[0]) {
+                    if (response.data.chargeInfList[0].zciStatus == "00") {
+                        self.zciId = response.data.chargeInfList[0].zciId;
+                        self.$confirm(
+                        "请缴纳手续费" + self.needPay + "元","警告",
+                        {
+                            confirmButtonText: "去缴费",
+                            cancelButtonText: "取消",
+                            type: "warning"
+                        }).then(function() {
+                            const loading = self.$loading({
+                            lock: true,
+                            text: "Loading",
+                            spinner: "el-icon-loading",
+                            background: "rgba(0, 0, 0, 0.7)",
+                            });
+                            if(self.paiAccno){
+                            balance(self.paiAccno).then(response => {
+                                if(eval(self.needPay) > eval(response.data.kyAmt)){
+                                self.$message({
+                                    message: '余额为'+response.data.kyAmtT+'不足以抵扣本次缴费费用,请及时充值',
+                                    type: 'warning'
+                                });
+                                loading.close();
+                                }else{
+                                console.log()
+                                var map = {'recvAccNo':'','recvAccNm':'','tranAmt':self.needPay,'businessId':self.zciId}
+                                transfer(map).then(response => {
+                                    loading.close();
+                                    self.msgSuccess("缴费成功");
+                                    setTimeout(() => {
+                                    if(response.data.status == "AAAAAAA"){
+                                        updateChargeStatus(zfrId).then(res => {
+                                        self.getContractFile();
+                                        });
+                                    }
+                                    }, 1000);
+                                }).catch(() => {
+                                    loading.close();
+                                });
+                                }
+                            }).catch(() => {
+                                loading.close();
+                            });
+                            }else{
+                            self.$message({
+                                message: '您还没有电子账户,请联系平台开通电子账户',
+                                type: 'warning'
+                            });
+                            loading.close();
+                            }
+                        })
+                    } else {
+                        self.getContractFile();
+                    }
+                    } else {
+                        self.getContractFile();
+                    }
+                });
+                }
+            });
+            } else {
+            this.$message.error("此操作需经办人权限,请确认您是否是经办人");
+            }
+        });
+        },
+        //缴费
+        selectType() {
+            //选择签署意愿
+            if (this.zfpAuthType == "00") {
+            this.confirmIsShow = true;
+            } else {
+            this.checking();
+            }
+        },
+        //确认选择
+        confirmSelect() {
+        if (!this.updateForm.radio) {
+            this.$message({
+            message: "请选择签署意愿类型",
+            type: "warning"
+            });
+            return;
+        }
+
+        this.confirmIsShow = false;
+        this.zfpAuthType = this.updateForm.radio;
+        //调用人脸识别或者短信验证
+        this.checking();
+        },
+        //去签署
+        checking() {
+        //人脸
+        if (this.zfpAuthType == "01") {
+            //调用人脸识别生成二维码
+            faceAuth().then(response => {
+            if (response.data) {
+                //获取二维码
+                this.fileUrl = response.data.fileUrl;
+                //获取源流水号
+                var originalTxSN = response.data.originalTxSN;
+                this.faceIsShow = true;
+                //每5秒查证人脸识别结果
+                var timeInterval = window.setInterval(() => {
+                setTimeout(() => {
+                    //源流水不为空并且结果为空
+                    if (originalTxSN && !this.faceResult) {
+                    this.authForm.originalTxSN = originalTxSN;
+                    //调用查证方法
+                    checkFaceAuth(this.authForm).then(res => {
+                        //认证结果
+                        this.faceResult = res.data.Verification;
+                        //成功
+                        if (this.faceResult == "20") {
+                        this.msgSuccess("验证成功");
+                        //关闭验证码
+                        this.faceIsShow = false;
+                        //关闭定时
+                        window.clearInterval(timeInterval);
+                        //调用盖章
+                        this.contractSigning();
+                        } else if (this.faceResult == "30") {
+                        this.$message({
+                            message: "验证失败",
+                            type: "warning"
+                        });
+                        //关闭验证码
+                        this.faceIsShow = false;
+                        window.clearInterval(timeInterval);
+                        }
+                    });
+                    }
+                }, 0);
+                }, 10000);
+            }
+            });
+        } else if (this.zfpAuthType == "02") {
+            //短信
+            this.messageIsShow = true;
+        }
+        },
+        //发送短信验证码
+        send() {
+        //发送
+        sendMessage().then(response => {
+            if (response.data) {
+            //手机号
+            var newIphone = response.data.newIphone;
+            //结果
+            var result = response.data.result;
+            //倒计时
+            const TIME_COUNT = 60;
+            if (!this.timer) {
+                this.count = TIME_COUNT;
+                this.showCode = false;
+                this.timer = setInterval(() => {
+                if (this.count > 0 && this.count <= TIME_COUNT) {
+                    this.count--;
+                } else {
+                    this.showCode = true;
+                    clearInterval(this.timer);
+                    this.timer = null;
+                }
+                }, 1000);
+            }
+            //成功
+            if ("20" == result) {
+                this.$message({
+                message:
+                    "已向经办人手机号为" + newIphone + "发送短信验证码,请注意查收",
+                type: "warning"
+                });
+            } else if ("10" == result) {
+                //失败
+                this.$message({
+                message: "短信发送失败",
+                type: "warning"
+                });
+            }
+            }
+        });
+        },
+        //校验验证码是否正确
+        checkCode() {
+        if (!this.messageForm.validCode) {
+            this.$message({
+            message: "请输入验证码",
+            type: "warning"
+            });
+            return;
+        }
+        //校验验证码
+        checkCode(this.messageForm).then(response => {
+            if (response.data) {
+            //结果
+            var verification = response.data.verification;
+            //匹配
+            if ("20" == verification) {
+                //进行下一步-- 盖章
+                this.contractSigning();
+            } else if ("30" == verification) {
+                //不匹配
+                this.$message({
+                message: "验证有误,请重新输入",
+                type: "warning"
+                });
+            }
+            }
+        });
+        },
+        //生成项目授权编号发送短信
+        proSend() {
+        //发送
+        projectSendMessage().then(response => {
+            if (response.data) {
+            //手机号
+            var newIphone = response.data.newIphone;
+            //结果
+            var result = response.data.result;
+            //项目编号
+            this.projectCode = response.data.projectCode;
+            //倒计时
+            const TIME_COUNT = 60;
+            if (!this.timerCode) {
+                this.countCode = TIME_COUNT;
+                this.showCodes = false;
+                this.timerCode = setInterval(() => {
+                if (this.countCode > 0 && this.countCode <= TIME_COUNT) {
+                    this.countCode--;
+                } else {
+                    this.showCodes = true;
+                    clearInterval(this.timerCode);
+                    this.timerCode = null;
+                }
+                }, 1000);
+            }
+            //成功
+            if ("60000000" == result) {
+                this.$message({
+                message:
+                    "已向经办人手机号为" + newIphone + "发送短信验证码,请注意查收",
+                type: "warning"
+                });
+            } else {
+                //失败
+                this.$message({
+                message: "短信发送失败",
+                type: "warning"
+                });
+            }
+            }
+        });
+        },
+        //校验授权编号验证码
+        checkProCode() {
+        if (!this.projectForm.code) {
+            this.$message({
+            message: "请输入验证码",
+            type: "warning"
+            });
+            return;
+        }
+        //项目编号
+        this.projectForm.projectCode = this.projectCode;
+        //校验验证码
+        checkProCode(this.projectForm).then(response => {
+            if (response.data) {
+            //结果
+            var verification = response.data.verification;
+            //匹配
+            if ("60000000" == verification) {
+                var zfrId = this.zfrId;
+                listChargeStatus(zfrId).then(response => {
+                if (response.data[0]) {
+                    if (response.data[0].zciStatus == "00") {
+                    this.$confirm("请缴纳手续费" + this.needPay + "元", "警告", {
+                        confirmButtonText: "去缴费",
+                        cancelButtonText: "取消",
+                        type: "warning"
+                    })
+                        .then(function() {
+                        return updateChargeStatus(zfrId);
+                        })
+                        .then(() => {
+                            this.getContractFile();
+                        });
+                    } else {
+                        this.getContractFile();
+                    }
+                } else {
+                    this.getContractFile();
+                }
+                });
+            } else {
+                //不匹配
+                this.$message({
+                message: "验证有误,请重新输入",
+                type: "warning"
+                });
+            }
+            }
+        });
+        },
+        //盖章
+        contractSigning() {
+        const loading = this.$loading({
+            lock: true,
+            text: "Loading",
+            background: "rgba(0, 0, 0,0)"
+        });
+        this.zcFinanceInf.zfrId = this.zfrId;
+        contractSigning(this.zcFinanceInf)
+            .then(response => {
+            loading.close();
+            this.msgSuccess("盖章成功");
+            if (this.zfpAuthType == "02") {
+                //关闭短信验证
+                this.messageIsShow = false;
+            } else if (this.zfpAuthType == "01") {
+                //关闭人脸二维码
+                this.faceIsShow = false;
+            }
+            this.$store.dispatch("tagsView/delView", this.$route);
+            this.$router.go(-1);
+            })
+            .catch(response => {
+            loading.close();
+            });
         }
     }
 };

+ 65 - 3
front-vue/src/views/service/financeRecord/financeRecord.vue

@@ -447,7 +447,14 @@
                     @click="seal(scope.row)"
                     v-hasPermi="['finance:record:seal']"
                     v-if="scope.row.zfrApproveStt == '01' && scope.row.zfrStatus == '04'"
-                  >盖章</el-button>
+                  >融资</el-button>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-info"
+                    @click="handleFlowable(scope.row)"
+                    v-if="scope.row.zfrApproveStt == '00' || scope.row.zfrApproveStt == '02'"
+                  >查看流程</el-button>
                 </template>
               </el-table-column>
             </el-table>
@@ -608,6 +615,13 @@
                     @click="handleExport(scope.row)"
                     v-hasPermi="['finance:record:export']"
                   >导出</el-button>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-info"
+                    @click="handleFlowable(scope.row)"
+                    v-if="scope.row.zfrApproveStt == '00' || scope.row.zfrApproveStt == '02'"
+                  >查看流程</el-button>
                 </template>
               </el-table-column>
             </el-table>
@@ -760,6 +774,13 @@
                     @click="handleExport(scope.row)"
                     v-hasPermi="['finance:record:export']"
                   >导出</el-button>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-info"
+                    @click="handleFlowable(scope.row)"
+                    v-if="scope.row.zfrApproveStt == '00' || scope.row.zfrApproveStt == '02'"
+                  >查看流程</el-button>
                 </template>
               </el-table-column>
             </el-table>
@@ -911,6 +932,13 @@
                     @click="handleExport(scope.row)"
                     v-hasPermi="['finance:record:export']"
                   >导出</el-button>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-info"
+                    @click="handleFlowable(scope.row)"
+                    v-if="scope.row.zfrApproveStt == '00' || scope.row.zfrApproveStt == '02'"
+                  >查看流程</el-button>
                 </template>
               </el-table-column>
             </el-table>
@@ -983,6 +1011,25 @@
           <el-dialog :visible.sync="dialogVisible">
             <img width="100%" :src="dialogImageUrl" alt />
           </el-dialog>
+          
+          <!--查看内部审批流程-->
+          <el-dialog title="流程进度" :visible.sync="hisTaskForm">
+            <div>
+                <el-steps direction="vertical" :active="histaskList[histaskList.length-1] && histaskList[histaskList.length-1].activityType == 'endEvent' ? histaskList.length : histaskList.length-1" finish-status="success" space = "60px">
+                  <el-step :title="item.name" v-for="(item,index) in histaskList" :key="index">
+                    <template slot="description">
+                        <span v-if="item.activityType == 'userTask'">办理人:  {{item.displayName}}</span>  节点名称:  {{item.activityName}}   任务接收时间  {{parseTime(new Date(item.startTime), '{y}-{m}-{d} {h}:{i}:{s}')}}     任务办结时间  {{parseTime(new Date(item.endTime), '{y}-{m}-{d} {h}:{i}:{s}')}}
+                          <div v-for="(comment,index) in item.commentList" class="text item" :key="index">
+                            {{'审批意见: ' + comment.message }}
+                          </div>
+                    </template>
+                  </el-step>
+                </el-steps>
+              </div>
+            <div slot="footer" class="dialog-footer">
+              <el-button @click="hisTaskForm = false">关 闭</el-button>
+            </div>
+          </el-dialog>
         </el-tabs>
       </div>
     </el-row>
@@ -1004,6 +1051,7 @@ import { getToken } from "@/utils/auth";
 import { columnQuery } from "@/api/common/columnSetting";
 import ColumnSetting from "../../../components/Table/columnSetting.vue";
 import { getUserProfile } from "@/api/system/user";
+import {approvalProcess} from "@/api/service/credit/approvalRelatedCredit";
 export default {
   name: "finaceRecord",
   components: {
@@ -1404,7 +1452,10 @@ export default {
         ]
       },
       selfDom: this,
-      activeName: "first"
+      activeName: "first",
+      //审批
+      hisTaskForm:false,
+      histaskList:[]
     };
   },
   created() {
@@ -2151,7 +2202,18 @@ export default {
       } else if (this.activeName == "fourth") {
         this.columnQueryThree();
       }
-    }
+    },
+    //查看流程
+    handleFlowable(row){
+      const zfrId = row.zfrId
+      this.hisTaskForm = true;
+      let form = {}
+      form.zfiId = zfrId
+      console.log(form)
+      approvalProcess(form).then((response) => {
+          this.histaskList = response.data;
+      })  
+    },
   }
 };
 </script>

ファイルの差分が大きいため隠しています
+ 1240 - 1054
front-vue/src/views/service/financeRecord/recordSeal.vue