Преглед на файлове

Merge branch 'master' of http://git.cc-lotus.info/financial_platform/admin-cms

reloaded преди 5 години
родител
ревизия
ac24de1eb7

+ 58 - 0
src/layout/common/needSearchInfo.vue

@@ -0,0 +1,58 @@
+<template>
+    <div id="needSearchInfo">
+        <el-row>
+            <el-col :span="24" class="info">
+                <el-col :span="12">
+                    <span>筛选条件:</span>
+                    <el-select v-model="region" >
+                        <el-option label="未授信" value="0"></el-option>
+                        <el-option label="已授信" value="1"></el-option>
+                    </el-select>
+                </el-col>
+                <el-col :span="5" class="btn">
+                    <el-button type="primary" @click="clickBtn()" >查询</el-button>
+                </el-col>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+  export default {
+    name: 'needSearchInfo',
+    props: {},
+    components: {},
+    data: () => ({
+      region: '0',
+    }),
+    created() {},
+    computed: {},
+    methods: {
+      clickBtn() {
+        this.$emit('clickBtn',this.region);
+      },
+    },
+  };
+</script>
+
+<style lang="less" scoped>
+    .info {
+        padding: 15px 0;
+    }
+    .info .input {
+        padding: 6px 0;
+    }
+    .info .btn {
+        text-align: center;
+    }
+
+    /deep/.el-button {
+        color: #fff;
+        background-color: red;
+        border-color: red;
+    }
+    /deep/.el-input__inner {
+        height: 30px;
+        line-height: 30px;
+    }
+</style>

+ 65 - 0
src/layout/financeclaims/loanfollowForm.vue

@@ -0,0 +1,65 @@
+<template>
+    <div id="loanfollowForm">
+        <el-row>
+            <el-col :span="24" class="form">
+                <el-form :model="ruleForm" :rules="rules"  v-else  ref="ruleForm" label-width="200px" class="demo-ruleForm">
+                    <el-form-item label="产品名称:">
+                        <span>{{ruleForm[0].loanpronew.name}}</span>
+                    </el-form-item>
+                    <el-form-item label="利率范围:" >
+                        <span>{{ruleForm[0].loanpronew.mongey_min_rate}}%~{{ruleForm[0].loanpronew.mongey_max_rate}}%</span>
+                    </el-form-item>
+                    <el-form-item label="期望融资期限(个月):" >
+                        <span>{{ruleForm[0].loanpronew.claims_min_term}}~{{ruleForm[0].loanpronew.claims_max_term}}个月</span>
+                    </el-form-item>
+                        <el-form-item label="担保方式" prop="ensure_id">
+                            <el-select disabled v-model="ruleForm[0].loanpronew.ensure_id" placeholder="请选择担保方式">
+                                <el-option v-for="(item, index) in dbList" :key="index" :label="item.name" :value="item.code"></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="还款方式" prop="repayment_id">
+                            <el-select disabled v-model="ruleForm[0].loanpronew.repayment_id" placeholder="请选择还款方式">
+                                <el-option v-for="(item, index) in hkList" :key="index" :label="item.name" :value="item.code"></el-option>
+                            </el-select>
+                        </el-form-item>
+                    <el-form-item v-if="ruleForm[0].loanpronew.orcredit== '1' " label="授信金额(万元)" >
+                        <span>{{ruleForm[0].credit_money}}万元</span>
+                    </el-form-item>
+                    <el-form-item label="产品简介:" >
+                        <span>{{ruleForm[0].loanpronew.news}}</span>
+                    </el-form-item>
+                    <el-form-item v-if="ruleForm[0].loanpronew.orcredit== '0' " >
+                        <el-button  type="primary" size="small" @click="shouxin()">授信</el-button>
+                    </el-form-item>
+                </el-form>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+  export default {
+    name: 'loanfollowForm',
+    props: {
+      ruleForm: null,
+      charList: null,
+    },
+    components: {},
+    data: () => ({
+
+    }),
+    created() {},
+    computed: {},
+    methods: {
+      shouxin() {
+        this.$emit('shouxin');
+      },
+    },
+  };
+</script>
+
+<style lang="less" scoped>
+    .form {
+        padding: 0 200px 0 0;
+    }
+</style>

