|
@@ -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;
|