소스 검색

个人工作台统计

wangziqian 4 년 전
부모
커밋
c40ea29ec6

+ 44 - 0
src/api/workSchedule.js

@@ -208,3 +208,47 @@ export function getTeamBugDisDataBy(data) {
     data
   })
 }
+
+// 需求头部统计数据,数据里返idList(个人)
+export function getPersonalRequireSummary(data) {
+  return request({
+    url: TeamManagement + `/workbench/personal/getRequireSummary`,
+    method: 'get'
+  })
+}
+// 需求按状态统计数据,数据里返idList(个人)
+export function getPersonalRequireDisData(data) {
+  return request({
+    url: TeamManagement + `/workbench/personal/getRequireDisDataByStatus`,
+    method: 'get'
+  })
+}
+// 任务头部统计数据,数据里返idList(个人)
+export function getPersonalTaskSummary(data) {
+  return request({
+    url: TeamManagement + `/workbench/personal/getTaskSummary`,
+    method: 'get'
+  })
+}
+// 任务按状态统计数据,数据里返idList(个人)
+export function getPersonalTaskDisData(data) {
+  return request({
+    url: TeamManagement + `/workbench/personal/getTaskDisDataByStatus`,
+    method: 'get'
+  })
+}
+// 缺陷头部统计数据,数据里返(个人)
+export function getPersonalBugSummary(data) {
+  return request({
+    url: TeamManagement + `/workbench/personal/getBugSummary`,
+    method: 'get'
+  })
+}
+// 缺陷按状态统计数据,数据里返idList(个人)
+export function getPersonalBugDisDataBy(data) {
+  return request({
+    url: TeamManagement + `/workbench/personal/getBugDisDataByStatus`,
+    method: 'post',
+    data
+  })
+}

+ 0 - 1
src/views/workbench/bugTableList.vue

@@ -154,7 +154,6 @@ export default {
       return arr
     },
     async bugGetTableList() { // 获取缺陷列表
-      console.log(this.idList)
       if (this.idList.length === 0) {
         this.tableData = []
         return

+ 0 - 1
src/views/workbench/components/statisticsSection.vue

@@ -243,7 +243,6 @@ export default {
       cursor:pointer;
       i {
         font-size: 12px;
-        margin-left: 5px;
       }
     }
     .number {

+ 115 - 12
src/views/workbench/person/index.vue

@@ -10,9 +10,15 @@
           <el-tabs v-model="activeName" @tab-click="handleClick">
             <el-tab-pane label="个人日程" name="1" />
             <el-tab-pane label="项目" name="2" />
-            <el-tab-pane label="需求" name="3" />
-            <el-tab-pane label="任务" name="4" />
-            <el-tab-pane label="缺陷" name="5" />
+            <el-tab-pane name="3">
+              <span slot="label">需求<div v-show="tabTips.require" class="tips" /> </span>
+            </el-tab-pane>
+            <el-tab-pane name="4">
+              <span slot="label">任务<div v-show="tabTips.task" class="tips" /> </span>
+            </el-tab-pane>
+            <el-tab-pane name="5">
+              <span slot="label"><span style="margin-right: 5px">缺陷</span> <div v-show="tabTips.bug" class="tips-last" /> </span>
+            </el-tab-pane>
           </el-tabs>
         </div>
       </el-header>
@@ -52,17 +58,47 @@
       </el-container>
       <el-container v-if="activeName === '3'">
         <section class="main-section">
-          <needs-list :search-form="searchForm" type="person" />
+          <statistics-section
+            :search-form="searchForm"
+            type="person"
+            title="需求"
+            :request-obj="{
+              requestData:getPersonalRequireSummary,
+              requestChart:getPersonalRequireDisData
+            }"
+            @change="changeData"
+          />
+          <needs-list :name="listName.requireList" :id-list="idList.requireList" />
         </section>
       </el-container>
       <el-container v-if="activeName === '4'">
         <section class="main-section">
-          <task-list :search-form="searchForm" type="person" />
+          <statistics-section
+            :search-form="searchForm"
+            type="person"
+            title="任务"
+            :request-obj="{
+              requestData:getPersonalTaskSummary,
+              requestChart:getPersonalTaskDisData
+            }"
+            @change="changeData"
+          />
+          <task-list :name="listName.taskList" :id-list="idList.taskList" />
         </section>
       </el-container>
-      <el-container v-show="activeName === '5'">
+      <el-container v-if="activeName === '5'">
         <section class="main-section">
-          <bugTableList ref="bugTableDialog" :name="'个人'" />
+          <statistics-section
+            :search-form="searchForm"
+            type="person"
+            title="缺陷"
+            :request-obj="{
+              requestData:getPersonalBugSummary,
+              requestChart:getPersonalBugDisDataBy
+            }"
+            @change="changeData"
+          />
+          <bugTableList :name="listName.bugList" :id-list="idList.bugList" />
         </section>
       </el-container>
       <!-- 工作台简介 -->
