Browse Source

效率:半浮层(进度:90%)

洪海涛 4 years ago
parent
commit
54100ae799

+ 61 - 2
src/api/dataMarket.js

@@ -1,7 +1,7 @@
 import request from '@/utils/request'
-import { TeamManagement } from '@/apiConfig/api'
+// import { TeamManagement } from '@/apiConfig/api'
+const TeamManagement = 'http://127.0.0.1:4523/mock/368525'
 
-// const TeamManagement = 'http://127.0.0.1:4523/mock/368525'
 // 质量
 
 // 线上问题列表
@@ -99,3 +99,62 @@ export function getEfficiencyDataRequest(data) {
     data
   })
 }
+
+/* S 效率:半浮层数据接口 */
+// 需求平均交付周期:/dataMarket/efficiency/getRequireAvgData
+export function getRequireAvgData(data) {
+  return request({
+    url: TeamManagement + '/dataMarket/efficiency/getRequireAvgData',
+    method: 'post',
+    data
+  })
+}
+// 任务平均交付周期:/dataMarket/efficiency/getTaskData
+export function getTaskData(data) {
+  return request({
+    url: TeamManagement + '/dataMarket/efficiency/getTaskData',
+    method: 'post',
+    data
+  })
+}
+// 平均需求使用人力:/dataMarket/efficiency/getRequirePeopleData
+export function getRequirePeopleData(data) {
+  return request({
+    url: TeamManagement + '/dataMarket/efficiency/getRequirePeopleData',
+    method: 'post',
+    data
+  })
+}
+// 延期提测率:/dataMarket/efficiency/getDelayLaunchData
+export function getDelayLaunchData(data) {
+  return request({
+    url: TeamManagement + '/dataMarket/efficiency/getDelayLaunchData',
+    method: 'post',
+    data
+  })
+}
+// 延期准出率:/dataMarket/efficiency/getDelayReleaseData
+export function getDelayReleaseData(data) {
+  return request({
+    url: TeamManagement + '/dataMarket/efficiency/getDelayReleaseData',
+    method: 'post',
+    data
+  })
+}
+// 缺陷24小时修复率:/dataMarket/efficiency/bugRepairData
+export function bugRepairData(data) {
+  return request({
+    url: TeamManagement + '/dataMarket/efficiency/bugRepairData',
+    method: 'post',
+    data
+  })
+}
+// 缺陷平均修复时长:/dataMarket/efficiency/bugRepairData
+export function bugRepair2Data(data) {
+  return request({
+    url: TeamManagement + '/dataMarket/efficiency/bugRepairData',
+    method: 'post',
+    data
+  })
+}
+/* E 效率:半浮层数据接口 */

+ 6 - 7
src/views/dataBigManage/components/drawerModal/components/table.vue

@@ -1,5 +1,5 @@
 <template>
-  <div>
+  <div @click.stop>
     <el-table
       :data="tableList"
       class="bug_tableHeader"
@@ -18,19 +18,19 @@
         show-overflow-tooltip
       >
         <!-- 自定义表头 -->
-        <template slot="header" slot-scope="scope">
-          <div v-if="scope.column.tips">
-            {{ scope.column.label }}
+        <template slot="header">
+          <div v-if="columnItem.tips">
+            {{ columnItem.label }}
             <el-tooltip
               effect="dark"
-              :content="setContent(scope.column.tips)"
+              :content="columnItem.tips"
               placement="top"
               popper-class="cycleStatistic-tips">
               <i class="el-icon-info" />
             </el-tooltip>
           </div>
           <div v-else>
-            {{ scope.column.label }}
+            {{ columnItem.label }}
           </div>
         </template>
         <!-- 自定义列内容 -->
@@ -56,7 +56,6 @@
         </template>
       </el-table-column>
     </el-table>
-
   </div>
 </template>
 

+ 304 - 2
src/views/dataBigManage/components/drawerModal/drawerModalData.js

