소스 검색

1.个贷业务待办处理开发
2.其他优化

GouGengquan 1 개월 전
부모
커밋
25f074a531
10개의 변경된 파일248개의 추가작업 그리고 18개의 파일을 삭제
  1. 0 1
      src/App.vue
  2. 10 0
      src/api/personal.js
  3. 6 0
      src/api/workFlowNodeInstance.js
  4. 11 0
      src/api/workflow.js
  5. 23 0
      src/router/index.js
  6. 7 0
      src/utils/request.js
  7. 1 0
      src/views/home/index.vue
  8. 45 17
      src/views/home/todo.vue
  9. 29 0
      src/views/personal/index.vue
  10. 116 0
      src/views/personal/todoDetail.vue

+ 0 - 1
src/App.vue

@@ -2,7 +2,6 @@
   <div>
       <RouterView />
   </div>
-  <div style="height: 5rem;"></div>
  
 </template>
 

+ 10 - 0
src/api/personal.js

@@ -3,4 +3,14 @@ import request from '@/utils/request'
 // 获取个贷待办任务
 export function getPersonalTodoList(params) {
     return request.get('workTaskRecord/personal/todo', {params: params})
+}
+
+// 获取个贷待办详情
+export function getPersonalTodoDetail(params) {
+    return request.get(`personal/${params}`)
+}
+
+// 获取个贷评估对象详情
+export function getPersonalTargetDetail(params) {
+    return request.get(`personalTarget/${params}`)
 }

+ 6 - 0
src/api/workFlowNodeInstance.js

@@ -0,0 +1,6 @@
+import request from '@/utils/request'
+
+// 获取当前节点实例
+export function currentNode(params) {
+    return request.post(`workFlowNodeInstance/current`, params)
+}

+ 11 - 0
src/api/workflow.js

@@ -0,0 +1,11 @@
+import request from '@/utils/request'
+
+// 提交节点
+export function commit(params) {
+    return request.post(`workFlow/commit`, params)
+}
+
+// 批量提交节点
+export function batchCommit(params) {
+    return request.post(`workFlow/batchCommit`, params)
+}

+ 23 - 0
src/router/index.js

@@ -8,9 +8,16 @@ import HomeView from '@/views/home/home.vue'
 import TodoView from '@/views/home/todo.vue'
 import StartView from '@/views/home/start.vue'
 
+// 登录页
 import LoginView from '@/views/login/index.vue'
+
+// 资产业务
 import AssetsView from '@/views/assets/index.vue'
 
+// 个贷业务
+import PersonalIndex from '@/views/personal/index.vue'
+import PersonalTodoDetailView from '@/views/personal/todoDetail.vue'
+
 const routes = [
   // 重定向到首页的路由
   {
@@ -77,6 +84,22 @@ const routes = [
         meta: {
           title: '资产业务'
         }
+      },
+      // 个贷业务
+      {
+        path: 'personal',
+        component: PersonalIndex,
+        name: 'personalView',
+        children: [
+          {
+            path: 'todoDetail',
+            component: PersonalTodoDetailView,
+            name: 'todoDetailView',
+            meta: {
+              title: '待办处理-个贷'
+            },
+          },
+        ]
       }
     ]
   },

+ 7 - 0
src/utils/request.js

@@ -45,6 +45,13 @@ service.interceptors.response.use(
         );
         $router.push('/index/login');
         removeToken();
