소스 검색

优化缺陷筛选

qinzhipeng_v@didiglobal.com 4 년 전
부모
커밋
c023cc9426

+ 1 - 1
src/views/projectManage/bugList/bugindex.vue

@@ -247,7 +247,7 @@
       <el-main style="padding: 10px">
         <el-row class="headerBg table_v" style=" padding-top: 0px;">
           <!-- bug表 -->
-          <bugTableDialog ref="bugTableDialog" @curIndexs="curIndexs" />
+          <bugTableDialog ref="bugTableDialog" :show-hide="false" @curIndexs="curIndexs" />
           <el-button type="primary" size="mini" class="download" @click="download">导出</el-button>
         </el-row>
       </el-main>

+ 85 - 35
src/views/projectManage/bugList/details/bugTableDialog.vue

@@ -1,9 +1,9 @@
 <template>
   <div>
-    <div class="Layout_space_between">
+    <div v-if="showQuery" class="Layout_space_between">
       <div class="bug-Status">快速筛选:
         <span v-for="item in statusList" :key="item.value">
-          <span class="bug-statusList">{{ item.name }}</span>
+          <span class="bug-statusList" :class="[statusNum === item.value ? 'bug-color' : 'bug-bgColor']" @click="bugGetQueryList(item)">{{ item.name }}</span>
         </span>
       </div>
       <el-popover placement="bottom-end" width="400" trigger="click">
@@ -11,44 +11,48 @@
           <div class="bug-queryTitle"> 筛选项 </div>
           <span class="el-icon-close" />
         </div>
-        <el-form label-position="left" :model="bugFormQuery" label-width="100px">
-          <el-form-item label="优先级" prop="discoveryStage">
-            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" size="medium" style="width:100%;">
+        <el-form label-position="left" :model="bugFormQuery" label-width="100px" style="max-height: 550px;overflow-y: auto;">
+          <el-form-item label="优先级">
+            <el-select v-model="bugFormQuery.priorityList" multiple filterable clearable placeholder="请选择" size="medium" style="width:100%;">
               <el-option v-for="item in priorityLevelEnumList" :key="item.code" :label="item.name" :value="item.code" />
             </el-select>
           </el-form-item>
-          <el-form-item label="缺陷状态" prop="discoveryStage">
-            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" size="medium" style="width:100%;">
-              <el-option v-for="item in statusObj.bugEnumList" :key="item.code" :label="item.name" :value="item.code" />
+          <el-form-item label="缺陷状态">
+            <el-select v-model="bugFormQuery.statusList" filterable multiple clearable placeholder="请选择" size="medium" style="width:100%;">
+              <el-option v-for="item in bugEnumList" :key="item.code" :label="item.name" :value="item.code" />
             </el-select>
           </el-form-item>
-          <el-form-item label="缺陷等级" prop="discoveryStage">
-            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" size="medium" style="width:100%;">
-              <el-option v-for="item in statusObj.priorityEnumList" :key="item.code" :label="item.name" :value="item.code" />
+          <el-form-item label="缺陷等级">
+            <el-select v-model="bugFormQuery.priorityLevels" filterable multiple clearable placeholder="请选择" size="medium" style="width:100%;">
+              <el-option v-for="item in priorityEnumList" :key="item.code" :label="item.name" :value="item.code" />
             </el-select>
           </el-form-item>
+          <el-form-item label="缺陷类型">
+            <el-cascader v-model="bugFormQuery.theBugTypes" :options="theBugTypeEnumList" :props="{ value:'code', label:'name', children: 'childrenEnums', multiple: true, emitPath: false }" clearable placeholder="请选择" size="medium" style="width:100%;" />
+          </el-form-item>
           <el-form-item label="提报人">
-            <searchPeople :value.sync="bugFormQuery.creator" :multiple="true" :size="'medium'" style="width: 100%;" />
+            <searchPeople :value.sync="bugFormQuery.creators" :multiple="true" :size="'medium'" style="width: 100%;" />
           </el-form-item>
           <el-form-item label="责任人">
-            <search-people :value.sync="bugFormQuery.assigner" :multiple="true" :size="'medium'" style="width: 100%;" />
+            <search-people :value.sync="bugFormQuery.assigners" :multiple="true" :size="'medium'" style="width: 100%;" />
           </el-form-item>
           <el-form-item label="修复人">
-            <searchPeople :value.sync="bugFormQuery.currentHandler" :multiple="true" :size="'medium'" style="width: 100%;" />
+            <searchPeople :value.sync="bugFormQuery.currentHandlers" :multiple="true" :size="'medium'" style="width: 100%;" />
           </el-form-item>
