瀏覽代碼

质量度量n版

panxiandiao_i 5 年之前
父節點
當前提交
151abdebe0
共有 1 個文件被更改,包括 198 次插入15 次删除
  1. 198 15
      src/views/quality/qualityMeasurement.vue

+ 198 - 15
src/views/quality/qualityMeasurement.vue

@@ -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>