Browse Source

合伙人-销售

panyong 4 years ago
parent
commit
b9dfb90c33

+ 3 - 1
htmldev/loan/src/store/index.js

@@ -1,11 +1,13 @@
 import Vue from 'vue'
 import Vuex from 'vuex'
 import business from './modules/business'
+import partnerMine from './modules/partnerMine'
 
 Vue.use(Vuex)
 
 export default new Vuex.Store({
   modules: {
-    business
+    business,
+    partnerMine
   }
 })

+ 40 - 0
htmldev/loan/src/store/modules/partnerMine.js

@@ -0,0 +1,40 @@
+import { getUserInfo } from '../../views/partner/mine/api'
+import { Toast } from 'vant'
+
+const state = {
+  userInfo: {}
+}
+
+const getters = {
+  userInfo (state) {
+    return state.userInfo
+  }
+}
+
+const actions = {
+  fetchUserInfo ({ commit }) {
+    getUserInfo().then(res => {
+      if (res.status) {
+        commit('UPDATE_USERINFO', res.data)
+      } else {
+        Toast(res.msg)
+      }
+    }).catch(err => {
+      Toast(err)
+    })
+  }
+}
+
+const mutations = {
+  UPDATE_USERINFO (state, value) {
+    state.userInfo = value
+  }
+}
+
+export default {
+  namespaced: true,
+  state,
+  getters,
+  actions,
+  mutations
+}

+ 9 - 3
htmldev/loan/src/views/partner/home/index.vue

@@ -20,11 +20,17 @@
 </template>
 
 <script>
+  import { mapActions } from 'vuex'
+
   export default {
     name: 'home',
-    async mounted () {
-      await this.$nextTick()
-      this.$refreshTitle('销售管理')
+    activated () {
+      this.fetchUserInfo()
+    },
+    methods: {
+      ...mapActions({
+        fetchUserInfo: 'partnerMine/fetchUserInfo'
+      })
     }
   }
 </script>

+ 5 - 5
htmldev/loan/src/views/partner/login/index.vue

@@ -11,7 +11,7 @@
           <input type="tel" placeholder="请输入手机号码" v-model.trim="postData.partnerPhone" @input="funLimitLength">
         </div>
       </li>
-      <li>
+      <li v-if="false">
         <label>
           <span v-for="(str, index) in '图形验证:'" :key="index">{{ str }}</span>
         </label>
@@ -88,10 +88,10 @@
           return
         }
 
-        if (!capture) {
-          Toast('请输入图片验证码')
-          return
-        }
+        // if (!capture) {
+        //   Toast('请输入图片验证码')
+        //   return
+        // }
         this.funCutDown()
         sendSMS(partnerPhone, 1, capture).then(res => {
           if (res.status) {

+ 10 - 0
htmldev/loan/src/views/partner/marketing/api/index.js

@@ -0,0 +1,10 @@
+import request from '@/api/request'
+
+export const saleList = (page = 1, pageNum = 20) => request({
+  method: 'POST',
+  url: '/partner/saleList',
+  data: {
+    page,
+    pageNum
+  }
+})

+ 54 - 30
htmldev/loan/src/views/partner/marketing/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="conatainer">
     <div class="header">
-      <h2 class="title">您好,王名</h2>
+      <h2 class="title">您好,{{ userInfo.partnerName }}</h2>
       <router-link :to="{path: '/partner/goods'}">
         <img src="./image/xiaoshou_bg_tuiguang@2x.png" alt="">
       </router-link>
@@ -12,22 +12,26 @@
         <li class="list" v-for="(item, index) in listData" :key="index" @click="funJumpDetail(item)">
           <div class="name-wrap">
             <div class="avatar">
-              <img src="" alt="">
+              <img :src="item.userHeadImgUrl" alt="">
             </div>
-            <p class="name">蒋华华</p>
+            <p class="name">{{ item.orderUserName }}</p>
           </div>
-          <p class="phone">手机号:182762663</p>
+          <p class="phone">手机号:{{ item.orderUserPhone }}</p>
           <div class="loan-info">
-            <p class="label">申请产品:信用贷</p>
+            <p class="label">申请产品:{{ item.orderProduceName }}</p>
             <p>
               <span class="label">需求金额:</span>
-              <span class="value">30万元</span>
+              <span class="value">{{ item.orderPrice / 10000}}万元</span>
             </p>
           </div>
-          <p class="create-time">申请时间:2020-09-23 9:23</p>
-          <p class="status bg-0" v-if="false">进度:提交资料</p>
-          <p class="status bg-1" v-if="false">成功放款8万</p>
-          <p class="status bg-2" v-if="true">已拒绝放款</p>
+          <p class="create-time">申请时间:{{ item.createdAt }}</p>
+          <!--orderFinalStatus:0-进行中 1-成功 2-失败-->
+          <p class="status bg-0" v-if="item.orderFinalStatus === 0">进度:{{ item.orderStatus }}</p>
+          <p class="status bg-1" v-if="item.orderFinalStatus === 1">{{ item.orderStatus }}</p>
+          <p class="status bg-2" v-if="item.orderFinalStatus === 2">{{ item.orderStatus }}</p>
+        </li>
+        <li class="load-status" v-if="listData.length && booFetchData">
+          <p>{{ arrFetchStatus[numFetchStatus] }}</p>
         </li>
         <li class="bitmap" v-if="!listData.length && booFetchData">
           <p>暂无记录</p>
@@ -40,7 +44,8 @@
 <script>
   import BScroll from 'better-scroll'
   import { Toast } from 'vant'
-  import axios from 'axios'
+  import { saleList } from './api'
+  import { mapGetters } from 'vuex'
 
   const PAGESIZE = 20
   export default {
@@ -52,10 +57,10 @@
           pagesize: PAGESIZE,
           pagecount: 1
         },
-        listData: [1, 2, 3, 4],
+        listData: [],
         scroll: null,
         numFetchStatus: 0,
-        arrFetchStatus: ['正在加载,请稍后~', '到底了'],
+        arrFetchStatus: ['正在加载,请稍后~', '上拉加载更多', '没有更多了', '出错啦'],
         booFetchData: false,
         numPositionY: 0
       }
@@ -68,7 +73,6 @@
           pagecount: 1
         }
         this.listData = []
-        this.scroll = null
         this.numFetchStatus = 0
         this.booFetchData = false
         this.numPositionY = 0
@@ -81,24 +85,30 @@
           }
         })
       }
