Selaa lähdekoodia

Merge branch 'master' of http://git.keao.tech//SupplyChain/front

cuixq 4 vuotta sitten
vanhempi
commit
a66f053df4

+ 27 - 0
front-vue/src/api/login.js

@@ -74,3 +74,30 @@ export function chooseCompanyLogin(companyId) {
     data: {companyId : companyId}
   })
 }
+
+// 注册
+export function registerUser(query) {
+  return request({
+    url: '/system/user/registerUser',
+    method: 'get',
+    params: query
+  })
+}
+
+// 忘记密码验证
+export function forgetUser(query) {
+  return request({
+    url: '/system/user/forgetUser',
+    method: 'get',
+    params: query
+  })
+}
+
+// 忘记密码修改
+export function updateUser(query) {
+  return request({
+    url: '/system/user/updateUser',
+    method: 'get',
+    params: query
+  })
+}

+ 1 - 1
front-vue/src/permission.js

@@ -7,7 +7,7 @@ import { getToken, removeToken } from '@/utils/auth'
 
 NProgress.configure({ showSpinner: false })
 
-const whiteList = ['/login', '/register', '/wxLogin', '/userLogin', '/authorizeLogin', '/auth-redirect', '/bind', '/auth']
+const whiteList = ['/login', '/registerUser', '/forgetUser', '/register', '/wxLogin', '/userLogin', '/authorizeLogin', '/auth-redirect', '/bind', '/auth']
 
 
 router.beforeEach((to, from, next) => {

+ 10 - 0
front-vue/src/router/index.js

@@ -44,6 +44,16 @@ export const constantRoutes = [
     hidden: true
   },
   {
+    path: '/registerUser',
+    component: (resolve) => require(['@/views/registerUser'], resolve),
+    hidden: true
+  },
+  {
+    path: '/forgetUser',
+    component: (resolve) => require(['@/views/forgetUser'], resolve),
+    hidden: true
+  },
+  {
     path: '/register',
     component: (resolve) => require(['@/views/register'], resolve),
     hidden: true

+ 584 - 0
front-vue/src/views/forgetUser.vue

@@ -0,0 +1,584 @@
+<template>
+    <div class="backdrop zap-login">
+        <el-container>
+            <!-- logo -->
+            <img class="zap-logo" src="../assets/images/login_logo.png" alt="">
+             <el-main>
+                <!-- 中间部分 -->
+                <div class="login">
+                    <div class="login-left">
+                        <img class="login-name" src="../assets/images/logo_name.png" alt="">
+                        <img class="login-illustration" src="../assets/images/login_img.png" alt="">
+                    </div>
+                    <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
+                        <template v-if="!scanningLogin">
+                            <div class="zap-2dcode">
+                                <!-- <img class="zap-2dcode__text" src="../assets/images/code1_1.png" alt=""> -->
+                                <!-- <img class="zap-2dcode__img" src="../assets/images/code1_2.gif" alt="" @click="scanningLogin=true"> -->
+                            </div>
+                            <el-tabs v-model="activeName" class="zap-tabs" @tab-click="changeLoginType">
+                                <el-tab-pane label="找回密码" name="login_shortMessage">
+                                    <el-form-item prop="phone" v-if="!passwordUpdate">
+                                        <el-input v-model="loginForm.phone" type="text" auto-complete="off" placeholder="手机号" maxlength="11">
+                                            <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+                                        </el-input>
+                                    </el-form-item>
+                                    <el-form-item prop="shortMessageCode" v-if="!passwordUpdate">
+                                        <el-input v-model="loginForm.shortMessageCode" type="text"  maxlength="" auto-complete="off" placeholder="请输入验证码" id="" onkeydown="enterHandler(event)">
+                                            <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
+                                            <el-button class="zap-code-button" slot="suffix" @click="sendMessage" :disabled="sendShortMessageBtn">{{codeBtnWord}}</el-button>
+                                        </el-input>
+                                    </el-form-item>
+                                    <el-form-item style="width:100%;" v-if="!passwordUpdate">
+                                        <el-button :loading="loading"  class="zap-button" size="medium" type="primary" @click.native.prevent="handleLogin">
+                                            <span v-if="!loading">下 一 步</span>
+                                            <span v-else>请 稍 后...</span>
+                                        </el-button>
+                                    </el-form-item>
+                                    <el-form-item prop="password" v-if="passwordUpdate">
+                                        <el-input v-model="loginForm.password" type="text" auto-complete="off" placeholder="密码" maxlength="20">
+                                            <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+                                        </el-input>
+                                    </el-form-item>
+                                    <el-form-item prop="again" v-if="passwordUpdate">
+                                        <el-input v-model="loginForm.again" type="text" auto-complete="off" placeholder="确认密码" maxlength="20">
+                                            <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+                                        </el-input>
+                                    </el-form-item>
+                                    <el-form-item style="width:100%;" v-if="passwordUpdate">
+                                        <el-button :loading="loading"  class="zap-button" size="medium" type="primary" @click.native.prevent="handleUpdate">
+                                            <span v-if="!loading">下 一 步</span>
+                                            <span v-else>请 稍 后...</span>
+                                        </el-button>
+                                    </el-form-item>
+                                </el-tab-pane>
+                            </el-tabs>
+                        </template>
+                    </el-form>
+                    <!--  底部  -->
+                </div>
+            </el-main>
+        </el-container>
+        <el-footer></el-footer>
+
+        <!-- 密码登录验证码 -->
+        <el-dialog
+            title="验证码"
+            :close-on-click-modal="false"
+            :visible.sync="codeDialogVisible"
+            width="30%">
+            <div style="display:flex;">
+                <el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 53%;" @keyup.enter.native="handleLogin">
+                    <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
+                </el-input>
+                <div class="login-code">
+                    <img :src="codeUrl" @click="getCode" class="login-code-img" />
+                </div>
+            </div>
+            <span slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="handleImgCodeSubmit">确 定</el-button>
+            </span>
+        </el-dialog>
+    </div>
+</template>
+<script>
+import { getCodeImg, sendShortMessage, chooseCompanyLogin, forgetUser, updateUser} from "@/api/login";
+import { wxImg } from "@/api/system/weChat";
+import Cookies from "js-cookie";
+import { encrypt, decrypt } from "@/utils/jsencrypt";
+import wxlogin from 'vue-wxlogin'
+export default {
+  components: {
+    wxlogin : wxlogin
+  },
+    name: "Login",
+    data() {
+        return {
+            //默认背景图
+            activeName: "login_shortMessage",
+            baseImg: require('../assets/images/login_img.png'),
+            BackgroundImg : require('../assets/images/login_img.png'),
+            scanningLogin: false, // 是否扫码登陆
+            logo: '',
+            // baseLogo: require('../assets/images/lgo.png'),
+            codeUrl: "",
+            cookiePassword: "",
+            loginForm: {
+                shortMessageCode: '',
+                username: "",
+                password: "",
+                rememberMe: false,
+                code: "",
+                uuid: "",
+                unionId : "",
+                type : "2"
+            },
+            codeBtnWord: '获取验证码', // 获取验证码按钮文字
+            waitTime:2, // 获取验证码按钮失效时间
+            loginRules: {
+                company: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "企业名称不能为空",
+                    },
+                ],
+                username: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "联系人不能为空",
+                    },
+                ],
+                phone: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "手机号不能为空",
+                    },
+                ],
+                shortMessageCode: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "验证码不能为空",
+                    },
+                ],
+                password: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "密码不能为空",
+                    },
+                ],
+                again: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "确认密码不能为空",
+                    },
+                ],
+            },
+            loading: false,
+            redirect: undefined,
+            wxSrc: require("../assets/images/wx1.png"),
+            sendShortMessageBtn : false,
+            dialogVisible : false,
+            companyList : [],
+            chooseCompanyId : '',
+            codeDialogVisible: false,
+            passwordUpdate: false
+        };
+    },
+    watch: {
+        $route: {
+            handler: function (route) {
+                this.redirect = route.query && route.query.redirect;
+            },
+            immediate: true,
+        },
+    },
+    created() {
+        this.getCode();
+        // this.getlistDomain();
+    },
+    methods: {
+      changeImg(){
+          this.wxSrc = require("../assets/images/wx.png")
+      },
+      returnImg(){
+          this.wxSrc = require("../assets/images/wx1.png")
+      },
+      getCode() {
+          getCodeImg().then((res) => {
+              this.codeUrl = "data:image/gif;base64," + res.img;
+              this.loginForm.uuid = res.uuid;
+          });
+      },
+      handleImgCodeSubmit () {
+          if (this.activeName === 'login_password') {
+              this.handleLogin()
+          } else {
+              this.sendMessage()
+          }
+      },
+      handleLogin() {
+          this.$refs.loginForm.validate((valid) => {
+              if (valid) {
+                  this.loading = true;
+                  // 验证码不能为空
+                  if (this.loginForm.shortMessageCode == null || this.loginForm.shortMessageCode == "") {
+                    this.msgError("请输入短信验证码!");
+                    this.loading = false;
+                    return;
+                  }
+                  forgetUser(this.loginForm).then((res) => {
+                    this.loading = false;
+                    this.passwordUpdate = true
+                    if (res.data.code == "0") {
+                        console.log("未认证!")
+                        this.$router.push({ path: "/login" });
+                    }
+                  }).catch(() => {
+                    this.loading = false;
+                  });
+              }
+          });
+      },
+      handleUpdate() {
+          this.$refs.loginForm.validate((valid) => {
+              if (valid) {
+                  this.loading = true;
+                  // 验证码不能为空
+                  if (this.loginForm.shortMessageCode == null || this.loginForm.shortMessageCode == "") {
+                    this.msgError("请输入短信验证码!");
+                    this.loading = false;
+                    return;
+                  }
+                  updateUser(this.loginForm).then((res) => {
+                    this.loading = false;
+                    this.msgSuccess("重置密码成功!");
+                    this.$router.push({ path: "/login" });
+                  }).catch(() => {
+                    this.loading = false;
+                  });
+              }
+          });
+      },
+      getUrlKey(name) {
+          return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ""])[1].replace(/\+/g, '%20')) || null
+      },
+      changeLoginType(e){
+
+          if (this.activeName === 'login_password') {
+              this.loginRules.code = [
+                    {
+                        required: true,
+                        trigger: "change",
+                        message: "验证码不能为空",
+                    },
+                ]
+          } else {
+              delete this.loginRules.code
+          }
+        this.getCode();
+      },
+      sendMessage(){
+                  // 验证码不能为空
+                  if (this.loginForm.phone == null || this.loginForm.phone == "") {
+                    this.msgError("请输入手机号!");
+                    this.loading = false;
+                    return;
+                  }
+                  if (this.codeDialogVisible) {
+                    if (!this.loginForm.code) {
+                        this.loading = false
+                        return this.msgError("请输入验证码!");
+                    } else {
+                        this.codeDialogVisible = false
+                    }
+                  } else {
+                      return this.codeDialogVisible = true
+                  }
+                  // 调用获取短信验证码接口
+                  sendShortMessage(this.loginForm.phone, this.loginForm.code, this.loginForm.uuid).then(response => {
+                    this.sendShortMessageBtn = true;
+                    this.msgSuccess("发送成功!");
+
+                    // 因为下面用到了定时器,需要保存this指向
+                    let that = this
+                    that.waitTime = 60;
+                    this.codeBtnWord = `${this.waitTime}s 后重新获取`
+                    let timer = setInterval(function(){
+                        if(that.waitTime>1){
+                            that.waitTime--
+                            that.codeBtnWord = `${that.waitTime}s 后重新获取`
+                        }else{
+                            clearInterval(timer)
+                            that.codeBtnWord = '获取验证码'
+                            that.waitTime = 60
+                            that.getCode();
+                            that.sendShortMessageBtn = false;
+                        }
+                    },1000)
+
+                  }).catch((response)=>{
+                    this.getCode();
+                  });
+
+      },
+      chooseLogin(){
+        chooseCompanyLogin(this.chooseCompanyId).then(response => {
+          if (response.code == "200") {
+            // 认证通过
+            if (response.data.sysUser.companyStatus == "00") {
+                if(this.redirect == '/home'){
+                    this.$router.push({ path: "/homePage"+this.redirect || "/" });
+                }else{
+                    this.$router.push({ path: this.redirect || "/" });
+                }
+            //   this.$router.push({ path: this.redirect || "/" });
+            // 认证未通过
+            } else {
+              console.log("未认证通过!")
+              this.$router.push({ path: "/certification" });
+            }
+          }
+        }).catch((response)=>{
+
+        });
+      }
+    }
+};
+</script>
+<style rel="stylesheet/scss" lang="scss">
+// 大背景图
+.backdrop {
+    padding-top: 100px;
+    background-color: #ebf3ff;
+    width: 100%;
+    min-height: 100%;
+    text-align: center;
+}
+.zap-login{
+    .login {
+        display: flex;
+        justify-content: center;
+        height: 100%;
+        background-size: cover;
+    }
+    // 中间背景图
+    .login-form {
+        margin-left: 75px;
+        border-radius: 6px;
+        background-size: 935px 434px;
+        background-repeat: no-repeat;
+        margin-top: 40px;
+    }
+    // 输入框大小
+    .el-input {
+        height: 55px;
+        width: 100%;
+        background-image: linear-gradient(
+            #fdfdfd,
+            #fdfdfd),
+        linear-gradient(
+            #e7f0ff,
+            #e7f0ff);
+        background-blend-mode: normal,
+            normal;
+        input {
+            height: 55px;
+            width: 100%;
+            font-size: 18px;
+        }
+    }
+    .input-icon {
+        height: 53px;
+        width: 22px;
+        margin-left: 14px;
+        margin-right: 14px
+    }
+    .el-input--prefix .el-input__inner{
+        padding-left: 50px;
+    }
+    .login-tip {
+        font-size: 13px;
+        text-align: center;
+    }
+    .el-form-item--medium .el-form-item__content{
+        display: flex;
+        align-items: center;
+    }
+    // 验证码
+    .login-code {
+        height: 55px;
+        img {
+            cursor: pointer;
+            vertical-align: middle;
+        }
+    }
+    .login-code-img {
+        flex: 1;
+        height: 55px;
+        margin-left: 8px;
+    }
+
+    .rightulliimg{
+        width: 860px;
+
+    }
+    .divider_left{
+        margin-left: -40px;
+    }
+
+    // 内部供应链
+    .zap-tabs{
+        width: 410px;
+        min-height: 480px;
+        padding: 10px 48px 46px;
+        box-sizing: border-box;
+        background-image: linear-gradient(
+            #ffffff,
+            #ffffff),
+        linear-gradient(
+            #f3f3f3,
+            #f3f3f3);
+        .el-tabs__nav-wrap{
+            padding: 0 12px;
+        }
+        .el-tabs__nav-wrap::after{
+            height: 0;
+        }
+        .el-tabs__nav{
+            width: 100%;
+        }
+        .el-tabs__item{
+            height: 56px;
+            line-height: 56px;
+            font-size: 24px;
+            color: #333333;
+            &:nth-of-type(3){
+                padding-left: 30px;
+            }
+        }
+        .el-tabs__item.is-active{
+            color: #0056eb;
+        }
+        .el-tabs__active-bar{
+            background-color: #0056eb;
+        }
+    }
+    .login-left{
+        width: 704px;
+        margin-top: 40px;
+        text-align: left;
+        .login-name{
+            width: 515px;
+        }
+        .login-illustration{
+            width: 704px;
+        }
+    }
+    .zap-logo{
+        position: absolute;
+        top: 25px;
+        left: 45px;
+        width: 210px;
+        height: 60px;
+    }
+    .zap-2dcode{
+        display: flex;
+        justify-content: flex-end;
+        align-items: center;
+        width: 410px;;
+        padding-top: 10px;
+        padding-right: 10px;
+        font-size: 0;
+        background-color: #ffffff;
+        box-sizing: border-box;
+    }
+    .zap-2dcode__text{
+        width: 113px;
+        height: 28px;
+    }
+    .zap-2dcode__img{
+        width: 60px;
+        height: 61px;
+        cursor: pointer;
+    }
+    .zap-button{
+        margin-top: 25px;
+        width: 100%;
+        height: 55px;
+        font-size: 18px;
+        border-radius: 0;
+        background-image: linear-gradient(
+            #0056eb,
+            #0056eb),
+        linear-gradient(
+            #e7f0ff,
+            #e7f0ff);
+        background-blend-mode: normal,
+            normal;
+    }
+    .zap-agreement{
+        display: flex;
+        align-items: top;
+        margin-top: 8px;
+        line-height: 18px;
+        font-size: 12px;
+    }
+    .zap-agreement__text{
+        color: #666666;
+    }
+    .zap-agreement__link{
+        display: flex;
+        flex-direction: column;
+        align-items: flex-start;
+        color: #389cf4;
+        cursor: pointer;
+    }
+    .zap-code-button{
+        padding: 0 16px;
+        line-height: 55px;
+        font-size: 18px;
+        color: #23b24b;
+        border: none;
+        background-color: transparent;
+    }
+    .el-button.is-disabled, .el-button.is-disabled:hover, .el-button.is-disabled:focus{
+        background-color: transparent;
+    }
+    // 扫码登录
+    .zap-scanning{
+        width: 410px;
+        height: 550px;
+        background-image: linear-gradient(
+            #ffffff,
+            #ffffff),
+        linear-gradient(
+            #f3f3f3,
+            #f3f3f3);
+        background-blend-mode: normal,
+            normal;
+        box-sizing: border-box;
+    }
+    .zap-scanning__title{
+        padding: 0 60px;
+        font-size: 24px;
+        color: #333333;
+    }
+    .zap-scanning__img{
+        display: block;
+        width: 220px;
+        height: 220px;
+        margin: 40px auto 0;
+        object-fit: cover;
+    }
+    .zap-scanning__bottom{
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        margin-top: 18px;
+        font-size: 14px;
+    }
+    .zap-scanning__icon{
+        width: 22px;
+        height: 22px;
+        margin-right: 10px;
+    }
+    .zap-scanning__text{
+        color: #333333;
+    }
+    .zap-scanning__color{
+        color: #23b24b;
+    }
+    .el-tabs__header{
+        margin-bottom: 38px;
+    }
+    .el-dialog:not(.is-fullscreen){
+        margin-top: 25vh !important;
+    }
+}
+</style>

+ 1 - 0
front-vue/src/views/login.vue

@@ -82,6 +82,7 @@
                                             </div>
                                         </div>
                                     </el-form-item>
+                                    <el-link style="margin-right:50px" href="/registerUser">注册</el-link><el-link href="/forgetUser">忘记密码?</el-link>
                                     <!-- <el-divider class="divider_left"><span style="font-size:10px;word-break: keep-all;">第三方快捷登录</span></el-divider>
                                     <el-form-item style="width:100%;">
                                         <img :src="wxSrc" @mouseover="changeImg" @mouseleave="returnImg" @click="getWeChatImg" style="width:30px;margin-left: 77px;">

+ 599 - 0
front-vue/src/views/registerUser.vue

@@ -0,0 +1,599 @@
+<template>
+    <div class="backdrop zap-login">
+        <el-container>
+            <!-- logo -->
+            <img class="zap-logo" src="../assets/images/login_logo.png" alt="">
+             <el-main>
+                <!-- 中间部分 -->
+                <div class="login">
+                    <div class="login-left">
+                        <img class="login-name" src="../assets/images/logo_name.png" alt="">
+                        <img class="login-illustration" src="../assets/images/login_img.png" alt="">
+                    </div>
+                    <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
+                        <template v-if="!scanningLogin">
+                            <div class="zap-2dcode">
+                                <!-- <img class="zap-2dcode__text" src="../assets/images/code1_1.png" alt=""> -->
+                                <!-- <img class="zap-2dcode__img" src="../assets/images/code1_2.gif" alt="" @click="scanningLogin=true"> -->
+                            </div>
+                            <el-tabs v-model="activeName" class="zap-tabs" @tab-click="changeLoginType">
+                                <el-tab-pane label="注册" name="login_shortMessage">
+                                    <el-form-item prop="company">
+                                        <el-input v-model="loginForm.company" type="text" auto-complete="off" placeholder="企业名称" maxlength="15">
+                                            <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+                                        </el-input>
+                                    </el-form-item>
+                                    <el-form-item prop="username">
+                                        <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="联系人" maxlength="15">
+                                            <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+                                        </el-input>
+                                    </el-form-item>
+                                    <el-form-item prop="phone">
+                                        <el-input v-model="loginForm.phone" type="text" auto-complete="off" placeholder="手机号" maxlength="11">
+                                            <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+                                        </el-input>
+                                    </el-form-item>
+                                    <el-form-item prop="shortMessageCode">
+                                        <el-input v-model="loginForm.shortMessageCode" type="text"  maxlength="" auto-complete="off" placeholder="请输入验证码" id="" onkeydown="enterHandler(event)">
+                                            <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
+                                            <el-button class="zap-code-button" slot="suffix" @click="sendMessage" :disabled="sendShortMessageBtn">{{codeBtnWord}}</el-button>
+                                        </el-input>
+                                    </el-form-item>
+                                    <el-form-item prop="password">
+                                        <el-input v-model="loginForm.password" type="text" auto-complete="off" placeholder="密码" maxlength="20">
+                                            <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+                                        </el-input>
+                                    </el-form-item>
+                                    <el-form-item prop="again">
+                                        <el-input v-model="loginForm.again" type="text" auto-complete="off" placeholder="确认密码" maxlength="20">
+                                            <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+                                        </el-input>
+                                    </el-form-item>
+                                    <el-form-item>
+                                        <el-checkbox v-model="loginForm.checked">
+                                            <div class="zap-agreement">
+                                                <span class="zap-agreement__text">我已阅读</span>
+                                                <div class="zap-agreement__link">
+                                                    <span>《招采云链服务平台会员注册协议》</span>
+                                                    <span>《招采云链服务平台隐私政策》</span>
+                                                </div>
+                                            </div>
+                                        </el-checkbox>
+                                    </el-form-item>
+                                    <el-form-item style="width:100%;">
+                                        <el-button :loading="loading"  class="zap-button" size="medium" type="primary" @click.native.prevent="handleLogin">
+                                            <span v-if="!loading">注 册</span>
+                                            <span v-else>请 稍 后...</span>
+                                        </el-button>
+                                    </el-form-item>
+                                </el-tab-pane>
+                            </el-tabs>
+                        </template>
+                    </el-form>
+                    <!--  底部  -->
+                </div>
+            </el-main>
+            <el-dialog
+              title="选择企业"
+              :visible.sync="dialogVisible"
+              width="30%">
+              <el-select v-model="chooseCompanyId" placeholder="请选择">
+                <el-option
+                  v-for="item in companyList"
+                  :key="item.scyId"
+                  :label="item.scyName"
+                  :value="item.scyId">
+                </el-option>
+              </el-select>
+              <span slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="chooseLogin()">确 定</el-button>
+              </span>
+            </el-dialog>
+        </el-container>
+        <el-footer></el-footer>
+
+        <!-- 密码登录验证码 -->
+        <el-dialog
+            title="验证码"
+            :close-on-click-modal="false"
+            :visible.sync="codeDialogVisible"
+            width="30%">
+            <div style="display:flex;">
+                <el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 53%;" @keyup.enter.native="handleLogin">
+                    <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
+                </el-input>
+                <div class="login-code">
+                    <img :src="codeUrl" @click="getCode" class="login-code-img" />
+                </div>
+            </div>
+            <span slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="handleImgCodeSubmit">确 定</el-button>
+            </span>
+        </el-dialog>
+    </div>
+</template>
+<script>
+import { getCodeImg, sendShortMessage, chooseCompanyLogin, registerUser} from "@/api/login";
+import { wxImg } from "@/api/system/weChat";
+import Cookies from "js-cookie";
+import { encrypt, decrypt } from "@/utils/jsencrypt";
+import wxlogin from 'vue-wxlogin'
+export default {
+  components: {
+    wxlogin : wxlogin
+  },
+    name: "Login",
+    data() {
+        return {
+            //默认背景图
+            activeName: "login_shortMessage",
+            baseImg: require('../assets/images/login_img.png'),
+            BackgroundImg : require('../assets/images/login_img.png'),
+            scanningLogin: false, // 是否扫码登陆
+            logo: '',
+            // baseLogo: require('../assets/images/lgo.png'),
+            codeUrl: "",
+            cookiePassword: "",
+            loginForm: {
+                shortMessageCode: '',
+                username: "",
+                password: "",
+                rememberMe: false,
+                code: "",
+                uuid: "",
+                unionId : "",
+                type : "2"
+            },
+            codeBtnWord: '获取验证码', // 获取验证码按钮文字
+            waitTime:2, // 获取验证码按钮失效时间
+            loginRules: {
+                company: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "企业名称不能为空",
+                    },
+                ],
+                username: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "联系人不能为空",
+                    },
+                ],
+                phone: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "手机号不能为空",
+                    },
+                ],
+                shortMessageCode: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "验证码不能为空",
+                    },
+                ],
+                password: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "密码不能为空",
+                    },
+                ],
+                again: [
+                    {
+                        required: true,
+                        trigger: "blur",
+                        message: "确认密码不能为空",
+                    },
+                ],
+            },
+            loading: false,
+            redirect: undefined,
+            wxSrc: require("../assets/images/wx1.png"),
+            sendShortMessageBtn : false,
+            dialogVisible : false,
+            companyList : [],
+            chooseCompanyId : '',
+            codeDialogVisible: false
+        };
+    },
+    watch: {
+        $route: {
+            handler: function (route) {
+                this.redirect = route.query && route.query.redirect;
+            },
+            immediate: true,
+        },
+    },
+    created() {
+        this.getCode();
+        // this.getlistDomain();
+    },
+    methods: {
+      changeImg(){
+          this.wxSrc = require("../assets/images/wx.png")
+      },
+      returnImg(){
+          this.wxSrc = require("../assets/images/wx1.png")
+      },
+      getCode() {
+          getCodeImg().then((res) => {
+              this.codeUrl = "data:image/gif;base64," + res.img;
+              this.loginForm.uuid = res.uuid;
+          });
+      },
+      handleImgCodeSubmit () {
+          if (this.activeName === 'login_password') {
+              this.handleLogin()
+          } else {
+              this.sendMessage()
+          }
+      },
+      handleLogin() {
+          this.$refs.loginForm.validate((valid) => {
+              if (valid) {
+                  this.loading = true;
+                  // 验证码不能为空
+                  if (this.loginForm.shortMessageCode == null || this.loginForm.shortMessageCode == "") {
+                    this.msgError("请输入短信验证码!");
+                    this.loading = false;
+                    return;
+                  }
+                  if (!this.loginForm.checked) {
+                    this.msgError("请阅读平台协议并确认");
+                    this.loading = false;
+                    return;
+                  }
+                  this.loginForm.type = "2";
+                  registerUser(this.loginForm).then((res) => {
+                    this.loading = false;
+                    if (res.data.code == "0") {
+                        console.log("未认证!")
+                        this.$router.push({ path: "/login" });
+                    }
+                  }).catch(() => {
+                    this.loading = false;
+                  });
+              }
+          });
+      },
+      getUrlKey(name) {
+          return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ""])[1].replace(/\+/g, '%20')) || null
+      },
+      changeLoginType(e){
+
+          if (this.activeName === 'login_password') {
+              this.loginRules.code = [
+                    {
+                        required: true,
+                        trigger: "change",
+                        message: "验证码不能为空",
+                    },
+                ]
+          } else {
+              delete this.loginRules.code
+          }
+        this.getCode();
+      },
+      sendMessage(){
+                  // 验证码不能为空
+                  if (this.loginForm.phone == null || this.loginForm.phone == "") {
+                    this.msgError("请输入手机号!");
+                    this.loading = false;
+                    return;
+                  }
+                  if (this.codeDialogVisible) {
+                    if (!this.loginForm.code) {
+                        this.loading = false
+                        return this.msgError("请输入验证码!");
+                    } else {
+                        this.codeDialogVisible = false
+                    }
+                  } else {
+                      return this.codeDialogVisible = true
+                  }
+                  // 调用获取短信验证码接口
+                  sendShortMessage(this.loginForm.phone, this.loginForm.code, this.loginForm.uuid).then(response => {
+                    this.sendShortMessageBtn = true;
+                    this.msgSuccess("发送成功!");
+
+                    // 因为下面用到了定时器,需要保存this指向
+                    let that = this
+                    that.waitTime = 60;
+                    this.codeBtnWord = `${this.waitTime}s 后重新获取`
+                    let timer = setInterval(function(){
+                        if(that.waitTime>1){
+                            that.waitTime--
+                            that.codeBtnWord = `${that.waitTime}s 后重新获取`
+                        }else{
+                            clearInterval(timer)
+                            that.codeBtnWord = '获取验证码'
+                            that.waitTime = 60
+                            that.getCode();
+                            that.sendShortMessageBtn = false;
+                        }
+                    },1000)
+
+                  }).catch((response)=>{
+                    this.getCode();
+                  });
+
+      },
+      chooseLogin(){
+        chooseCompanyLogin(this.chooseCompanyId).then(response => {
+          if (response.code == "200") {
+            // 认证通过
+            if (response.data.sysUser.companyStatus == "00") {
+                if(this.redirect == '/home'){
+                    this.$router.push({ path: "/homePage"+this.redirect || "/" });
+                }else{
+                    this.$router.push({ path: this.redirect || "/" });
+                }
+            //   this.$router.push({ path: this.redirect || "/" });
+            // 认证未通过
+            } else {
+              console.log("未认证通过!")
+              this.$router.push({ path: "/certification" });
+            }
+          }
+        }).catch((response)=>{
+
+        });
+      }
+    }
+};
+</script>
+<style rel="stylesheet/scss" lang="scss">
+// 大背景图
+.backdrop {
+    padding-top: 100px;
+    background-color: #ebf3ff;
+    width: 100%;
+    min-height: 100%;
+    text-align: center;
+}
+.zap-login{
+    .login {
+        display: flex;
+        justify-content: center;
+        height: 100%;
+        background-size: cover;
+    }
+    // 中间背景图
+    .login-form {
+        margin-left: 75px;
+        border-radius: 6px;
+        background-size: 935px 434px;
+        background-repeat: no-repeat;
+        margin-top: 40px;
+    }
+    // 输入框大小
+    .el-input {
+        height: 55px;
+        width: 100%;
+        background-image: linear-gradient(
+            #fdfdfd,
+            #fdfdfd),
+        linear-gradient(
+            #e7f0ff,
+            #e7f0ff);
+        background-blend-mode: normal,
+            normal;
+        input {
+            height: 55px;
+            width: 100%;
+            font-size: 18px;
+        }
+    }
+    .input-icon {
+        height: 53px;
+        width: 22px;
+        margin-left: 14px;
+        margin-right: 14px
+    }
+    .el-input--prefix .el-input__inner{
+        padding-left: 50px;
+    }
+    .login-tip {
+        font-size: 13px;
+        text-align: center;
+    }
+    .el-form-item--medium .el-form-item__content{
+        display: flex;
+        align-items: center;
+    }
+    // 验证码
+    .login-code {
+        height: 55px;
+        img {
+            cursor: pointer;
+            vertical-align: middle;
+        }
+    }
+    .login-code-img {
+        flex: 1;
+        height: 55px;
+        margin-left: 8px;
+    }
+
+    .rightulliimg{
+        width: 860px;
+
+    }
+    .divider_left{
+        margin-left: -40px;
+    }
+
+    // 内部供应链
+    .zap-tabs{
+        width: 410px;
+        min-height: 480px;
+        padding: 10px 48px 46px;
+        box-sizing: border-box;
+        background-image: linear-gradient(
+            #ffffff,
+            #ffffff),
+        linear-gradient(
+            #f3f3f3,
+            #f3f3f3);
+        .el-tabs__nav-wrap{
+            padding: 0 12px;
+        }
+        .el-tabs__nav-wrap::after{
+            height: 0;
+        }
+        .el-tabs__nav{
+            width: 100%;
+        }
+        .el-tabs__item{
+            height: 56px;
+            line-height: 56px;
+            font-size: 24px;
+            color: #333333;
+            &:nth-of-type(3){
+                padding-left: 30px;
+            }
+        }
+        .el-tabs__item.is-active{
+            color: #0056eb;
+        }
+        .el-tabs__active-bar{
+            background-color: #0056eb;
+        }
+    }
+    .login-left{
+        width: 704px;
+        margin-top: 40px;
+        text-align: left;
+        .login-name{
+            width: 515px;
+        }
+        .login-illustration{
+            width: 704px;
+        }
+    }
+    .zap-logo{
+        position: absolute;
+        top: 25px;
+        left: 45px;
+        width: 210px;
+        height: 60px;
+    }
+    .zap-2dcode{
+        display: flex;
+        justify-content: flex-end;
+        align-items: center;
+        width: 410px;;
+        padding-top: 10px;
+        padding-right: 10px;
+        font-size: 0;
+        background-color: #ffffff;
+        box-sizing: border-box;
+    }
+    .zap-2dcode__text{
+        width: 113px;
+        height: 28px;
+    }
+    .zap-2dcode__img{
+        width: 60px;
+        height: 61px;
+        cursor: pointer;
+    }
+    .zap-button{
+        margin-top: 25px;
+        width: 100%;
+        height: 55px;
+        font-size: 18px;
+        border-radius: 0;
+        background-image: linear-gradient(
+            #0056eb,
+            #0056eb),
+        linear-gradient(
+            #e7f0ff,
+            #e7f0ff);
+        background-blend-mode: normal,
+            normal;
+    }
+    .zap-agreement{
+        display: flex;
+        align-items: top;
+        margin-top: 8px;
+        line-height: 18px;
+        font-size: 12px;
+    }
+    .zap-agreement__text{
+        color: #666666;
+    }
+    .zap-agreement__link{
+        display: flex;
+        flex-direction: column;
+        align-items: flex-start;
+        color: #389cf4;
+        cursor: pointer;
+    }
+    .zap-code-button{
+        padding: 0 16px;
+        line-height: 55px;
+        font-size: 18px;
+        color: #23b24b;
+        border: none;
+        background-color: transparent;
+    }
+    .el-button.is-disabled, .el-button.is-disabled:hover, .el-button.is-disabled:focus{
+        background-color: transparent;
+    }
+    // 扫码登录
+    .zap-scanning{
+        width: 410px;
+        height: 550px;
+        background-image: linear-gradient(
+            #ffffff,
+            #ffffff),
+        linear-gradient(
+            #f3f3f3,
+            #f3f3f3);
+        background-blend-mode: normal,
+            normal;
+        box-sizing: border-box;
+    }
+    .zap-scanning__title{
+        padding: 0 60px;
+        font-size: 24px;
+        color: #333333;
+    }
+    .zap-scanning__img{
+        display: block;
+        width: 220px;
+        height: 220px;
+        margin: 40px auto 0;
+        object-fit: cover;
+    }
+    .zap-scanning__bottom{
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        margin-top: 18px;
+        font-size: 14px;
+    }
+    .zap-scanning__icon{
+        width: 22px;
+        height: 22px;
+        margin-right: 10px;
+    }
+    .zap-scanning__text{
+        color: #333333;
+    }
+    .zap-scanning__color{
+        color: #23b24b;
+    }
+    .el-tabs__header{
+        margin-bottom: 38px;
+    }
+    .el-dialog:not(.is-fullscreen){
+        margin-top: 25vh !important;
+    }
+}
+</style>

+ 1 - 0
front-vue/src/views/service/credit/addInformation.vue

@@ -362,6 +362,7 @@ import {getToken} from "@/utils/auth";
 import AddBill from "@/views/service/bill/addBill";
 import EditBill from "@/views/service/bill/editBill";
 import {isOpenApproval} from "@/api/service/credit/approvalRelatedCredit";
+import { amtformat } from "@/utils/amtCommon";
 import pdfShow from "./pdfShow";
 import Cookies from 'js-cookie';
 export default {

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

@@ -51,16 +51,8 @@
       <el-row class="zap-form" style="padding-bottom: 0;">
           <el-col :span="12">
             <el-form-item label="承诺还款日期:" prop="zfrRepaymentDate" size="large"  label-width="101px">
-                <el-date-picker
-                    v-model="form.zfrRepaymentDate"
-                    align="right"
-                    type="date"
-                    placeholder="选择日期"
-                </el-date-picker>
+                <el-input v-model="form.zfrRepaymentDate" clearable placeholder="请输入承诺还款日期" maxlength="25" readonly />
             </el-form-item>
-              <!-- <el-form-item label="承诺还款日期:" prop="zfrRepaymentDate" size="large"  label-width="101px">
-                  <el-input v-model="form.zfrRepaymentDate" clearable placeholder="请输入承诺还款日期" maxlength="25" readonly />
-              </el-form-item> -->
           </el-col>
           <el-col :span="12">
               <el-form-item label="服务费率:" prop="zfpcrChargeRate" size="large">
@@ -314,6 +306,7 @@ import { getToken } from "@/utils/auth";
 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";
 export default {
   name: "financeRecord",
   components: {DetailBill},
@@ -366,6 +359,8 @@ export default {
       receiverAccount:"",
       //起止日期
       stopDate:"",
+      //签发金额大写
+      issuedAmount: "零元整",
       // 弹出层标题
       title: "",
       // 是否显示弹出层
@@ -411,6 +406,7 @@ export default {
     const zfiId = this.$route.params && this.$route.params.zfiId;
     this.$set(this.form, "zfrFinanceId", zfiId);
     this.getFinanceInf(zfiId);
+    this.getUserProfile();
   },
   methods: {
     /** 查询融信编号 */
@@ -431,6 +427,7 @@ export default {
     },
     getUserProfile(){
       getUserProfile().then(response => {
+        debugger
           if(response.company){
               this.$set(this.form, "companyName", response.company.scyName);
           }
@@ -522,6 +519,7 @@ 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);
       this.$set(this.form, "zfrRate", item.zfpcrRate);
@@ -558,7 +556,7 @@ export default {
               });
             }
           });
-          getCreditDetail(zfiId).then((response) => {
+          getCreditDetail(item.zfiId).then((response) => {
             if(response.data){
                 this.forms= response.data.financeInf;
                 //签发金额大写
@@ -769,4 +767,23 @@ export default {
     }
   }
 };
-</script>
+</script>
+<style type="text/css">
+ table.gridtable {
+    font-size:11px;
+    color:#333333;
+     border-width: 1px;
+    border-collapse: collapse;
+}
+ table.gridtable th {
+     border-width: 1px;
+     padding: 8px;
+     border-style: solid;
+     background-color: #dedede;
+ }
+ table.gridtable td {
+        border-width: 1px;
+        padding: 8px;
+        border-style: solid;
+    }
+ </style>

+ 1 - 0
front-vue/src/views/service/credit/pdfShow.vue

@@ -135,6 +135,7 @@
 import {sendMessage,checkCode,faceAuth,checkFaceAuth,contractSigning} from "@/api/service/credit/message";
 import {cfcaProjectNo,projectSendMessage,checkProCode} from "@/api/service/credit/cfcaProject";
 import {getCreditDetail,getFinanceSign} from "@/api/service/credit/credit";
+import { amtformat } from "@/utils/amtCommon";
 import Cookies from 'js-cookie';
 export default {
     props : ['pdfFileList','zfiId', 'parent'],

+ 101 - 1
front-vue/src/views/service/credit/signFor.vue

@@ -3,6 +3,65 @@
         <!-- 资产信息-->
         <el-tab-pane label="资产信息">
             <!-- <div class="app-container"> -->
+            <el-form ref="forms" :model="forms" :inline="true" style="margin-top: 20px" label-width="auto" >
+                <el-row class="zap-form" style="padding-bottom: 0;">
+                    <el-col :span="12">
+                        <el-form-item label="选择融信:" prop="zfrFinanceId" size="large">
+                            <el-select v-model="forms.zfrFinanceId" clearable @clear="clearBoth">
+                                <el-option v-for="(item,index) in financeInfList" :key="index" :label="item.zfiNumber" :value="item.zfiId" @click.native="amount(item)"></el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="融资收款账户:" prop="zfrCollectionAccount" size="large" label-width="101px">
+                            <el-input v-model="forms.zfrCollectionAccount" clearable placeholder="请输入融资账户" maxlength="25" :readonly="readonly" />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row class="zap-form" style="padding-bottom: 0;">
+                    <el-col :span="12">
+                        <el-form-item label="融信金额:" prop="zfiAmount" size="large">
+                            <el-input v-model="forms.zfiAmount" clearable placeholder="请输入融信金额" maxlength="25" readonly />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="申请融资方:" prop="companyName" size="large">
+                            <el-input v-model="forms.companyName" clearable placeholder="请输入申请融资方" maxlength="25" readonly />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row class="zap-form" style="padding-bottom: 0;">
+                    <el-col :span="12">
+                        <el-form-item label="融资金额:" prop="zfrAmount" size="large">
+                            <el-input v-model="forms.zfrAmount" clearable placeholder="请输入融资金额" maxlength="25" readonly />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="融资利率:" prop="zfrRate" size="large">
+                            <el-input v-model="forms.zfrRate" clearable placeholder="请输入融资利率" maxlength="25" readonly />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row class="zap-form" style="padding-bottom: 0;">
+                    <el-col :span="12">
+                        <el-form-item label="承诺还款日期:" prop="zfrRepaymentDate" size="large"  label-width="101px">
+                            <el-input v-model="forms.zfrRepaymentDate" clearable placeholder="请输入承诺还款日期" maxlength="25" readonly />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="服务费率:" prop="zfpcrChargeRate" size="large">
+                            <el-input v-model="forms.zfpcrChargeRate" clearable placeholder="请输入服务费率" maxlength="25" readonly />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row class="zap-form" style="padding-bottom: 0;">
+                    <el-col :span="12">
+                        <el-form-item label="融资期限:" prop="termIng" size="large" label-width="101px">
+                            <el-input v-model="forms.termIng" clearable placeholder="请输入融资期限" maxlength="25" readonly />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-form>
             <el-form ref="form" :model="form" :rules="rules" :inline="true" style="margin-top: 20px" label-width="auto" >
                 <el-divider content-position="left">签收</el-divider>
                  <el-form-item label="融信利率:"> 
@@ -313,6 +372,8 @@ import {isOpenApproval} from "@/api/service/credit/approvalRelatedCredit";
 import pdfShow from "./pdfShow";
 import DetailBill from "@/views/service/credit/billDetail";
 import {contractSigning} from "@/api/service/credit/message";
+import { listFinanceInf } from "@/api/common/financeInf";
+import { amtformat } from "@/utils/amtCommon";
 import Cookies from 'js-cookie';
 export default {
     name: "addCredit",
@@ -327,6 +388,7 @@ export default {
             form: {
 
             },
+            forms:{},
             // 表单校验
             rules: {
                
@@ -481,10 +543,48 @@ export default {
              this.isOpenApproval();
              //盖章合同
              this.getCreditSealFile();
-        })
+        });
+        this.getFinanceInf(zfiId);
+        this.getUserProfile();
       
     },
     methods: {
+        /** 查询融信编号 */
+        getFinanceInf(zfrFinanceId) {
+            this.loading = true;
+            listFinanceInf(zfrFinanceId).then(response => {
+                debugger;
+                if (response.data) {
+                this.financeInfList = response.data;
+                for (let item of this.financeInfList) {
+                    if (item.zfiId == zfrFinanceId) {
+                    this.amount(item);
+                    }
+                }
+                this.loading = false;
+                }
+            });
+        },
+        getUserProfile(){
+            getUserProfile().then(response => {
+                debugger
+                if(response.company){
+                    this.$set(this.forms, "companyName", response.company.scyName);
+                }
+            });
+        },
+        /* 融信编号赋值融资金额 */
+    amount(item) {
+      debugger;
+      this.$set(this.forms, "zfiAmount", item.zfiAmount);
+      this.$set(this.forms, "zfrAmount", item.zfiAmount);
+      this.$set(this.forms, "zfrRepaymentDate", item.zfiExpireDate);
+      this.$set(this.forms, "zfrRate", item.zfpcrRate);
+      this.$set(this.forms, "zfpcrLoanType", item.zfpcrLoanType);
+      this.$set(this.forms, "zfiProductId", item.zfiProductId);
+      this.$set(this.forms, "zfpcrChargeRate", item.zfpcrChargeRate);
+      this.$set(this.forms, "termIng", item.termIng);
+    },
         // 取消按钮
         cancel() {
             this.$store.dispatch("tagsView/delView", this.$route);

+ 6 - 11
front-vue/src/views/service/financeRecord/addFinanceRecord.vue

@@ -44,16 +44,8 @@
             <el-row class="zap-form" style="padding-bottom: 0;">
                 <el-col :span="12">
                     <el-form-item label="承诺还款日期:" prop="zfrRepaymentDate" size="large"  label-width="101px">
-                        <el-date-picker
-                            v-model="form.zfrRepaymentDate"
-                            align="right"
-                            type="date"
-                            placeholder="选择日期"
-                        </el-date-picker>
-                    </el-form-item>
-                    <!-- <el-form-item label="承诺还款日期:" prop="zfrRepaymentDate" size="large"  label-width="101px">
                         <el-input v-model="form.zfrRepaymentDate" clearable placeholder="请输入承诺还款日期" maxlength="25" readonly />
-                    </el-form-item> -->
+                    </el-form-item>
                 </el-col>
                 <el-col :span="12">
                     <el-form-item label="服务费率:" prop="zfpcrChargeRate" size="large">
@@ -281,6 +273,7 @@ import {
 } from "@/utils/auth";
 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";
 export default {
     name: "financeRecord",
@@ -333,6 +326,8 @@ export default {
             receiverAccount:"",
             //起止日期
             stopDate:"",
+            //签发金额大写
+            issuedAmount: "零元整",
             // 弹出层标题
             title: "",
             // 是否显示弹出层
@@ -497,11 +492,11 @@ export default {
                         })
                     }
                 });
-                getCreditDetail(zfiId).then((response) => {
+                getCreditDetail(item.zfiId).then((response) => {
                     if(response.data){
                         this.forms= response.data.financeInf;
                         //签发金额大写
-                        this.issuedAmount = this.smallToBig(this.form.zfiAmount);
+                        this.issuedAmount = this.smallToBig(this.forms.zfiAmount);
                         //给表格赋值
                         this.openName = response.data.openName;
                         this.openCode = response.data.openCode;

+ 67 - 0
front-vue/src/views/service/financeRecord/financeRecord.vue

@@ -966,6 +966,18 @@
             <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="danger" @click="submitRefuse(form.zfrId,form.zfrFinanceId)">拒绝放款</el-button>
+            </el-row>
+          </el-dialog>
+          <el-dialog title="拒绝放款" :visible.sync="openRefuse" width="600px" append-to-body>
+            <el-form ref="formRefuse" :model="formRefuse" :rules="rulesRefuse" label-width="auto">
+              <el-form-item label="拒绝放款原因" prop="zfrReason">
+                <el-input v-model="formRefuse.zfrReason" maxlength="50" show-word-limit type="textarea" placeholder="请输入审批意见" />
+              </el-form-item>
+            </el-form>
+            <el-row style="height: 109px;" type="flex" align="middle" justify="center">
+              <el-button type="primary" plain="" @click="cancelRefuse">取 消</el-button>
+              <el-button type="primary" @click="submitFormRefuse">确 定</el-button>
             </el-row>
           </el-dialog>
           <el-dialog :visible.sync="dialogVisible">
@@ -1050,6 +1062,7 @@ export default {
       title: "",
       // 是否显示弹出层
       open: false,
+      openRefuse: false,
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -1129,6 +1142,7 @@ export default {
       },
       // 表单参数
       form: {},
+      formRefuse:{},
       //筛选按钮的数据列表,与table表头的数据一致 --显示隐藏列用--全部
       tableList: [
         {
@@ -1375,6 +1389,15 @@ export default {
           }
         ]
       },
+      rulesRefuse:{
+        zfrReason:[
+          {
+            required: true,
+            message: "拒绝放款原因不能为空",
+            trigger: ["blur", "change"],
+          }
+        ]
+      },
       selfDom: this,
       activeName: "first"
     };
@@ -1577,6 +1600,10 @@ export default {
       this.open = false;
       this.reset();
     },
+    cancelRefuse(){
+      this.openRefuse = false;
+      this.reset();
+    },
     // 表单重置
     reset() {
       this.form = {
@@ -1611,6 +1638,10 @@ export default {
       this.resetForm("form");
       this.fileList = [];
       this.noneBtnImg = false;
+      this.formRefuse = {
+        zfrReason: null
+      };
+      this.resetForm("formRefuse");
     },
     /** 全部搜索按钮操作 */
     handleQuery() {
@@ -1747,6 +1778,14 @@ export default {
         })
         .catch(function() {});
     },
+    /**拒绝放款 */
+    submitRefuse(zfrId,zfrFinanceId) {
+      debugger
+      this.reset();
+      this.formRefuse.zfrId = zfrId;
+      this.formRefuse.zfrFinanceId = zfrFinanceId;
+      this.openRefuse = true;
+    },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate(valid => {
@@ -1758,6 +1797,7 @@ export default {
             background: "rgba(0, 0, 0, 0.7)"
           });
           this.form.zfrLoanFile = this.fileList;
+          this.form.TYPE = '00';
           updateRecord(this.form)
             .then(response => {
               loading.close();
@@ -1774,6 +1814,33 @@ export default {
         }
       });
     },
+    /** 拒绝放款提交按钮 */
+    submitFormRefuse() {
+      this.$refs["formRefuse"].validate(valid => {
+        if (valid) {
+          const loading = this.$loading({
+            lock: true,
+            text: "Loading",
+            spinner: "el-icon-loading",
+            background: "rgba(0, 0, 0, 0.7)"
+          });
+          this.formRefuse.TYPE = '01';
+          updateRecord(this.formRefuse)
+            .then(response => {
+              loading.close();
+              this.msgSuccess("拒绝放款成功");
+              this.openRefuse = false;
+              this.getList();
+              this.getIngList();
+              this.getEndList();
+              this.getLoseList();
+            })
+            .catch(response => {
+              loading.close();
+            });
+        }
+      });
+    },
     /** 上传图片 */
     submitUpload() {
       this.$refs.upload.submit();

+ 1 - 0
front-vue/src/views/service/financeRecord/pdfShow.vue

@@ -135,6 +135,7 @@
 import {sendMessage,checkCode,faceAuth,checkFaceAuth,contractSigning} from "@/api/service/credit/message";
 import {cfcaProjectNo,projectSendMessage,checkProCode} from "@/api/service/credit/cfcaProject";
 import {getCreditDetail,getFinanceSign} from "@/api/service/credit/credit";
+import { amtformat } from "@/utils/amtCommon";
 import Cookies from 'js-cookie';
 export default {
     props : ['pdfFileList','zfiId', 'parent'],