-          <el-form-item label="是否发生Reopen" prop="discoveryStage">
-            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" size="medium" style="width:100%;">
+          <div class="Reopen">
+            <div style="width: 100px; padding-right: 12px;">是否发生Reopen</div>
+            <el-select v-model="bugFormQuery.reopenTimes" filterable placeholder="请选择" size="medium" style="width:73%;">
               <el-option v-for="item in reopens" :key="item.code" :label="item.name" :value="item.code" />
             </el-select>
-          </el-form-item>
-          <el-form-item label="所属任务" prop="discoveryStage">
-            <el-select v-model="bugFormQuery.name" filterable placeholder="请选择" size="medium" style="width:100%;">
+          </div>
+          <el-form-item v-if="dataShow !== 'taskName'" label="所属任务">
+            <el-select v-model="bugFormQuery.taskIds" filterable multiple clearable placeholder="请选择" size="medium" style="width:100%;">
               <el-option v-for="item in taskEnumList" :key="item.id" :label="item.name" :value="item.id">
                 <div class="belong-task">
-                  <div class="task-id">{{ item.taskId }}</div>
+                  <div class="task-id">{{ item.id }}</div>
                   <div class="modules-name">
                     <span class="name">{{ item.name }}</span>
-                    <span v-if="item.moduleInfoName" class="modules">{{ item.moduleInfoName }}</span>
+                    <span v-if="item.bizIdString" class="modules">{{ item.bizIdString }}</span>
                   </div>
                 </div>
               </el-option>
@@ -57,9 +61,9 @@
         </el-form>
         <div class="bug-footer">
           <el-button class="bug-botton" @click="bugFormQuery = {}">重置</el-button>
-          <el-button class="bug-botton" style="margin-left: 20px;" type="primary">筛选</el-button>
+          <el-button class="bug-botton" style="margin-left: 20px;" type="primary" @click="bugGetTableList(bugFormQuery, false)">筛选</el-button>
         </div>
-        <div slot="reference" class="bug-Status"><svg-icon icon-class="筛选" /></div>
+        <div slot="reference" class="bug-Status bug-statusList"><svg-icon icon-class="筛选" /></div>
       </el-popover>
     </div>
     <el-table
@@ -90,7 +94,7 @@
           <statusChange :status-code="Number(scope.row.status)" :bug-data="scope.row" :status-obj="statusObj" />
         </template>
       </el-table-column>
-      <el-table-column v-if="noShow !== 'taskName'" prop="taskName" label="所属任务" align="center" min-width="250" show-overflow-tooltip />
+      <el-table-column v-if="dataShow !== 'taskName'" 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 />
@@ -131,7 +135,7 @@
 const _ = require('lodash')
 import { mapGetters } from 'vuex'
 import statusChange from '@/views/projectManage/bugList/details/statusChange'
-import { bugList, bugGetEnum, taskListCreate } from '@/api/defectManage'
+import { bugList, bugGetEnum, taskListGet } from '@/api/defectManage'
 import BugDetails from './index'
 import '@/styles/PublicStyle/index.scss'
 import searchPeople from '@/components/select/searchPeople' // 人员select