+ 76 - 0
src/layout/financeclaims/loanfollowList.vue

@@ -0,0 +1,76 @@
+<template>
+    <div id="loanfollowList">
+        <el-row>
+            <el-col :span="24">
+                <el-table ref="debtTable" :data="debtTable" style="width: 100%" border>
+                    <el-table-column type="index" label="序号" width="50" align="center"> </el-table-column>
+                    <el-table-column property="loanpronew.name" label="小微数贷名称" align="center"> </el-table-column>
+                    <el-table-column label="利率范围" align="center">
+                        <template slot-scope="scope">
+                            <span style="margin-left: 10px">{{ scope.row.loanpronew.mongey_min_rate }}%~{{ scope.row.loanpronew.mongey_max_rate }}%</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="贷款额度范围(万元)" align="center">
+                        <template slot-scope="scope">
+                            <span style="margin-left: 10px">{{ scope.row.loanpronew.claims_min_money }}万~{{ scope.row.loanpronew.claims_max_money }}万</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column fixed="right" label="操作" align="center">
+                        <template slot-scope="scope">
+                            <el-button @click="$router.push({ path: '/financeclaims/loanfollowDetail', query: { id: scope.row._id } })" type="text" icon="el-icon-search" title="查看详情"></el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-row class="page">
+                    <el-pagination
+                            @size-change="handleSizeChange"
+                            @current-change="handleCurrentChange"
+                            :current-page="currentPage"
+                            :page-size="10"
+                            layout="total, prev, pager, next, jumper"
+                            :total="total"
+                    >
+                    </el-pagination>
+                </el-row>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+  export default {
+    name: 'loanfollowList',
+    props: {
+      debtTable: null,
+      total: null,
+    },
+    components: {},
+    data: () => ({
+      currentPage: 1,
+    }),
+    created() {},
+    computed: {},
+    methods: {
+      deleteRow(id) {
+        this.$emit('deleteRow', id);
+      },
+      clickRest(id) {
+        this.$emit('clickRest', id);
+      },
+      handleSizeChange(val) {
+        console.log(`每页 ${val} 条`);
+      },
+      handleCurrentChange(val) {
+        this.$emit('pagechange', { skip: val});
+      },
+    },
+  };
+</script>
+
+<style lang="less" scoped>
+    .page {
+        text-align: center;
+        padding: 15px 0;
+    }
+
+</style>

+ 1 - 0
src/layout/layout-part/menus.vue

@@ -82,6 +82,7 @@
         <el-menu-item-group>
           <el-menu-item index="/financeclaims/financeClaimIndex">债权产品管理</el-menu-item>
           <el-menu-item index="/financeclaims/loanProIndex">小微数贷管理</el-menu-item>
+          <el-menu-item index="/financeclaims/loanFollowndex">小微数贷授信管理</el-menu-item>
           <!--<el-menu-item index="/institution/index/1">股权信息</el-menu-item>-->
         </el-menu-item-group>
       </el-submenu>

+ 10 - 0
src/router/index.js

@@ -246,6 +246,16 @@ const routes = [
     path: '/financeclaims/loanProLookDetail',
     component: () => import('../views/financeclaims/loanProLookDetail.vue'),
   },
