瀏覽代碼

优化个人个团队工作台缺陷

qinzhipeng_v 5 年之前
父節點
當前提交
f68544fb48
共有 4 個文件被更改,包括 255 次插入5 次删除
  1. 9 0
      src/api/defectManage.js
  2. 214 0
      src/views/workbench/bugTableList.vue
  3. 15 3
      src/views/workbench/person/index.vue
  4. 17 2
      src/views/workbench/team/index.vue

+ 9 - 0
src/api/defectManage.js

@@ -182,3 +182,12 @@ export function operationLogBug(id) {
     method: 'get'
   })
 }
+
+// 缺陷团队list
+export function bugTeamList(data) {
+  return request({
+    url: TeamManagement + `/bug/teamList`,
+    method: 'post',
+    data
+  })
+}

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

@@ -0,0 +1,214 @@
+<template>
+  <div>
+    <el-dropdown class="dropdown" trigger="click">
+      <span class="el-dropdown-link">
+        {{ title }}<i class="el-icon-arrow-down el-icon--right" />
+      </span>
+      <el-dropdown-menu slot="dropdown">
+        <el-dropdown-item v-for="(item, index) in bugProcessStatusList" :key="index" @click.native="handleClick(item)">{{ item.name }}</el-dropdown-item>
+      </el-dropdown-menu>
+    </el-dropdown>
+    <el-table size="small" :data="tableData" class="bug_tableHeader" show-overflow-tooltip="true" :header-cell-style="{ color: '#4A4A4A', fontSize: '14px', fontWeight: '500' }">
+      <el-table-column label="优先级" prop="priorityCode" min-width="100" sortable align="center">
+        <template slot-scope="scope" style="text-align: center;">
+          <span class="div_priority" :class="[{'priority_color': scope.row.priorityLevel === 'High'},{'priority_color1': scope.row.priorityLevel === 'Medium'},{'priority_color3': scope.row.priorityLevel === 'Low'}]">
+            {{ scope.row.priorityLevel.substring(0, 1) }}
+          </span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="bugName" label="缺陷标题" min-width="360" align="left" show-overflow-tooltip>
+        <template slot-scope="scope">
+          <span style=" color: #A7AEBC; font-size: 10px;">{{ 'BUG-' + scope.row.id }}</span>
+          <br>
+          <span class="bugNameSty" @click.stop="click_bugName(scope.row.id)">{{ scope.row.bugName }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="priorityName" label="缺陷等级" align="center" />
+      <el-table-column prop="bugStatusName" label="状态" min-width="110" align="center">
+        <template slot-scope="scope">
+          <statusChange :status-code="Number(scope.row.status)" :bug-data="scope.row" />
+        </template>
+      </el-table-column>
+      <el-table-column prop="taskName" label="所属任务" align="center" min-width="250" show-overflow-tooltip />
+      <el-table-column prop="creatorList" label="提报人" align="center" />
+      <el-table-column prop="assignerList" label="责任人" min-width="150" align="center" show-overflow-tooltip />
+      <el-table-column prop="currentHandlerList" label="修复人" min-width="150" align="center" show-overflow-tooltip />
+      <el-table-column prop="gmtCreate" label="创建日期" min-width="120" align="center">
+        <template slot-scope="scope">{{ scope.row.gmtCreate | naspOut }}</template>
+      </el-table-column>
+    </el-table>
+    <div align="right">
+      <el-pagination
+        :page-sizes="[15, 30, 45, total]"
+        :current-page="curIndex"
+        :page-size="pageSize"
+        background
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="total"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+      />
+    </div>
+
+    <el-drawer :visible.sync="drawerShow" :modal="false" :with-header="false" size="50%" class="bug_manage_drawer" @click.stop>
+      <div @click.stop>
+        <bug-details
+          :id="bugQuery.id+''"
+          ref="bugDetails"
+          :type="'drawer'"
+          :drawer-show="drawerShow"
+          @close="drawerShow = false"
+          @delete="drawerShow = false;type === 'page'?this.$emit('getBugList'):this.$emit('getBugSelfList')"
+          @update="type === 'page'?this.$emit('getBugList'):this.$emit('getBugSelfList')"
+        />
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import statusChange from '@/views/projectManage/bugList/details/statusChange'
+import { bugGetEnum, bugTeamList, bugSelfList } from '@/api/defectManage'
+import BugDetails from '@/views/projectManage/bugList/details/index'
+import '@/styles/PublicStyle/index.scss'
+
+export default {
+  components: {
+    statusChange,
+    BugDetails
+  },
+  filters: {
+    naspOut(value) {
+      if (!value) return ''
+      var da = value.split(/\s+/)
+      return da[0]
+    }
+  },
+  props: {
+    name: { type: String, default: null }
+  },
+  data() {
+    return {
+      title: '待团队成员处理',
+      tableData: [], // tableData
+      statusCode: 1, // 当前筛选的状态
+      pageSize: 15, // 分页
+      curIndex: 1, // 分页
+      total: 0, // 总数
+      bugQuery: '', // bug详情
+      drawerShow: false, // drawer展示
+      bugProcessStatusList: [], // 筛选
+      bizId: Number(localStorage.getItem('bizId')) // 业务线
+    }
+  },
+  computed: {
+    clickCount() {
+      return this.$store.state.app.clickCount
+    }
+  },
+  watch: {
+    clickCount(newVal, oldVal) {
+      this.drawerShow = false
+    }
+  },
+  created() {
+    // this.bugGetTableList()
+    this.getBugSelect()
+  },
+  methods: {
+    handleClick(vel) {
+      this.title = vel.name
+      this.statusCode = vel.code
+      this.bugGetTableList()
+    },
+    getBugSelect() { //  获取下拉菜单option
+      bugGetEnum().then(res => {
+        if (this.name === '个人') {
+          this.title = '待我处理'
+          this.bugProcessStatusList = res.data.bugProcessStatusList // 个人
+        }
+        if (this.name === '团队') {
+          this.title = '待团队成员处理'
+          this.bugProcessStatusList = res.data.bugProcessTeamStatusList // 待团队成员处理
+        }
+      })
+    },
+    bugGetTableList(name, value) {
+      const teamSearchInfo = value
+      const pageInfoDO = {}
+      pageInfoDO.pageSize = this.pageSize
+      pageInfoDO.curIndex = this.curIndex
+      if (this.name === '团队') {
+        bugTeamList({ pageInfoDO, status: this.statusCode, teamSearchInfo }).then(res => {
+          if (res.code === 200) {
+            this.tableData = res.data.map(item => { return { ...item, isSelected: false } })
+            this.total = res.total
+          }
+        })
+      }
+      if (this.name === '个人') {
+        bugSelfList({ pageInfoDO, status: this.statusCode }).then(res => {
+          if (res.code === 200) {
+            this.tableData = res.data.map(item => { return { ...item, isSelected: false } })
+            this.total = res.total
+          }
+        })
+      }
+    },
+    handleSizeChange(val) {
+      this.pageSize = val
+    },
+    handleCurrentChange(val) {
+      this.curIndex = val
+      this.bugGetTableList()
+    },
+    click_bugName(e) {
+      this.bugQuery = JSON.parse(
+        JSON.stringify(this.tableData.filter(value => value.id === e)[0])
+      )
+      this.drawerShow = true
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+.dropdown {
+  margin: 20px;
+}
+.el-dropdown-link {
+    cursor: pointer;
+    color: #409EFF;
+  }
+  .el-icon-arrow-down {
+    font-size: 12px;
+  }
+.bug_tableHeader {
+  width: 100%;
+  font-size: 14px;
+  color:rgba(102,102,102,1);
+}
+.div_priority {
+  text-align: center;
+  color: #ffffff;
+  padding: inherit;
+  border-radius: 4px;
+  margin-right: 14%;
+  width: 35px;
+  display: inline-block;
+}
+.bugNameSty:hover {
+  cursor: pointer;
+  color: #409EFF !important;
+}
+.bug_manage_drawer .el-drawer__header{
+  margin-bottom: 15px;
+}
+.bug_manage_drawer {
+  pointer-events: none;
+  margin-top: 55px;
+}
+.bug_manage_drawer .el-drawer{
+  pointer-events: auto;
+}
+</style>

+ 15 - 3
src/views/workbench/person/index.vue

@@ -7,7 +7,7 @@
           <div class="header-title">我的工作台</div>
         </div>
         <div class="top-tabs">
-          <el-tabs v-model="activeName">
+          <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" />
@@ -45,6 +45,11 @@
           </div>
         </section>
       </el-container>
+      <el-container v-show="activeName === '5'">
+        <section class="main-section">
+          <bugTableList ref="bugTableDialog" :name="'个人'" />
+        </section>
+      </el-container>
       <!-- 工作台简介 -->
       <!-- 工作台简介展开弹框 -->
       <el-dialog
@@ -94,7 +99,7 @@
       </el-dialog>
       <!-- 工作台简介展开弹框 -->
       <!-- 日程 -->
-      <el-container>
+      <el-container v-show="activeName === '1'">
         <section class="main-section">
           <el-tabs v-model="activeSchedule" class="tabs-change">
             <el-tab-pane label="日历视图" name="1" />
@@ -170,6 +175,7 @@ import calenderList from './components/calenderList'
 import MyFullCalendar from '@/views/workbench/person/components/myFullCalendar'
 import calenderDetail from '@/views/workbench/person/components/calenderDetail'
 import calendarDialog from '@/views/workbench/person/components/calendarFormDialog'
+import bugTableList from '@/views/workbench/bugTableList.vue'
 
 export default {
   components: {
@@ -177,7 +183,8 @@ export default {
     calendarDialog,
     modifySchedule,
     calenderList,
-    calenderDetail
+    calenderDetail,
+    bugTableList
   },
   provide() {
     return {
@@ -225,6 +232,11 @@ export default {
     this.$store.state.data.status = false
   },
   methods: {
+    handleClick() {
+      if (this.activeName === '5') {
+        this.$refs.bugTableDialog.bugGetTableList('个人', {})
+      }
+    },
     showSchedule(e) { // 查看日程详情
       const res = this.calendarEvents.find(item => item.id === Number(e.event.id))
       this.nowDetailData = res.detailData

+ 17 - 2
src/views/workbench/team/index.vue

@@ -29,7 +29,7 @@
         </el-dropdown>
       </div>
       <div class="top-tabs">
-        <el-tabs v-model="activeName">
+        <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" />
@@ -77,6 +77,11 @@
         </div>
       </section>
     </el-container>
+    <el-container v-show="activeName === '5'">
+      <section class="main-section">
+        <bugTableList ref="bugTableDialog" :name="'团队'" />
+      </section>
+    </el-container>
     <!-- 日程 -->
     <!-- 日程操作弹框 -->
     <calendar-dialog
@@ -115,6 +120,7 @@ import MyFullCalendar from '@/views/workbench/person/components/myFullCalendar'
 import calenderDetail from '@/views/workbench/person/components/calenderDetail'
 import calendarDialog from '@/views/workbench/person/components/calendarFormDialog'
 import { View } from '@fullcalendar/core'
+import bugTableList from '@/views/workbench/bugTableList.vue'
 
 export default {
   components: {
@@ -122,7 +128,9 @@ export default {
     MyFullCalendar,
     calenderDetail,
     calendarDialog,
-    modifySchedule
+    modifySchedule,
+    bugTableList
+
   },
   data() {
     return {
@@ -170,6 +178,11 @@ export default {
     this.queryTeamMember()
   },
   methods: {
+    handleClick() {
+      if (this.activeName === '5') {
+        this.$refs.bugTableDialog.bugGetTableList('团队', { teamId: this.searchForm.teamId !== '' ? this.searchForm.teamId : '', bizId: this.searchForm.bizId !== '' ? this.searchForm.bizId : '' })
+      }
+    },
     async settingGetBizList() { // 获取业务线
       const res = await settingGetBizList({})
       if (res.code === 200 && res.data) {
@@ -215,6 +228,7 @@ export default {
       this.teamName = res.teamName
       this.queryTeamWorkListByTime(this.calendarView)
       this.updateGannt()
+      this.handleClick()
     },
     handleBizId(e) { // 业务线变动
       this.searchForm.bizId = e
@@ -222,6 +236,7 @@ export default {
       this.bizName = res.name
       this.queryTeamWorkListByTime(this.calendarView)
       this.updateGannt()
+      this.handleClick()
     },
     updateGannt() { // 更新子组件甘特图
       this.$refs['gannt-views'].updateGannt(this.searchForm)