|
@@ -73,7 +73,7 @@
|
|
|
<span style="color:rgba(51,51,51,1)"> 需求状态</span>
|
|
|
<span class="contain"> 包含 </span>
|
|
|
</div>
|
|
|
- <el-checkbox-group v-model="searchForm.checkList" class="allCheckbox">
|
|
|
+ <el-checkbox-group v-model="searchForm.containStatus" class="allCheckbox">
|
|
|
<el-checkbox v-for="item in requiredStatus" :key="item.code" :label="item.code">{{ item.msg }}</el-checkbox>
|
|
|
</el-checkbox-group>
|
|
|
<div style="margin-bottom: auto;" class="Layout">
|
|
@@ -121,37 +121,32 @@
|
|
|
size="small"
|
|
|
show-overflow-tooltip="true"
|
|
|
>
|
|
|
- <el-table-column label="优先级" min-width="90" sortable align="left">
|
|
|
+ <el-table-column label="优先级" fixed min-width="90" sortable align="left">
|
|
|
<template v-slot="scope">
|
|
|
<div class="div_priority" :style="{background: priorityColors[scope.row.priority % priorityColors.length]}">{{ 'P'+scope.row.priority }}</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="需求名称" min-width="250" show-overflow-tooltip align="left">
|
|
|
+ <el-table-column label="需求名称" fixed min-width="250" show-overflow-tooltip align="left">
|
|
|
<template v-slot="scope">
|
|
|
<span style="font-size: 12px;color: rgba(167,174,188,1);">{{ scope.row.requirementDisplayId }}<img v-if="scope.row.type === 1" :src="extraUrgent" style="height: 17px; padding: 0 10px;"></span><br>
|
|
|
<span class="stylus-hover" @click="getToRequirementDetails(scope.row.id)">{{ scope.row.name }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="需求状态" prop="statusName" min-width="150" align="center" />
|
|
|
+ <el-table-column label="状态" prop="statusName" min-width="150" align="center" />
|
|
|
<el-table-column prop="sourceTypeName" label="需求来源" min-width="100" show-overflow-tooltip align="center" />
|
|
|
- <el-table-column label="需求方向" min-width="150" align="center">
|
|
|
- <template v-slot="scope">
|
|
|
- {{ scope.row.rqmtOrntNames }}
|
|
|
+ <el-table-column label="PM" min-width="100" show-overflow-tooltip align="center">
|
|
|
+ <template v-if="scope.row.pmMemberInfoResponse" slot-scope="scope">
|
|
|
+ <span>{{ scope.row.pmMemberInfoResponse.name }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="需求提出人" min-width="150" align="center">
|
|
|
+ <el-table-column label="需求方向" min-width="150" align="center">
|
|
|
<template v-slot="scope">
|
|
|
- <span v-for="(item,index) in scope.row.rqmtProposers" :key="index">{{ item.name }}</span>
|
|
|
+ {{ scope.row.rqmtOrntNames }}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
+ <el-table-column prop="taskCount" min-width="100" label="任务数量" show-overflow-tooltip align="center" />
|
|
|
+ <el-table-column prop="bugCount" min-width="100" label="缺陷数量" show-overflow-tooltip align="center" />
|
|
|
<el-table-column prop="belongingProjectName" label="所属项目" min-width="250" show-overflow-tooltip align="center" />
|
|
|
- <el-table-column label="PM" min-width="100" show-overflow-tooltip align="center">
|
|
|
- <template v-slot="scope">
|
|
|
- {{ scope.row.pmMemberInfoResponse.name }}
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="taskCount" min-width="100" label="任务总数" show-overflow-tooltip align="center" />
|
|
|
- <el-table-column prop="bugCount" min-width="100" label="bug总数" show-overflow-tooltip align="center" />
|
|
|
<el-table-column prop="creator" min-width="130" label="创建人" show-overflow-tooltip align="center" />
|
|
|
<el-table-column min-width="130" label="创建日期" show-overflow-tooltip align="center">
|
|
|
<template v-slot="scope">{{ scope.row.gmtCreate.substring(0, 10) }}</template>
|
|
@@ -197,11 +192,15 @@ import {
|
|
|
showRequirementEnum,
|
|
|
projectListProject,
|
|
|
configShowRequireStatusEnum,
|
|
|
- settingQueryBizRqmtOrntList
|
|
|
+ settingQueryBizRqmtOrntList,
|
|
|
+ filterCreateFilter,
|
|
|
+ filtergetFilterList,
|
|
|
+ filterGetFilter
|
|
|
} from '@/api/requirement.js'
|
|
|
import '@/styles/PublicStyle/index.scss'
|
|
|
import { deepClone } from '@/utils/global'
|
|
|
import RequirementCreate from './create'
|
|
|
+import filterList from '@/views/projectManage/components/filterList'
|
|
|
import '@/views/projectManage/publicCss/index.css'
|
|
|
import extraUrgent from '@/assets/extraUrgent.png'
|
|
|
import searchPeople from '@/components/select/searchPeople'
|
|
@@ -211,7 +210,8 @@ export default {
|
|
|
components: {
|
|
|
RequirementCreate,
|
|
|
searchPeople,
|
|
|
- normalDialog
|
|
|
+ normalDialog,
|
|
|
+ filterList
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
@@ -224,6 +224,7 @@ export default {
|
|
|
FilterItems: {
|
|
|
name: ''
|
|
|
},
|
|
|
+ stratAndEnd: [], // 创建日期
|
|
|
searchInfo: {
|
|
|
belongingProject: [],
|
|
|
sourceType: [],
|
|
@@ -243,7 +244,7 @@ export default {
|
|
|
requiredStatus: [], // 需求状态option
|
|
|
demandDirection: [], // 需求方向option
|
|
|
searchForm: {
|
|
|
- checkList: []
|
|
|
+ containStatus: [] // 包含
|
|
|
}, // 查询字段
|
|
|
pageSize: 15,
|
|
|
curIndex: 1,
|
|
@@ -362,29 +363,43 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
async toSave() {
|
|
|
- const saveObj = deepClone(this.formInline)
|
|
|
+ const saveObj = deepClone(this.searchForm)
|
|
|
delete saveObj.curIndex
|
|
|
delete saveObj.pageSize
|
|
|
- // const res = await createFilter({
|
|
|
- // name: this.FilterItems.name,
|
|
|
- // content: JSON.stringify(saveObj),
|
|
|
- // bizId: Number(localStorage.getItem('bizId'))
|
|
|
- // })
|
|
|
- // if (res.code === 200) {
|
|
|
- // this.$message({ showClose: true, message: '保存成功', type: 'success' })
|
|
|
- // this.showSaveSearch = false
|
|
|
- // this.getFilterList()
|
|
|
- // this.FilterItems.name = null
|
|
|
- // }
|
|
|
+ const res = await filterCreateFilter({ name: this.FilterItems.name, content: JSON.stringify(saveObj), bizId: Number(localStorage.getItem('bizId')), filterType: 3, creator: localStorage.getItem('username') })
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.$message({ showClose: true, message: '保存成功', type: 'success' })
|
|
|
+ this.showSaveSearch = false
|
|
|
+ this.getFilterList()
|
|
|
+ this.FilterItems.name = null
|
|
|
+ }
|
|
|
},
|
|
|
async getFilterList() { // 获取过滤器列表
|
|
|
- // const params = {
|
|
|
- // bizId: Number(localStorage.getItem('bizId'))
|
|
|
- // }
|
|
|
- // const res = await getFilterList(params)
|
|
|
- // this.filterList = res.data
|
|
|
+ const params = {
|
|
|
+ bizId: Number(localStorage.getItem('bizId')),
|
|
|
+ filterType: 3
|
|
|
+ }
|
|
|
+ const res = await filtergetFilterList(params)
|
|
|
+ this.filterList = res.data
|
|
|
+ },
|
|
|
+ async getFilterItem(filterId) { // 获取单个过滤器
|
|
|
+ // this.stratAndEnd = []
|
|
|
+ // const combination = deepClone(this.searchForm)
|
|
|
+ // const { bugId, status, priorityLevel } = combination
|
|
|
+ // this.searchForm = { bugId, status, priorityLevel }
|
|
|
+ // this.$router.push({ path: this.$route.path, query: { filterId: filterId }})
|
|
|
+ const res = await filterGetFilter(filterId)
|
|
|
+ if (res.code === 200) {
|
|
|
+ const filter = JSON.parse(res.data.content)
|
|
|
+ if (filter.createStartTime && filter.createEndTime) {
|
|
|
+ this.stratAndEnd = [filter.createStartTime, filter.createEndTime]
|
|
|
+ }
|
|
|
+ // this.getClient(filter.appId)
|
|
|
+ Object.assign(this.searchForm, filter)
|
|
|
+ this.curIndex = 1
|
|
|
+ this.getTableData()
|
|
|
+ }
|
|
|
},
|
|
|
-
|
|
|
deleteFilter() {
|
|
|
this.$router.push({ path: this.$route.path })
|
|
|
this.getFilterList()
|
|
@@ -481,6 +496,27 @@ export default {
|
|
|
color: #606266;
|
|
|
}
|
|
|
|
|
|
+</style>
|
|
|
+<style scoped lang="scss">
|
|
|
+.filter {
|
|
|
+ font-size: 14px;
|
|
|
+ width: 100%;
|
|
|
+ padding: 15px 11px 15px 15px;
|
|
|
+ color: #606266;
|
|
|
+ cursor: pointer;
|
|
|
+ .mine-filter {
|
|
|
+ .filter-item {
|
|
|
+ display: inline-block;
|
|
|
+ width: 15%;
|
|
|
+ color: #409EFF;
|
|
|
+ margin-right: 15px;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow:ellipsis;
|
|
|
+ white-space: nowrap;
|
|
|
+ margin-bottom: 5px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|
|
|
<style lang="stylus" scoped>
|
|
|
.contain {
|