|
@@ -1,5 +1,8 @@
|
|
|
<template>
|
|
|
- <div class="bgborder" style="background-color:#F2F3F6;min-height:calc(100vh - 80px);padding:0 10px 10px 10px">
|
|
|
+ <div
|
|
|
+ class="bgborder"
|
|
|
+ style="background-color:#F2F3F6;min-height:calc(100vh - 80px);padding:0 10px 10px 10px"
|
|
|
+ >
|
|
|
<div class="stylus-head">
|
|
|
<mainTitle
|
|
|
title="任务"
|
|
@@ -20,9 +23,23 @@
|
|
|
<div class="Layout">
|
|
|
<div class="Layout">
|
|
|
<div class="chartSearchTitle">模块</div>
|
|
|
- <el-cascader v-model="form_task.moduleIds" size="small" clearable collapse-tags :props="props" :options="business_platform_Modular" placeholder="请选择" style="width:77% !important;" @change="get_charts()" />
|
|
|
+ <el-cascader
|
|
|
+ v-model="form_task.moduleIds"
|
|
|
+ size="small"
|
|
|
+ clearable
|
|
|
+ collapse-tags
|
|
|
+ :props="props"
|
|
|
+ :options="business_platform_Modular"
|
|
|
+ placeholder="请选择"
|
|
|
+ style="width:77% !important;"
|
|
|
+ @change="get_charts()"
|
|
|
+ />
|
|
|
</div>
|
|
|
- <span class="screen" style="text-align:right; width: auto" @click="showChartModal = true">更多筛选</span>
|
|
|
+ <span
|
|
|
+ class="screen"
|
|
|
+ style="text-align:right; width: auto"
|
|
|
+ @click="showChartModal = true"
|
|
|
+ >更多筛选</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</chartView>
|
|
@@ -33,17 +50,48 @@
|
|
|
<el-form :model="form_task" class="Layout">
|
|
|
<div class="Layout_flex_end item">
|
|
|
<div class="queryName">任务名称</div>
|
|
|
- <el-input v-model="form_task.name" size="small" clearable class="input" placeholder="请输入标题或ID或望岳ID" @change="get_taskList()" />
|
|
|
+ <el-input
|
|
|
+ v-model="form_task.name"
|
|
|
+ size="small"
|
|
|
+ clearable
|
|
|
+ class="input"
|
|
|
+ placeholder="请输入标题或ID或望岳ID"
|
|
|
+ @change="get_taskList()"
|
|
|
+ />
|
|
|
</div>
|
|
|
<div class="Layout item">
|
|
|
<div class="queryName">状态</div>
|
|
|
- <el-select v-model="form_task.statusList" size="small" class="input" multiple clearable filterable placeholder="请选择" @change="get_taskList()">
|
|
|
- <el-option v-for="item in daStatus" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-select
|
|
|
+ v-model="form_task.statusList"
|
|
|
+ size="small"
|
|
|
+ class="input"
|
|
|
+ multiple
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ placeholder="请选择"
|
|
|
+ @change="get_taskList()"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in daStatus"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
</div>
|
|
|
<div class="Layout item">
|
|
|
<div class="queryName">模块</div>
|
|
|
- <el-cascader v-model="form_task.moduleIds" size="small" class="input" clearable collapse-tags :props="props" :options="business_platform_Modular" placeholder="请选择" @change="get_taskList()" />
|
|
|
+ <el-cascader
|
|
|
+ v-model="form_task.moduleIds"
|
|
|
+ size="small"
|
|
|
+ class="input"
|
|
|
+ clearable
|
|
|
+ collapse-tags
|
|
|
+ :props="props"
|
|
|
+ :options="business_platform_Modular"
|
|
|
+ placeholder="请选择"
|
|
|
+ @change="get_taskList()"
|
|
|
+ />
|
|
|
</div>
|
|
|
</el-form>
|
|
|
</div>
|
|
@@ -55,20 +103,56 @@
|
|
|
<el-form :model="form_task" class="flex_start">
|
|
|
<div class="Layout item">
|
|
|
<div class="queryName">所属项目</div>
|
|
|
- <el-select v-model="form_task.projectId" size="small" class="input" clearable filterable placeholder="请选择">
|
|
|
- <el-option v-for="item in projectList" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-select
|
|
|
+ v-model="form_task.projectId"
|
|
|
+ size="small"
|
|
|
+ class="input"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in projectList"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
</div>
|
|
|
<div class="Layout item">
|
|
|
<div class="queryName">所属需求</div>
|
|
|
- <el-select v-model="form_task.requireId" size="small" class="input" clearable filterable placeholder="请选择">
|
|
|
- <el-option v-for="item in demandList" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-select
|
|
|
+ v-model="form_task.requireId"
|
|
|
+ size="small"
|
|
|
+ class="input"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in demandList"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
</div>
|
|
|
<div class="Layout item">
|
|
|
<div class="queryName">来自望岳</div>
|
|
|
- <el-select v-model="form_task.isFromDpm" size="small" class="input" clearable filterable placeholder="请选择">
|
|
|
- <el-option v-for="item in isFromDpmList" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-select
|
|
|
+ v-model="form_task.isFromDpm"
|
|
|
+ size="small"
|
|
|
+ class="input"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in isFromDpmList"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
</div>
|
|
|
</el-form>
|
|
@@ -77,8 +161,20 @@
|
|
|
<el-form :model="form_task" class="flex_start">
|
|
|
<div class="Layout item">
|
|
|
<div class="queryName">优先级</div>
|
|
|
- <el-select v-model="form_task.priority" size="small" class="input" clearable filterable placeholder="请选择">
|
|
|
- <el-option v-for="item in arr_priority" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-select
|
|
|
+ v-model="form_task.priority"
|
|
|
+ size="small"
|
|
|
+ class="input"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in arr_priority"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
</div>
|
|
|
<div class="Layout item">
|
|
@@ -94,7 +190,12 @@
|
|
|
:loading="loading"
|
|
|
size="small"
|
|
|
>
|
|
|
- <el-option v-for="item in options" :key="item.idap" :label="item.name" :value="test2(item, 0)">
|
|
|
+ <el-option
|
|
|
+ v-for="item in options"
|
|
|
+ :key="item.idap"
|
|
|
+ :label="item.name"
|
|
|
+ :value="test2(item, 0)"
|
|
|
+ >
|
|
|
<div class="flex_start">
|
|
|
<div class="deptName">{{ item.deptName }}</div>
|
|
|
<div style="min-width:80px">{{ item.name }}</div>
|
|
@@ -105,8 +206,20 @@
|
|
|
</div>
|
|
|
<div class="Layout item">
|
|
|
<div class="queryName">健康状态</div>
|
|
|
- <el-select v-model="form_task.stage" size="small" class="input" clearable filterable placeholder="请选择">
|
|
|
- <el-option v-for="item in healthStage" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-select
|
|
|
+ v-model="form_task.stage"
|
|
|
+ size="small"
|
|
|
+ class="input"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in healthStage"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
</div>
|
|
|
</el-form>
|
|
@@ -127,7 +240,12 @@
|
|
|
size="small"
|
|
|
style="width: 82%;"
|
|
|
>
|
|
|
- <el-option v-for="item in options" :key="item.idap" :label="item.name" :value="test2(item, 0)">
|
|
|
+ <el-option
|
|
|
+ v-for="item in options"
|
|
|
+ :key="item.idap"
|
|
|
+ :label="item.name"
|
|
|
+ :value="test2(item, 0)"
|
|
|
+ >
|
|
|
<div class="flex_start">
|
|
|
<div class="deptName">{{ item.deptName }}</div>
|
|
|
<div style="min-width:80px">{{ item.name }}</div>
|
|
@@ -138,8 +256,20 @@
|
|
|
</div>
|
|
|
<div class="Layout item">
|
|
|
<div class="queryName">是否免测</div>
|
|
|
- <el-select v-model="form_task.notest" size="small" class="input" clearable filterable placeholder="请选择">
|
|
|
- <el-option v-for="item in isNoTest" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-select
|
|
|
+ v-model="form_task.notest"
|
|
|
+ size="small"
|
|
|
+ class="input"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in isNoTest"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
</div>
|
|
|
</el-form>
|
|
@@ -177,7 +307,12 @@
|
|
|
<div class="filterWrap">
|
|
|
<div class="title">我的过滤器:</div>
|
|
|
<div class="itemBox">
|
|
|
- <el-tag v-for="item in filterList" :key="item.id" class="itemFilter" @click="getFilterItem(item.id)">{{ item.name }}</el-tag>
|
|
|
+ <el-tag
|
|
|
+ v-for="item in filterList"
|
|
|
+ :key="item.id"
|
|
|
+ class="itemFilter"
|
|
|
+ @click="getFilterItem(item.id)"
|
|
|
+ >{{ item.name }}</el-tag>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="btn">
|
|
@@ -200,7 +335,10 @@
|
|
|
>
|
|
|
<el-table-column label="优先级" width="90" prop="priority" sortable align="right">
|
|
|
<template slot-scope="scope">
|
|
|
- <div class="div_priority" :style="{background: priorityColors[scope.row.priority]}">{{ scope.row.priorityString }}</div>
|
|
|
+ <div
|
|
|
+ class="div_priority"
|
|
|
+ :style="{background: priorityColors[scope.row.priority]}"
|
|
|
+ >{{ scope.row.priorityString }}</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="任务名称" min-width="250" show-overflow-tooltip align="left">
|
|
@@ -213,11 +351,10 @@
|
|
|
'tagNotification': scope.row.tagType === 0,
|
|
|
'tagNotification1': scope.row.tagType === 1
|
|
|
}"
|
|
|
- >
|
|
|
- {{ scope.row.tagNotification }}
|
|
|
- </span>
|
|
|
- <span v-if="scope.row.status === -2" class="tagNotification1"> {{ 'hold' }} </span>
|
|
|
- </span><br>
|
|
|
+ >{{ scope.row.tagNotification }}</span>
|
|
|
+ <span v-if="scope.row.status === -2" class="tagNotification1">{{ 'hold' }}</span>
|
|
|
+ </span>
|
|
|
+ <br>
|
|
|
<span class="stylus-hover" @click="link_task(scope.row.id)">{{ scope.row.name }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -227,10 +364,15 @@
|
|
|
v-if="nowTab === 'charts'"
|
|
|
v-model="scope.row.status"
|
|
|
:size="size"
|
|
|
- placeholder=""
|
|
|
+ placeholder
|
|
|
@change="(e) => statusChange(e, scope.row.id)"
|
|
|
>
|
|
|
- <el-option v-for="o in scope.row.availableStatusList" :key="o.code" :label="o.name" :value="o.code" />
|
|
|
+ <el-option
|
|
|
+ v-for="o in scope.row.availableStatusList"
|
|
|
+ :key="o.code"
|
|
|
+ :label="o.name"
|
|
|
+ :value="o.code"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
<span v-else>{{ scope.row.statusString }}</span>
|
|
|
</template>
|
|
@@ -244,9 +386,7 @@
|
|
|
>{{ scope.row.rdObject !== null? scope.row.rdObject.name: '' }}</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="测试负责人" min-width="100" align="center">
|
|
|
- <template
|
|
|
- slot-scope="scope"
|
|
|
- >{{ scope.row.qaObject !== null?scope.row.qaObject.name: '' }}</template>
|
|
|
+ <template slot-scope="scope">{{ scope.row.qaObject !== null?scope.row.qaObject.name: '' }}</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="所属模块" width="150" align="center" show-overflow-tooltip>
|
|
|
<template slot-scope="scope">{{ scope.row.moduleInfoName }}</template>
|
|
@@ -285,7 +425,13 @@
|
|
|
</div>
|
|
|
<!-- 弹窗 -->
|
|
|
<openDialog v-if="dialog_open" ref="task_createdUpdata" />
|
|
|
- <normal-dialog :show-dialog="showSaveSearch" :title="'保存筛选项'" :width="'35%'" @confirm="saveSearch('searchForm')" @cancel="showSaveSearch=false">
|
|
|
+ <normal-dialog
|
|
|
+ :show-dialog="showSaveSearch"
|
|
|
+ :title="'保存筛选项'"
|
|
|
+ :width="'35%'"
|
|
|
+ @confirm="saveSearch('searchForm')"
|
|
|
+ @cancel="showSaveSearch=false"
|
|
|
+ >
|
|
|
<div v-if="showSaveSearch" class="file-dialog">
|
|
|
<el-form ref="searchForm" :model="searchForm" :rules="searchFormRules" label-width="100px">
|
|
|
<el-form-item label="过滤器名称" prop="name">
|
|
@@ -294,7 +440,13 @@
|
|
|
</el-form>
|
|
|
</div>
|
|
|
</normal-dialog>
|
|
|
- <normal-dialog :show-footer="false" :show-dialog="showEditSearch" :title="'管理过滤器'" :width="'65%'" @cancel="showEditSearch=false">
|
|
|
+ <normal-dialog
|
|
|
+ :show-footer="false"
|
|
|
+ :show-dialog="showEditSearch"
|
|
|
+ :title="'管理过滤器'"
|
|
|
+ :width="'65%'"
|
|
|
+ @cancel="showEditSearch=false"
|
|
|
+ >
|
|
|
<filter-list :show-filter="showEditSearch" :filter-type="2" @deleteFilter="deleteFilter" />
|
|
|
</normal-dialog>
|
|
|
<filterModal
|
|
@@ -361,31 +513,35 @@ export default {
|
|
|
return {
|
|
|
size: 'small',
|
|
|
pickerOptions: {
|
|
|
- shortcuts: [{
|
|
|
- text: '最近一周',
|
|
|
- onClick(picker) {
|
|
|
- const end = new Date()
|
|
|
- const start = new Date()
|
|
|
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
|
|
|
- picker.$emit('pick', [start, end])
|
|
|
+ shortcuts: [
|
|
|
+ {
|
|
|
+ text: '最近一周',
|
|
|
+ onClick(picker) {
|
|
|
+ const end = new Date()
|
|
|
+ const start = new Date()
|
|
|
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
|
|
|
+ picker.$emit('pick', [start, end])
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: '最近一个月',
|
|
|
+ onClick(picker) {
|
|
|
+ const end = new Date()
|
|
|
+ const start = new Date()
|
|
|
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
|
|
|
+ picker.$emit('pick', [start, end])
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: '最近三个月',
|
|
|
+ onClick(picker) {
|
|
|
+ const end = new Date()
|
|
|
+ const start = new Date()
|
|
|
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
|
|
|
+ picker.$emit('pick', [start, end])
|
|
|
+ }
|
|
|
}
|
|
|
- }, {
|
|
|
- text: '最近一个月',
|
|
|
- onClick(picker) {
|
|
|
- const end = new Date()
|
|
|
- const start = new Date()
|
|
|
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
|
|
|
- picker.$emit('pick', [start, end])
|
|
|
- }
|
|
|
- }, {
|
|
|
- text: '最近三个月',
|
|
|
- onClick(picker) {
|
|
|
- const end = new Date()
|
|
|
- const start = new Date()
|
|
|
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
|
|
|
- picker.$emit('pick', [start, end])
|
|
|
- }
|
|
|
- }]
|
|
|
+ ]
|
|
|
},
|
|
|
header_show: true,
|
|
|
props: {
|
|
@@ -394,10 +550,29 @@ export default {
|
|
|
children: 'childModules',
|
|
|
multiple: true
|
|
|
},
|
|
|
- isFromDpmList: [{ value: true, label: '是' }, { value: false, label: '否' }],
|
|
|
- isNoTest: [{ value: 1, label: '是' }, { value: 0, label: '否' }],
|
|
|
- priorityColors: ['#F56C6C', '#FF8952', '#F5E300', '#7ED321', '#61D3B8', '#69B3FF', '#BDBDBD'],
|
|
|
- arr_priority: [{ value: 0, label: 'P0' }, { value: 1, label: 'P1' }, { value: 2, label: 'P2' }, { value: 3, label: 'P3' }],
|
|
|
+ isFromDpmList: [
|
|
|
+ { value: true, label: '是' },
|
|
|
+ { value: false, label: '否' }
|
|
|
+ ],
|
|
|
+ isNoTest: [
|
|
|
+ { value: 1, label: '是' },
|
|
|
+ { value: 0, label: '否' }
|
|
|
+ ],
|
|
|
+ priorityColors: [
|
|
|
+ '#F56C6C',
|
|
|
+ '#FF8952',
|
|
|
+ '#F5E300',
|
|
|
+ '#7ED321',
|
|
|
+ '#61D3B8',
|
|
|
+ '#69B3FF',
|
|
|
+ '#BDBDBD'
|
|
|
+ ],
|
|
|
+ arr_priority: [
|
|
|
+ { value: 0, label: 'P0' },
|
|
|
+ { value: 1, label: 'P1' },
|
|
|
+ { value: 2, label: 'P2' },
|
|
|
+ { value: 3, label: 'P3' }
|
|
|
+ ],
|
|
|
dialog_open: false,
|
|
|
curIndex: 1,
|
|
|
pageSize: 15,
|
|
@@ -434,10 +609,12 @@ export default {
|
|
|
filterList: [],
|
|
|
showEditSearch: false, // 显示管理过滤器
|
|
|
searchForm: { name: null }, // 筛选项obj
|
|
|
- searchFormRules: { name: [
|
|
|
- { required: true, message: '请输入筛选项名称', trigger: 'blur' },
|
|
|
- { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
|
|
|
- ] },
|
|
|
+ searchFormRules: {
|
|
|
+ name: [
|
|
|
+ { required: true, message: '请输入筛选项名称', trigger: 'blur' },
|
|
|
+ { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
|
|
|
+ ]
|
|
|
+ },
|
|
|
showSaveSearch: false, // 显示保存筛选项对话框
|
|
|
nowTab: 'list',
|
|
|
chartData: {},
|
|
@@ -539,22 +716,31 @@ export default {
|
|
|
return item.idap
|
|
|
},
|
|
|
// 保存筛选项
|
|
|
- saveSearch(formName) { // 保存筛选项
|
|
|
+ saveSearch(formName) {
|
|
|
+ // 保存筛选项
|
|
|
this.$refs[formName].validate((valid) => {
|
|
|
if (valid) {
|
|
|
this.stratAndEnd = this.stratAndEnd ? this.stratAndEnd : []
|
|
|
this.form_task.createStartTime = this.stratAndEnd[0] || null
|
|
|
this.form_task.createEndTime = this.stratAndEnd[1] || null
|
|
|
- const isExistName = this.filterList.some(item => {
|
|
|
+ const isExistName = this.filterList.some((item) => {
|
|
|
return item.name === this.searchForm.name
|
|
|
})
|
|
|
if (isExistName) {
|
|
|
- this.$message({ showClose: true, message: '筛选项名称重名', type: 'error' })
|
|
|
+ this.$message({
|
|
|
+ showClose: true,
|
|
|
+ message: '筛选项名称重名',
|
|
|
+ type: 'error'
|
|
|
+ })
|
|
|
} else {
|
|
|
this.toSave()
|
|
|
}
|
|
|
} else {
|
|
|
- this.$message({ showClose: true, message: '筛选项名称不能为空', type: 'error' })
|
|
|
+ this.$message({
|
|
|
+ showClose: true,
|
|
|
+ message: '筛选项名称不能为空',
|
|
|
+ type: 'error'
|
|
|
+ })
|
|
|
return false
|
|
|
}
|
|
|
})
|
|
@@ -577,7 +763,8 @@ export default {
|
|
|
this.searchForm.name = null
|
|
|
}
|
|
|
},
|
|
|
- async getFilterList() { // 获取过滤器列表
|
|
|
+ async getFilterList() {
|
|
|
+ // 获取过滤器列表
|
|
|
const params = {
|
|
|
bizId: this.bizId,
|
|
|
filterType: 2
|
|
@@ -600,7 +787,8 @@ export default {
|
|
|
this.form_task.bizId = this.bizId
|
|
|
this.form_task.pageSize = this.pageSize
|
|
|
this.form_task.curIndex = this.curIndex
|
|
|
- for (const key in this.form_task) { // 接口不接受空值的处理
|
|
|
+ for (const key in this.form_task) {
|
|
|
+ // 接口不接受空值的处理
|
|
|
if (this.form_task[key] === '') {
|
|
|
delete this.form_task[key]
|
|
|
}
|
|
@@ -614,38 +802,16 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
get_taskList(e) {
|
|
|
- // if (this.bizId === -1) return
|
|
|
- // // 查询
|
|
|
- // if (this.isToOne) {
|
|
|
- // this.curIndex = 1
|
|
|
- // this.currentPage = 1
|
|
|
- // }
|
|
|
- // this.table_loading = true
|
|
|
- // this.form_task.bizId = this.bizId
|
|
|
- // this.form_task.pageSize = this.pageSize
|
|
|
- // this.form_task.curIndex = this.curIndex
|
|
|
- // for (const key in this.form_task) { // 接口不接受空值的处理
|
|
|
- // if (this.form_task[key] === '') {
|
|
|
- // delete this.form_task[key]
|
|
|
- // }
|
|
|
- // }
|
|
|
- // if (this.form_task.date) {
|
|
|
- // this.form_task.createTimeBegin = this.form_task.date[0]
|
|
|
- // this.form_task.createTimeEnd = this.form_task.date[1]
|
|
|
- // } else {
|
|
|
- // delete this.form_task.createTimeBegin
|
|
|
- // delete this.form_task.createTimeEnd
|
|
|
- // }
|
|
|
this.form_taskHandle()
|
|
|
- taskList(this.form_task).then(res => {
|
|
|
+ taskList(this.form_task).then((res) => {
|
|
|
this.task_table = res.data
|
|
|
this.total = res.total
|
|
|
this.table_loading = false
|
|
|
this.logHandle('get_task')
|
|
|
})
|
|
|
- configShowRequirementVersionEnum({ bizId: this.bizId }).then(res => {
|
|
|
+ configShowRequirementVersionEnum({ bizId: this.bizId }).then((res) => {
|
|
|
// 获取需求(查询)
|
|
|
- const demandList = res.data.map(t => ({
|
|
|
+ const demandList = res.data.map((t) => ({
|
|
|
...t,
|
|
|
label: t.name,
|
|
|
value: t.id
|
|
@@ -659,10 +825,12 @@ export default {
|
|
|
// 人员查询
|
|
|
if (query !== '') {
|
|
|
this.loading = true
|
|
|
- const res = await memberQueryMemberInfoByIDAPorName({ memberIDAP: query })
|
|
|
+ const res = await memberQueryMemberInfoByIDAPorName({
|
|
|
+ memberIDAP: query
|
|
|
+ })
|
|
|
const obj = {}
|
|
|
this.options = res.data.reduce((cur, next) => {
|
|
|
- obj[next.idap] ? '' : obj[next.idap] = true && cur.push(next)
|
|
|
+ obj[next.idap] ? '' : (obj[next.idap] = true && cur.push(next))
|
|
|
return cur
|
|
|
}, [])
|
|
|
this.loading = false
|
|
@@ -674,7 +842,9 @@ export default {
|
|
|
},
|
|
|
showSelect() {
|
|
|
this.DetailedScreening = !this.DetailedScreening
|
|
|
- this.goodName === '更多筛选' ? this.goodName = '收起筛选' : this.goodName = '更多筛选'
|
|
|
+ this.goodName === '更多筛选'
|
|
|
+ ? (this.goodName = '收起筛选')
|
|
|
+ : (this.goodName = '更多筛选')
|
|
|
},
|
|
|
team_dates(e) {
|
|
|
// 改变成员
|
|
@@ -682,7 +852,7 @@ export default {
|
|
|
for (const i in e) {
|
|
|
this.form.arry.push(this.test[e[i]])
|
|
|
}
|
|
|
- this.arry = this.form.arry.map(item => {
|
|
|
+ this.arry = this.form.arry.map((item) => {
|
|
|
return { memberIDAP: item.idap, department: item.deptid, role: 0 }
|
|
|
})
|
|
|
},
|
|
@@ -698,7 +868,10 @@ export default {
|
|
|
if (localStorage.getItem('openPageHandle') === 'self') {
|
|
|
this.$router.push({ name: '任务详情', query: { bizId_id: bizId_id }})
|
|
|
} else {
|
|
|
- const newTab = this.$router.resolve({ name: '任务详情', query: { bizId_id: bizId_id }})
|
|
|
+ const newTab = this.$router.resolve({
|
|
|
+ name: '任务详情',
|
|
|
+ query: { bizId_id: bizId_id }
|
|
|
+ })
|
|
|
window.open(newTab.href, '_blank')
|
|
|
}
|
|
|
},
|
|
@@ -729,12 +902,6 @@ export default {
|
|
|
} else {
|
|
|
this.get_taskList()
|
|
|
}
|
|
|
- // this.$message({
|
|
|
- // message: '已重置',
|
|
|
- // type: 'success',
|
|
|
- // duration: 1000,
|
|
|
- // offset: 150
|
|
|
- // })
|
|
|
},
|
|
|
handleSizeChange(size) {
|
|
|
// 分页
|
|
@@ -764,7 +931,7 @@ export default {
|
|
|
// 下拉菜单数据
|
|
|
const res = await configShowTaskEnum()
|
|
|
if (res.code === 200) {
|
|
|
- const healthStage = res.data.taskStage.map(t => ({
|
|
|
+ const healthStage = res.data.taskStage.map((t) => ({
|
|
|
...t,
|
|
|
label: t.msg,
|
|
|
value: t.code
|
|
@@ -777,7 +944,7 @@ export default {
|
|
|
}
|
|
|
const res1 = await configShowTaskStatusEnum(this.bizId)
|
|
|
if (res1.code === 200) {
|
|
|
- const daStatus = res1.data.taskStatus.map(t => ({
|
|
|
+ const daStatus = res1.data.taskStatus.map((t) => ({
|
|
|
...t,
|
|
|
label: t.msg,
|
|
|
value: t.code
|
|
@@ -787,7 +954,7 @@ export default {
|
|
|
}
|
|
|
const res2 = await projectListProject({ bizId: this.bizId })
|
|
|
if (res2.code === 200) {
|
|
|
- const projectList = res2.data.map(t => ({
|
|
|
+ const projectList = res2.data.map((t) => ({
|
|
|
...t,
|
|
|
label: t.name,
|
|
|
value: t.id
|
|
@@ -796,22 +963,26 @@ export default {
|
|
|
this.updateChartSlectOption('projectId', projectList)
|
|
|
}
|
|
|
},
|
|
|
- bugDataGet() { // 所属模块
|
|
|
+ bugDataGet() {
|
|
|
+ // 所属模块
|
|
|
this.biz = this.bizId
|
|
|
if (this.bizId === -1) {
|
|
|
this.biz = this.$store.state.global.bizId
|
|
|
}
|
|
|
- settingQueryBizModuleList(this.biz).then(res => {
|
|
|
+ settingQueryBizModuleList(this.biz).then((res) => {
|
|
|
this.business_platform_Modular = this.getRequireData(res.data)
|
|
|
})
|
|
|
},
|
|
|
getRequireData(data) {
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
|
- data[i].childModules && data[i].childModules.length < 1 ? delete data[i].childModules : this.getRequireData(data[i].childModules)
|
|
|
+ data[i].childModules && data[i].childModules.length < 1
|
|
|
+ ? delete data[i].childModules
|
|
|
+ : this.getRequireData(data[i].childModules)
|
|
|
}
|
|
|
return data
|
|
|
},
|
|
|
- async getFilterItem(filterId) { // 获取单个过滤器
|
|
|
+ async getFilterItem(filterId) {
|
|
|
+ // 获取单个过滤器
|
|
|
const res = await filterGetFilter(filterId)
|
|
|
if (res.code === 200) {
|
|
|
const filter = JSON.parse(res.data.content)
|
|
@@ -824,14 +995,14 @@ export default {
|
|
|
this.form_task[key] = value
|
|
|
},
|
|
|
updateChartSlectOption(key, option) {
|
|
|
- this.chartSearchFormRenderData.map(t => {
|
|
|
+ this.chartSearchFormRenderData.map((t) => {
|
|
|
if (t.key === key) {
|
|
|
t.option = option
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
updateChartSearchFormValue() {
|
|
|
- this.chartSearchFormRenderData.map(t => {
|
|
|
+ this.chartSearchFormRenderData.map((t) => {
|
|
|
t.value = this.form_task[t.key]
|
|
|
})
|
|
|
}
|
|
@@ -878,7 +1049,7 @@ export default {
|
|
|
}
|
|
|
.btn {
|
|
|
font-size: 14px;
|
|
|
- color: #00A0FF;
|
|
|
+ color: #00a0ff;
|
|
|
cursor: pointer;
|
|
|
min-width: 80px;
|
|
|
text-align: center;
|
|
@@ -910,7 +1081,10 @@ export default {
|
|
|
font-size: 14px;
|
|
|
font-family: MicrosoftYaHei;
|
|
|
}
|
|
|
-.requirement-xx .el-table .el-table__body tr:hover td { color: #409EFF; background: #EDF6FF; } /*hover时字体, 背景颜色*/
|
|
|
+.requirement-xx .el-table .el-table__body tr:hover td {
|
|
|
+ color: #409eff;
|
|
|
+ background: #edf6ff;
|
|
|
+} /*hover时字体, 背景颜色*/
|
|
|
|
|
|
.footer {
|
|
|
text-align: right;
|
|
@@ -919,13 +1093,13 @@ export default {
|
|
|
border-radius: 4px;
|
|
|
}
|
|
|
.bgborder .el-table .cell {
|
|
|
- box-sizing: border-box;
|
|
|
- overflow: hidden;
|
|
|
- text-overflow: ellipsis;
|
|
|
- word-break: break-all;
|
|
|
- line-height: 23px;
|
|
|
- padding-right: 10px;
|
|
|
- margin: -6px 0 -2px 0 !important;
|
|
|
+ box-sizing: border-box;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ word-break: break-all;
|
|
|
+ line-height: 23px;
|
|
|
+ padding-right: 10px;
|
|
|
+ margin: -6px 0 -2px 0 !important;
|
|
|
}
|
|
|
.el-table .warning-row {
|
|
|
background: oldlace;
|
|
@@ -955,60 +1129,76 @@ export default {
|
|
|
margin-right: 30px;
|
|
|
}
|
|
|
.tagNotification {
|
|
|
- background: rgba(255,137,82,15%);
|
|
|
- color: #FF8952;
|
|
|
+ background: rgba(255, 137, 82, 15%);
|
|
|
+ color: #ff8952;
|
|
|
padding: 0 5px;
|
|
|
border-radius: 8px;
|
|
|
margin-left: 10px;
|
|
|
}
|
|
|
|
|
|
.tagNotification1 {
|
|
|
- background: rgba(245,108,108,17%);
|
|
|
- color: #F56C6C;
|
|
|
+ background: rgba(245, 108, 108, 17%);
|
|
|
+ color: #f56c6c;
|
|
|
padding: 0 5px;
|
|
|
border-radius: 8px;
|
|
|
margin-left: 10px;
|
|
|
}
|
|
|
-
|
|
|
</style>
|
|
|
<style lang="stylus" scoped>
|
|
|
- .stylus-head >>> .el-form-item__label
|
|
|
- color #333333
|
|
|
- font-weight 400
|
|
|
- .stylus-content >>> .el-table .el-table__body tr:hover td
|
|
|
- // color #409EFF !important
|
|
|
- background #EDF6FF
|
|
|
- .stylus-head >>> .el-divider--horizontal
|
|
|
- margin 10px 0
|
|
|
- .stylus-head >>> .el-form-item
|
|
|
- margin-bottom 0
|
|
|
- .stylus-head
|
|
|
- width 100%
|
|
|
- padding 15px
|
|
|
- margin-bottom: 10px
|
|
|
- background-color white
|
|
|
- border-radius 4px
|
|
|
- .stylus-title
|
|
|
- display flex
|
|
|
- justify-content space-between
|
|
|
- align-items center
|
|
|
- .stylus-more
|
|
|
- background rgba(252,252,252,1)
|
|
|
- border-radius 4px
|
|
|
- padding 15px
|
|
|
- min-height 100px
|
|
|
- margin-top 22px
|
|
|
- border 1px solid rgba(238,238,238,1)
|
|
|
- width 100%
|
|
|
- .stylus-content
|
|
|
- width 100%
|
|
|
- padding 0.3% 1% 1% 1%
|
|
|
- margin:0 auto
|
|
|
- background-color white
|
|
|
- border-radius 4px
|
|
|
- // min-height: calc(100vh - 143px);
|
|
|
- .stylus-hover:hover
|
|
|
- color #409EFF !important
|
|
|
- cursor pointer
|
|
|
+.stylus-head >>> .el-form-item__label {
|
|
|
+ color: #333333;
|
|
|
+ font-weight: 400;
|
|
|
+}
|
|
|
+
|
|
|
+.stylus-content >>> .el-table .el-table__body tr:hover td {
|
|
|
+ // color #409EFF !important
|
|
|
+ background: #EDF6FF;
|
|
|
+}
|
|
|
+
|
|
|
+.stylus-head >>> .el-divider--horizontal {
|
|
|
+ margin: 10px 0;
|
|
|
+}
|
|
|
+
|
|
|
+.stylus-head >>> .el-form-item {
|
|
|
+ margin-bottom: 0;
|
|
|
+}
|
|
|
+
|
|
|
+.stylus-head {
|
|
|
+ width: 100%;
|
|
|
+ padding: 15px;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ background-color: white;
|
|
|
+ border-radius: 4px;
|
|
|
+
|
|
|
+ .stylus-title {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+
|
|
|
+ .stylus-more {
|
|
|
+ background: rgba(252, 252, 252, 1);
|
|
|
+ border-radius: 4px;
|
|
|
+ padding: 15px;
|
|
|
+ min-height: 100px;
|
|
|
+ margin-top: 22px;
|
|
|
+ border: 1px solid rgba(238, 238, 238, 1);
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.stylus-content {
|
|
|
+ width: 100%;
|
|
|
+ padding: 0.3% 1% 1% 1%;
|
|
|
+ margin: 0 auto;
|
|
|
+ background-color: white;
|
|
|
+ border-radius: 4px;
|
|
|
+
|
|
|
+ // min-height: calc(100vh - 143px);
|
|
|
+ .stylus-hover:hover {
|
|
|
+ color: #409EFF !important;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|
|
|
|