@@ -158,14 +162,24 @@ export default {
     objId: {
       type: Object,
       default: null
+    },
+    showHide: {
+      type: Boolean,
+      default: false
     }
   },
   data() {
     return {
+      statusNum: '',
+      showQuery: false,
+      theBugTypeEnumList: [],
+      dataShow: '',
       priorityLevelEnumList: [], // 优先级
+      bugEnumList: [], // 缺陷类型
+      priorityEnumList: [], // 缺陷等级
       bugFormQuery: {},
       reopens: [{ code: 1, name: '是' }, { code: 0, name: '否' }],
-      statusList: [{ value: 0, name: '全部' }, { value: 1, name: '未完成' }, { value: 2, name: '待修复' }, { value: 3, name: '待测试' }, { value: 4, name: '已完成' }],
+      statusList: [{ value: null, name: '全部' }, { value: -1, name: '未完成' }, { value: 0, name: '待修复' }, { value: 2, name: '待测试' }, { value: 3, name: '已完成' }],
       tableData: [], // tableData
       taskEnumList: [], // 所属任务
       pageSize: 15, // 分页
@@ -176,6 +190,7 @@ export default {
       drawerShow: false, // drawer展示
       queryData: {}, // 查询条件
       data: {}, // 查询条件
+      eleId: {},
       statusObj: null // 状态对象
     }
   },
@@ -189,9 +204,17 @@ export default {
     clickCount(newVal, oldVal) {
       this.drawerShow = false
     },
+    noShow: {
+      handler(newV, oldV) {
+        this.dataShow = newV
+      },
+      deep: true,
+      immediate: true
+    },
     objId: {
       handler(newV, oldV) {
         if (newV !== null) {
+          this.eleId = newV
           this.bugGetTableList(newV, false)
         }
       },
@@ -205,16 +228,22 @@ export default {
         this.bugGetTableList(this.queryData, false)
       },
       immediate: true
+    },
+    showHide: {
+      handler(newV) {
+        this.showQuery = newV
+      },
+      immediate: true
     }
-  },
-  mounted() {
-
   },
   methods: {
     async getBugSelect() { //  获取下拉菜单option
       const res = await bugGetEnum()
       if (res.code === 200) {
         this.priorityLevelEnumList = res.data.priorityLevelEnumList // 优先级
+        this.bugEnumList = res.data.bugEnumList // status
+        this.priorityEnumList = res.data.priorityEnumList // 缺陷等级
+        this.theBugTypeEnumList = this.deleteChild(res.data.theBugTypeEnumList) // 缺陷类型
         this.statusObj = {
           bugEnumList: res.data.bugEnumList, // status
           repairResultEnumList: res.data.repairResultEnumList, // 修复结果
@@ -223,9 +252,11 @@ export default {
           priorityEnumList: res.data.priorityEnumList // 缺陷等级
         }
       }
-      const res1 = await taskListCreate({ bizId: this.bizId })
-      if (res1.code === 200) {
-        this.taskEnumList = res1.data || []
+      if (this.dataShow !== 'taskName') {
+        const res = await taskListGet(this.eleId)
+        if (res.code === 200) {
+          this.taskEnumList = res.data || []
+        }
       }
     },
     deleteChild(arr) { // 删除无用子属性
@@ -241,18 +272,24 @@ export default {
       bfs(arr)
       return arr
     },
-    bugGetTableList(e, index) {
+    bugGetQueryList(e) {
+      this.statusNum = e.value
+      this.bugGetTableList(this.bugFormQuery, false, 1)
+    },
+    bugGetTableList(e, index, vel) {
       this.queryData = e
       this.data = {}
       if (index) {
         this.currentPage = 1
         this.curIndex = 1
       }
-      this.data = _.cloneDeep(this.queryData)
+      vel ? '' : this.data = _.cloneDeep(this.queryData)
       this.data.bizId = this.bizId
       this.data.pageSize = this.pageSize
       this.data.curIndex = this.curIndex
-      bugList(this.data).then(res => {
+      vel ? this.data.status = this.statusNum : ''
+      const query = Object.assign(this.data, this.eleId)
+      bugList(query).then(res => {
         if (res.code === 200) {
           this.tableData = res.data.map(item => { return { ...item, isSelected: false } })
           this.total = res.total
@@ -288,6 +325,13 @@ export default {
 </script>
 
 <style scoped lang="scss">
+.Reopen {
+  display: flex;
+  margin-bottom: 22px;
+  font-size: 14px;
+  color: #606266;
+  font-weight: 700;
+}
 .bug_tableHeader {
   width: 100%;
   font-size: 14px;
@@ -330,6 +374,12 @@ export default {
     line-height: 60px;
     padding: 0 30px;
   }
+  .bug-bgColor {
+    color: #606266;
+  }
+  .bug-color {
+    color: #409eff;
+  }
   .bug-statusList:hover {
     color: #409eff;
     cursor: pointer;

+ 1 - 1
src/views/projectManage/projectList/projectViewDetails.vue

@@ -139,7 +139,7 @@
       <!-- 缺陷 -->
       <el-container v-if="activeName === '4'" class="is-vertical">
         <section class="main-section contain">
-          <bugTableDialog ref="bugTableDialog" :obj-id="{ projectId: projectId }" />
+          <bugTableDialog ref="bugTableDialog" :show-hide="true" :obj-id="{ projectId: projectId }" />
         </section>
       </el-container>
       <!-- 缺陷 -->

+ 1 - 1
src/views/projectManage/requirement/requirementDetail.vue

@@ -249,7 +249,7 @@
       <!-- 缺陷 -->
       <el-container v-if="activeName === '3'" class="is-vertical">
         <section class="main-section contain">
-          <bug-table-dialog ref="bugTableDialog" :obj-id="bugListQuery" />
+          <bug-table-dialog ref="bugTableDialog" :show-hide="true" no-show="requoirementName" :obj-id="bugListQuery" />
         </section>
       </el-container>
       <!-- 缺陷 -->

+ 1 - 1
src/views/projectManage/taskList/taskViewDetail.vue

@@ -300,7 +300,7 @@
       <!-- 缺陷 -->
       <el-container v-if="activeName === '3'" class="is-vertical">
         <section class="main-section contain">
-          <bugTableDialog ref="bugTableDialog" no-show="taskName" :obj-id="{ taskId: taskId }" />
+          <bugTableDialog ref="bugTableDialog" :show-hide="true" no-show="taskName" :obj-id="{ taskId: taskId }" />
         </section>
       </el-container>
       <!-- 缺陷 -->