Browse Source

申请融信编辑

xuefy 3 years ago
parent
commit
d0520dff2b
2 changed files with 718 additions and 0 deletions
  1. 6 0
      front-vue/src/router/index.js
  2. 712 0
      front-vue/src/views/service/credit/applyCreditEdit.vue

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

@@ -176,6 +176,12 @@ export const constantRoutes = [
         name: 'creditApply',
         meta: { title: '融资申请融信',noCache: true }
       },
+      {
+        path: 'applyCreditEdit/:zfiId',
+        component: (resolve) => require(['@/views/service/credit/applyCreditEdit'], resolve),
+        name: 'applyCreditEdit',
+        meta: { title: '编辑申请融信',noCache: true }
+      },
     ]
   },
   {

+ 712 - 0
front-vue/src/views/service/credit/applyCreditEdit.vue

@@ -0,0 +1,712 @@
+<template>
+    <div class="app-container">
+        <el-form ref="form" :model="form" :rules="rules" :inline="true" style="margin-top: 10px" label-width="auto" >
+                <el-row>
+                    <el-divider content-position="left" >应收账款</el-divider>
+                <el-form-item  style="margin-left: 100px">
+                    <el-button size="mini" type="primary" @click="openTicket">选择</el-button>
+                    <el-button size="mini" @click="deleteTicekt">清空全部</el-button>
+                    <el-form-item label="合计金额:"> 
+                            <span>{{checkTotalAmt}}</span>
+                    </el-form-item>
+                    <el-form-item label="金额大写:"> 
+                            <span>{{checkTotalBigAmt}}</span>
+                    </el-form-item>
+                    
+                    <el-table :data="ticketList" style="width: 1100px">
+                        <el-table-column label="账款名称"  align="center"  prop="zbiName" show-overflow-tooltip />
+                        <el-table-column label="应收企业"  align="center"  prop="receiveName"/>
+                        <el-table-column label="应付企业"  align="center"  prop="payName"    />
+                        <el-table-column label="预计还款期"  align="center"  prop="zbiPayDate" show-overflow-tooltip />
+                        <el-table-column label="金额"  align="center"  prop="zbiAmount" />
+                        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="250">
+                            <template slot-scope="scope">
+                            <el-button
+                                size="mini"
+                                type="text"
+                                icon="el-icon-delete"
+                                @click="handleDelete(scope.$index, ticketList)"
+                            >删除</el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                </el-form-item>
+                <el-col :span="8">
+                        <el-form-item label="开立方" prop="openName">
+                            <el-input v-model="form.openName" style="width: 200px" disabled />
+                        </el-form-item>
+                </el-col> 
+                <el-col :span="8">
+                    <el-form-item label="授信额度" prop="zfiSupplierQuotaId">
+                        <el-select
+                            style="width: 200px"
+                            v-model="form.zfiSupplierQuotaId"
+                            filterable
+                            clearable
+                            remote
+                            >
+                            <el-option
+                            v-for="item in creditLineList"
+                            :key="item.value"
+                            :label="item.label"
+                            :value="item.value">
+                            </el-option>
+                            </el-select>
+                    </el-form-item>
+               
+                </el-col>
+                <el-col :span="8">
+                    <span>可用额度:</span>
+                    <span>{{availableAmt}}</span>
+                    <br>   
+                    <span>有效期:</span>
+                    <span>{{validityDate}}</span>  
+                </el-col>    
+            </el-row>
+            <el-row>
+                <el-col :span="8">
+                    <el-form-item label="接收方" prop="receiveName">
+                        <el-input v-model="form.receiveName" style="width: 200px" disabled />
+                    </el-form-item>
+                </el-col>
+                <el-col :span="8">
+                    <el-form-item label="签发有效期" prop="zfiEffectiveDate"> 
+                       <el-date-picker clearable size="small" style="width: 200px"
+                            v-model="form.zfiEffectiveDate"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            placeholder="选择签发有效期">
+                        </el-date-picker>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="8">
+                    <el-form-item label="承诺还款日" prop="zfiExpireDate"> 
+                        <el-date-picker clearable size="small" style="width: 200px"
+                            v-model="form.zfiExpireDate"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            placeholder="选择承诺还款日">
+                        </el-date-picker>
+                    </el-form-item>
+                </el-col> 
+            </el-row>  
+            <el-row>
+                <el-col :span="8">
+                    <el-form-item label="签发金额" prop="zfiAmount"> 
+                         <el-input v-model="form.zfiAmount" style="width: 200px" @input="getBigSmall" />
+                    </el-form-item>
+                </el-col>
+                 <el-col :span="8">
+                        <el-form-item label="收款账号" prop="zfiCollectionAccount" v-if="zfpcrLoanType != '0'">
+                            <el-input v-model="form.zfiCollectionAccount" style="width: 200px" />
+                        </el-form-item>
+                </el-col>  
+            </el-row>
+            <el-row>
+                <el-col :span="8">
+                    <el-form-item label="金额大写" prop="issuedAmount"> 
+                         {{issuedAmount}}
+                    </el-form-item>
+                </el-col>  
+            </el-row>      
+        </el-form>
+        <div class="footer" style="float: right;
+            margin-bottom:2px;">
+            <el-button type="primary" @click="submitForm">确 定</el-button>
+            <el-button @click="cancel">取 消</el-button>
+        </div>
+        <!-- 应付账款信息 -->
+        <el-dialog :title="payTitle" :visible.sync="open" width="1120px" append-to-body>
+        <el-form :model="queryParamsPay"  ref="formQuery"  :inline="true"  label-width="68px"  style="margin-bottom: -21px">
+            <el-form-item label="账款名称" prop="zbiName">
+                <el-input
+                    v-model="queryParamsPay.zbiName"
+                    placeholder="请输入账款名称"
+                    clearable
+                    size="small"
+                    maxlength="11"
+                    @keyup.enter.native="handleQuerys"/>
+            </el-form-item>
+            <el-form-item label="应付企业" prop="payName">
+                <el-input
+                    v-model="queryParamsPay.payName"
+                    placeholder="请输入应付企业"
+                    clearable
+                    size="small"
+                    maxlength="11"
+                    @keyup.enter.native="handleQuerys"/>
+            </el-form-item>
+            <el-form-item>
+                <el-button
+                    type="cyan"
+                    icon="el-icon-search"
+                    size="mini"
+                    @click="handleQuerys"
+                    >搜索</el-button>
+                <el-button icon="el-icon-refresh" size="mini" @click="resetQuerys"
+                    >重置</el-button>
+            </el-form-item>
+        </el-form>
+        <el-table :data="payList"
+            ref="tablePay"
+            class="single-select-table"
+            @selection-change="handleSelectionChange" 
+            :row-key="rowkey">
+            <el-table-column
+            type="selection"
+            :reserve-selection="true"
+            width="50"
+            align="center"/>
+            <el-table-column label="序号" type="index" width="50" align="center">
+            <template slot-scope="scope">
+                <span>{{ (queryParamsPay.pageNum - 1) * queryParamsPay.pageSize + scope.$index + 1}}</span>
+            </template>
+            </el-table-column>
+            <el-table-column label="账款名称"  align="center"  prop="zbiName" show-overflow-tooltip />
+            <el-table-column label="应收企业"  align="center"  prop="receiveName"/>
+            <el-table-column label="应付企业"  align="center"  prop="payName"    />
+            <el-table-column label="预计还款期"  align="center"  prop="zbiPayDate" show-overflow-tooltip />
+            <el-table-column label="金额"  align="center"  prop="zbiAmount" />
+        </el-table>
+        <pagination
+            v-show="total > 0"
+            :total="total"
+            :page.sync="queryParamsPay.pageNum"
+            :limit.sync="queryParamsPay.pageSize"
+            @pagination="getAccountsCollection" />
+        <span slot="footer" class="dialog-footer">
+            <el-button size="mini" @click="cancelTicket">取消</el-button>
+            <el-button size="mini" type="primary" @click="closeTicket">确认</el-button>
+        </span>
+        </el-dialog>
+  </div>
+</template>
+<script>
+import {listSupplierCreditLine,getCreditDetail,getAccountsCollection,getSupplierAvailableBalance,updateCredit} from "@/api/service/credit/credit";
+import {accAdd} from "@/utils/calculation";
+export default {
+    name: "addCredit",
+    components: {},
+    data() {
+        return {
+            // 总条数
+            total: 0,
+            // 查询参数
+            queryParams: {
+                pageNum: 1,
+                pageSize: 10,
+            },
+            creditParams: {
+                zfsqId:null
+            },
+            supplierCreditParams: {
+                 zfsqId:null
+            },
+            queryParamsPay: {
+                pageNum: 1,
+                pageSize: 10,
+                payName:null,
+                zbiName:null
+            },
+            // 表单参数
+            form: {
+
+            },
+            // 表单校验
+            rules: {
+                //授信额度 
+                zfiSupplierQuotaId: [
+                    {
+                        required: true,
+                        message: "请选择授信额度",
+                        trigger: ["blur", "change"],
+                    },
+                ],
+                //接收方
+                zfiSupplierId: [
+                    {
+                        required: true,
+                        message: "请选择接收方",
+                        trigger: ["blur", "change"],
+                    },
+                ],
+                //签发有效期
+                zfiEffectiveDate: [
+                    {
+                        required: true,
+                        message: "请选择签发有效期",
+                        trigger: ["blur", "change"],
+                    },
+                ],
+                //签发金额
+                zfiAmount: [
+                    {
+                        required: true,
+                        message: "请输入签发金额",
+                        trigger: ["blur", "change"],
+                    },
+                    {
+                        pattern: /^(?:0|[1-9]\d{0,8})(?:\.\d{1,2})?$/,
+                        message: "请输入正确的签发金额",
+                        trigger: ["blur", "change"],
+                    },
+                ],
+                //承诺还款日
+                zfiExpireDate: [
+                    {
+                        required: true,
+                        message: "请选择承诺还款日",
+                        trigger: ["blur", "change"],
+                    },
+                ],
+                
+            },
+            // 是否显示弹出层
+            open: false,
+           //授信
+           creditLineList:[],
+           //接收方
+           supplierList:[],
+           //应付账款
+           payList:[],
+           //应付账款表格数据
+           ticketList: [],
+           //应付标题
+           payTitle:"",
+           //可用额度
+           availableAmt:"0.00",
+           //有效期
+           validityDate:"",
+           //有效期类型
+           zfpcrDateType:"" ,
+           //合计选中的应付账款的金额
+           checkTotalAmt:"0.00",
+           //合计选中的应付账款的大写金额
+            checkTotalBigAmt:"零元整",
+            //签发金额大写
+            issuedAmount:"零元整",
+            //产品是否可拆分
+            zfpSplit:"",
+            //融资放款方式
+            zfpcrLoanType:"",
+            //产品编号
+            zfpId:"",
+            //利率
+            zfpcrRate:''
+        };
+    },
+    watch:{
+        'form.zfiSupplierQuotaId':'change'
+    },
+    created() {
+        const zfiId = this.$route.params && this.$route.params.zfiId;
+        getCreditDetail(zfiId).then((response) => {
+             if(response.data){
+                this.listSupplierCreditLine(response.data);
+             }
+             if(response.data.payList){
+                 this.ticketList = response.data.payList.records;
+                 this.getReTotal(this.ticketList);
+             }
+             
+        })
+    },
+    methods: {
+
+        // 取消按钮
+        cancel() {
+            this.$store.dispatch("tagsView/delView", this.$route);
+            this.$router.go(-1);
+        },
+         /* 多选框跨页 */
+        rowkeyCustomer(row) {
+            return row.cciId;
+        },
+        //供应商授信额度    
+        listSupplierCreditLine(data){
+              this.supplierCreditParams.zfsqId = data.financeInf.zfiSupplierQuotaId;
+              listSupplierCreditLine(this.supplierCreditParams).then((response) => {
+                this.creditLineList = response.data.map(item => {
+                      return { 
+                        value: item.zfsqId, 
+                        label: item.zfpName,
+                        zfpcrDateType: item.zfpcrDateType,
+                        zfpcrEndDate: item.zfpcrEndDate,
+                        zfpcrLoanType: item.zfpcrLoanType,
+                        zfpSplit: item.zfpSplit,
+                        zfpId: item.zfpId,
+                        zfpcrRate:item.zfpcrRate};
+                }); 
+                this.form = data.financeInf;
+                //接收方
+                this.form.receiveName = data.receiveName;
+                //开立方
+                this.form.openName = data.openName;
+                //创建人
+                this.form.createName = data.createName;
+                //签发金额大写
+                this.issuedAmount = this.smallToBig(this.form.zfiAmount);
+              });
+        },
+        //应收账款查询列表
+        getAccountsCollection() {
+            getAccountsCollection(this.queryParamsPay).then((response) => {
+                this.payList = response.data.records;
+                this.selectChecked();
+                this.total = response.data.total;
+            });
+        },
+        resetQuerys() {
+            this.resetForm("formQuery");
+            this.handleQuerys();
+        },
+        handleQuerys() {
+            this.queryParamsPay.pageNum = 1;
+            this.getAccountsCollection();
+        },
+        //打开应付账款选择列表
+        openTicket() {
+            this.getAccountsCollection();
+            this.open = true;
+            this.payTitle = "应收账款";
+        },
+        //获取签发金额大写
+        getBigSmall(){
+            this.issuedAmount = this.smallToBig(this.form.zfiAmount);
+        },
+        selectChecked() {
+            this.ticketList.forEach((item) => {
+                this.payList.forEach(row => {
+                if (row.zbiId == item.zbiId) {
+                    this.$nextTick(() => {
+                    this.$refs.tablePay && this.$refs.tablePay.toggleRowSelection(row, true);
+                    })
+                }
+                });
+            });
+             //合计
+            this.getReTotal(this.ticketList);
+        },
+        /* 多选框跨页 */
+        rowkey(row) {
+            return row.zbiId;
+        },
+        // 多选框选中数据
+        handleSelectionChange(val) {
+            this.chooseTicket = val
+        },
+        // 确认选择
+      closeTicket() {
+        if(this.chooseTicket){
+                //如果长度大于1,则需要进行对比应收企业和预计还款日期是否一致
+                if(this.chooseTicket.length > 1){
+                    //获取选中第一个的应付企业
+                    var payName = this.chooseTicket[0].payName;
+                    //获取选中第一个的预计还款日期
+                    var zbiPayDate = this.chooseTicket[0].zbiPayDate;
+                    for(var i = 0 ;i < this.chooseTicket.length;i++){
+                        if(payName != this.chooseTicket[i].payName){
+                                this.$message({
+                                    message: '请选择应付企业相同的应付账款',
+                                    type: 'warning'
+                                });
+                                return;
+                        }
+                        if(zbiPayDate != this.chooseTicket[i].zbiPayDate){
+                                this.$message({
+                                    message: '请选择预计还款日期相同的应付账款',
+                                    type: 'warning'
+                                });
+                                return;
+                        }
+                    }
+                }
+                //合计
+                this.getReTotal(this.chooseTicket);
+                this.ticketList = this.chooseTicket;
+                //开立方赋值
+                 this.$set(this.form, "openName",this.chooseTicket[0].payName);
+                this.open = false;
+        }else{
+            this.$message({
+            message: '请选择应收账款',
+            type: 'warning'
+            });
+        }
+    },
+
+    //重新合计
+    getReTotal(chooseTicket){
+                 //合计
+                this.checkTotalAmt = "0.00";
+                for(var i = 0; i < chooseTicket.length;i++){
+                        this.checkTotalAmt  = accAdd(this.checkTotalAmt,chooseTicket[i].zbiAmount,2);
+                }
+                //签发金额
+                this.$set(this.form, "zfiAmount",this.checkTotalAmt);
+                //签发金额大写
+                this.issuedAmount = this.smallToBig(this.checkTotalAmt);
+                this.checkTotalBigAmt = this.smallToBig(this.checkTotalAmt);
+                this.checkTotalAmt = this.amtFormat(this.checkTotalAmt);
+    },
+    //取消选择按钮
+    cancelTicket(){
+        this.ticketList = [];
+        if(this.$refs.tablePay){
+            this.$refs.tablePay.clearSelection();
+        }
+        this.open = false;
+    },
+    /** 清空选择信息 */
+    deleteTicekt() {
+        this.ticketList = [];
+        this.checkTotalAmt = "0.00";
+        this.checkTotalBigAmt = this.smallToBig(this.checkTotalAmt);
+        //开立方清空
+        this.$set(this.form, "openName","");
+        if(this.$refs.tablePay){
+            this.$refs.tablePay.clearSelection();
+        }
+    },
+    /* 删除按钮 */
+    handleDelete(index, rows) {
+        rows.splice(index, 1);
+        if(this.$refs.tablePay){
+            this.$refs.tablePay.clearSelection();
+        }
+        this.selectChecked();
+    },
+    onSelectAll() {
+        if(this.$refs.tablePay){
+            this.$refs.tablePay.clearSelection();
+        }
+    },
+    //选择授信触发
+    change(val) {
+       if (!val) {
+            //可用额度
+            this.availableAmt = "0.00";
+            //有效期
+            this.validityDate ="";
+            //产品是否可拆分
+            this.zfpSplit= "",
+            //融资放款方式
+            this.zfpcrLoanType = "";
+            //产品
+            this.zfpId = "";
+            //利率
+            this.zfpcrRate = "";
+            //有效期类型
+            this.zfpcrDateType = "";
+            return;
+        }
+        let obj = {};
+        obj = this.creditLineList.find(item => {
+            return item.value === val;
+        });
+        //获取有效期的类型
+         this.zfpcrDateType = obj.zfpcrDateType;
+         //产品是否可拆分
+        this.zfpSplit= obj.zfpSplit;
+        //放款方式
+        this.zfpcrLoanType = obj.zfpcrLoanType;
+        //产品
+         this.zfpId = obj.zfpId;
+         //利率
+         this.zfpcrRate = obj.zfpcrRate;
+        //长期
+        if("0"== this.zfsqDateType){
+            this.validityDate = "长期";
+        }else{
+             this.validityDate = obj.zfpcrEndDate;
+        }
+        var lineQueryParam = {};
+        lineQueryParam.zfsqId = val;
+        //获取可用额度
+        getSupplierAvailableBalance(lineQueryParam).then((response) => {
+             this.availableAmt = response.data.remaining;
+        });
+    },
+    //格式化金额 
+    amtFormat(cellValue) {
+      if(cellValue == null || cellValue== undefined || cellValue == ''){
+      cellValue = '0.00'
+      }
+      cellValue += '';
+            if (!cellValue.includes('.')) {
+      cellValue += '.00';
+      }
+      console.log(cellValue);
+            return cellValue.replace(/(\d)(?=(\d{3})+\.)/g, function ($0, $1) {
+              return $1 + ',';
+            }).replace(/\.$/, '');
+    },
+     /* //  将数字金额转换为大写金额 */
+    smallToBig(money) {
+      //  将数字金额转换为大写金额
+      var cnNums = new Array(
+        "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" ); //汉字的数字
+      var cnIntRadice = new Array("", "拾", "佰", "仟"); //基本单位
+      var cnIntUnits = new Array("", "万", "亿", "兆"); //对应整数部分扩展单位
+      var cnDecUnits = new Array("角", "分", "毫", "厘"); //对应小数部分单位
+      var cnInteger = "整"; //整数金额时后面跟的字符
+      var cnIntLast = "元"; //整数完以后的单位
+      //最大处理的数字
+      var maxNum = 999999999999999.9999;
+      var integerNum; //金额整数部分
+      var decimalNum; //金额小数部分
+      //输出的中文金额字符串
+      var chineseStr = "";
+      var parts; //分离金额后用的数组,预定义
+      if (money == "" || money == null || money == undefined) {
+        return "零元零角零分";
+      }
+      money = parseFloat(money);
+      if (money >= maxNum) {
+        //超出最大处理数字
+        return "超出最大处理数字";
+      }
+      if (money == 0) {
+        chineseStr = cnNums[0] + cnIntLast + cnInteger;
+        return chineseStr;
+      }
+      //四舍五入保留两位小数,转换为字符串
+      money = Math.round(money * 100).toString();
+      integerNum = money.substr(0, money.length - 2);
+      decimalNum = money.substr(money.length - 2);
+      //获取整型部分转换
+      if (parseInt(integerNum, 10) > 0) {
+        var zeroCount = 0;
+        var IntLen = integerNum.length;
+        for (var i = 0; i < IntLen; i++) {
+          var n = integerNum.substr(i, 1);
+          var p = IntLen - i - 1;
+          var q = p / 4;
+          var m = p % 4;
+          if (n == "0") {
+            zeroCount++;
+          } else {
+            if (zeroCount > 0) {
+              chineseStr += cnNums[0];
+            }
+            //归零
+            zeroCount = 0;
+            chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
+          }
+          if (m == 0 && zeroCount < 4) {
+            chineseStr += cnIntUnits[q];
+          }
+        }
+        chineseStr += cnIntLast;
+      }
+      //小数部分
+      if (decimalNum != "") {
+        var decLen = decimalNum.length;
+        for (var i = 0; i < decLen; i++) {
+          var n = decimalNum.substr(i, 1);
+          if (n != "0") {
+            chineseStr += cnNums[Number(n)] + cnDecUnits[i];
+          }
+        }
+      }
+      if (chineseStr == "") {
+        chineseStr += cnNums[0] + cnIntLast + cnInteger;
+      } else if (decimalNum == "" || /^0*$/.test(decimalNum)) {
+        chineseStr += cnInteger;
+      }
+      return chineseStr;
+    },
+    //新增
+    submitForm(){
+        if(this.ticketList.length < 1){
+                 this.$message({
+                    message: '请选择应收账款',
+                    type: 'warning'
+                });
+                return;
+        }
+        //放款方式==指定供应商时收款账号必输
+        if("1"== this.zfpcrLoanType){
+            if(!this.form.zfiCollectionAccount){
+                this.$message({
+                    message: '请输入收款账号',
+                    type: 'warning'
+                });
+                return;
+            }
+        }
+        if(parseFloat(this.form.zfiAmount) > parseFloat(this.availableAmt)){
+             this.$message({
+                    message: '签发金额不可大于可用金额',
+                    type: 'warning'
+                });
+                return;
+        }
+        if(parseFloat(this.form.zfiAmount) > parseFloat(this.checkTotalAmt)){
+             this.$message({
+                    message: '签发金额不可大于合计金额',
+                    type: 'warning'
+                });
+                return;
+        }
+        this.$refs["form"].validate(valid => {
+            if (valid) {
+            const loading = this.$loading({
+                lock: true,
+                text: "Loading",
+                spinner: "el-icon-loading",
+                background: "rgba(0, 0, 0, 0.7)",
+            })
+            //应收账款
+            this.form.ticketList = this.ticketList;
+            //产品是否可拆分
+            this.form.zfpSplit = this.zfpSplit;
+            //放款方式
+            this.form.zfpcrLoanType = this.zfpcrLoanType;
+            //融信类型
+            this.form.type = "2";
+            //利率
+            this.form.zfsqRate = this.zfsqRate;
+            //产品
+            this.form.zfpId = this.zfpId;
+            //融信类型
+            this.form.type = "2";
+            //可用额度
+            this.form.availableAmt = this.availableAmt;
+            //合计金额
+            this.form.checkTotalAmt = this.checkTotalAmt;
+            //利率
+            this.form.zfiRate = this.zfpcrRate;
+            updateCredit(this.form).then(response => {
+                loading.close();
+                this.msgSuccess("修改成功");
+                this.$store.dispatch("tagsView/delView", this.$route);
+                this.$router.go(-1);
+            }).catch((response)=>{
+            loading.close();
+            });
+            }
+        });
+    },
+       
+    }
+};
+</script>
+
+<style lang="scss">
+
+.uoloadfj .el-upload--picture-card{
+  width:110px;
+  height:110px;
+  line-height:110px;
+}
+.fjUoloadSty .el-upload--picture-card{
+  display:none;   
+}
+
+table th.star div::before {
+    content: '*';
+    color: red;
+}
+
+</style>