@@ -102,10 +102,302 @@ export const columns = {
       minWidth: 90,
       align: 'left'
     }
-  ]
+  ],
+  // 效率:
+  efficiency: {
+    // 需求周期
+    requirementColumns: [
+      {
+        label: '优先级',
+        key: 'priorityName',
+        minWidth: 90,
+        type: 'level',
+        align: 'left'
+      },
+      {
+        label: '需求名称',
+        key: 'name',
+        minWidth: 90,
+        align: 'left',
+        type: 'topTitle',
+        topName: 'REQUIREMENT',
+        topKey: 'id'
+      },
+      {
+        label: '需求交付周期',
+        key: 'id',
+        minWidth: 90,
+        tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '状态',
+        key: 'statusName',
+        minWidth: 90,
+        align: 'left'
+      }
+    ],
+    requirementColumnsTips: [
+      {
+        label: '需求交付周期',
+        key: 'id',
+        minWidth: 90,
+        tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '产品周期',
+        key: 'id',
+        minWidth: 90,
+        tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '研发周期',
+        key: 'id',
+        minWidth: 90,
+        tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '测试周期',
+        key: 'id',
+        minWidth: 90,
+        tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      }
+    ],
+    // 任务周期
+    taskColumns: [
+      {
+        label: '优先级',
+        key: 'priorityName',
+        minWidth: 90,
+        type: 'level',
+        align: 'left'
+      },
+      {
+        label: '任务名称',
+        key: 'name',
+        minWidth: 90,
+        align: 'left',
+        type: 'topTitle',
+        topName: 'TASK',
+        topKey: 'id'
+      },
+      {
+        label: '任务交付周期',
+        key: 'id',
+        minWidth: 90,
+        tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '状态',
+        key: 'statusName',
+        minWidth: 90,
+        align: 'left'
+      }
+    ],
+    taskColumnsTips: [
+      {
+        label: '任务交付周期',
+        key: 'id',
+        minWidth: 90,
+        tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '研发周期',
+        key: 'id',
+        minWidth: 90,
+        tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '测试周期',
+        key: 'id',
+        minWidth: 90,
+        tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      }
+    ],
+    // 需求人力
+    requirementPeopleColumns: [
+      {
+        label: '优先级',
+        key: 'priorityName',
+        minWidth: 90,
+        type: 'level',
+        align: 'left'
+      },
+      {
+        label: '需求名称',
+        key: 'name',
+        minWidth: 90,
+        align: 'left',
+        type: 'topTitle',
+        topName: 'REQUIREMENT',
+        topKey: 'id'
+      },
+      {
+        label: '需求使用人力',
+        key: 'id',
+        minWidth: 90,
+        // tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '状态',
+        key: 'statusName',
+        minWidth: 90,
+        align: 'left'
+      }
+    ],
+    requirementPeopleColumnsTips: [
+      {
+        label: '需求使用人力',
+        key: 'id',
+        minWidth: 90,
+        tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '开发人力',
+        key: 'id',
+        minWidth: 90,
+        tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '测试人力',
+        key: 'id',
+        minWidth: 90,
+        tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '联调人力',
+        key: 'id',
+        minWidth: 90,
+        tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      }
+    ],
+    // 缺陷修复时长
+    bugRepairDataColumns: [
+      {
+        label: '缺陷等级',
+        key: 'priorityName',
+        minWidth: 90,
+        type: 'level',
+        align: 'left'
+      },
+      {
+        label: '缺陷名称',
+        key: 'name',
+        minWidth: 90,
+        align: 'left',
+        type: 'topTitle',
+        topName: 'BUG',
+        topKey: 'id'
+      },
+      {
+        label: '缺陷修复时长',
+        key: 'id',
+        minWidth: 90,
+        // tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '状态',
+        key: 'statusName',
+        minWidth: 90,
+        align: 'left'
+      }
+    ],
+    // 延期提测率
+    delayLaunchDataColumns: [
+      {
+        label: '优先级',
+        key: 'priorityName',
+        minWidth: 90,
+        type: 'level',
+        align: 'left'
+      },
+      {
+        label: '任务名称',
+        key: 'name',
+        minWidth: 90,
+        align: 'left',
+        type: 'topTitle',
+        topName: 'TASK',
+        topKey: 'id'
+      },
+      {
+        label: '计划提测日期',
+        key: 'id',
+        minWidth: 90,
+        // tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '实际提测日期',
+        key: 'id',
+        minWidth: 90,
+        // tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '状态',
+        key: 'statusName',
+        minWidth: 90,
+        align: 'left'
+      }
+    ],
+    // 延期准出率
+    delayReleaseData2Columns: [
+      {
+        label: '优先级',
+        key: 'priorityName',
+        minWidth: 90,
+        type: 'level',
+        align: 'left'
+      },
+      {
+        label: '任务名称',
+        key: 'name',
+        minWidth: 90,
+        align: 'left',
+        type: 'topTitle',
+        topName: 'TASK',
+        topKey: 'id'
+      },
+      {
+        label: '计划准出日期',
+        key: 'id',
+        minWidth: 90,
+        // tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '实际准出日期',
+        key: 'id',
+        minWidth: 90,
+        // tips: '需求从开始到交付(已上线取实际上线时间,未上线取排期交付时间)的总周期 / 参与计算的需求总量',
+        align: 'left'
+      },
+      {
+        label: '状态',
+        key: 'statusName',
+        minWidth: 90,
+        align: 'left'
+      }
+    ]
+  }
 }
 // 时间轴数据