+  // 数贷产品授信页面
+  {
+    path: '/financeclaims/loanFollowndex',
+    component: () => import('../views/financeclaims/loanFollowndex.vue'),
+  },
+  // 数贷产品授信详情页面
+  {
+    path: '/financeclaims/loanfollowDetail',
+    component: () => import('../views/financeclaims/loanfollowDetail.vue'),
+  },
   {
     path: '/login',
     name: 'login',

+ 2 - 0
src/store/index.js

@@ -24,6 +24,7 @@ import loanpro from './loanpro';
 import * as muta from './user/mutations';
 import * as states from './user/state';
 import banner from './banner';
+import loanfollow from './loanfollowInfo';
 
 Vue.use(Vuex);
 
@@ -51,6 +52,7 @@ export default new Vuex.Store({
     financeclaim,
     banner,
     loanpro,
+    loanfollow,
   },
   state: { ...states },
   mutations: { ...muta },

+ 39 - 0
src/store/loanfollow.js

@@ -0,0 +1,39 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  loanfollowInfo: `/api/financial/loanfollow`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.loanfollowInfo}`, payload);
+    return res;
+  },
+  async credit({ commit }, payload) {// 授信贷款产品接口
+    const res = await this.$axios.$post(`${api.loanproInfo}/credit`, payload);
+    return res;
+  },
+  async loanfList({ commit }, payload) {//授信贷款列表接口
+    const res = await this.$axios.$post(`${api.loanproInfo}/loanfList`, payload);
+    return res;
+  },
+  async loanfOne({ commit }, payload) {//授信贷款详情
+    const res = await this.$axios.$post(`${api.loanproInfo}/loanfOne`, payload);
+    return res;
+  },
+  async update({ commit }, { id, ...data }) {
+    const res = await this.$axios.$post(`${api.loanfollowInfo}/update/${id}`, data);
+    return res;
+  },
+
+};
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 83 - 0
src/views/financeclaims/loanFollowndex.vue

@@ -0,0 +1,83 @@
+<template>
+    <div id="loanFollowndex">
+        <el-col :span="24" class="debt">
+            <el-col :span="24" class="top">
+                <topInfo :topTitle="topTitle" :display="display" ></topInfo>
+            </el-col>
+            <el-col :span="24" class="search">
+                <searchInfo @clickBtn="clickBtn"></searchInfo>
+            </el-col>
+            <el-col :span="24" class="main">
+                <loanfollowLists :debtTable="debtTable" :total="total" @pagechange="pagechange" @deleteRow="deleteRow"></loanfollowLists>
+            </el-col>
+        </el-col>
+    </div>
+</template>
+
+<script>
+  import topInfo from '@/layout/common/topInfoloan.vue';
+  import searchInfo from '@/layout/common/needSearchInfo.vue';
+  import loanfollowLists from '@/layout/financeclaims/loanfollowList.vue';
+  import { createNamespacedHelpers, mapGetters,mapState } from 'vuex';
+  const { mapActions: loanfollow } = createNamespacedHelpers('loanfollow');
+  export default {
+    name: 'loanFollowndex',
+    props: {},
+    components: {
+      topInfo, //头部导航
+      searchInfo,
+      loanfollowLists, //债权需求列表
+    },
+    data: () => ({
+      topTitle: '授信小微数贷列表',
+      display: 'none',
+      debtTable: [],
+      total: '',
+      orcredit: '0'
+    }),
+    created() {
+      this.loanfollowList();
+    },
+    computed: {
+      ...mapState(['user']),
+    },
+    methods: {
+      ...loanfollow(['credit','loanfList','loanfOne']),
+      async loanfollowList({ skip = 1, limit = 10,jkid ='1111111',orcredit=this.orcredit} = {}) {//this.user.userid
+        const res = await this.loanfList({ skip, limit,jkid, orcredit});
+        this.$set(this, `debtTable`, res.res);
+        this.$set(this, `total`, res.total);
+      },
+
+      async pagechange(data) {
+        var skip = data.skip;
+        var limit = 10;
+        var jkid = '1111111';
+        var orcredit = this.orcredit;
+        const res = await this.followlist({ skip, limit,jkid,orcredit });
+        this.$set(this, `debtTable`, res.res);
+        this.$set(this, `total`, res.total);
+      },
+      async clickBtn(message) {//查询
+        this.orcredit = message;
+        var skip = 0;
+        var limit =10;
+        var jkid ='1111111';
+        var orcredit =message;
+        const res = await this.loanfList({ skip, limit,jkid,orcredit });
+        this.$set(this, `debtTable`, res.res);
+        this.$set(this, `total`, res.total);
+      },
+    },
+  };
+</script>
+
+<style lang="less" scoped>
+    .debt {
+        padding: 20px;
+    }
+    .top {
+        border-bottom: 1px solid #ccc;
+    }
+</style>
+

+ 113 - 0
src/views/financeclaims/loanfollowDetail.vue

@@ -0,0 +1,113 @@
+<template>
+    <div id="loanfollowDetail">
+        <el-row>
+            <el-col :span="24" class="debt">
+                <el-col :span="24" class="top">
+                    <topInfo :topTitle="topTitle" :display="display"></topInfo>
+                </el-col>
+                <el-col :span="24" class="main">
+                    <el-col :span="24" class="back">
+                        <detailTop @goBack="goBack"></detailTop>
+                    </el-col>
+                    <el-col :span="24" class="info">
+                        <loanfollowForm :ruleForm="followForm" :dbList="dbList" :hkList="hkList" @shouxin = "shouxin"></loanfollowForm>
+                    </el-col>
+                </el-col>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+  import topInfo from '@/layout/common/topInfoloan.vue';
+  import detailTop from '@/layout/common/detailTop.vue';
+  import loanfollowForm from '@/layout/financeclaims/loanfollowForm.vue';
+  import { createNamespacedHelpers, mapGetters } from 'vuex';
+const { mapActions: loanfollow } = createNamespacedHelpers('loanfollow');
+  export default {
+    name: 'loanfollowDetail',
+    props: {},
+    components: {
+      topInfo, //头部导航
+      detailTop, //头部返回
+      loanfollowForm, //关注债权需求详情
+    },
+    data: () => ({
+      display: 'none',
+      topTitle: '关注债权需求详情',
+      followForm: {},
+      charList: {
+        name: '10',
+      },
+      dbList: [
+    { name: '担保1', code: '2201' },
+    { name: '担保2', code: '2202' },
+    { name: '担保3', code: '2203' },
+  ],
+    hkList: [
+    { name: '还款1', code: '2301' },
+    { name: '还款2', code: '2302' },
+    { name: '还款3', code: '2303' },
+  ],
+    }),
+    created() {
+      this.searchInfo();
+    },
+    computed: {
+      id() {
+        return this.$route.query.id;
+      },
+    },
+    methods: {
+      ...loanfollow(['credit','loanfOne']),
+      async searchInfo() {
+        if (this.id) {
+          const res = await this.loanfOne({id:this.id});
+          this.$set(this, `followForm`, res.data);
+        }
+      },
+      // 授信
+      async shouxin() {
+        this.$prompt('请输入授信额度(万元)', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          inputPattern: /(^[1-9](\d+)?(\.\d{1,2})?$)|(^\d\.\d{1,2}$)/,
+          inputErrorMessage: '请输入正确金额'
+        })
+          .then(({ value }) => {
+            this.finalSx(value);
+          }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '取消输入'
+          });
+        });
+      },
+      async finalSx(value){
+        const res = await this.credit({id:this.id,money:value});
+        this.$checkRes(res, '授信成功', '授信失败');
+      },
+      // 返回
+      goBack() {
+        this.$router.go(-1);
+      },
+    },
+  };
+</script>
+
+<style lang="less" scoped>
+    .debt {
+        padding: 20px;
+    }
+    .top {
+        border-bottom: 1px solid #ccc;
+    }
+    .main {
+        border-radius: 10px;
+        margin: 20px 0 0 0;
+        box-shadow: 0 0 3px #666;
+    }
+    .main .back {
+        padding: 10px 0 10px 15px;
+    }
+</style>