浏览代码

1.修复重复触发@load事件
2.待办tab加上徽标显示待办数量

GouGengquan 2 周之前
父节点
当前提交
6dcfa07619
共有 2 个文件被更改,包括 90 次插入13 次删除
  1. 10 0
      src/api/workNodeTaskRecord.js
  2. 80 13
      src/views/home/todo.vue

+ 10 - 0
src/api/workNodeTaskRecord.js

@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+/*
+* 工作流节点任务
+*/
+
+// 获取各个业务流程待办任务数量
+export function getTodoTotalNum() {
+    return request.get(`workTaskRecord/todoNum`)
+}

+ 80 - 13
src/views/home/todo.vue

@@ -1,6 +1,11 @@
 <template>
   <van-tabs v-model:active="activeName" @change="tabChange()" :ellipsis="false">
-    <van-tab v-if="menuStore.menuInfo.map((item) => item.name).includes('个贷业务')" title="个贷待办" name="personal">
+    <van-tab v-if="menuStore.menuInfo.map((item) => item.name).includes('个贷业务')" name="personal">
+      <template #title>
+        <van-badge :content="personalTodoTotal" max="99">
+          <div>个贷待办</div>
+        </van-badge>
+      </template>
       <van-search v-model="personalListQuery.keyword" placeholder="请输入搜索关键词" @search="onPersonalSearch()" />
       <van-pull-refresh v-model="loading" @refresh="onPersonalRefresh()">
         <van-list v-model:loading="loading" :finished="personalFinished" finished-text="没有待办了" @load="personalTodoList()">
@@ -25,17 +30,22 @@
               <van-tag color="#969799" size="medium" class="van-tag">{{ item.created }}</van-tag>
             </div>
             <div class="comments">
-            <div>
-              <van-icon name="notes-o" />
-              {{ item.comments ? item.comments : '-' }}
+              <div>
+                <van-icon name="notes-o" />
+                {{ item.comments ? item.comments : '-' }}
+              </div>
             </div>
           </div>
-          </div>
         </van-list>
       </van-pull-refresh>
       <van-back-top right="10vw" bottom="10vh" />
     </van-tab>
-    <van-tab v-if="menuStore.menuInfo.map((item) => item.name).includes('大中型业务')" title="大中型待办" name="major">
+    <van-tab v-if="menuStore.menuInfo.map((item) => item.name).includes('大中型业务')" name="major">
+      <template #title>
+        <van-badge :content="majorTodoTotal" max="99">
+          <div>大中型待办</div>
+        </van-badge>
+      </template>
       <van-search v-model="majorListQuery.keyword" placeholder="请输入搜索关键词" @search="onMajorSearch()" />
       <van-pull-refresh v-model="loading" @refresh="onMajorRefresh()">
         <van-list v-model:loading="loading" :finished="majorFinished" finished-text="没有待办了" @load="majorTodoList()">
@@ -67,7 +77,12 @@
       </van-pull-refresh>
       <van-back-top right="10vw" bottom="10vh" />
     </van-tab>
-    <van-tab v-if="menuStore.menuInfo.map((item) => item.name).includes('资产业务')" title="资产待办" name="assets">
+    <van-tab v-if="menuStore.menuInfo.map((item) => item.name).includes('资产业务')" name="assets">
+      <template #title>
+        <van-badge :content="assetsTodoTotal" max="99">
+          <div>资产待办</div>
+        </van-badge>
+      </template>
       <van-search v-model="assetsListQuery.keyWord" placeholder="请输入搜索关键词" @search="onAssetsSearch()" />
       <van-pull-refresh v-model="loading" @refresh="onAssetsRefresh()">
         <van-list v-model:loading="loading" :finished="assetsFinished" finished-text="没有待办了" @load="assetsTodoList()">
@@ -99,7 +114,12 @@
       </van-pull-refresh>
       <van-back-top right="10vw" bottom="10vh" />
     </van-tab>
-    <van-tab v-if="majorAdmin" title="大中型提成审批" name="majorAdmin">
+    <van-tab v-if="majorAdmin" name="majorAdmin">
+      <template #title>
+        <van-badge :content="majorDeclareCheckNum" max="99">
+          <div>大中型提成审批</div>
+        </van-badge>
+      </template>
       <van-search v-model="majorDeclListQuery.orderId" placeholder="请输入项目编号" @search="onMajorDeclSearch()" />
       <van-pull-refresh v-model="loading" @refresh="onMajorDeclRefresh()">
         <van-list v-model:loading="loading" :finished="majorDeclFinished" finished-text="没有待办了" @load="getMajorDecl()">
@@ -127,7 +147,12 @@
       </van-pull-refresh>
       <van-back-top right="10vw" bottom="10vh" />
     </van-tab>
