|
@@ -21,379 +21,435 @@
|
|
|
<el-tree ref="treeBox" :data="dealWithBusinessDate" node-key="id" highlight-current :props="defaultProps" style="margin-top:20px" @node-click="handleNodeClick" />
|
|
|
</el-aside>
|
|
|
<el-main class="combine-table">
|
|
|
- <el-menu :default-active="activeIndexSecondary" active-text-color="#409EFF" mode="horizontal" @select="handleSelectSecondary">
|
|
|
- <el-menu-item index="3">质量大盘</el-menu-item>
|
|
|
- </el-menu>
|
|
|
- <!-- 上线过程 -->
|
|
|
- <h4>1.上线过程</h4>
|
|
|
- <el-table
|
|
|
- :data="[onlineProcess]"
|
|
|
- border
|
|
|
- style="width: 100%"
|
|
|
- size="mini"
|
|
|
- >
|
|
|
- <el-table-column
|
|
|
- prop="totalOnlineNum"
|
|
|
- label="上线次数"
|
|
|
- style="width:50%;"
|
|
|
- align="center"
|
|
|
- >
|
|
|
- <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView('0')">{{ scope.row.totalOnlineNum }}</a></template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- label="免提测上线数"
|
|
|
- style="width:50%;"
|
|
|
- align="center"
|
|
|
- >
|
|
|
- <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView('1')">{{ scope.row.noTestNum }}</a></template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- <el-table
|
|
|
- :data="[onlineProcess]"
|
|
|
- border
|
|
|
- style="width: 100%"
|
|
|
- class="move-border-top abviously"
|
|
|
- size="mini"
|
|
|
- >
|
|
|
- <el-table-column
|
|
|
- label="回滚数据"
|
|
|
- style="width:100%;"
|
|
|
- align="center"
|
|
|
- >
|
|
|
- <el-table-column
|
|
|
- label="回滚次数"
|
|
|
- style="width:20%;"
|
|
|
- align="center"
|
|
|
+ <el-tabs v-model="activeIndexSecondary" @tab-click="handleClick">
|
|
|
+ <el-tab-pane label="质量大盘" name="first">
|
|
|
+ <!-- 上线过程 -->
|
|
|
+ <h4>1.上线过程</h4>
|
|
|
+ <el-table
|
|
|
+ :data="[onlineProcess]"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ size="mini"
|
|
|
>
|
|
|
- <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView('2')">{{ scope.row.rollbackNum }}</a></template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="name"
|
|
|
- label="免提测回滚数"
|
|
|
- style="width:20%;"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- label="预发回滚数"
|
|
|
- style="width:20%;"
|
|
|
- align="center"
|
|
|
+ <el-table-column
|
|
|
+ prop="totalOnlineNum"
|
|
|
+ label="上线次数"
|
|
|
+ style="width:50%;"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView('0')">{{ scope.row.totalOnlineNum }}</a></template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="免提测上线数"
|
|
|
+ style="width:50%;"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView('1')">{{ scope.row.noTestNum }}</a></template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <el-table
|
|
|
+ :data="[onlineProcess]"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ class="move-border-top abviously"
|
|
|
+ size="mini"
|
|
|
>
|
|
|
- <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView('3')">{{ scope.row.preRollbackNum }}</a></template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- label="小流量回滚数"
|
|
|
- style="width:20%;"
|
|
|
- align="center"
|
|
|
+ <el-table-column
|
|
|
+ label="回滚数据"
|
|
|
+ style="width:100%;"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ label="回滚次数"
|
|
|
+ style="width:20%;"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView('2')">{{ scope.row.rollbackNum }}</a></template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="免提测回滚数"
|
|
|
+ style="width:20%;"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ label="预发回滚数"
|
|
|
+ style="width:20%;"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView('3')">{{ scope.row.preRollbackNum }}</a></template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="小流量回滚数"
|
|
|
+ style="width:20%;"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView('4')">{{ scope.row.preLess5Min }}</a></template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="全量回滚数"
|
|
|
+ style="width:20%;"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView('5')">{{ scope.row.allRollbackNum }}</a></template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <el-table
|
|
|
+ :data="[onlineProcess]"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ class="move-border-top fontScale"
|
|
|
+ size="mini"
|
|
|
>
|
|
|
- <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView('4')">{{ scope.row.preLess5Min }}</a></template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- label="全量回滚数"
|
|
|
- style="width:20%;"
|
|
|
- align="center"
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="预发具备率"
|
|
|
+ align="center"
|
|
|
+ width="calc(10/9)%"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="有预发不走预发占比"
|
|
|
+ align="center"
|
|
|
+ width="110"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="被动免提测率"
|
|
|
+ align="center"
|
|
|
+ width="calc(10/9)%"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ label="免提测上线占比"
|
|
|
+ align="center"
|
|
|
+ width="calc(10/9)%"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">{{ scope.row.noTestPercent | toPercent }}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="回滚率"
|
|
|
+ align="center"
|
|
|
+ width="60"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">{{ scope.row.rollbackPercent | toPercent }}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="免提测回滚占比"
|
|
|
+ align="center"
|
|
|
+ width="calc(10/9)%"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ label="预发回滚率"
|
|
|
+ align="center"
|
|
|
+ width="calc(10/9)%"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">{{ scope.row.preRollbackPercent | toPercent }}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="小流量回滚率"
|
|
|
+ align="center"
|
|
|
+ width="75"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">{{ scope.row.preLess5MinPercent | toPercent }}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="全量回滚率"
|
|
|
+ align="center"
|
|
|
+ width="75"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">{{ scope.row.allRollbackPercent | toPercent }}</template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <el-table
|
|
|
+ :data="[onlineProcess]"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ class="move-border-top"
|
|
|
+ size="mini"
|
|
|
>
|
|
|
- <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView('5')">{{ scope.row.allRollbackNum }}</a></template>
|
|
|
- </el-table-column>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- <el-table
|
|
|
- :data="[onlineProcess]"
|
|
|
- border
|
|
|
- style="width: 100%"
|
|
|
- class="move-border-top fontScale"
|
|
|
- size="mini"
|
|
|
- >
|
|
|
- <el-table-column
|
|
|
- prop="name"
|
|
|
- label="预发具备率"
|
|
|
- align="center"
|
|
|
- width="calc(10/9)%"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="name"
|
|
|
- label="有预发不走预发占比"
|
|
|
- align="center"
|
|
|
- width="110"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="name"
|
|
|
- label="被动免提测率"
|
|
|
- align="center"
|
|
|
- width="calc(10/9)%"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- label="免提测上线占比"
|
|
|
- align="center"
|
|
|
- width="calc(10/9)%"
|
|
|
- >
|
|
|
- <template slot-scope="scope">{{ scope.row.noTestPercent | toPercent }}</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- label="回滚率"
|
|
|
- align="center"
|
|
|
- width="60"
|
|
|
- >
|
|
|
- <template slot-scope="scope">{{ scope.row.rollbackPercent | toPercent }}</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="name"
|
|
|
- label="免提测回滚占比"
|
|
|
- align="center"
|
|
|
- width="calc(10/9)%"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- label="预发回滚率"
|
|
|
- align="center"
|
|
|
- width="calc(10/9)%"
|
|
|
- >
|
|
|
- <template slot-scope="scope">{{ scope.row.preRollbackPercent | toPercent }}</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- label="小流量回滚率"
|
|
|
- align="center"
|
|
|
- width="75"
|
|
|
- >
|
|
|
- <template slot-scope="scope">{{ scope.row.preLess5MinPercent | toPercent }}</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- label="全量回滚率"
|
|
|
- align="center"
|
|
|
- width="75"
|
|
|
- >
|
|
|
- <template slot-scope="scope">{{ scope.row.allRollbackPercent | toPercent }}</template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- <el-table
|
|
|
- :data="[onlineProcess]"
|
|
|
- border
|
|
|
- style="width: 100%"
|
|
|
- class="move-border-top"
|
|
|
- size="mini"
|
|
|
- >
|
|
|
- <el-table-column
|
|
|
- label="预发停留<5min占比"
|
|
|
- style="width:25%;"
|
|
|
- align="center"
|
|
|
- >
|
|
|
- <template slot-scope="scope">{{ scope.row.name | toPercent }}</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="name"
|
|
|
- label="小流量停留<5min占比"
|
|
|
- style="width:25%;"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="name"
|
|
|
- label="裸奔上线占比"
|
|
|
- style="width:25%;"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="name"
|
|
|
- label="紧急上线占比"
|
|
|
- style="width:25%;"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- </el-table>
|
|
|
- <!-- 线上问题 -->
|
|
|
- <h4>2.线上问题</h4>
|
|
|
- <el-table
|
|
|
- :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
|
|
|
- :data="[problemData]"
|
|
|
- border
|
|
|
- style="width: 100%"
|
|
|
- class="move-border-top"
|
|
|
- size="mini"
|
|
|
- >
|
|
|
- <el-table-column
|
|
|
- prop="unResponsibilityTimeCount"
|
|
|
- label="未定责P5+问题"
|
|
|
- style="width:25%;"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="historyResponsibilityCount"
|
|
|
- label="遗留P5+问题定责"
|
|
|
- style="width:25%;"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="handleDurationPercent"
|
|
|
- label="线上问题处理完成率"
|
|
|
- style="width:25%;"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="aveHandleDuration"
|
|
|
- label="线上问题平均处理时长(H)"
|
|
|
- style="width:25%;"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- </el-table>
|
|
|
- <!-- 线上缺陷 -->
|
|
|
- <h4>3.线上缺陷</h4>
|
|
|
- <el-table
|
|
|
- :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
|
|
|
- label="缺陷分级"
|
|
|
- align="center"
|
|
|
- >
|
|
|
- <el-table-column
|
|
|
- label="P0"
|
|
|
- width="40"
|
|
|
- align="center"
|
|
|
+ <el-table-column
|
|
|
+ label="预发停留<5min占比"
|
|
|
+ style="width:25%;"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">{{ scope.row.name | toPercent }}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="小流量停留<5min占比"
|
|
|
+ style="width:25%;"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="裸奔上线占比"
|
|
|
+ style="width:25%;"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="紧急上线占比"
|
|
|
+ style="width:25%;"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ </el-table>
|
|
|
+ <!-- 线上问题 -->
|
|
|
+ <h4>2.线上问题</h4>
|
|
|
+ <el-table
|
|
|
+ :data="[problemData]"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ size="mini"
|
|
|
>
|
|
|
- <template slot-scope="scope">{{ scope.row.totalP0 | toFull }}</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="totalP1"
|
|
|
- label="P1"
|
|
|
- width="40"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="totalP2"
|
|
|
- label="P2"
|
|
|
- width="40"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="stepSmall"
|
|
|
- label="其他"
|
|
|
- width="50"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- label="缺陷阶段"
|
|
|
- align="center"
|
|
|
- >
|
|
|
- <el-table-column
|
|
|
- prop="stepIn"
|
|
|
- label="准入"
|
|
|
- width="49"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="stepTest"
|
|
|
- label="测试"
|
|
|
- width="49"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="stepOut"
|
|
|
- label="准出"
|
|
|
- width="49"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="stepPre"
|
|
|
- label="预发"
|
|
|
- width="49"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="stepSmall"
|
|
|
- label="其他"
|
|
|
- width="49"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="stepAllTest"
|
|
|
- label="众测"
|
|
|
- width="49"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="date"
|
|
|
- label="核心指标"
|
|
|
- align="center"
|
|
|
- >
|
|
|
- <el-table-column
|
|
|
- prop="avgBugs"
|
|
|
- label="人均bug数"
|
|
|
- align="center"
|
|
|
- width="80"
|
|
|
- />
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="offlineRepairPresent"
|
|
|
- label="bug修复率"
|
|
|
- align="center"
|
|
|
- />
|
|
|
- </el-table>
|
|
|
+ <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
|
|
|
+ :data="[problemData]"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ class="move-border-top"
|
|
|
+ size="mini"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ prop="unResponsibilityTimeCount"
|
|
|
+ label="未定责P5+问题"
|
|
|
+ style="width:25%;"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="historyResponsibilityCount"
|
|
|
+ label="遗留P5+问题定责"
|
|
|
+ style="width:25%;"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="handleDurationPercent"
|
|
|
+ label="线上问题处理完成率"
|
|
|
+ style="width:25%;"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="aveHandleDuration"
|
|
|
+ label="线上问题平均处理时长(H)"
|
|
|
+ style="width:25%;"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ </el-table>
|
|
|
+ <!-- 线下缺陷 -->
|
|
|
+ <h4>3.线下缺陷</h4>
|
|
|
+ <el-table
|
|
|
+ :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
|
|
|
+ label="缺陷分级"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ label="P0"
|
|
|
+ width="40"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">{{ scope.row.totalP0 | toFull }}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="totalP1"
|
|
|
+ label="P1"
|
|
|
+ width="40"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="totalP2"
|
|
|
+ label="P2"
|
|
|
+ width="40"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="stepSmall"
|
|
|
+ label="其他"
|
|
|
+ width="50"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="缺陷阶段"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ prop="stepIn"
|
|
|
+ label="准入"
|
|
|
+ width="49"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="stepTest"
|
|
|
+ label="测试"
|
|
|
+ width="49"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="stepOut"
|
|
|
+ label="准出"
|
|
|
+ width="49"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="stepPre"
|
|
|
+ label="预发"
|
|
|
+ width="49"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="stepSmall"
|
|
|
+ label="其他"
|
|
|
+ width="49"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="stepAllTest"
|
|
|
+ label="众测"
|
|
|
+ width="49"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="date"
|
|
|
+ label="核心指标"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ prop="avgBugs"
|
|
|
+ label="人均bug数"
|
|
|
+ align="center"
|
|
|
+ width="80"
|
|
|
+ />
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="offlineRepairPresent"
|
|
|
+ label="bug修复率"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ </el-table>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane v-if="pauseKey === 3" label="研发质量" name="second">
|
|
|
+ <!-- people -->
|
|
|
+ <el-table
|
|
|
+ :data="handlerData"
|
|
|
+ style="width: 100%;margin-top: 21.280px;"
|
|
|
+ border
|
|
|
+ size="mini"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="姓名"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column label="研发质量" align="center">
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="项目数"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="平均打回"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="线下bug数"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="Bug修复率"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="发布质量" align="center">
|
|
|
+ <el-table-column
|
|
|
+ prop="totalNum"
|
|
|
+ align="center"
|
|
|
+ label="上线次数"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="noTestPer"
|
|
|
+ label="免提测上线占比"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="rollbackPer"
|
|
|
+ align="center"
|
|
|
+ label="回滚率"
|
|
|
+ />
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <el-pagination class="pagination" align="center" :current-page="curIndex" :page-sizes="[5, 10, 20]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
</el-main>
|
|
|
</el-container>
|
|
|
</el-container>
|
|
@@ -401,7 +457,7 @@
|
|
|
|
|
|
<script>
|
|
|
import axios from 'axios'
|
|
|
-import { getBusiness, getDepartment, getOnlineProblem, getOnlineAllCount, getOnlineVitium } from '@/api/qualityCenter'
|
|
|
+import { getBusiness, getDepartment, getOnlineProblem, getOnlineAllCount, getOnlineVitium, getHandlerCount } from '@/api/qualityCenter'
|
|
|
|
|
|
export default {
|
|
|
filters: {
|
|
@@ -422,6 +478,7 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ handlerData: [],
|
|
|
onlineProcess: '',
|
|
|
businessData: [],
|
|
|
DefeatData: [],
|
|
@@ -432,12 +489,16 @@ export default {
|
|
|
},
|
|
|
loadingOnlineProcess: true,
|
|
|
activeIndex: '0',
|
|
|
- activeIndexSecondary: '3',
|
|
|
+ activeIndexSecondary: 'first',
|
|
|
// timeInterval: '',
|
|
|
pauseTreeNode: {},
|
|
|
- pauseKey: '',
|
|
|
+ pauseKey: 0,
|
|
|
+ pauseId: '',
|
|
|
+ curIndex: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ total: 0,
|
|
|
dealWithBusinessDate: [],
|
|
|
- timeInterval: [new Date().getTime() - 365 * 24 * 60 * 60 * 1000, new Date().getTime()]
|
|
|
+ timeInterval: [new Date().getTime() - 7 * 24 * 60 * 60 * 1000, new Date().getTime()]
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
@@ -473,9 +534,11 @@ export default {
|
|
|
this.dealWithBusinessDate = res.code === 0 ? res.data : ''
|
|
|
this.pauseTreeNode = this.dealWithBusinessDate[0] ? this.dealWithBusinessDate[0] : ''
|
|
|
this.pauseKey = 3
|
|
|
+ this.pauseId = this.pauseTreeNode.id ? this.pauseTreeNode.id : ''
|
|
|
})
|
|
|
this.deleteAfter()
|
|
|
},
|
|
|
+ // 部门table数据不需要缺陷数据
|
|
|
deleteAfter() {
|
|
|
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) => {
|
|
@@ -485,6 +548,7 @@ export default {
|
|
|
this.loadingOnlineProcess = false
|
|
|
}))
|
|
|
},
|
|
|
+ // 业务线table数据
|
|
|
allCountAndProlemGet() {
|
|
|
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) => {
|
|
@@ -495,6 +559,27 @@ export default {
|
|
|
this.loadingOnlineProcess = false
|
|
|
}))
|
|
|
},
|
|
|
+ // 标签页研发质量
|
|
|
+ handleClick() {
|
|
|
+ if (this.activeIndexSecondary === 'second') {
|
|
|
+ this.loadingOnlineProcess = true
|
|
|
+ const pretermitSearch = { id: this.pauseId, startTime: this.timeInterval[0], endTime: this.timeInterval[1], page: this.curIndex, perPage: this.pageSize }
|
|
|
+ getHandlerCount(pretermitSearch).then((res) => {
|
|
|
+ if (res.code === 0) {
|
|
|
+ this.handlerData = res.data.data
|
|
|
+ this.total = res.data.total
|
|
|
+ } else {
|
|
|
+ this.errorFun(res.msg)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.loadingOnlineProcess = false
|
|
|
+ } else if (this.activeIndexSecondary === 'first') {
|
|
|
+ this.deleteAfter()
|
|
|
+ } else {
|
|
|
+ this.errorFun('获取数据失败')
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 时间变化刷新页面
|
|
|
dataSearch() {
|
|
|
if (this.pauseKey === 0) {
|
|
|
this._initBusinessTreeAndBeginInfo()
|
|
@@ -502,6 +587,7 @@ export default {
|
|
|
this.initDepartmentTree()
|
|
|
}
|
|
|
},
|
|
|
+ // 刷新导航栏变化
|
|
|
handleSelect(key) {
|
|
|
if (key === '0') {
|
|
|
this.pauseKey = key
|
|
@@ -510,7 +596,7 @@ export default {
|
|
|
this.pauseKey = key
|
|
|
this.initDepartmentTree()
|
|
|
} else {
|
|
|
- this.errorFun()
|
|
|
+ this.errorFun('维度出错')
|
|
|
}
|
|
|
},
|
|
|
toReportView(e) {
|
|
@@ -519,24 +605,34 @@ export default {
|
|
|
toDefectView() {
|
|
|
this.$router.push({ name: '缺陷过程', query: { id: this.pauseTreeNode.id, type: this.pauseKey, startTime: this.timeInterval[0], endTime: this.timeInterval[1] }})
|
|
|
},
|
|
|
- handleSelectSecondary(key) {
|
|
|
- console.log(key)
|
|
|
- },
|
|
|
+ // 业务树
|
|
|
handleNodeClick(data) {
|
|
|
this.loadingOnlineProcess = true
|
|
|
this.pauseTreeNode = data
|
|
|
+ this.pauseId = data.id
|
|
|
this.pauseKey = data.type
|
|
|
- if (this.pauseKey === 3) {
|
|
|
+ if (this.pauseKey === 3 && this.activeIndexSecondary === 'first') {
|
|
|
this.deleteAfter()
|
|
|
return
|
|
|
+ } else if (this.pauseKey === 3 && this.activeIndexSecondary === 'second') {
|
|
|
+ this.handleClick()
|
|
|
+ return
|
|
|
}
|
|
|
this.allCountAndProlemGet()
|
|
|
},
|
|
|
- successFun() {
|
|
|
- this.$notify({ title: 'Success', message: 'initialization Successfully', type: 'success', duration: 2000 })
|
|
|
+ handleSizeChange(size) {
|
|
|
+ this.pageSize = size
|
|
|
+ this.handleClick()
|
|
|
+ },
|
|
|
+ handleCurrentChange(curIndex) {
|
|
|
+ this.curIndex = curIndex
|
|
|
+ this.handleClick()
|
|
|
},
|
|
|
- errorFun() {
|
|
|
- this.$notify({ title: 'Failed', message: 'initialization Failed', type: 'error', duration: 2000 })
|
|
|
+ successFun(successText) {
|
|
|
+ this.$notify({ title: 'Success', message: `${successText} Successfully`, type: 'success', duration: 2000 })
|
|
|
+ },
|
|
|
+ errorFun(errorText) {
|
|
|
+ this.$notify({ title: 'Failed', message: errorText, type: 'error', duration: 2000 })
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -580,22 +676,23 @@ export default {
|
|
|
width 82.7%
|
|
|
margin 0 0 2% 1.5%
|
|
|
flex 0 1 auto !important
|
|
|
- .combine-table >>> li
|
|
|
- width 65px
|
|
|
- font-size 16px
|
|
|
- margin-left 5px
|
|
|
- padding 10px 0px 0px 0px
|
|
|
- .combine-table >>> .el-menu
|
|
|
- border-bottom 0px
|
|
|
- margin -20px 0 15px 0
|
|
|
- .combine-table >>> .is-active
|
|
|
- font-weight bold
|
|
|
+ // .combine-table >>> li
|
|
|
+ // width 65px
|
|
|
+ // font-size 16px
|
|
|
+ // margin-left 5px
|
|
|
+ // padding 10px 0px 0px 0px
|
|
|
.combine-table >>> th
|
|
|
- background-color #F1F4F7 !important
|
|
|
+ background-color #fafafa !important
|
|
|
font-size 10px
|
|
|
+ .combine-table >>> .el-tabs__nav-wrap::after
|
|
|
+ height 1px
|
|
|
.combine-table >>> .move-border-top
|
|
|
border-top 0px
|
|
|
justify-content space-between
|
|
|
+ .combine-table >>> .el-tabs__header
|
|
|
+ margin 0
|
|
|
+ .pagination
|
|
|
+ margin-top 30px
|
|
|
.abviously >>> .is-leaf
|
|
|
background-color #FFFEF5 !important
|
|
|
.fontScale >>> .el-table__header-wrapper .cell
|