|
@@ -10,9 +10,15 @@
|
|
<el-tabs v-model="activeName" @tab-click="handleClick">
|
|
<el-tabs v-model="activeName" @tab-click="handleClick">
|
|
<el-tab-pane label="个人日程" name="1" />
|
|
<el-tab-pane label="个人日程" name="1" />
|
|
<el-tab-pane label="项目" name="2" />
|
|
<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>
|
|
</el-tabs>
|
|
</div>
|
|
</div>
|
|
</el-header>
|
|
</el-header>
|
|
@@ -52,17 +58,47 @@
|
|
</el-container>
|
|
</el-container>
|
|
<el-container v-if="activeName === '3'">
|
|
<el-container v-if="activeName === '3'">
|
|
<section class="main-section">
|
|
<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>
|
|
</section>
|
|
</el-container>
|
|
</el-container>
|
|
<el-container v-if="activeName === '4'">
|
|
<el-container v-if="activeName === '4'">
|
|
<section class="main-section">
|
|
<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>
|
|
</section>
|
|
</el-container>
|
|
</el-container>
|
|
- <el-container v-show="activeName === '5'">
|
|
|
|
|
|
+ <el-container v-if="activeName === '5'">
|
|
<section class="main-section">
|
|
<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>
|
|
</section>
|
|
</el-container>
|
|
</el-container>
|
|
<!-- 工作台简介 -->
|
|
<!-- 工作台简介 -->
|
|
@@ -181,7 +217,13 @@ import {
|
|
queryTeamInfoList,
|
|
queryTeamInfoList,
|
|
showTeamAndMemberEnum,
|
|
showTeamAndMemberEnum,
|
|
queryWorkListByTime,
|
|
queryWorkListByTime,
|
|
- deleteSelfSchedule
|
|
|
|
|
|
+ deleteSelfSchedule,
|
|
|
|
+ getPersonalRequireSummary,
|
|
|
|
+ getPersonalRequireDisData,
|
|
|
|
+ getPersonalTaskSummary,
|
|
|
|
+ getPersonalTaskDisData,
|
|
|
|
+ getPersonalBugSummary,
|
|
|
|
+ getPersonalBugDisDataBy
|
|
} from '@/api/workSchedule.js'
|
|
} from '@/api/workSchedule.js'
|
|
import { scheduleDelete } from '@/api/projectViewDetails'
|
|
import { scheduleDelete } from '@/api/projectViewDetails'
|
|
import modifySchedule from '@/views/projectManage/projectList/components/modifySchedule'
|
|
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 needsList from '@/views/workbench/team/components/needsList'
|
|
import taskList from '@/views/workbench/team/components/taskList'
|
|
import taskList from '@/views/workbench/team/components/taskList'
|
|
import bugTableList from '@/views/workbench/bugTableList.vue'
|
|
import bugTableList from '@/views/workbench/bugTableList.vue'
|
|
|
|
+import statisticsSection from '@/views/workbench/components/statisticsSection'
|
|
import websocket from '@/views/workbench/mixins/websocket'
|
|
import websocket from '@/views/workbench/mixins/websocket'
|
|
|
|
|
|
export default {
|
|
export default {
|
|
@@ -205,7 +248,8 @@ export default {
|
|
bugTableList,
|
|
bugTableList,
|
|
projectList,
|
|
projectList,
|
|
needsList,
|
|
needsList,
|
|
- taskList
|
|
|
|
|
|
+ taskList,
|
|
|
|
+ statisticsSection
|
|
},
|
|
},
|
|
provide() {
|
|
provide() {
|
|
return {
|
|
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(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(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)'
|
|
'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: {
|
|
watch: {
|
|
@@ -288,8 +353,8 @@ export default {
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
handleClick() {
|
|
handleClick() {
|
|
- if (this.activeName === '5') {
|
|
|
|
- this.$refs.bugTableDialog.bugGetTableList('个人', {})
|
|
|
|
|
|
+ if (this.activeName === '5' && this.$refs.bugTableDialog) {
|
|
|
|
+ this.$refs.bugTableDialog.bugGetTableList()
|
|
}
|
|
}
|
|
},
|
|
},
|
|
showSchedule(e) { // 查看日程详情
|
|
showSchedule(e) { // 查看日程详情
|
|
@@ -456,6 +521,26 @@ export default {
|
|
handleDelete(data) { // 日程列表中的删除
|
|
handleDelete(data) { // 日程列表中的删除
|
|
this.nowDetailData = data
|
|
this.nowDetailData = data
|
|
this.deleteSchedule()
|
|
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%;
|
|
left: 50%;
|
|
transform: translate(-50%, 0);
|
|
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 {
|
|
.main-header::after {
|
|
@include main-header-after;
|
|
@include main-header-after;
|