-export const timelineData = {
+export const timelineList = {
   time: [
     '24小时内修复',
     '>24小时修复',
@@ -115,6 +407,16 @@ export const timelineData = {
     '全部',
     'P0&P1',
     'P1以上'
+  ],
+  // 延期提测率
+  delayLaunchData: [
+    '全部提测',
+    '延期提测'
+  ],
+  // 延期准出率
+  delayLaunchData2: [
+    '全部准出',
+    '延期准出'
   ]
 }
 

+ 263 - 30
src/views/dataBigManage/components/drawerModal/index.vue

@@ -17,25 +17,25 @@
         <timeline :num="timelineData.firstActive" bgmargin :data="timelineData.first" @update="(params) => timeLineClick(params, 1)" />
       </div>
       <div v-if="isTimeLine(2)" ref="timeline2" class="qz-drawer-scll">
-        <timeline :num="timelineData.secondActive" :data="timelineData.second" @update="(params)=>timeLineClick(params, 2)" />
+        <timeline :num="timelineData.secondActive" :data="timelineData.second" :bgmargin="true" @update="(params)=>timeLineClick(params, 2)" />
       </div>
     </div>
 
     <!-- 表格 -->
     <dmTable v-if="openDrawer" v-loading="loading" :table-list="tableList" :total="tableList" :column="column" :table-height="tableHeight" @click.stop @change="dmTableChange">
       <template #bugStatusNameSlot="{scope}">
-        <div @click="print(scope)">自定义</div>
+        <div @click.stop="print(scope)">自定义</div>
       </template>
       <!-- 报告名称 -->
       <template #returnReasonSlot="{scope}">
-        <div v-if="scope.row.reportName">
+        <div v-if="scope.row.reportName" @click.stop>
           <div class="drawer-name" @click.stop="jumper(scope.row,'提测')">{{ scope.row.reportName }}</div>
           <div v-if="scope.row.returnReason" style="color: red">打开报告:{{ scope.row.returnReason }}</div>
         </div>
       </template>
       <!-- 报告人 -->
       <template #creatorObjectSlot="{scope}">
-        <div v-if="scope && scope.row && scope.row.creatorObject">{{ scope.row.creatorObject.name }}</div>
+        <div v-if="scope && scope.row && scope.row.creatorObject" @click.stop>{{ scope.row.creatorObject.name }}</div>
       </template>
     </dmTable>
     <!-- 下拉 -->
@@ -62,12 +62,21 @@ import { bugList } from '@/api/defectManage'
 import { getReportList } from '@/api/reportTemplate'
 import dmTable from './components/table.vue'
 import timeline from './components/timeline'
-import { columns, timelineData } from './drawerModalData'
+import { columns, timelineList } from './drawerModalData'
 import { EncryptId } from '@/utils/crypto-js'
 import Clickoutside from 'element-ui/src/utils/clickoutside'
 import { requirementQueryRequirementInfoList, taskList } from '@/api/projectIndex'
+import {
+  // 质量
+  getRequireAvgData, // 需求平均交付周期
+  getTaskData, // 任务平均交付周期
+  getRequirePeopleData, // 平均需求使用人力
+  getDelayLaunchData, // 延期提测率
+  getDelayReleaseData, // 延期准出率
+  bugRepairData, // 缺陷24小时修复率
+  bugRepair2Data // 缺陷平均修复时长
+} from '@/api/dataMarket'
 
-Object.freeze(timelineData)
 export default {
   name: 'DrawerModal',
   components: {
@@ -113,6 +122,7 @@ export default {
       column: [],
       ids: [],
       label: '',
+      activeLabel: '',
       subTitle: '',
       sourceData: null,
       timelineData: {
@@ -159,8 +169,32 @@ export default {
       this.tableList = []
       this.drawer = this.openDrawer
       this.headerTitle = this.drawerData.headerTitle
-      this.title = this.headerTitle === '质量' ? this.drawerData.label : this.drawerData.activeLabel
+      this.title = this.headerTitle.search(/质量|效率/) > -1 ? this.drawerData.label : this.drawerData.activeLabel
+      if (this.headerTitle === '效率') {
+        this.activeLabel = this.drawerData.activeLabel
+        if (this.drawerData.label === '需求平均交付周期') {
+          this.title = '需求周期'
+        }
+        if (this.drawerData.label === '任务平均交付周期') {
+          this.title = '任务周期'
+        }
+        if (this.drawerData.label === '平均需求使用人力') {
+          this.title = '需求人力'
+        }
+        if (this.drawerData.label === '缺陷平均修复时长') {
+          this.title = '缺陷修复时长'
+        }
+      }
       this.sourceData = this.drawerData.list
+      if (this.headerTitle === '效率' && this.title.search(/延期准出率|延期提测率/) < 0) {
+        this.sourceData = [
+          {
+            label: this.drawerData.label === '缺陷24小时修复率' ? '全部' : this.drawerData.label,
+            IdList: this.drawerData.IdList
+          },
+          ...this.drawerData.subCountList
+        ]
+      }
       // this.ids = this.drawerData.IdList.map(e => e)
       // this.ids = [14952, 15453, 15988, 16182, 17445, 17447, 17735, 18062, 18064, 18067, 19255, 19568, 19569, 19570, 19571, 19572, 19574, 19575, 19576, 19577, 19578, 19579, 19587, 19588, 19590, 19593, 19595, 19596, 19597, 19599, 19619, 19642, 19644, 19645, 19652, 19655, 19673, 19674, 19887, 19888, 19931, 19935, 19970, 20048, 20049, 20058, 20071, 20086, 20149, 20181, 20182, 20183, 20184, 20301, 20442, 20755, 20758, 20760, 20765, 20770, 20777, 20778, 20782, 20783, 20789, 20803, 20804, 20805, 20808, 20809, 20810, 20812, 20813, 20814, 20815, 20816, 20817, 20818, 20819, 20820, 20825, 20826, 20831, 20848, 20850, 20851]
       this.ids = [2049, 1662, 2050, 1644, 2051, 1657, 1670, 1715, 1728, 1692, 2048, 2052, 2047] // 提测报告
@@ -173,14 +207,10 @@ export default {
     // 设置时间轴
     setTimeLineData() {
       let { firstActive, first, secondActive, second } = this.timelineData
-
       if (this.title.search(/新增问题|新增缺陷|reopen|提测打回率|准出不通过/) < 0) {
-        if (this.title.search(/缺陷24小时修复率/) > -1) {
-          second = []
-        }
         if (this.headerTitle === '吞吐量') {
-          // first = this.sourceData.map(elm => elm.label)
           secondActive = 0
+          firstActive = 0
           first = []
           this.sourceData.forEach((elm, index) => {
             if (this.title === elm.label) {
@@ -190,13 +220,55 @@ export default {
           })
         }
         if (this.headerTitle === '效率') {
+          secondActive = 0
+          firstActive = 0
           first = []
+          second = []
+          if (this.title === '缺陷24小时修复率') {
+            first = [...timelineList.time]
+          }
+          if (this.title === '延期提测率') {
+            first = [...timelineList.delayLaunchData]
+          }
+          if (this.title === '延期准出率') {
+            first = [...timelineList.delayLaunchData2]
+          }
+          if (this.title.search(/延期提测率|延期准出率/) < 0) {
+            this.sourceData.forEach((elm, index) => {
+              let label = `${elm.label}`
+              if (this.activeLabel === label) {
+                if (this.title === '缺陷24小时修复率') {
+                  secondActive = index
+                } else {
+                  firstActive = index
+                }
+              }
+              if (this.title === '缺陷24小时修复率') {
+                second.push(label)
+              } else {
+                if (index === 0) {
+                  if (label === '需求平均交付周期') {
+                    label = '需求交付周期'
+                  }
+                  if (label === '任务平均交付周期') {
+                    label = '任务交付周期'
+                  }
+                  if (label === '平均需求使用人力') {
+                    label = '需求使用人力'
+                  }
+                  if (this.drawerData.label === '缺陷平均修复时长') {
+                    label = '全部'
+                  }
+                }
+                first.push(label)
+              }
+            })
+          }
         }
         this.timelineData = { firstActive, first, secondActive, second }
       }
     },
     handleClose() {
-      console.log(123)
       this.drawer = false
       this.$emit('update:openDrawer', this.drawer)
     },
@@ -228,16 +300,53 @@ export default {
           this.column = columns.taskListColumns.map(e => e)
         }
       }
+      if (this.headerTitle === '效率') {
+        let columnsKey = 'requirementColumns'
+
+        if (this.title === '任务周期') {
+          columnsKey = 'taskColumns'
+        }
+        if (this.title === '需求人力') {
+          columnsKey = 'requirementPeopleColumns'
+        }
+        if (this.title === '延期提测率') {
+          columnsKey = 'delayLaunchDataColumns'
+        }
+        if (this.title === '延期准出率') {
+          columnsKey = 'delayReleaseData2Columns'
+        }
+        if (this.title.search(/缺陷修复时长|缺陷24小时修复率/) > -1) {
+          columnsKey = 'bugRepairDataColumns'
+        }
+        const columnsTipsKey = `${columnsKey}Tips`
+        this.column = columns.efficiency[columnsKey].map((elm, index) => {
+          if (index === 2 && this.title.search(/任务周期|需求人力|需求周期/) > -1) {
+            return columns.efficiency[columnsTipsKey][this.timelineData.firstActive || 0]
+          }
+          return elm
+        })
+      }
     },
     // 时间轴点击事件
     timeLineClick({ value, name }, index) {
       this.pagingInit()
       if (index === 1) {
         if (this.headerTitle === '吞吐量') {
-          this.timelineData.firstActive = value
-          this.ids = this.sourceData[value].IdList
+          this.timelineData.firstActive = value || 0
+          this.ids = this.sourceData[value || 0].IdList
           this.title = name
         }
+        if (this.headerTitle === '效率') {
+          this.timelineData.firstActive = value || 0
+          if (this.title.search(/延期准出率|延期提测率/) > -1) {
+            this.ids
+          } else {
+            this.timelineData.firstActive = value || 0
+            this.ids = this.sourceData[value || 0].IdList
+          }
+
+          this.setColumn()
+        }
         this.setTableList()
         console.log(value, name, '第一条')
       }
@@ -247,13 +356,15 @@ export default {
     },
     // 设置列表数据
     setTableList() {
-      if (this.title.search(/新增缺陷|reopen/) > -1) {
-        this.loading = true
-        this.getBugStatisticData()
-      }
-      if (this.title.search(/提测打回率|准出不通过/) > -1) {
-        this.loading = true
-        this.setReportList()
+      if (this.headerTitle === '质量') {
+        if (this.title.search(/新增缺陷|reopen/) > -1) {
+          this.loading = true
+          this.getBugStatisticData()
+        }
+        if (this.title.search(/提测打回率|准出不通过/) > -1) {
+          this.loading = true
+          this.setReportList()
+        }
       }
       if (this.headerTitle === '吞吐量') {
         if (this.title.search(/需求/) > -1) {
@@ -263,6 +374,24 @@ export default {
           this.getTaskList()
         }
       }
+      if (this.headerTitle === '效率') {
+        if (this.title === '需求周期') {
+          this.loading = true
+          this.setRequireAvgData()
+        }
+        if (this.title === '任务周期') {
+          this.setTaskData()
+        }
+        if (this.title === '需求人力') {
+          this.setRequirePeopleData()
+        }
+        if (this.title === '缺陷修复时长') {
+          this.setbugRepair2Data()
+        }
+        if (this.title === '缺陷24小时修复率') {
+          this.setbugRepairData()
+        }
+      }
     },
     // 获取需求
     async getRequirementList() {
@@ -324,11 +453,103 @@ export default {
       const res = await getReportList(params)
       if (res.code === 200) {
         this.tableList = res.data
-        this.paging.pageTotal = res.total
+        paging.pageTotal = res.total
+        this.paging = { ...paging }
+        this.loading = false
+      }
+    },
+    /* S 效率:半浮层数据接口 */
+    // 需求平均交付周期
+    async setRequireAvgData() {
+      const paging = this.paging
+      const params = {
+        ...paging,
+        title: this.timelineData.first[this.timelineData.firstActive],
+        ids: this.ids
+      }
+      delete params.pageTotal
+      const res = await getRequireAvgData(params)
+      if (res.code === 200) {
+        this.tableList = res.data.list
+        paging.pageTotal = res.data.total
+        this.paging = { ...paging }
+        this.loading = false
+      }
+      console.log(res)
+    },
+    // 任务平均交付周期
+    async setTaskData() {
+      const paging = this.paging
+      const params = {
+        ...paging,
+        title: this.timelineData.first[this.timelineData.firstActive],
+        ids: this.ids
+      }
+      delete params.pageTotal
+      const res = await getTaskData(params)
+      if (res.code === 200) {
+        this.tableList = res.data.list
+        paging.pageTotal = res.data.total
+        this.paging = { ...paging }
+        this.loading = false
+      }
+      console.log(res)
+    },
+    // 平均需求使用人力
+    async   setRequirePeopleData() {
+      const paging = this.paging
+      const params = {
+        ...paging,
+        title: this.timelineData.first[this.timelineData.firstActive],
+        ids: this.ids
+      }
+      delete params.pageTotal
+      const res = await getRequirePeopleData(params)
+      if (res.code === 200) {
+        this.tableList = res.data.list
+        paging.pageTotal = res.data.total
+        this.paging = { ...paging }
+        this.loading = false
+      }
+      console.log(res)
+    },
+    // 缺陷平均修复时长
+    async setbugRepair2Data() {
+      const paging = this.paging
+      const params = {
+        ...paging,
+        title: this.timelineData.first[this.timelineData.firstActive],
+        ids: this.ids
+      }
+      delete params.pageTotal
+      const res = await bugRepair2Data(params)
+      if (res.code === 200) {
+        this.tableList = res.data.list
+        paging.pageTotal = res.data.total
         this.paging = { ...paging }
         this.loading = false
       }
+      console.log(res)
     },
+    // 缺陷24小时修复率
+    async setbugRepairData() {
+      const paging = this.paging
+      const params = {
+        ...paging,
+        title: this.timelineData.first[this.timelineData.firstActive],
+        ids: this.ids
+      }
+      delete params.pageTotal
+      const res = await bugRepairData(params)
+      if (res.code === 200) {
+        this.tableList = res.data.list
+        paging.pageTotal = res.data.total
+        this.paging = { ...paging }
+        this.loading = false
+      }
+      console.log(res)
+    },
+    /* E 效率:半浮层数据接口 */
     // 分页数据初始化
     pagingInit() {
       this.paging = {
@@ -342,6 +563,8 @@ export default {
       console.log(this.title)
       if (this.title.search(/状态停留分布图数据|状态累积流量图数据/) > -1) {
         this.tableHeight = 'calc(100vh - 363px)'
+      } else if (this.title.search(/需求周期|需求人力|任务周期|缺陷修复时长/) > -1) {
+        this.tableHeight = 'calc(100vh - 288px)'
       } else if (this.title.search(/需求方向分布图数据|模块分布图数据/) > -1) {
         this.tableHeight = 'calc(100vh - 200px)'
       } else if (this.title.search(/累计新增|PRD评审通过|技术准入|累计上线|累计hold|累计修复|累计reopen/) > -1) {
@@ -350,7 +573,7 @@ export default {
         // 吞吐量: 需求
         this.tableHeight = 'calc(100vh - 188px)'
       } else if (this.title === '缺陷24小时修复率') {
-        this.tableHeight = 'calc(100vh - 416px)'
+        this.tableHeight = 'calc(100vh - 328px)'
       } else if (this.title.search(/新增缺陷|提测打回率|reopen|准出不通过/) > -1) {
         this.tableHeight = 'calc(100vh - 136px)'
       } else {
@@ -372,6 +595,16 @@ export default {
         if (this.title.search(/项目/) > -1) {
           this.jumper(row, '项目')
         }
+      } else if (this.headerTitle === '效率') {
+        if (column.label.search(/需求/) > -1) {
+          this.jumper(row, '需求')
+        }
+        if (column.label.search(/任务/) > -1) {
+          this.jumper(row, '任务')
+        }
+        if (column.label.search(/缺陷/) > -1) {
+          this.jumper(row, '缺陷')
+        }
       } else {
         this.jumper(row, '缺陷')
       }
@@ -399,7 +632,7 @@ export default {
     isTimeLine(index = 1) {
       // 是第一条
       if (index === 1) {
-        return this.headerTitle.search(/吞吐量/) > -1
+        return this.headerTitle.search(/吞吐量|效率/) > -1
       }
       // 是第二条
       if (index === 2) {
@@ -453,14 +686,14 @@ export default {
 /* S 时间轴 */
 .qz-drawer-header {
   text-align: center;
-  //background: #F7F7F7;
-  //border-radius: 4px;
-  //min-height: 120px;
-  //margin: 20px 30px;
+  background: #F7F7F7;
+  border-radius: 4px;
+  min-height: 120px;
+  margin: 20px 30px;
   overflow: hidden;
 }
 .qz-drawer-padding {
-  //padding: 20px 0;
+  padding: 20px 0;
 }
 .qz-drawer-padding-s {
   padding: 1px 0;