|
@@ -17,11 +17,11 @@
|
|
|
<!-- 时间线 -->
|
|
|
<div
|
|
|
v-if="openDrawer && isTimeLine(1)"
|
|
|
- class="qz-drawer-padding qz-drawer-header"
|
|
|
- :style="{paddingTop: !isTimeLine(2) ? '30px':'20px'}"
|
|
|
+ class="drawer-padding drawer-header"
|
|
|
+ :style="{paddingTop: !isTimeLine(2) ? '30px':'10px'}"
|
|
|
@click.stop
|
|
|
>
|
|
|
- <div id="index" ref="timeline1" class="qz-drawer-scll">
|
|
|
+ <div id="index" ref="timeline1" class="drawer-scll">
|
|
|
<timeline
|
|
|
:num="timelineData.firstActive"
|
|
|
bg-margin
|
|
@@ -29,7 +29,7 @@
|
|
|
@update="(params) => timeLineClick(params, 1)"
|
|
|
/>
|
|
|
</div>
|
|
|
- <div v-if="isTimeLine(2)" ref="timeline2" class="qz-drawer-scll">
|
|
|
+ <div v-if="isTimeLine(2)" ref="timeline2" class="drawer-scll">
|
|
|
<timeline
|
|
|
:num="timelineData.secondActive"
|
|
|
:data="timelineData.second"
|
|
@@ -85,7 +85,7 @@
|
|
|
</template>
|
|
|
</dmTable>
|
|
|
<!-- 下拉 -->
|
|
|
- <div class="qz-footer-laout" @click.stop>
|
|
|
+ <div class="footer-laout" @click.stop>
|
|
|
<div style="line-height: 60px;">
|
|
|
<!-- <el-button type="primary" size="mini" @click="exportTable">导 出</el-button>-->
|
|
|
</div>
|
|
@@ -108,7 +108,8 @@ import { bugList } from '@/api/defectManage'
|
|
|
import _ from 'lodash'
|
|
|
import { getReportList } from '@/api/reportTemplate'
|
|
|
import dmTable from '@/components/baseTable/table'
|
|
|
-import timeline from '@/components/timeline/index'
|
|
|
+// import timeline from '@/components/timeline/index'
|
|
|
+import timeline from './components/timeline'
|
|
|
import { columns, timelineList } from './drawerModalData'
|
|
|
import { EncryptId } from '@/utils/crypto-js'
|
|
|
import Clickoutside from 'element-ui/src/utils/clickoutside'
|
|
@@ -123,7 +124,8 @@ import {
|
|
|
bugRepairData, // 缺陷24小时修复率
|
|
|
bugRepair2Data, // 缺陷平均修复时长
|
|
|
getStarFlowerList, // 线上问题:半浮层 列表
|
|
|
- getProjectList // 需求任务项目列表: 半浮层
|
|
|
+ getProjectList, // 需求任务项目列表: 半浮层
|
|
|
+ getOdinJobList // 获取上线过程列表
|
|
|
} from '@/api/dataMarket'
|
|
|
|
|
|
export default {
|
|
@@ -171,6 +173,9 @@ export default {
|
|
|
drawerBox: '',
|
|
|
subTitle: '',
|
|
|
sourceData: null,
|
|
|
+ /* S 新增缺陷*/
|
|
|
+ priorityList: [],
|
|
|
+ /* E 新增缺陷*/
|
|
|
timelineData: {
|
|
|
first: [],
|
|
|
firstActive: 0,
|
|
@@ -184,21 +189,17 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
-
|
|
|
watch: {
|
|
|
- drawerData() {
|
|
|
+ drawerData(v, o) {
|
|
|
+ // if (JSON.stringify(v) !== JSON.stringify(o)) {
|
|
|
+ // this.init()
|
|
|
+ // }
|
|
|
this.init()
|
|
|
},
|
|
|
openDrawer(value) {
|
|
|
this.drawer = value
|
|
|
- // if (value) {
|
|
|
- // this.init()
|
|
|
- // }
|
|
|
}
|
|
|
},
|
|
|
- created() {
|
|
|
- this.drawer = false
|
|
|
- },
|
|
|
mounted() {
|
|
|
this.drawer = false
|
|
|
},
|
|
@@ -207,8 +208,10 @@ export default {
|
|
|
console.log(slotProp)
|
|
|
},
|
|
|
init() {
|
|
|
+ console.log(this.drawerData, 210)
|
|
|
this.headerTitle = this.drawerData.headerTitle
|
|
|
this.title = this.headerTitle.search(/质量|效率/) > -1 ? this.drawerData.label || '' : this.drawerData.activeLabel
|
|
|
+ console.log(this.headerTitle, this.title)
|
|
|
if (this.headerTitle && this.title) {
|
|
|
// console.log(this.drawerData)
|
|
|
this.pagingInit()
|
|
@@ -245,6 +248,9 @@ export default {
|
|
|
if (this.drawerData.label === '准出不通过率') {
|
|
|
this.title = '准出记录'
|
|
|
}
|
|
|
+ if (this.drawerData.moduleName && this.drawerData.moduleName === '回滚次数') {
|
|
|
+ this.title = !this.drawerData.index ? '回滚次数' : this.drawerData[this.drawerData.itemKey].label
|
|
|
+ }
|
|
|
}
|
|
|
if (this.headerTitle === '效率') {
|
|
|
this.activeLabel = this.drawerData.activeLabel
|
|
@@ -280,9 +286,15 @@ export default {
|
|
|
},
|
|
|
// 设置ids
|
|
|
setIds() {
|
|
|
- if (this.headerTitle === '质量') {
|
|
|
+ if (this.headerTitle === '质量' && !this.drawerData.moduleName) {
|
|
|
this.ids = this.drawerData.IdList.map(e => e)
|
|
|
}
|
|
|
+ if (this.drawerData.moduleName && this.drawerData.moduleName === '上线过程') {
|
|
|
+ this.ids = this.drawerData.IdList.map(e => e)
|
|
|
+ }
|
|
|
+ if (this.drawerData.moduleName && this.drawerData.moduleName === '回滚次数') {
|
|
|
+ this.ids = this.drawerData[this.drawerData.itemKey].idList.map(e => e)
|
|
|
+ }
|
|
|
if (this.headerTitle === '吞吐量') {
|
|
|
this.drawerData.list.forEach(elm => {
|
|
|
if (elm.label === this.drawerData.activeLabel && elm.idList) {
|
|
@@ -297,7 +309,21 @@ export default {
|
|
|
// 设置时间轴
|
|
|
setTimeLineData() {
|
|
|
let { firstActive, first, secondActive, second } = this.timelineData
|
|
|
- if (this.title.search(/新增问题|新增缺陷|reopen|提测报告|准出记录/) < 0) {
|
|
|
+ if (this.title.search(/新增问题|reopen|提测报告|准出记录/) < 0) {
|
|
|
+ if (this.headerTitle === '质量') {
|
|
|
+ if (this.title.search(/新增缺陷|reopen/) > -1) {
|
|
|
+ first = [...timelineList.newDefect]
|
|
|
+ firstActive = 0
|
|
|
+ }
|
|
|
+ if (this.drawerData.moduleName && this.drawerData.moduleName === '上线过程') {
|
|
|
+ first = [...timelineList.lineRate]
|
|
|
+ firstActive = this.drawerData.index
|
|
|
+ }
|
|
|
+ if (this.drawerData.moduleName && this.drawerData.moduleName === '回滚次数') {
|
|
|
+ first = [...timelineList.returnCase]
|
|
|
+ firstActive = this.drawerData.index
|
|
|
+ }
|
|
|
+ }
|
|
|
if (this.headerTitle === '吞吐量') {
|
|
|
secondActive = 0
|
|
|
firstActive = 0
|
|
@@ -393,11 +419,22 @@ export default {
|
|
|
// 导出
|
|
|
exportTable() {
|
|
|
},
|
|
|
+ // 格式化时间
|
|
|
+ dateFomatter(date) {
|
|
|
+ return date.substring(0, 10) + ' ' + date.substring(11, 19)
|
|
|
+ },
|
|
|
// 设置表格头
|
|
|
setColumn() {
|
|
|
if (this.title.search(/新增缺陷|reopen|缺陷24小时修复率/) > -1) {
|
|
|
this.column = columns.bugColumn.map(e => e)
|
|
|
}
|
|
|
+ if (this.drawerData.moduleName && this.drawerData.moduleName === '上线过程') {
|
|
|
+ this.column = columns.test_freeOn_lineRateIdListColumns.map(e => e)
|
|
|
+ }
|
|
|
+ if (this.drawerData.moduleName && this.drawerData.moduleName === '回滚次数') {
|
|
|
+ // this.ids = this.drawerData[this.drawerData.itemKey].idList.map(e => e)
|
|
|
+ this.column = columns.test_freeOn_lineRateIdListColumns.map(e => e)
|
|
|
+ }
|
|
|
if (this.title.search(/新增问题/) > -1) {
|
|
|
this.column = columns.newQuestionColumns.map(e => e)
|
|
|
}
|
|
@@ -447,6 +484,21 @@ export default {
|
|
|
this.pagingInit()
|
|
|
this.ids = []
|
|
|
if (index === 1) {
|
|
|
+ if (this.headerTitle === '质量') {
|
|
|
+ this.timelineData.firstActive = value || 0
|
|
|
+ if (this.title.search(/新增缺陷|reopen/) > -1) {
|
|
|
+ this.ids = this.drawerData.IdList.map(e => e)
|
|
|
+ this.priorityList = value ? [value - 1] : []
|
|
|
+ }
|
|
|
+ if (this.drawerData.moduleName && this.drawerData.moduleName === '上线过程') {
|
|
|
+ // console.log(this.drawerData.parent.list[value])
|
|
|
+ this.ids = this.drawerData.parent.list[value].IdList.map(e => e)
|
|
|
+ }
|
|
|
+ if (this.drawerData.moduleName && this.drawerData.moduleName === '回滚次数') {
|
|
|
+ const items = ['countStr', 'preCountStr', 'fullCountStr', 'lowCountStr']
|
|
|
+ this.ids = this.drawerData[items[value]].idList.map(e => e)
|
|
|
+ }
|
|
|
+ }
|
|
|
if (this.headerTitle === '吞吐量') {
|
|
|
this.timelineData.firstActive = value || 0
|
|
|
if (this.sourceData[value || 0] && this.sourceData[value || 0].idList) {
|
|
@@ -474,11 +526,12 @@ export default {
|
|
|
},
|
|
|
// 设置列表数据
|
|
|
setTableList() {
|
|
|
- // console.log(439)
|
|
|
this.tableList = []
|
|
|
if (this.headerTitle === '质量') {
|
|
|
if (this.title.search(/新增缺陷|reopen/) > -1) {
|
|
|
+ // console.log(this.ids, 502)
|
|
|
if (this.ids.length) {
|
|
|
+ // console.log(504)
|
|
|
this.loading = true
|
|
|
this.getBugStatisticData()
|
|
|
}
|
|
@@ -495,6 +548,12 @@ export default {
|
|
|
this.setReportList()
|
|
|
}
|
|
|
}
|
|
|
+ if (this.drawerData.moduleName && (this.drawerData.moduleName === '上线过程' || this.drawerData.moduleName === '回滚次数')) {
|
|
|
+ if (this.ids.length) {
|
|
|
+ this.loading = true
|
|
|
+ this.getOdinJobListFn()
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
if (this.headerTitle === '吞吐量') {
|
|
|
if (this.title.search(/需求/) > -1) {
|
|
@@ -540,13 +599,13 @@ export default {
|
|
|
if (this.title === '缺陷修复时长') {
|
|
|
if (this.sourceData[0].IdList.length) {
|
|
|
this.loading = true
|
|
|
- this.setbugRepair2Data()
|
|
|
+ this.setBugRepair2Data()
|
|
|
}
|
|
|
}
|
|
|
if (this.title === '缺陷24小时修复率') {
|
|
|
if (this.sourceData[0].IdList.length) {
|
|
|
this.loading = true
|
|
|
- this.setbugRepairData()
|
|
|
+ this.setBugRepairData()
|
|
|
}
|
|
|
}
|
|
|
if (this.title === '延期提测率') {
|
|
@@ -639,6 +698,7 @@ export default {
|
|
|
const res = await bugList({
|
|
|
ids: this.ids,
|
|
|
curIndex: this.paging.curIndex,
|
|
|
+ priorityList: this.priorityList,
|
|
|
pageSize: this.paging.pageSize
|
|
|
})
|
|
|
if (res.code === 200) {
|
|
@@ -665,6 +725,21 @@ export default {
|
|
|
this.loading = false
|
|
|
}
|
|
|
},
|
|
|
+ // 上线过程
|
|
|
+ async getOdinJobListFn() {
|
|
|
+ const paging = this.paging
|
|
|
+ const res = await getOdinJobList({
|
|
|
+ idList: this.ids,
|
|
|
+ curIndex: this.paging.curIndex,
|
|
|
+ pageSize: this.paging.pageSize
|
|
|
+ })
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.tableList = res.data.result
|
|
|
+ this.paging.pageTotal = res.data.total
|
|
|
+ this.paging = { ...paging }
|
|
|
+ this.loading = false
|
|
|
+ }
|
|
|
+ },
|
|
|
/* S 效率:半浮层数据接口 */
|
|
|
// 需求平均交付周期
|
|
|
async setRequireAvgData() {
|
|
@@ -821,12 +896,15 @@ export default {
|
|
|
pageTotal: 0,
|
|
|
pageSize: Number.parseInt(pageSize)
|
|
|
}
|
|
|
+ this.priorityList = []
|
|
|
},
|
|
|
// 设置表格高度
|
|
|
setTitleHeight() {
|
|
|
- if (this.title.search(/状态停留分布图数据|状态累积流量图数据/) > -1) {
|
|
|
+ if (this.drawerData.moduleName && this.drawerData.moduleName.search(/上线过程|回滚次数/) > -1) {
|
|
|
+ this.tableHeight = 'calc(100vh - 290px)'
|
|
|
+ } else if (this.title.search(/状态停留分布图数据|状态累积流量图数据/) > -1) {
|
|
|
this.tableHeight = 'calc(100vh - 363px)'
|
|
|
- } else if (this.title.search(/需求周期|新增项目|新增任务|需求人力|任务周期|缺陷修复时长|延期准出率|延期提测率/) > -1) {
|
|
|
+ } else if (this.title.search(/需求周期|新增项目|新增任务|reopen|新增缺陷|需求人力|任务周期|缺陷修复时长|延期准出率|延期提测率/) > -1) {
|
|
|
this.tableHeight = 'calc(100vh - 288px)'
|
|
|
} else if (this.title.search(/需求|任务|项目/) > -1) {
|
|
|
// 吞吐量: 需求
|
|
@@ -836,7 +914,7 @@ export default {
|
|
|
} else {
|
|
|
this.tableHeight = 'calc(100vh - 136px)'
|
|
|
}
|
|
|
- if (this.headerTitle === '质量') {
|
|
|
+ if (this.headerTitle === '质量' && this.title.search(/新增缺陷|reopen/) < 0 && !this.drawerData.moduleName) {
|
|
|
this.tableHeight = 'calc(100vh - 136px)'
|
|
|
}
|
|
|
if (this.headerTitle === '吞吐量') {
|
|
@@ -849,6 +927,9 @@ export default {
|
|
|
if (this.headerTitle === '质量' && this.drawerData.label === '新增问题') {
|
|
|
const url = `http://odin.xiaojukeji.com/#/risk/starflower/casedetail?id=${row.id}&name=${row.title}`
|
|
|
window.open(url, '_blank')
|
|
|
+ } else if (this.drawerData.moduleName && this.drawerData.moduleName.search(/上线过程|回滚次数/) > -1) {
|
|
|
+ const url = `http://odin.v5.intra.xiaojukeji.com/#/deploy/job/status/?jobId=${row.id}`
|
|
|
+ window.open(url, '_blank')
|
|
|
} else if (this.headerTitle === '质量' && this.drawerData.label.search(/^(提测报告|准出记录)/) > -1) {
|
|
|
this.jumper(row, '报告')
|
|
|
} else if (this.headerTitle === '吞吐量') {
|
|
@@ -909,6 +990,15 @@ export default {
|
|
|
isTimeLine(index = 1) {
|
|
|
// 是第一条
|
|
|
if (index === 1) {
|
|
|
+ if (this.headerTitle.search(/质量/) > -1 && this.title.search(/新增缺陷|reopen/) > -1) {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ if (this.drawerData.moduleName && this.drawerData.moduleName === '上线过程') {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ if (this.drawerData.moduleName && this.drawerData.moduleName === '回滚次数') {
|
|
|
+ return true
|
|
|
+ }
|
|
|
return this.headerTitle.search(/吞吐量|效率/) > -1
|
|
|
}
|
|
|
// 是第二条
|
|
@@ -961,34 +1051,34 @@ export default {
|
|
|
width: 50%;
|
|
|
}
|
|
|
/* S 时间轴 */
|
|
|
-.qz-drawer-header {
|
|
|
+.drawer-header {
|
|
|
text-align: center;
|
|
|
background: #F7F7F7;
|
|
|
border-radius: 4px;
|
|
|
min-height: 120px;
|
|
|
- margin: 20px 30px;
|
|
|
+ margin: 20px 30px 10px;
|
|
|
overflow: hidden;
|
|
|
}
|
|
|
-.qz-drawer-padding {
|
|
|
+.drawer-padding {
|
|
|
padding: 20px 0;
|
|
|
}
|
|
|
-.qz-drawer-padding-s {
|
|
|
+.drawer-padding-s {
|
|
|
padding: 1px 0;
|
|
|
}
|
|
|
-.qz-drawer-scll {
|
|
|
+.drawer-scll {
|
|
|
overflow-x: scroll;
|
|
|
}
|
|
|
-.qz-drawer-scll::-webkit-scrollbar { width: 0 !important; height: 0 !important }
|
|
|
-.qz-drawer-H {
|
|
|
+.drawer-scll::-webkit-scrollbar { width: 0 !important; height: 0 !important }
|
|
|
+.drawer-H {
|
|
|
font-size: 16px;
|
|
|
margin: 0 30px;
|
|
|
color: #444444;
|
|
|
}
|
|
|
-.qz-drawer-scll {
|
|
|
+.drawer-scll {
|
|
|
overflow-x: scroll;
|
|
|
}
|
|
|
-.qz-drawer-scll::-webkit-scrollbar { width: 0 !important; height: 0 !important }
|
|
|
-.qz-drawer-H {
|
|
|
+.drawer-scll::-webkit-scrollbar { width: 0 !important; height: 0 !important }
|
|
|
+.drawer-H {
|
|
|
font-size: 16px;
|
|
|
margin: 0 30px;
|
|
|
color: #444444;
|
|
@@ -1026,10 +1116,15 @@ export default {
|
|
|
border-color: #b7eb8f;
|
|
|
}
|
|
|
/* E 质量:线上问题_改进方案 */
|
|
|
-.qz-footer-laout {
|
|
|
+.footer-laout {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
margin: 0 30px;
|
|
|
+ //width: 100%;
|
|
|
+ //padding: 0 30px;
|
|
|
+ //.el-pagination{
|
|
|
+ // width: 100%;
|
|
|
+ //}
|
|
|
}
|
|
|
.drawer-name:hover {
|
|
|
color: #409eff;
|