|
@@ -19,12 +19,12 @@
|
|
</el-header>
|
|
</el-header>
|
|
<el-container style="height:calc(100vh - 140px);">
|
|
<el-container style="height:calc(100vh - 140px);">
|
|
<el-aside class="aside">
|
|
<el-aside class="aside">
|
|
- <el-tree ref="treeBox" :default-expanded-keys="expandedClient" accordion :data="dealWithBusinessDate" node-key="id" highlight-current :props="defaultProps" style="margin-top:20px" @node-click="handleNodeClick" />
|
|
|
|
|
|
+ <el-tree ref="treeBox" :default-expanded-keys="expandedClient" icon-class="el-icon-caret-right" accordion :data="dealWithBusinessDate" node-key="id" highlight-current :props="defaultProps" style="margin-top:20px" @node-click="handleNodeClick" />
|
|
</el-aside>
|
|
</el-aside>
|
|
<el-main class="combine-table">
|
|
<el-main class="combine-table">
|
|
<el-tabs v-model="activeIndexSecondary" @tab-click="handleClick">
|
|
<el-tabs v-model="activeIndexSecondary" @tab-click="handleClick">
|
|
<el-tab-pane :label="guild" name="first">
|
|
<el-tab-pane :label="guild" name="first">
|
|
- <!-- 上线过程 -->
|
|
|
|
|
|
+ <!-- 上线过程 客户端-->
|
|
<h4>1. 上线过程</h4>
|
|
<h4>1. 上线过程</h4>
|
|
<el-table
|
|
<el-table
|
|
v-show="pauseKey === 5"
|
|
v-show="pauseKey === 5"
|
|
@@ -34,12 +34,176 @@
|
|
size="mini"
|
|
size="mini"
|
|
>
|
|
>
|
|
<el-table-column
|
|
<el-table-column
|
|
- label="上线总数"
|
|
|
|
|
|
+ label="上线次数"
|
|
align="center"
|
|
align="center"
|
|
>
|
|
>
|
|
<template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toClientView()">{{ scope.row.clientOnlineCount }}</a></template>
|
|
<template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toClientView()">{{ scope.row.clientOnlineCount }}</a></template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
|
|
+ <!-- 线上问题 客户端-->
|
|
|
|
+ <h4 v-show="pauseKey === 5">2. 线上问题</h4>
|
|
|
|
+ <el-table
|
|
|
|
+ v-show="pauseKey === 5"
|
|
|
|
+ :data="[problemData]"
|
|
|
|
+ border
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ size="mini"
|
|
|
|
+ >
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="totalCount"
|
|
|
|
+ label="问题总数"
|
|
|
|
+ width="170"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="name"
|
|
|
|
+ label="免提测上线数"
|
|
|
|
+ align="center"
|
|
|
|
+ >
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="totalP0"
|
|
|
|
+ label="P0"
|
|
|
|
+ width="calc(10/7)%"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="totalP1"
|
|
|
|
+ label="P1"
|
|
|
|
+ width="calc(10/7)%"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="totalP2"
|
|
|
|
+ label="P2"
|
|
|
|
+ width="calc(10/7)%"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="totalP3"
|
|
|
|
+ label="P3"
|
|
|
|
+ width="calc(10/7)%"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="totalP4"
|
|
|
|
+ label="P4"
|
|
|
|
+ width="calc(10/7)%"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="totalP5"
|
|
|
|
+ label="P5"
|
|
|
|
+ width="calc(10/7)%"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="totalP6"
|
|
|
|
+ label="P6"
|
|
|
|
+ width="calc(10/7)%"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ <el-table
|
|
|
|
+ v-show="pauseKey === 5"
|
|
|
|
+ :data="[problemData]"
|
|
|
|
+ border
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ class="move-border-top"
|
|
|
|
+ size="mini"
|
|
|
|
+ >
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="handleDurationPercent"
|
|
|
|
+ label="线上问题处理完成率"
|
|
|
|
+ style="width:25%;"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="avgHandleDuration"
|
|
|
|
+ label="线上问题平均处理时长(H)"
|
|
|
|
+ style="width:25%;"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ </el-table>
|
|
|
|
+ <!-- 线下缺陷 客户端-->
|
|
|
|
+ <h4 v-show="pauseKey === 5">3. 线下缺陷</h4>
|
|
|
|
+ <el-table
|
|
|
|
+ v-show="pauseKey === 5"
|
|
|
|
+ :data="[DefeatData]"
|
|
|
|
+ border
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ size="mini"
|
|
|
|
+ >
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="提报bug数"
|
|
|
|
+ align="center"
|
|
|
|
+ >
|
|
|
|
+ <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toDefectView()">{{ scope.row.totalBugNum }}</a></template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="avgBugNum"
|
|
|
|
+ label="人均bug数"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="avgRepairTime"
|
|
|
|
+ label="bug平均修复时常"
|
|
|
|
+ width="120"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ label="bug修复率"
|
|
|
|
+ align="center"
|
|
|
|
+ >
|
|
|
|
+ <template slot-scope="scope">{{ scope.row.avgRepairTime | toPercent }}</template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="totalP0"
|
|
|
|
+ label="P0"
|
|
|
|
+ width="55"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="totalP1"
|
|
|
|
+ label="P1"
|
|
|
|
+ width="55"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="totalP2"
|
|
|
|
+ label="P2"
|
|
|
|
+ width="55"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="totalOthers"
|
|
|
|
+ label="其他分级"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="reopenNum"
|
|
|
|
+ label="reopen"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="checkInTest"
|
|
|
|
+ label="提测"
|
|
|
|
+ width="55"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="checkInRepulse"
|
|
|
|
+ label="提测打回"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="stepOut"
|
|
|
|
+ label="准出"
|
|
|
|
+ width="55"
|
|
|
|
+ align="center"
|
|
|
|
+ />
|
|
|
|
+ </el-table>
|
|
|
|
+ <!-- 上线过程-->
|
|
<el-table
|
|
<el-table
|
|
v-show="pauseKey !== 5"
|
|
v-show="pauseKey !== 5"
|
|
:data="[onlineProcess]"
|
|
:data="[onlineProcess]"
|
|
@@ -298,7 +462,7 @@
|
|
align="center"
|
|
align="center"
|
|
/>
|
|
/>
|
|
<el-table-column
|
|
<el-table-column
|
|
- prop="aveHandleDuration"
|
|
|
|
|
|
+ prop="avgHandleDuration"
|
|
label="线上问题平均处理时长(H)"
|
|
label="线上问题平均处理时长(H)"
|
|
style="width:25%;"
|
|
style="width:25%;"
|
|
align="center"
|
|
align="center"
|
|
@@ -320,7 +484,7 @@
|
|
<template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toDefectView()">{{ scope.row.totalBugNum }}</a></template>
|
|
<template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toDefectView()">{{ scope.row.totalBugNum }}</a></template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column
|
|
<el-table-column
|
|
- prop="avgBugs"
|
|
|
|
|
|
+ prop="avgBugNum"
|
|
label="人均bug数"
|
|
label="人均bug数"
|
|
align="center"
|
|
align="center"
|
|
/>
|
|
/>
|
|
@@ -337,6 +501,7 @@
|
|
<template slot-scope="scope">{{ scope.row.avgRepairTime | toPercent }}</template>
|
|
<template slot-scope="scope">{{ scope.row.avgRepairTime | toPercent }}</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column
|
|
<el-table-column
|
|
|
|
+ prop="totalP0"
|
|
label="P0"
|
|
label="P0"
|
|
width="55"
|
|
width="55"
|
|
align="center"
|
|
align="center"
|
|
@@ -542,7 +707,8 @@ export default {
|
|
child: each.details.map(detail => ({
|
|
child: each.details.map(detail => ({
|
|
...detail,
|
|
...detail,
|
|
name: detail.osType,
|
|
name: detail.osType,
|
|
- id: each.name + detail.appKey + detail.osType
|
|
|
|
|
|
+ id: each.name + detail.appKey + detail.osType,
|
|
|
|
+ idForData: detail.id
|
|
}))
|
|
}))
|
|
}))
|
|
}))
|
|
this.pauseTreeNode = this.dealWithBusinessDate[0].child[0] ? this.dealWithBusinessDate[0].child[0] : ''
|
|
this.pauseTreeNode = this.dealWithBusinessDate[0].child[0] ? this.dealWithBusinessDate[0].child[0] : ''
|
|
@@ -557,16 +723,24 @@ export default {
|
|
this.guild = this.treeGuideClient(this.dealWithBusinessDate, this.pauseTreeNode.id).join('/')
|
|
this.guild = this.treeGuideClient(this.dealWithBusinessDate, this.pauseTreeNode.id).join('/')
|
|
// const pretermitSearch = { appKey: 'f9a0bc6213db35deb155ff08bffa90a9', startTime: this.timeInterval[0], endTime: this.timeInterval[1] }
|
|
// const pretermitSearch = { appKey: 'f9a0bc6213db35deb155ff08bffa90a9', startTime: this.timeInterval[0], endTime: this.timeInterval[1] }
|
|
const pretermitSearch = { appKey: this.pauseTreeNode.appKey }
|
|
const pretermitSearch = { appKey: this.pauseTreeNode.appKey }
|
|
- getHotpatch(pretermitSearch).then((res) => {
|
|
|
|
- res.code === 0 ? this.clientOnline[0].clientOnlineCount = res.data : this.errorFun(res.msg)
|
|
|
|
|
|
+ const pretermitSearchOthers = { id: this.pauseTreeNode.idForData, type: this.pauseTreeNode.type, startTime: this.timeInterval[0], endTime: this.timeInterval[1] }
|
|
|
|
+ // getHotpatch(pretermitSearch).then((res) => {
|
|
|
|
+ // res.code === 0 ? this.clientOnline[0].clientOnlineCount = res.data : this.errorFun(res.msg)
|
|
|
|
+ // this.loadingOnlineProcess = false
|
|
|
|
+ // })
|
|
|
|
+ axios.all([getHotpatch(pretermitSearch), getOnlineProblem(pretermitSearchOthers), getOnlineVitium(pretermitSearchOthers)]).then(axios.spread((resAllCount, resProblem, resDefeat) => {
|
|
|
|
+ resAllCount.code === 0 ? this.clientOnline[0].clientOnlineCount = resAllCount.data : this.errorFun(resAllCount.msg)
|
|
|
|
+ this.problemData = resProblem.code === 0 ? resProblem.data : ''
|
|
|
|
+ this.DefeatData = resDefeat.code === 0 ? resDefeat.data : ''
|
|
|
|
+ // Object.assign(this.onlineProcess, this.toPercent([this.onlineProcess.allRollbackPercent, this.onlineProcess.preLess5MinPercent, this.onlineProcess.preRollbackPercent, this.onlineProcess.rollbackPercent, this.onlineProcess.noTestPercent]))
|
|
this.loadingOnlineProcess = false
|
|
this.loadingOnlineProcess = false
|
|
- })
|
|
|
|
|
|
+ }))
|
|
},
|
|
},
|
|
// 部门table数据不需要缺陷数据
|
|
// 部门table数据不需要缺陷数据
|
|
deleteAfter() {
|
|
deleteAfter() {
|
|
this.guild = this.treeGuide(this.dealWithBusinessDate, this.pauseTreeNode.id, this.pauseTreeNode.type).join('/')
|
|
this.guild = this.treeGuide(this.dealWithBusinessDate, this.pauseTreeNode.id, this.pauseTreeNode.type).join('/')
|
|
const pretermitSearch = { id: this.pauseTreeNode.id, type: this.pauseKey, startTime: this.timeInterval[0], endTime: this.timeInterval[1] }
|
|
const pretermitSearch = { id: this.pauseTreeNode.id, type: this.pauseKey, startTime: this.timeInterval[0], endTime: this.timeInterval[1] }
|
|
- axios.all([getOnlineAllCount(pretermitSearch), getOnlineProblem({ id: this.pauseTreeNode.id })]).then(axios.spread((resAllCount, resProblem) => {
|
|
|
|
|
|
+ axios.all([getOnlineAllCount(pretermitSearch), getOnlineProblem(pretermitSearch)]).then(axios.spread((resAllCount, resProblem) => {
|
|
this.onlineProcess = resAllCount.code === 0 ? resAllCount.data : ''
|
|
this.onlineProcess = resAllCount.code === 0 ? resAllCount.data : ''
|
|
this.problemData = resProblem.code === 0 ? resProblem.data : ''
|
|
this.problemData = resProblem.code === 0 ? resProblem.data : ''
|
|
// Object.assign(this.onlineProcess, this.toPercent([this.onlineProcess.allRollbackPercent, this.onlineProcess.preLess5MinPercent, this.onlineProcess.preRollbackPercent, this.onlineProcess.rollbackPercent, this.onlineProcess.noTestPercent]))
|
|
// Object.assign(this.onlineProcess, this.toPercent([this.onlineProcess.allRollbackPercent, this.onlineProcess.preLess5MinPercent, this.onlineProcess.preRollbackPercent, this.onlineProcess.rollbackPercent, this.onlineProcess.noTestPercent]))
|
|
@@ -577,7 +751,7 @@ export default {
|
|
allCountAndProlemGet() {
|
|
allCountAndProlemGet() {
|
|
this.guild = this.treeGuide(this.dealWithBusinessDate, this.pauseTreeNode.id, this.pauseTreeNode.type).join('/')
|
|
this.guild = this.treeGuide(this.dealWithBusinessDate, this.pauseTreeNode.id, this.pauseTreeNode.type).join('/')
|
|
const pretermitSearch = { id: this.pauseTreeNode.id, type: this.pauseKey, startTime: this.timeInterval[0], endTime: this.timeInterval[1] }
|
|
const pretermitSearch = { id: this.pauseTreeNode.id, type: this.pauseKey, startTime: this.timeInterval[0], endTime: this.timeInterval[1] }
|
|
- axios.all([getOnlineAllCount(pretermitSearch), getOnlineProblem({ id: this.pauseTreeNode.id }), getOnlineVitium(pretermitSearch)]).then(axios.spread((resAllCount, resProblem, resDefeat) => {
|
|
|
|
|
|
+ axios.all([getOnlineAllCount(pretermitSearch), getOnlineProblem(pretermitSearch), getOnlineVitium(pretermitSearch)]).then(axios.spread((resAllCount, resProblem, resDefeat) => {
|
|
this.onlineProcess = resAllCount.code === 0 ? resAllCount.data : ''
|
|
this.onlineProcess = resAllCount.code === 0 ? resAllCount.data : ''
|
|
this.problemData = resProblem.code === 0 ? resProblem.data : ''
|
|
this.problemData = resProblem.code === 0 ? resProblem.data : ''
|
|
this.DefeatData = resDefeat.code === 0 ? resDefeat.data : ''
|
|
this.DefeatData = resDefeat.code === 0 ? resDefeat.data : ''
|
|
@@ -800,10 +974,19 @@ export default {
|
|
.fontScale >>> .el-table__header-wrapper .cell
|
|
.fontScale >>> .el-table__header-wrapper .cell
|
|
font-size 12px
|
|
font-size 12px
|
|
padding 0
|
|
padding 0
|
|
- // .aside >>> .el-tree-node__content .el-tree-node__label
|
|
|
|
- // font-size 13px
|
|
|
|
- // .aside >>> .el-tree-node__children .el-tree-node__label
|
|
|
|
- // font-size 12px
|
|
|
|
|
|
+ .aside >>> .el-tree-node__content .el-tree-node__label
|
|
|
|
+ font-size 14px
|
|
|
|
+ .aside >>> .el-tree-node__children .el-tree-node__label
|
|
|
|
+ font-size 13px
|
|
|
|
+ .aside >>> .el-tree-node__children
|
|
|
|
+ opacity 0.8
|
|
|
|
+ .aside >>> .el-tree-node__expand-icon
|
|
|
|
+ font-size 14px
|
|
|
|
+ color black
|
|
|
|
+ opacity 0.6
|
|
|
|
+ .aside >>> .el-tree-node__expand-icon.is-leaf
|
|
|
|
+ color transparent !important
|
|
|
|
+ cursor default !important
|
|
// .aside >>> .el-tree-node__children
|
|
// .aside >>> .el-tree-node__children
|
|
// overflow auto
|
|
// overflow auto
|
|
</style>
|
|
</style>
|