+      this.$nextTick(() => {
+        this.$refreshTitle('销售')
+      })
     },
-    async mounted () {
-      await this.$nextTick()
-      this.$refreshTitle('进度查询')
+    computed: {
+      ...mapGetters({
+        userInfo: 'partnerMine/userInfo'
+      })
     },
     methods: {
       funFetch () {
         const vm = this
-        axios.post('/', {
-          Page: vm.pager.pagenum,
-          PageSize: vm.pager.pagesize
-        }).then(response => {
-          if (response.Status === 1) {
-            const data = response.Data
-            vm.pager.pagecount = data.pageCount * 1
+        saleList(vm.pager.pagenum, vm.pager.pagesize).then(response => {
+          if (response.status) {
+            const data = response.data
+            const temp = data.data
+            vm.pager.pagecount = Math.ceil(data.count / PAGESIZE)
             vm.pager.pagenum++
             vm.booFetchData = true
-            const temp = data.List
+            if (vm.pager.pagecount <= 1) {
+              vm.numFetchStatus = 2
+            } else {
+              vm.numFetchStatus = 1
+            }
             if (temp.length) {
               vm.listData = vm.listData.concat(temp)
               vm.$nextTick(() => {
@@ -111,8 +121,8 @@
                     scrollbar: true
                   })
                   vm.scroll.on('pullingUp', () => {
-                    if (vm.pager.pagenum > vm.pager.pagecount || vm.pager.pagecount === 0) {
-                      vm.numFetchStatus = 1
+                    if (vm.pager.pagenum > vm.pager.pagecount) {
+                      vm.numFetchStatus = 2
                       return
                     }
                     vm.funFetch()
@@ -123,13 +133,17 @@
                 }
               })
             }
+          } else {
+            Toast(response.msg)
+            vm.numFetchStatus = 3
           }
         }).catch(() => {
-          Toast('失败了')
+          Toast('出错啦')
+          vm.numFetchStatus = 3
         })
       },
       funJumpDetail (item) {
-        this.$router.push('/loan/detail')
+        this.$router.push('/partner/detail/' + item.id)
       }
     }
   }
@@ -223,7 +237,6 @@
     margin-right: 13px;
     border-radius: 50%;
     overflow: hidden;
-    background: pink;
 
     img {
       display: block;
@@ -306,6 +319,17 @@
     }
   }
 
+  .load-status {
+    margin-top: 12px;
+
+    p {
+      line-height: 20px;
+      font-size: 14px;
+      color: #666;
+      text-align: center;
+    }
+  }
+
   .bitmap {
     p {
       line-height: 22px;