@@ -181,7 +217,13 @@ import {
   queryTeamInfoList,
   showTeamAndMemberEnum,
   queryWorkListByTime,
-  deleteSelfSchedule
+  deleteSelfSchedule,
+  getPersonalRequireSummary,
+  getPersonalRequireDisData,
+  getPersonalTaskSummary,
+  getPersonalTaskDisData,
+  getPersonalBugSummary,
+  getPersonalBugDisDataBy
 } from '@/api/workSchedule.js'
 import { scheduleDelete } from '@/api/projectViewDetails'
 import modifySchedule from '@/views/projectManage/projectList/components/modifySchedule'
@@ -193,6 +235,7 @@ import projectList from '@/views/workbench/team/components/projectList'
 import needsList from '@/views/workbench/team/components/needsList'
 import taskList from '@/views/workbench/team/components/taskList'
 import bugTableList from '@/views/workbench/bugTableList.vue'
+import statisticsSection from '@/views/workbench/components/statisticsSection'
 import websocket from '@/views/workbench/mixins/websocket'
 
 export default {
@@ -205,7 +248,8 @@ export default {
     bugTableList,
     projectList,
     needsList,
-    taskList
+    taskList,
+    statisticsSection
   },
   provide() {
     return {
@@ -265,7 +309,28 @@ export default {
         'rgba(193,67,96,0.2)', 'rgba(211,87,35,0.2)', 'rgba(211,96,118,0.2)', 'rgba(179,201,58,0.2)', 'rgba(64,127,232,0.2)',
         'rgba(86,68,93,0.2)', 'rgba(111,33,8,0.2)', 'rgba(192,53,70,0.2)', 'rgba(92,25,107,0.2)', 'rgba(73,10,61,0.2)',
         'rgba(189,21,80,0.2)', 'rgba( 31,78,95,0.2)', 'rgba(241,0,229,0.2)', 'rgba(114,0,218,0.2)', 'rgba(70,14,68,0.2)'
-      ]
+      ],
+      tabTips: { // 顶部tab红点提示
+        require: true,
+        task: true,
+        bug: true
+      },
+      idList: {// 所选项的idList
+        requireList: [],
+        taskList: [],
+        bugList: []
+      },
+      listName: {
+        requireList: '',
+        taskList: '',
+        bugList: ''
+      },
+      getPersonalRequireSummary: getPersonalRequireSummary, // 需求头部统计数据接口
+      getPersonalRequireDisData: getPersonalRequireDisData, // 需求按状态统计数据接口
+      getPersonalTaskSummary: getPersonalTaskSummary, // 任务头部统计数据接口
+      getPersonalTaskDisData: getPersonalTaskDisData, // 任务按状态统计数据接口
+      getPersonalBugSummary: getPersonalBugSummary, // 缺陷头部统计数据接口
+      getPersonalBugDisDataBy: getPersonalBugDisDataBy// 缺陷按状态统计数据接口
     }
   },
   watch: {
@@ -288,8 +353,8 @@ export default {
   },
   methods: {
     handleClick() {
-      if (this.activeName === '5') {
-        this.$refs.bugTableDialog.bugGetTableList('个人', {})
+      if (this.activeName === '5' && this.$refs.bugTableDialog) {
+        this.$refs.bugTableDialog.bugGetTableList()
       }
     },
     showSchedule(e) { // 查看日程详情
@@ -456,6 +521,26 @@ export default {
     handleDelete(data) { // 日程列表中的删除
       this.nowDetailData = data
       this.deleteSchedule()
+    },
+    changeData(e, idList, name) { // 数据变更
+      if (e === '需求') {
+        this.idList.requireList = idList
+        this.listName.requireList = name
+      } else if (e === '任务') {
+        this.idList.taskList = idList
+        this.listName.taskList = name
+      } else if (e === '缺陷') {
+        this.idList.bugList = idList
+        this.listName.bugList = name
+      }
+    },
+    websocketonmessage(e) { // websocket数据接收
+      const { bugHasReminding, requireHasReminding, taskHasReminding } = JSON.parse(JSON.parse(e.data))
+      this.tabTips = { // 顶部tab红点提示
+        require: requireHasReminding,
+        task: taskHasReminding,
+        bug: bugHasReminding
+      }
     }
   }
 }
@@ -485,6 +570,24 @@ export default {
     left: 50%;
     transform: translate(-50%, 0);
   }
+  .tips {
+    height: 10px;
+    width: 10px;
+    background-color: tomato;
+    border-radius: 50%;
+    position: absolute;
+    top: 18px;
+    right: 14px;
+  }
+  .tips-last {
+    height: 10px;
+    width: 10px;
+    background-color: tomato;
+    border-radius: 50%;
+    position: absolute;
+    top: 18px;
+    right: 0;
+  }
 }
 .main-header::after {
   @include main-header-after;

+ 1 - 1
src/views/workbench/team/index.vue

@@ -305,7 +305,7 @@ export default {
   methods: {
     handleClick() {
       if (this.activeName === '5' && this.$refs.bugTableDialog) {
-        this.$refs.bugTableDialog.bugGetTableList('团队', { teamId: this.searchForm.teamId, bizId: this.searchForm.bizId })
+        this.$refs.bugTableDialog.bugGetTableList()
       }
     },
     async settingGetBizList() { // 获取业务线