-    <van-tab v-if="assetsAdmin" title="资产提成审批" name="assetsAdmin">
+    <van-tab v-if="assetsAdmin" name="assetsAdmin">
+      <template #title>
+        <van-badge :content="assetsDeclareCheckNum" max="99">
+          <div>资产提成审批</div>
+        </van-badge>
+      </template>
       <van-search v-model="assetsDeclListQuery.orderId" placeholder="请输入项目编号" @search="onAssetsDeclSearch()" />
       <van-pull-refresh v-model="loading" @refresh="onAssetsDeclRefresh()">
         <van-list v-model:loading="loading" :finished="assetsDeclFinished" finished-text="没有待办了" @load="getAssetsDecl()">
@@ -165,6 +190,7 @@ import { getMajorTodoList } from '@/api/major';
 import { getAssetsTodoList } from '@/api/assets';
 import { checkHasBusinessHandle } from '@/api/workFlowNodeInstance';
 import { assetsCheckPage, majorCheckPage } from '@/api/commissonDeclare';
+import { getTodoTotalNum } from '@/api/workNodeTaskRecord';
 import { mapStores } from 'pinia';
 import { menuStore } from '@/stores/menuStore';
 
@@ -172,10 +198,18 @@ export default {
   data() {
     return {
       activeName: 'personal',
+      // 待办数量
+      majorTodoTotal: null,
+      personalTodoTotal: null,
+      assetsTodoTotal: null,
+      majorDeclareCheckNum: null,
+      assetsDeclareCheckNum: null,
+      // 列表数组
       personalListData: [],
       majorListData: [],
       assetsListData: [],
       // 加载状态
+      // 加载状态一定要在请求结束前保持true,否则可能重复触发@load事件
       loading: false,
       // 加载完成状态
       personalFinished: false,
@@ -235,7 +269,7 @@ export default {
     },
   },
   created() {
-    
+    this.getBusinessTodoNum();
   },
   methods: {
     // 监听标签页改变
@@ -255,6 +289,38 @@ export default {
           break;
       }
     },
+    // 获取各个业务待办任务数量
+    getBusinessTodoNum() {
+      getTodoTotalNum().then((res) => {
+        if (res.code === 200) {
+          let majorDeclareCheckNum = 0;
+          let assetsDeclareCheckNum = 0;
+          res.data.forEach((element) => {
+            if (element.businessType === 'MAJOR_BUSINESS') {
+              this.majorTodoTotal = element.totalNum > 0 ? element.totalNum : null;
+            }
+            if (element.businessType === 'PERSONAL_BUSINESS') {
+              this.personalTodoTotal = element.totalNum > 0 ? element.totalNum : null;
+            }
+            if (element.businessType === 'ASSET_BUSINESS') {
+              this.assetsTodoTotal = element.totalNum > 0 ? element.totalNum : null;
+            }
+
+            //大中型提成申报审批(包含市场和评估)
+            if (element.businessType === 'COMMISSION_DECLARE_MAJOR_MARKET' || element.businessType === 'COMMISSION_DECLARE_MAJOR_EVALUATE') {
+              majorDeclareCheckNum += element.totalNum;
+            }
+
+            //资产提成申报审批(包含市场和评估)
+            if (element.businessType === 'COMMISSION_DECLARE_ASSET_MARKET' || element.businessType === 'COMMISSION_DECLARE_ASSET_EVALUATE') {
+              assetsDeclareCheckNum += element.totalNum;
+            }
+          });
+          this.majorDeclareCheckNum = majorDeclareCheckNum > 0 ? majorDeclareCheckNum : null;
+          this.assetsDeclareCheckNum = assetsDeclareCheckNum > 0 ? assetsDeclareCheckNum : null;
+        }
+      });
+    },
     // 个贷待办列表刷新
     onPersonalRefresh() {
       this.personalListQuery.current = 1;
@@ -339,7 +405,6 @@ export default {
     },
     // 获取资产待办
     assetsTodoList() {
-      console.log(this.activeName)
       this.loading = true;
       // 查询待办必须要设置这个参数
       this.assetsListQuery.handlerId = 1;
@@ -543,6 +608,7 @@ export default {
     },
     // 获取资产提成申报审批列表
     getAssetsDecl() {
+      this.loading = true;
       assetsCheckPage(this.assetsDeclListQuery).then((res) => {
         if (res.code == 200) {
           if (res.data.records) {
@@ -576,13 +642,14 @@ export default {
     },
     // 获取大中型提成申报审批列表
     getMajorDecl() {
+      this.loading = true;
       majorCheckPage(this.majorDeclListQuery).then((res) => {
         if (res.code == 200) {
           if (res.data.records) {
             this.majorDeclListData = this.majorDeclListData.concat(res.data.records);
           }
           if (res.data.pages > this.majorDeclListQuery.current) {
-            this.majorDeclListData.current++;
+            this.majorDeclListQuery.current++;
           } else {
             this.majorDeclFinished = true;
           }
@@ -627,7 +694,7 @@ export default {
 }
 .comments {
   margin-bottom: 5px;
-  color: darkgrey
+  color: darkgrey;
 }
 /deep/ .van-tabs__wrap {
   width: 100%;