+      } else if(res.code === 10033) {
+        showNotify(
+          {
+            type: 'danger',
+            message: '当前节点需要业务操作, 请在电脑端处理节点'
+          }
+        );
       } else {
         showNotify(
           {

+ 1 - 0
src/views/home/index.vue

@@ -8,6 +8,7 @@
         <component :is="Component" />
       </transition>
     </router-view>
+    <div style="height: 5rem;"></div>
     <div>
       <Tabbar></Tabbar>
     </div>

+ 45 - 17
src/views/home/todo.vue

@@ -3,8 +3,8 @@
     <van-tab title="个贷待办" name="personal">
       <van-search v-model="personalListQuery.keyword" placeholder="请输入搜索关键词" @search="onPersonalSearch()" />
       <van-pull-refresh v-model="loading" @refresh="onPersonalRefresh()">
-        <van-list v-model:loading="loading" :finished="finished" finished-text="没有待办了" @load="personalTodoList()">
-          <div class="card" v-for="item in personalListData" :key="item.id">
+        <van-list v-model:loading="loading" :finished="personalFinished" finished-text="没有待办了" @load="personalTodoList()">
+          <div class="card" v-for="item in personalListData" :key="item.id" @click="toPersonalDetail(item)">
             <h3>
               <van-icon name="link-o" />
               &nbsp;{{ item.orderId }}
@@ -30,7 +30,7 @@
     <van-tab title="大中型待办" name="major">
       <van-search v-model="majorListQuery.keyword" placeholder="请输入搜索关键词" @search="onMajorSearch()" />
       <van-pull-refresh v-model="loading" @refresh="onMajorRefresh()">
-        <van-list v-model:loading="loading" :finished="finished" finished-text="没有待办了" @load="majorTodoList()">
+        <van-list v-model:loading="loading" :finished="majorFinished" finished-text="没有待办了" @load="majorTodoList()">
           <div class="card" v-for="item in majorListData" :key="item.id">
             <h3>
               <van-icon name="link-o" />
@@ -61,7 +61,7 @@
     <van-tab title="资产待办" name="assets">
       <van-search v-model="assetsListQuery.keyWord" placeholder="请输入搜索关键词" @search="onAssetsSearch()" />
       <van-pull-refresh v-model="loading" @refresh="onAssetsRefresh()">
-        <van-list v-model:loading="loading" :finished="finished" finished-text="没有待办了" @load="assetsTodoList()">
+        <van-list v-model:loading="loading" :finished="assetsFinished" finished-text="没有待办了" @load="assetsTodoList()">
           <div class="card" v-for="item in assetsListData" :key="item.id">
             <h3>
               <van-icon name="link-o" />
@@ -107,7 +107,9 @@ export default {
       // 加载状态
       loading: false,
       // 加载完成状态
-      finished: false,
+      personalFinished: false,
+      majorFinished: false,
+      assetsFinished: false,
       personalListQuery: {
         // 当前页数
         current: 1,
@@ -129,6 +131,9 @@ export default {
     };
   },
   created() {
+    this.personalFinished = false;
+    this.majorFinished = false;
+    this.assetsFinished = false;
     this.personalTodoList();
   },
   methods: {
@@ -136,13 +141,10 @@ export default {
     tabChange() {
       switch (this.activeName) {
         case 'personal':
-          this.personalTodoList();
           break;
         case 'major':
-          this.majorTodoList();
           break;
         case 'assets':
-          this.assetsTodoList();
           break;
         default:
           break;
@@ -151,14 +153,14 @@ export default {
     // 个贷待办列表刷新
     onPersonalRefresh() {
       this.personalListQuery.current = 1;
-      this.finished = false;
+      this.personalFinished = false;
       this.personalListData = [];
       this.personalTodoList();
     },
     // 个贷待办列表关键字搜索
     onPersonalSearch() {
       this.personalListQuery.current = 1;
-      this.finished = false;
+      this.personalFinished = false;
       this.personalListData = [];
       this.personalTodoList();
     },
@@ -176,7 +178,7 @@ export default {
             this.personalListQuery.current++;
           } else {
             // 反之停止加载
-            this.finished = true;
+            this.personalFinished = true;
           }
         }
         this.loading = false;
@@ -185,14 +187,14 @@ export default {
     // 大中型待办列表刷新
     onMajorRefresh() {
       this.majorListQuery.current = 1;
-      this.finished = false;
+      this.majorFinished = false;
       this.majorListData = [];
       this.majorTodoList();
     },
     // 大中型待办列表关键字搜索
     onMajorSearch() {
       this.majorListQuery.current = 1;
-      this.finished = false;
+      this.majorFinished = false;
       this.majorListData = [];
       this.majorTodoList();
     },
@@ -210,7 +212,7 @@ export default {
             this.majorListQuery.current++;
           } else {
             // 反之停止加载
-            this.finished = true;
+            this.majorFinished = true;
           }
         }
         this.loading = false;
@@ -219,14 +221,14 @@ export default {
     // 资产待办列表刷新
     onAssetsRefresh() {
       this.assetsListQuery.current = 1;
-      this.finished = false;
+      this.assetsFinished = false;
       this.assetsListData = [];
       this.assetsTodoList();
     },
     // 资产待办列表关键字搜索
     onAssetsSearch() {
       this.assetsListQuery.current = 1;
-      this.finished = false;
+      this.assetsFinished = false;
       this.assetsListData = [];
       this.assetsTodoList();
     },
@@ -246,12 +248,38 @@ export default {
             this.assetsListQuery.current++;
           } else {
             // 反之停止加载
-            this.finished = true;
+            this.assetsFinished = true;
           }
         }
         this.loading = false;
       });
     },
+    // 个贷前往待办详情页
+    toPersonalDetail(row) {
+      const nodeCode = row.nodeCode;
+      switch (nodeCode) {
+        case 'REPORT_OUT_APPLY':
+        case 'LETTER_OUT_APPLY':
+        case 'REPORT_OUT_DEPARTMENT_CHECK':
+        case 'LETTER_OUT_DEPARTMENT_CHECK':
+        case 'BUSINESS_ARCHIVING':
+        case 'STATEMENT_IN':
+        case 'STATEMENT_OUT':
+        case 'REPORT_IN':
+        case 'REPORT_OUT':
+        case 'LETTER_IN':
+        case 'LETTER_OUT':
+          showDialog({
+            message: '当前节点需要业务操作, 请在电脑端处理节点',
+          }).then(() => {
+            // on close
+          });
+          break;
+        default:
+          this.$router.push(`/index/personal/todoDetail?id=${row.businessId}&currentNodeCode=${row.nodeCode}&orderId=${row.orderId}&doWorkflow=${true}&isOnline=${row.isOnline}&handlerName=${row.handlerName}&nodeTime=${row.nodeCreated}`);
+          break;
+      }
+    },
   },
 };
 </script>

+ 29 - 0
src/views/personal/index.vue

@@ -0,0 +1,29 @@
+<template>
+  <div class="base">
+    <router-view v-slot="{ Component }">
+      <transition>
+        <component :is="Component" />
+      </transition>
+    </router-view>
+  </div>
+</template>
+
+<script>
+
+export default {
+  data() {
+    return {};
+  },
+  created() {
+  },
+  methods: {
+    
+  },
+};
+</script>
+<style scoped>
+.base {
+}
+</style>
+
+

+ 116 - 0
src/views/personal/todoDetail.vue

@@ -0,0 +1,116 @@
+<template>
+  <div>
+    <van-nav-bar title="待办处理-个贷" left-text="返回" left-arrow @click-left="onClickLeft()" />
+    <van-form>
+      <van-cell-group inset>
+        <van-field label="项目编号" v-model="personal.orderId" name="orderId" readonly />
+        <van-field label="坐落" v-model="personal.location" name="location" readonly />
+        <van-field label="当前节点" v-model="currentNode.nodeName" name="nodeName" readonly />
+        <van-field label="处理人" v-model="currentNode.handlerName" name="handlerName" readonly />
+        <van-field label="面积" v-model="personalTarget.acreage" name="acreage" readonly />
+        <van-field label="单价" v-model="personalTarget.price" name="price" readonly />
+        <van-field label="总价" v-model="personalTarget.amount" name="amount" readonly />
+        <van-field label="客户名称" v-model="personal.clientName" name="clientName" readonly />
+        <van-field label="业务来源" v-model="personal.clientSubName" name="clientSubName" readonly />
+        <van-field label="中介" v-model="personal.agent" name="agent" readonly />
+        <van-field label="联系人" v-model="personal.contactName" name="contactName" readonly />
+        <van-field label="联系电话" v-model="personal.contactTel" name="contactTel" readonly />
+        <van-field label="委托人1" v-model="personal.bailorA" name="bailor" readonly />
+        <van-field label="委托人2" v-model="personal.bailorB" name="bailor" readonly />
+        <van-field label="下单时间" v-model="personal.created" name="created" readonly />
+        <van-field label="节点时间" v-model="currentNode.nodeTime" name="nodeTime" readonly />
+        <van-field label="最新备注" v-model="commitInfo.comments" name="comments" type="textarea" />
+      </van-cell-group>
+    </van-form>
+    <div class="button-style" style="float: left">
+      <van-button type="warning" style="width: 100%" @click="commitNode('REVERSE')">退回</van-button>
+    </div>
+    <div class="button-style" style="float: right">
+      <van-button type="success" style="width: 100%" @click="commitNode('PASS')">提交</van-button>
+    </div>
+  </div>
+</template>
+
+<script>
+import { showNotify } from 'vant';
+import { getPersonalTodoDetail, getPersonalTargetDetail } from '@/api/personal';
+import { currentNode } from '@/api/workFlowNodeInstance';
+import { commit } from '@/api/workflow';
+
+export default {
+  data() {
+    return {
+      // 个贷详情
+      personal: {},
+      personalTarget: {},
+      currentNode: {},
+      // 节点提交信息
+      commitInfo: {},
+    };
+  },
+  created() {
+    this.personal.id = this.$route.query.id;
+    this.personal.orderId = this.$route.query.orderId;
+    this.getTodoDetail();
+    this.getTargetDetail();
+    this.getCurrentNode();
+  },
+  methods: {
+    onClickLeft() {
+      history.back();
+    },
+    // 获取待办详情
+    getTodoDetail() {
+      if (this.personal.id) {
+        getPersonalTodoDetail(this.personal.id).then((res) => {
+          if (res.code === 200) {
+            this.personal = res.data;
+          }
+        });
+      }
+    },
+    // 获取评估对象详情
+    getTargetDetail() {
+      if (this.personal.id) {
+        getPersonalTargetDetail(this.personal.id).then((res) => {
+          if (res.code === 200) {
+            this.personalTarget = res.data;
+          }
+        });
+      }
+    },
+    // 获取当前节点实例
+    getCurrentNode() {
+      if (this.personal.id) {
+        currentNode({ mainBusiness: 'PERSONAL_BUSINESS', businessId: this.personal.id, businessSubId: this.personal.orderId }).then((res) => {
+          if (res.code === 200) {
+            this.currentNode = res.data;
+            this.currentNode.handlerName = this.$route.query.handlerName;
+            this.currentNode.nodeTime = this.$route.query.nodeTime;
+          }
+        });
+      }
+    },
+    // 提交节点
+    commitNode(state) {
+      this.commitInfo.instanceNodeId = this.currentNode.instanceId;
+      this.commitInfo.state = state;
+      this.commitInfo.businessSubId = this.personal.orderId;
+      commit(this.commitInfo).then((res) => {
+        if (res.code === 200 && res.data) {
+          showNotify({ type: 'success', message: '节点提交成功' });
+          history.back();
+        }
+      });
+    },
+  },
+};
+</script>
+
+<style scoped>
+.button-style {
+  display: inline-block;
+  margin: 20px;
+  width: 100px;
+}
+</style>