소스 검색

t添加月刊

qinzhipeng_v@didiglobal.com 4 년 전
부모
커밋
94fdd897a1

BIN
src/assets/carousel/图层1.png


BIN
src/assets/carousel/图层2.png


BIN
src/assets/home_images/Group2x.png


BIN
src/assets/home_images/home.png


BIN
src/assets/home_images/home_inage.png


+ 8 - 0
src/router/index.js

@@ -61,6 +61,14 @@ export const constantRoutes = [{
   name: '首页',
   hidden: true
 },
+
+{
+  path: '/monthly',
+  name: '月刊详情',
+  component: () => import('@/views/monthly/index.vue'),
+  hidden: true
+},
+
 {
   path: '/env-platform',
   component: Layout,

+ 51 - 12
src/views/home/index.vue

@@ -34,16 +34,22 @@
     </el-menu>
     <div style="color: #FFFF">
       <div class="div-introduction">
-        <img
-          class="image-title"
-          style="width: 470px"
-          src="@/assets/home_images/banner_title@2x.png"
-        >
-        <br>
-        <span style="font-size: 17pt;">一站式质量效率平台,普惠你的工作</span><br>
-        <el-button plain class="enter-button" @click.native="handleSelect('4')"><svg-icon icon-class="project-enter" />项目管理</el-button>
-        <el-button plain class="enter-button" @click.native="handleSelect('1')"><svg-icon icon-class="env-enter" />环境管理</el-button>
-        <el-button plain class="enter-button" @click.native="handleSelect('9')"><svg-icon icon-class="tool-enter" />工具集合</el-button>
+        <div>
+          <img class="image-title" style="width: 470px" src="@/assets/home_images/banner_title@2x.png">
+          <br>
+          <span style="font-size: 17pt;">一站式质量效率平台,普惠你的工作</span><br>
+          <el-button plain class="enter-button" @click.native="handleSelect('4')"><svg-icon icon-class="project-enter" />项目管理</el-button>
+          <el-button plain class="enter-button" @click.native="handleSelect('1')"><svg-icon icon-class="env-enter" />环境管理</el-button>
+          <el-button plain class="enter-button" @click.native="handleSelect('9')"><svg-icon icon-class="tool-enter" />工具集合</el-button>
+        </div>
+        <div class="home-carousel">
+          <el-carousel :height="imgHeight + 'px'" indicator-position="outside">
+            <el-carousel-item v-for="(item, index) in abc_img" :key="index">
+              <img ref="image" :src="item.src" style="width: 100%; cursor: pointer;" @load="loadImage()" @click="image_carousel(item)">
+            </el-carousel-item>
+          </el-carousel>
+          <img src="@/assets/home_images/home_inage.png" style="position: absolute; left: 45%; width: 60%;">
+        </div>
       </div>
       <a href="#content1">
         <img
@@ -52,7 +58,7 @@
           src="@/assets/home_images/banner_icon_arrow@3x.png"
         >
       </a>
-      <img style="width: 100%;z-index: -1;" src="@/assets/home_images/banner_pic@3x.png">
+      <img style="width: 100%;z-index: -1;" src="@/assets/home_images/home.png">
     </div>
     <div id="content1" />
     <div class="div-main" style="height: 600pt;width 100%;text-align: center;">
@@ -127,6 +133,22 @@
 </template>
 
 <style scoped>
+.home-carousel {
+  width: 50%;
+  border-top:30px solid #f5f5f5;
+  border-right:30px solid #f5f5f5;
+  border-left:30px solid #f5f5f5;
+  border-radius: 12px;
+  background: #f5f5f5;
+}
+
+  .el-carousel__item:nth-child(2n) {
+    background-color: #99a9bf;
+  }
+
+  .el-carousel__item:nth-child(2n+1) {
+    background-color: #d3dce6;
+  }
 .el-dropdown:hover {
   cursor: pointer;
 }
@@ -148,9 +170,12 @@ div.div-login {
 div.div-introduction {
   position: absolute;
   font-size: 37pt;
-  top: 28.5%;
+  top: 17.5%;
   left: 8.3%;
   line-height: 50px;
+  width: 80%;
+  display: flex;
+  justify-content: space-between;
 }
 img.img-arrow {
   position: absolute;
@@ -275,7 +300,12 @@ export default {
   },
   data() {
     return {
+      abc_img: [
+        { src: require('@/assets/carousel/图层1.png') },
+        { src: require('@/assets/carousel/图层2.png') }
+      ],
       activeIndex2: '1',
+      imgHeight: 300,
       menuColor: 'transparent',
       processManage: true,
       screenWidth: '100%',
@@ -291,6 +321,9 @@ export default {
     ])
   },
   mounted() {
+    window.addEventListener('resize', () => {
+      this.imgHeight = this.$refs.image[0].height
+    })
     window.addEventListener('scroll', this.handleScroll, true)
     window.onresize = () => {
       return (() => {
@@ -306,6 +339,12 @@ export default {
     this.settingUserGetBiz()
   },
   methods: {
+    loadImage() {
+      this.imgHeight = this.$refs.image[0].height
+    },
+    image_carousel() {
+      this.$router.push({ name: '月刊详情' })
+    },
     async settingUserGetBiz() { // 获取人员默认业务线
       const res = await settingUserGetBiz()
       if (res.code === 200 && res.data) {

+ 53 - 0
src/views/monthly/index.vue

@@ -0,0 +1,53 @@
+<template>
+  <el-container>
+    <el-header class="monthly-title" style="padding: 0;">
+      <div class="monthly-zhihui"><img :src="logo"> 质惠</div>
+      <div class="monthly-title">
+        <div class="monthly-nav">项目管理</div>
+        <div class="monthly-nav">环境管理</div>
+        <div class="monthly-nav">工具集合</div>
+      </div>
+    </el-header>
+    <el-container>
+      <el-aside width="200px">Aside</el-aside>
+      <el-main>Main</el-main>
+    </el-container>
+  </el-container>
+</template>
+
+<script>
+import logoUrl from '@/assets/内页logo2@2x.png'
+export default {
+  data() {
+    return {
+      logo: logoUrl
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.monthly-title {
+  background: #409eff;
+  line-height: 60px;
+  color: #FFFFFF;
+  font-size: 14px;
+  display: flex;
+  justify-content: flex-start;
+}
+.monthly-zhihui {
+  width: 200px;
+  text-align: center;
+  color: #FFFFFF;
+  font-weight: 600;
+  font-size: 20pt;
+  font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
+  }
+.monthly-nav {
+  cursor: pointer;
+  margin-right: 50px;
+}
+.monthly-nav:hover {
+  background: #1e89f7;
+}
+</style>

+ 38 - 5
src/views/quality/components/requireDrawer.vue

@@ -1,6 +1,6 @@
 <template>
-  <el-drawer :title="Statistics.label" :visible.sync="drawer_" :direction="direction" :modal="false" size="50%" :before-close="handleClose">
-    <div class=" _font">{{ Statistics.total }}</div>
+  <el-drawer :title="Statistics.label" :visible.sync="drawer_" :direction="direction" :modal="false" size="100%" :before-close="handleClose">
+    <div class="_font">{{ Statistics.total }}</div>
     <el-table :data="tableData" style="width: 100%" class="integration-num">
       <el-table-column label="优先级" min-width="180">
         <template slot-scope="scope">
@@ -9,8 +9,8 @@
       </el-table-column>
       <el-table-column :label="Statistics.typeStr + '名称'" min-width="250">
         <template slot-scope="scope">
-          <div v-if="Statistics.typeStr === '需求' || Statistics.typeStr === '任务'">{{ scope.row.name }}</div>
-          <div v-if="Statistics.typeStr === '缺陷'">{{ scope.row.bugName }}</div>
+          <div v-if="Statistics.typeStr === '需求' || Statistics.typeStr === '任务'" class="drawer-name" @click="jumper(scope.row)">{{ scope.row.name }}</div>
+          <div v-if="Statistics.typeStr === '缺陷'" class="drawer-name" @click="jumper(scope.row)">{{ scope.row.bugName }}</div>
         </template>
       </el-table-column>
       <el-table-column label="状态" min-width="180">
@@ -35,6 +35,7 @@
 </template>
 
 <script>
+import { EncryptId } from '@/utils/crypto-js.js'
 import { getRequirement } from '@/api/requirement.js'
 import { taskList } from '@/api/taskIndex'
 import { bugList, bugGetEnum } from '@/api/defectManage'
@@ -53,7 +54,7 @@ export default {
       total: 0,
       paging: {
         curIndex: 1, // 分页
-        pageSize: 15 // 分页
+        pageSize: 10 // 分页
       },
       tableData: [{
         date: '2016-05-02',
@@ -119,6 +120,12 @@ export default {
       })
       return data
     },
+    jumper(val) {
+      console.log(name)
+      const bizId_id = EncryptId(`${val.bizId}_${val.id}`)
+      const newTab = this.$router.resolve({ name: this.Statistics.typeStr + '详情', query: { bizId_id: bizId_id }})
+      window.open(newTab.href, '_blank')
+    },
     async bugGetEnum() {
       const res = await bugGetEnum()
       if (res.code === 200) {
@@ -141,9 +148,16 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+>>> :focus{outline:0;}
 .integration-num {
   margin: 20px;
 }
+
+.drawer-name:hover {
+  color: #409eff;
+  cursor: pointer;
+}
+
 .div_priority {
   color: #ffffff;
   width:fit-content;
@@ -154,10 +168,29 @@ export default {
 ._font {
   font-size: 16px;
   color: #409eff;
+  margin: 20px 30px;
 }
 >>>.el-drawer__header {
     color: #444;
     font-size: 20px;
     font-weight: 500;
+    margin-bottom: 0px;
+    padding: 20px 30px 0;
+}
+ .el-drawer__wrapper {
+    width: 100%;
+    position: fixed;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 50%;
+    overflow: hidden;
+    margin: 0;
+    box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);
+}
+>>>.el-drawer__container {
+    left: 0;
+    right: 0;
+    width: 50%;
 }
 </style>

+ 303 - 298
src/views/quality/defectStatistics.vue

@@ -1,308 +1,312 @@
 <template>
-  <el-container class="defect-container">
-    <el-header class="defect-main" style="height: auto;">
-      <el-form :model="defectForm" class="demo-form-inline" :inline="true">
-        <el-form-item label="时间:">
-          <div class="date-select">
-            <span :class="[dateType==='week'?'date-active':'']" class="date-item" @click.stop="dateType='week';setDate('week')">本周</span>
-            <span :class="[dateType==='month'?'date-active':'']" class="date-item" @click.stop="dateType='month';setDate('month')">本月</span>
-            <span :class="[dateType==='year'?'date-active':'']" class="date-item" @click.stop="dateType='year';setDate('year')">本年</span>
-          </div>
-          <el-date-picker
-            v-model="stratAndEnd"
-            type="daterange"
-            align="right"
-            unlink-panels
-            range-separator="至"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-            size="small"
-            value-format="yyyy.MM.dd"
-            :default-time="['00:00:00','23:59:59']"
-            @change="dateType = ''"
-          />
-        </el-form-item>
-      </el-form>
-      <el-form :model="defectForm" class="demo-form-inline" :inline="true">
-        <el-form-item label="责任团队:">
-          <el-select
-            v-model="defectForm.team"
-            placeholder="请选择"
-            size="small"
-            clearable
-            filterable
-            multiple
-          >
-            <el-option-group
-              v-for="group in teamOptions"
-              :key="group.label"
-              :label="group.label"
-            >
-              <el-option
-                v-for="item in group.options"
-                :key="item.teamId"
-                :label="item.teamName"
-                :value="item.teamId"
-              />
-            </el-option-group>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="模块:">
-          <el-cascader
-            v-model="defectForm.moduleIds"
-            size="small"
-            clearable
-            collapse-tags
-            :props="{ multiple: true }"
-            :options="moduleList"
-            placeholder="请选择"
-            @click.native="bugDataGet"
-          />
-        </el-form-item>
-        <el-form-item>
-          <el-button type="primary" size="mini" @click="onSubmit">查询</el-button>
-        </el-form-item>
-      </el-form>
-      <div class="data-total">
-        <div v-for="(item,index) in Summary" :key="'Summary'+index" class="data-item" :class="['item'+ (index + 1)]">
-          <article>
-            <div class="item-top">
-              <div class="item-circle">
-                <img v-show="index === 0" src="../../../src/assets/defect_images/add.png">
-                <img v-show="index === 1" src="../../../src/assets/defect_images/repair.png">
-                <img v-show="index === 2" src="../../../src/assets/defect_images/reopen.png">
-              </div>
-              <span>{{ item.label }}</span>
-              <el-tooltip v-if="index === 0" class="item" effect="dark" content="统计时间区间内,新增的缺陷的数量" placement="top-start">
-                <i class="el-icon-info" />
-              </el-tooltip>
-              <el-tooltip v-if="index === 1" class="item" effect="dark" content="统计时间区间内,缺陷执行过更新状态为“已完成”的操作并且当前缺陷状态是“已完成”的缺陷数量" placement="top-start">
-                <i class="el-icon-info" />
-              </el-tooltip>
-              <el-tooltip v-if="index === 2" class="item" effect="dark" content="统计时间区间内,缺陷执行过更新状态为“Reopen”的操作并且当前缺陷状态为任意状态的缺陷数量" placement="top-start">
-                <i class="el-icon-info" />
-              </el-tooltip>
+  <div @click="drawer = false">
+    <el-container class="defect-container">
+      <el-header class="defect-main" style="height: auto;">
+        <el-form :model="defectForm" class="demo-form-inline" :inline="true">
+          <el-form-item label="时间:">
+            <div class="date-select">
+              <span :class="[dateType==='week'?'date-active':'']" class="date-item" @click.stop="dateType='week';setDate('week')">本周</span>
+              <span :class="[dateType==='month'?'date-active':'']" class="date-item" @click.stop="dateType='month';setDate('month')">本月</span>
+              <span :class="[dateType==='year'?'date-active':'']" class="date-item" @click.stop="dateType='year';setDate('year')">本年</span>
             </div>
-            <div class="item-title" @click="getRequiredNum(item)">{{ item.total }}</div>
-            <div class="item-line" />
-            <div v-show="Number(item.relativeRatio)>=0" class="item-up">环比:<i class="el-icon-caret-top" />{{ item.relativeRatio }}%</div>
-            <div v-show="Number(item.relativeRatio)<0" class="item-down">环比:<i class="el-icon-caret-bottom" />{{ item.relativeRatio.substring(1,item.relativeRatio.length) }}%</div>
-            <div v-show="item.relativeRatio === '--'" class="item-down">环比:{{ item.relativeRatio }}%</div>
-          </article>
-        </div>
-      </div>
-    </el-header>
-    <el-main class="charts-main">
-      <el-tabs v-model="activeName" @tab-click="tabChange">
-        <el-tab-pane name="first">
-          <span slot="label" class="tab-item">新增缺陷</span>
-        </el-tab-pane>
-        <el-tab-pane name="second">
-          <span slot="label" class="tab-item">累计修复缺陷</span>
-        </el-tab-pane>
-      </el-tabs>
-      <div v-show="activeName === 'first'" class="chart-item">
-        <h3>趋势图</h3>
-        <el-row type="flex" align="middle">
-          <el-col :span="24">
-            <div class="chart-contain">
-              <normal-echart v-if="echartsOption3" :chart-id="'chartThird'" :option="echartsOption3" />
-            </div>
-          </el-col>
-        </el-row>
-      </div>
-      <div class="chart-item">
-        <h3>分布图</h3>
-        <el-row type="flex" align="middle">
-          <el-col :span="4">
-            <el-select v-model="defectStatus" placeholder="缺陷状态" size="small" @change="defectStatusChange">
-              <el-option
-                v-for="item in defectStatusList"
-                :key="item.code"
-                :disabled="activeTab === 2&&item.code === 1"
-                :label="item.label"
-                :value="item.code"
-              />
+            <el-date-picker
+              v-model="stratAndEnd"
+              type="daterange"
+              align="right"
+              unlink-panels
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              size="small"
+              value-format="yyyy.MM.dd"
+              :default-time="['00:00:00','23:59:59']"
+              @change="dateType = ''"
+            />
+          </el-form-item>
+        </el-form>
+        <el-form :model="defectForm" class="demo-form-inline" :inline="true">
+          <el-form-item label="责任团队:">
+            <el-select
+              v-model="defectForm.team"
+              placeholder="请选择"
+              size="small"
+              clearable
+              filterable
+              multiple
+            >
+              <el-option-group
+                v-for="group in teamOptions"
+                :key="group.label"
+                :label="group.label"
+              >
+                <el-option
+                  v-for="item in group.options"
+                  :key="item.teamId"
+                  :label="item.teamName"
+                  :value="item.teamId"
+                />
+              </el-option-group>
             </el-select>
-          </el-col>
-          <el-col :span="4" :offset="16" class="col-flex-end">
-            <div class="bar-pie" :class="[barOrPie==='bar'?'active':'']" @click="changeBarOrPie('bar')">柱状图</div>
-            <div class="bar-pie" :class="[barOrPie==='pie'?'active':'']" @click="changeBarOrPie('pie')">饼图</div>
-          </el-col>
-        </el-row>
-        <el-row type="flex" align="middle">
-          <el-col :span="24">
-            <div class="chart-contain">
-              <child-chart :show.sync="showChild" :chart-type="barOrPie" :params="childParams" />
-              <normal-echart v-if="echartsOption1" :chart-id="'chartFirst'" :option="echartsOption1" @onClick="echartClick" />
-            </div>
-          </el-col>
-        </el-row>
-      </div>
-      <div class="chart-item">
-        <h3>平均修复时长</h3>
-        <el-row type="flex" align="middle">
-          <div class="repair-list">
-            <div v-for="(item, index) in repairTimeList" :key="'time'+index" class="repair-item" :class="[Number(item.relativeRatio)<0?'repair-slow':'repair-rise']">
-              <div class="repair-item-point" :class="['point'+index]" />
-              <span>{{ item.label }}</span>
-              <div class="repair-time">{{ item.total }}</div>
-              <div v-show="Number(item.relativeRatio)>=0" class="repair-up">环比:<i class="el-icon-caret-top" /><span>{{ item.relativeRatio }}%</span></div>
-              <div v-show="Number(item.relativeRatio)<0" class="repair-down">环比:<i class="el-icon-caret-bottom" /><span>{{ item.relativeRatio.substring(1,item.relativeRatio.length) }}%</span></div>
-              <div v-show="item.relativeRatio === '--'" class="repair-up">环比:<span>{{ item.relativeRatio }}%</span></div>
-            </div>
+          </el-form-item>
+          <el-form-item label="模块:">
+            <el-cascader
+              v-model="defectForm.moduleIds"
+              size="small"
+              clearable
+              collapse-tags
+              :props="{ multiple: true }"
+              :options="moduleList"
+              placeholder="请选择"
+              @click.native="bugDataGet"
+            />
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" size="mini" @click="onSubmit">查询</el-button>
+          </el-form-item>
+        </el-form>
+        <div class="data-total">
+          <div v-for="(item,index) in Summary" :key="'Summary'+index" class="data-item" :class="['item'+ (index + 1)]">
+            <article>
+              <div class="item-top">
+                <div class="item-circle">
+                  <img v-show="index === 0" src="../../../src/assets/defect_images/add.png">
+                  <img v-show="index === 1" src="../../../src/assets/defect_images/repair.png">
+                  <img v-show="index === 2" src="../../../src/assets/defect_images/reopen.png">
+                </div>
+                <span>{{ item.label }}</span>
+                <el-tooltip v-if="index === 0" class="item" effect="dark" content="统计时间区间内,新增的缺陷的数量" placement="top-start">
+                  <i class="el-icon-info" />
+                </el-tooltip>
+                <el-tooltip v-if="index === 1" class="item" effect="dark" content="统计时间区间内,缺陷执行过更新状态为“已完成”的操作并且当前缺陷状态是“已完成”的缺陷数量" placement="top-start">
+                  <i class="el-icon-info" />
+                </el-tooltip>
+                <el-tooltip v-if="index === 2" class="item" effect="dark" content="统计时间区间内,缺陷执行过更新状态为“Reopen”的操作并且当前缺陷状态为任意状态的缺陷数量" placement="top-start">
+                  <i class="el-icon-info" />
+                </el-tooltip>
+              </div>
+              <div class="item-title" @click.stop="getRequiredNum(item)">{{ item.total }}</div>
+              <div class="item-line" />
+              <div v-show="Number(item.relativeRatio)>=0" class="item-up">环比:<i class="el-icon-caret-top" />{{ item.relativeRatio }}%</div>
+              <div v-show="Number(item.relativeRatio)<0" class="item-down">环比:<i class="el-icon-caret-bottom" />{{ item.relativeRatio.substring(1,item.relativeRatio.length) }}%</div>
+              <div v-show="item.relativeRatio === '--'" class="item-down">环比:{{ item.relativeRatio }}%</div>
+            </article>
           </div>
-        </el-row>
-        <h3>去除节假日的修复时长</h3>
-        <el-row type="flex" align="middle">
-          <div class="repair-list">
-            <div v-for="(item, index) in repairTimeListNoHoliday" :key="'time'+index" class="repair-item" :class="[Number(item.relativeRatio)<0?'repair-slow':'repair-rise']">
-              <div class="repair-item-point" :class="['point'+index]" />
-              <span>{{ item.label }}</span>
-              <div class="repair-time">{{ item.total }}</div>
-              <div v-show="Number(item.relativeRatio)>=0" class="repair-up">环比:<i class="el-icon-caret-top" /><span>{{ item.relativeRatio }}%</span></div>
-              <div v-show="Number(item.relativeRatio)<0" class="repair-down">环比:<i class="el-icon-caret-bottom" /><span>{{ item.relativeRatio.substring(1,item.relativeRatio.length) }}%</span></div>
-              <div v-show="item.relativeRatio === '--'" class="repair-up">环比:<span>{{ item.relativeRatio }}%</span></div>
+        </div>
+      </el-header>
+      <el-main class="charts-main">
+        <el-tabs v-model="activeName" @tab-click="tabChange">
+          <el-tab-pane name="first">
+            <span slot="label" class="tab-item">新增缺陷</span>
+          </el-tab-pane>
+          <el-tab-pane name="second">
+            <span slot="label" class="tab-item">累计修复缺陷</span>
+          </el-tab-pane>
+        </el-tabs>
+        <div v-show="activeName === 'first'" class="chart-item">
+          <h3>趋势图</h3>
+          <el-row type="flex" align="middle">
+            <el-col :span="24">
+              <div class="chart-contain">
+                <normal-echart v-if="echartsOption3" :chart-id="'chartThird'" :option="echartsOption3" />
+              </div>
+            </el-col>
+          </el-row>
+        </div>
+        <div class="chart-item">
+          <h3>分布图</h3>
+          <el-row type="flex" align="middle">
+            <el-col :span="4">
+              <el-select v-model="defectStatus" placeholder="缺陷状态" size="small" @change="defectStatusChange">
+                <el-option
+                  v-for="item in defectStatusList"
+                  :key="item.code"
+                  :disabled="activeTab === 2&&item.code === 1"
+                  :label="item.label"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-col>
+            <el-col :span="4" :offset="16" class="col-flex-end">
+              <div class="bar-pie" :class="[barOrPie==='bar'?'active':'']" @click="changeBarOrPie('bar')">柱状图</div>
+              <div class="bar-pie" :class="[barOrPie==='pie'?'active':'']" @click="changeBarOrPie('pie')">饼图</div>
+            </el-col>
+          </el-row>
+          <el-row type="flex" align="middle">
+            <el-col :span="24">
+              <div class="chart-contain">
+                <child-chart :show.sync="showChild" :chart-type="barOrPie" :params="childParams" />
+                <normal-echart v-if="echartsOption1" :chart-id="'chartFirst'" :option="echartsOption1" @onClick="echartClick" />
+              </div>
+            </el-col>
+          </el-row>
+        </div>
+        <div class="chart-item">
+          <h3>平均修复时长</h3>
+          <el-row type="flex" align="middle">
+            <div class="repair-list">
+              <div v-for="(item, index) in repairTimeList" :key="'time'+index" class="repair-item" :class="[Number(item.relativeRatio)<0?'repair-slow':'repair-rise']">
+                <div class="repair-item-point" :class="['point'+index]" />
+                <span>{{ item.label }}</span>
+                <div class="repair-time">{{ item.total }}</div>
+                <div v-show="Number(item.relativeRatio)>=0" class="repair-up">环比:<i class="el-icon-caret-top" /><span>{{ item.relativeRatio }}%</span></div>
+                <div v-show="Number(item.relativeRatio)<0" class="repair-down">环比:<i class="el-icon-caret-bottom" /><span>{{ item.relativeRatio.substring(1,item.relativeRatio.length) }}%</span></div>
+                <div v-show="item.relativeRatio === '--'" class="repair-up">环比:<span>{{ item.relativeRatio }}%</span></div>
+              </div>
             </div>
-          </div>
-        </el-row>
-        <el-row type="flex" align="middle">
-          <el-col :span="4" class="col-flex-start">
-            <div class="off-holiday" :class="[offOnholiday==='off'?'selected':'']" @click="changeHoliday('off')">去除节假日</div>
-            <div class="on-holiday" :class="[offOnholiday==='on'?'selected':'']" @click="changeHoliday('on')">不去除节假日</div>
-          </el-col>
-          <el-col :span="4" :offset="16" class="col-flex-end">
-            <div class="bar-line" :class="[barOrLine==='line'?'active':'']" @click="changeBarOrLine('line')">折线图</div>
-            <div class="bar-line" :class="[barOrLine==='bar'?'active':'']" @click="changeBarOrLine('bar')">柱状图</div>
-          </el-col>
-        </el-row>
-        <el-row type="flex" align="middle">
-          <el-col :span="24">
-            <div class="chart-contain">
-              <normal-echart v-if="echartsOption2" :chart-id="'chartSecond'" :option="echartsOption2" />
+          </el-row>
+          <h3>去除节假日的修复时长</h3>
+          <el-row type="flex" align="middle">
+            <div class="repair-list">
+              <div v-for="(item, index) in repairTimeListNoHoliday" :key="'time'+index" class="repair-item" :class="[Number(item.relativeRatio)<0?'repair-slow':'repair-rise']">
+                <div class="repair-item-point" :class="['point'+index]" />
+                <span>{{ item.label }}</span>
+                <div class="repair-time">{{ item.total }}</div>
+                <div v-show="Number(item.relativeRatio)>=0" class="repair-up">环比:<i class="el-icon-caret-top" /><span>{{ item.relativeRatio }}%</span></div>
+                <div v-show="Number(item.relativeRatio)<0" class="repair-down">环比:<i class="el-icon-caret-bottom" /><span>{{ item.relativeRatio.substring(1,item.relativeRatio.length) }}%</span></div>
+                <div v-show="item.relativeRatio === '--'" class="repair-up">环比:<span>{{ item.relativeRatio }}%</span></div>
+              </div>
             </div>
-          </el-col>
-        </el-row>
-      </div>
-      <div class="chart-item">
-        <h3>模块分布</h3>
-        <el-table
-          :data="moduleData"
-          style="width: 100%;margin-bottom: 20px;"
-          row-key="id"
-          :border="false"
-          :max-height="350"
-          :tree-props="{children: 'childModuleDatas', hasChildren: 'hasChildren'}"
-          :header-cell-style="{background: 'rgba(232,232,232,0.6)',color:'#333333'}"
-          class="repair-table"
-          @sort-change="moduleTableSortChange"
-        >
-          <el-table-column prop="name" label="模块" />
-          <el-table-column v-if="activeTab=== 1" prop="newData" label="新增" sortable="custom" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <span class="table-repair-item1 repair-span">{{ scope.row.newData.total }}</span>
-              <span class="repair-span">{{ scope.row.newData.detail[0].label }}:{{ scope.row.newData.detail[0].total }}</span>
-              <span class="repair-span">{{ scope.row.newData.detail[1].label }}:{{ scope.row.newData.detail[1].total }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column prop="newAndReopenData" label="待修复/Reopen" sortable="custom">
-            <template slot-scope="scope">
-              <span class="table-repair-item2 repair-span2">{{ scope.row.newAndReopenData.total }}</span>
-              <span class="repair-span">{{ scope.row.newAndReopenData.detail[0].label }}:{{ scope.row.newAndReopenData.detail[0].total }}</span>
-              <span class="repair-span">{{ scope.row.newAndReopenData.detail[1].label }}:{{ scope.row.newAndReopenData.detail[1].total }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column prop="waitTestData" label="待测试" sortable="custom">
-            <template slot-scope="scope">
-              <span class="table-repair-item2 repair-span2">{{ scope.row.waitTestData.total }}</span>
-              <span class="repair-span">{{ scope.row.waitTestData.detail[0].label }}:{{ scope.row.waitTestData.detail[0].total }}</span>
-              <span class="repair-span">{{ scope.row.waitTestData.detail[1].label }}:{{ scope.row.waitTestData.detail[1].total }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column prop="repairData" label="已完成" sortable="custom">
-            <template slot-scope="scope">
-              <span class="table-repair-item2 repair-span2">{{ scope.row.repairData.total }}</span>
-              <span class="repair-span">{{ scope.row.repairData.detail[0].label }}:{{ scope.row.repairData.detail[0].total }}</span>
-              <span class="repair-span">{{ scope.row.repairData.detail[1].label }}:{{ scope.row.repairData.detail[1].total }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column prop="repairTimeAvgData" label="平均修复时长" min-width="120">
-            <template slot-scope="scope">
-              <span class="table-repair-item3 repair-span">{{ scope.row.repairTimeAvgData.total }}</span>
-              <span class="repair-span">{{ scope.row.repairTimeAvgData.detail[0].label }}:{{ scope.row.repairTimeAvgData.detail[0].total }}</span>
-              <span class="repair-span">{{ scope.row.repairTimeAvgData.detail[1].label }}:{{ scope.row.repairTimeAvgData.detail[1].total }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column prop="repairTimeAvgPurgeNhData" label="平均修复时长(去除节假日)" min-width="120">
-            <template slot-scope="scope">
-              <span class="table-repair-item4 repair-span">{{ scope.row.repairTimeAvgPurgeNhData.total }}</span>
-              <span class="repair-span">{{ scope.row.repairTimeAvgPurgeNhData.detail[0].label }}:{{ scope.row.repairTimeAvgPurgeNhData.detail[0].total }}</span>
-              <span class="repair-span">{{ scope.row.repairTimeAvgPurgeNhData.detail[1].label }}:{{ scope.row.repairTimeAvgPurgeNhData.detail[1].total }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-      <div class="chart-item">
-        <h3>责任人分布</h3>
-        <el-table
-          :data="memberData"
-          style="width: 100%;margin-bottom: 20px;"
-          row-key="id"
-          :border="false"
-          :max-height="350"
-          :tree-props="{children: 'childModuleDatas', hasChildren: 'hasChildren'}"
-          :header-cell-style="{background: 'rgba(232,232,232,0.6)',color:'#333333'}"
-          class="repair-table"
-          @sort-change="memberTableSortChange"
-        >
-          <el-table-column prop="name" label="姓名" />
-          <el-table-column v-if="activeTab=== 1" prop="newData" label="新增" sortable="custom" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <span class="table-repair-item1 repair-span">{{ scope.row.newData.total }}</span>
-              <span class="repair-span">{{ scope.row.newData.detail[0].label }}:{{ scope.row.newData.detail[0].total }}</span>
-              <span class="repair-span">{{ scope.row.newData.detail[1].label }}:{{ scope.row.newData.detail[1].total }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column prop="newAndReopenData" label="待修复/Reopen" sortable="custom">
-            <template slot-scope="scope">
-              <span class="table-repair-item2 repair-span2">{{ scope.row.newAndReopenData.total }}</span>
-              <span class="repair-span">{{ scope.row.newAndReopenData.detail[0].label }}:{{ scope.row.newAndReopenData.detail[0].total }}</span>
-              <span class="repair-span">{{ scope.row.newAndReopenData.detail[1].label }}:{{ scope.row.newAndReopenData.detail[1].total }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column prop="waitTestData" label="待测试" sortable="custom">
-            <template slot-scope="scope">
-              <span class="table-repair-item2 repair-span2">{{ scope.row.waitTestData.total }}</span>
-              <span class="repair-span">{{ scope.row.waitTestData.detail[0].label }}:{{ scope.row.waitTestData.detail[0].total }}</span>
-              <span class="repair-span">{{ scope.row.waitTestData.detail[1].label }}:{{ scope.row.waitTestData.detail[1].total }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column prop="repairData" label="已完成" sortable="custom">
-            <template slot-scope="scope">
-              <span class="table-repair-item2 repair-span2">{{ scope.row.repairData.total }}</span>
-              <span class="repair-span">{{ scope.row.repairData.detail[0].label }}:{{ scope.row.repairData.detail[0].total }}</span>
-              <span class="repair-span">{{ scope.row.repairData.detail[1].label }}:{{ scope.row.repairData.detail[1].total }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column prop="repairTimeAvgData" label="平均修复时长" min-width="120">
-            <template slot-scope="scope">
-              <span class="table-repair-item3 repair-span">{{ scope.row.repairTimeAvgData.total }}</span>
-              <span class="repair-span">{{ scope.row.repairTimeAvgData.detail[0].label }}:{{ scope.row.repairTimeAvgData.detail[0].total }}</span>
-              <span class="repair-span">{{ scope.row.repairTimeAvgData.detail[1].label }}:{{ scope.row.repairTimeAvgData.detail[1].total }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column prop="repairTimeAvgPurgeNhData" label="平均修复时长(去除节假日)" min-width="120">
-            <template slot-scope="scope">
-              <span class="table-repair-item4 repair-span">{{ scope.row.repairTimeAvgPurgeNhData.total }}</span>
-              <span class="repair-span">{{ scope.row.repairTimeAvgPurgeNhData.detail[0].label }}:{{ scope.row.repairTimeAvgPurgeNhData.detail[0].total }}</span>
-              <span class="repair-span">{{ scope.row.repairTimeAvgPurgeNhData.detail[1].label }}:{{ scope.row.repairTimeAvgPurgeNhData.detail[1].total }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
+          </el-row>
+          <el-row type="flex" align="middle">
+            <el-col :span="4" class="col-flex-start">
+              <div class="off-holiday" :class="[offOnholiday==='off'?'selected':'']" @click="changeHoliday('off')">去除节假日</div>
+              <div class="on-holiday" :class="[offOnholiday==='on'?'selected':'']" @click="changeHoliday('on')">不去除节假日</div>
+            </el-col>
+            <el-col :span="4" :offset="16" class="col-flex-end">
+              <div class="bar-line" :class="[barOrLine==='line'?'active':'']" @click="changeBarOrLine('line')">折线图</div>
+              <div class="bar-line" :class="[barOrLine==='bar'?'active':'']" @click="changeBarOrLine('bar')">柱状图</div>
+            </el-col>
+          </el-row>
+          <el-row type="flex" align="middle">
+            <el-col :span="24">
+              <div class="chart-contain">
+                <normal-echart v-if="echartsOption2" :chart-id="'chartSecond'" :option="echartsOption2" />
+              </div>
+            </el-col>
+          </el-row>
+        </div>
+        <div class="chart-item">
+          <h3>模块分布</h3>
+          <el-table
+            :data="moduleData"
+            style="width: 100%;margin-bottom: 20px;"
+            row-key="id"
+            :border="false"
+            :max-height="350"
+            :tree-props="{children: 'childModuleDatas', hasChildren: 'hasChildren'}"
+            :header-cell-style="{background: 'rgba(232,232,232,0.6)',color:'#333333'}"
+            class="repair-table"
+            @sort-change="moduleTableSortChange"
+          >
+            <el-table-column prop="name" label="模块" />
+            <el-table-column v-if="activeTab=== 1" prop="newData" label="新增" sortable="custom" show-overflow-tooltip>
+              <template slot-scope="scope">
+                <span class="table-repair-item1 repair-span">{{ scope.row.newData.total }}</span>
+                <span class="repair-span">{{ scope.row.newData.detail[0].label }}:{{ scope.row.newData.detail[0].total }}</span>
+                <span class="repair-span">{{ scope.row.newData.detail[1].label }}:{{ scope.row.newData.detail[1].total }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="newAndReopenData" label="待修复/Reopen" sortable="custom">
+              <template slot-scope="scope">
+                <span class="table-repair-item2 repair-span2">{{ scope.row.newAndReopenData.total }}</span>
+                <span class="repair-span">{{ scope.row.newAndReopenData.detail[0].label }}:{{ scope.row.newAndReopenData.detail[0].total }}</span>
+                <span class="repair-span">{{ scope.row.newAndReopenData.detail[1].label }}:{{ scope.row.newAndReopenData.detail[1].total }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="waitTestData" label="待测试" sortable="custom">
+              <template slot-scope="scope">
+                <span class="table-repair-item2 repair-span2">{{ scope.row.waitTestData.total }}</span>
+                <span class="repair-span">{{ scope.row.waitTestData.detail[0].label }}:{{ scope.row.waitTestData.detail[0].total }}</span>
+                <span class="repair-span">{{ scope.row.waitTestData.detail[1].label }}:{{ scope.row.waitTestData.detail[1].total }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="repairData" label="已完成" sortable="custom">
+              <template slot-scope="scope">
+                <span class="table-repair-item2 repair-span2">{{ scope.row.repairData.total }}</span>
+                <span class="repair-span">{{ scope.row.repairData.detail[0].label }}:{{ scope.row.repairData.detail[0].total }}</span>
+                <span class="repair-span">{{ scope.row.repairData.detail[1].label }}:{{ scope.row.repairData.detail[1].total }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="repairTimeAvgData" label="平均修复时长" min-width="120">
+              <template slot-scope="scope">
+                <span class="table-repair-item3 repair-span">{{ scope.row.repairTimeAvgData.total }}</span>
+                <span class="repair-span">{{ scope.row.repairTimeAvgData.detail[0].label }}:{{ scope.row.repairTimeAvgData.detail[0].total }}</span>
+                <span class="repair-span">{{ scope.row.repairTimeAvgData.detail[1].label }}:{{ scope.row.repairTimeAvgData.detail[1].total }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="repairTimeAvgPurgeNhData" label="平均修复时长(去除节假日)" min-width="120">
+              <template slot-scope="scope">
+                <span class="table-repair-item4 repair-span">{{ scope.row.repairTimeAvgPurgeNhData.total }}</span>
+                <span class="repair-span">{{ scope.row.repairTimeAvgPurgeNhData.detail[0].label }}:{{ scope.row.repairTimeAvgPurgeNhData.detail[0].total }}</span>
+                <span class="repair-span">{{ scope.row.repairTimeAvgPurgeNhData.detail[1].label }}:{{ scope.row.repairTimeAvgPurgeNhData.detail[1].total }}</span>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+        <div class="chart-item">
+          <h3>责任人分布</h3>
+          <el-table
+            :data="memberData"
+            style="width: 100%;margin-bottom: 20px;"
+            row-key="id"
+            :border="false"
+            :max-height="350"
+            :tree-props="{children: 'childModuleDatas', hasChildren: 'hasChildren'}"
+            :header-cell-style="{background: 'rgba(232,232,232,0.6)',color:'#333333'}"
+            class="repair-table"
+            @sort-change="memberTableSortChange"
+          >
+            <el-table-column prop="name" label="姓名" />
+            <el-table-column v-if="activeTab=== 1" prop="newData" label="新增" sortable="custom" show-overflow-tooltip>
+              <template slot-scope="scope">
+                <span class="table-repair-item1 repair-span">{{ scope.row.newData.total }}</span>
+                <span class="repair-span">{{ scope.row.newData.detail[0].label }}:{{ scope.row.newData.detail[0].total }}</span>
+                <span class="repair-span">{{ scope.row.newData.detail[1].label }}:{{ scope.row.newData.detail[1].total }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="newAndReopenData" label="待修复/Reopen" sortable="custom">
+              <template slot-scope="scope">
+                <span class="table-repair-item2 repair-span2">{{ scope.row.newAndReopenData.total }}</span>
+                <span class="repair-span">{{ scope.row.newAndReopenData.detail[0].label }}:{{ scope.row.newAndReopenData.detail[0].total }}</span>
+                <span class="repair-span">{{ scope.row.newAndReopenData.detail[1].label }}:{{ scope.row.newAndReopenData.detail[1].total }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="waitTestData" label="待测试" sortable="custom">
+              <template slot-scope="scope">
+                <span class="table-repair-item2 repair-span2">{{ scope.row.waitTestData.total }}</span>
+                <span class="repair-span">{{ scope.row.waitTestData.detail[0].label }}:{{ scope.row.waitTestData.detail[0].total }}</span>
+                <span class="repair-span">{{ scope.row.waitTestData.detail[1].label }}:{{ scope.row.waitTestData.detail[1].total }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="repairData" label="已完成" sortable="custom">
+              <template slot-scope="scope">
+                <span class="table-repair-item2 repair-span2">{{ scope.row.repairData.total }}</span>
+                <span class="repair-span">{{ scope.row.repairData.detail[0].label }}:{{ scope.row.repairData.detail[0].total }}</span>
+                <span class="repair-span">{{ scope.row.repairData.detail[1].label }}:{{ scope.row.repairData.detail[1].total }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="repairTimeAvgData" label="平均修复时长" min-width="120">
+              <template slot-scope="scope">
+                <span class="table-repair-item3 repair-span">{{ scope.row.repairTimeAvgData.total }}</span>
+                <span class="repair-span">{{ scope.row.repairTimeAvgData.detail[0].label }}:{{ scope.row.repairTimeAvgData.detail[0].total }}</span>
+                <span class="repair-span">{{ scope.row.repairTimeAvgData.detail[1].label }}:{{ scope.row.repairTimeAvgData.detail[1].total }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="repairTimeAvgPurgeNhData" label="平均修复时长(去除节假日)" min-width="120">
+              <template slot-scope="scope">
+                <span class="table-repair-item4 repair-span">{{ scope.row.repairTimeAvgPurgeNhData.total }}</span>
+                <span class="repair-span">{{ scope.row.repairTimeAvgPurgeNhData.detail[0].label }}:{{ scope.row.repairTimeAvgPurgeNhData.detail[0].total }}</span>
+                <span class="repair-span">{{ scope.row.repairTimeAvgPurgeNhData.detail[1].label }}:{{ scope.row.repairTimeAvgPurgeNhData.detail[1].total }}</span>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+      </el-main>
+      <div @click.stop>
+        <require-drawer :drawer="drawer" :data="requireList" @clone="clone" />
       </div>
-    </el-main>
-    <require-drawer :drawer="drawer" :data="requireList" @clone="clone" />
-  </el-container>
+    </el-container>
+  </div>
 </template>
 <script>
 import moment from 'moment'
@@ -429,6 +433,7 @@ export default {
       }))
     },
     setDate(type) { // 日期筛选
+      this.drawer = false
       let startDate = null
       let endDate = null
       switch (type) {

+ 169 - 164
src/views/quality/requireStatistics.vue

@@ -1,173 +1,177 @@
 <template>
-  <el-container class="defect-container">
-    <el-header class="defect-main" style="height: auto;">
-      <el-form :model="chartForm" class="demo-form-inline" :inline="true">
-        <el-form-item label="时间:">
-          <div class="date-select">
-            <span :class="[dateType==='week'?'date-active':'']" class="date-item" @click.stop="dateType='week';setDate('week')">本周</span>
-            <span :class="[dateType==='month'?'date-active':'']" class="date-item" @click.stop="dateType='month';setDate('month')">本月</span>
-            <span :class="[dateType==='year'?'date-active':'']" class="date-item" @click.stop="dateType='year';setDate('year')">本年</span>
+  <div @click="drawer = false">
+    <el-container class="defect-container">
+      <el-header class="defect-main" style="height: auto;">
+        <el-form :model="chartForm" class="demo-form-inline" :inline="true">
+          <el-form-item label="时间:">
+            <div class="date-select">
+              <span :class="[dateType==='week'?'date-active':'']" class="date-item" @click.stop="dateType='week';setDate('week')">本周</span>
+              <span :class="[dateType==='month'?'date-active':'']" class="date-item" @click.stop="dateType='month';setDate('month')">本月</span>
+              <span :class="[dateType==='year'?'date-active':'']" class="date-item" @click.stop="dateType='year';setDate('year')">本年</span>
+            </div>
+            <el-date-picker
+              v-model="stratAndEnd"
+              type="daterange"
+              align="right"
+              unlink-panels
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              size="small"
+              value-format="yyyy.MM.dd"
+              :default-time="['00:00:00','23:59:59']"
+              @change="dateType = ''"
+            />
+          </el-form-item>
+        </el-form>
+        <el-form :model="chartForm" class="demo-form-inline" :inline="true">
+          <el-form-item label="团队:">
+            <el-select
+              v-model="chartForm.team"
+              placeholder="请选择"
+              size="small"
+              clearable
+              filterable
+              multiple
+            >
+              <el-option-group
+                v-for="group in teamOptions"
+                :key="group.label"
+                :label="group.label"
+              >
+                <el-option
+                  v-for="item in group.options"
+                  :key="item.teamId"
+                  :label="item.teamName"
+                  :value="item.teamId"
+                />
+              </el-option-group>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="需求方向:">
+            <el-cascader
+              v-model="chartForm.rqmtOrntIds"
+              size="small"
+              clearable
+              collapse-tags
+              :props="{
+                value: 'id',
+                label: 'rqmtOrntName',
+                children: 'childRqmtOrnts',
+                multiple: true
+              }"
+              :options="moduleList"
+              placeholder="请选择"
+            />
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" size="mini" @click="onSubmit">查询</el-button>
+          </el-form-item>
+        </el-form>
+        <div class="data-total">
+          <div v-for="(item,index) in Summary" :key="'Summary'+index" class="data-item" :class="['item'+ (index + 1)]">
+            <article>
+              <div class="item-top">
+                <div class="item-circle">
+                  <img v-show="index === 0" src="../../../src/assets/defect_images/add.png">
+                  <img v-show="index === 1" src="../../../src/assets/defect_images/repair.png">
+                  <img v-show="index === 2" src="../../../src/assets/defect_images/reopen.png">
+                  <img v-show="index === 3" src="../../../src/assets/defect_images/reopen.png">
+                </div>
+                <span>{{ item.label }}</span>
+                <el-tooltip v-if="index === 0" class="item" effect="dark" content="统计区间内,新建的需求数量" placement="top-start">
+                  <i class="el-icon-info" />
+                </el-tooltip>
+                <el-tooltip v-if="index === 1" class="item" effect="dark" content="需求最近一次更新状态为“PRD评审通过”在统计区间内,并且当前状态是“PRD评审通过”及之后状态的需求数量" placement="top-start">
+                  <i class="el-icon-info" />
+                </el-tooltip>
+                <el-tooltip v-if="index === 2" class="item" effect="dark" content="需求最近一次更新状态为“已上线”在统计区间内,并且当前状态是“已上线”及之后状态的需求数量" placement="top-start">
+                  <i class="el-icon-info" />
+                </el-tooltip>
+                <el-tooltip v-if="index === 3" class="item" effect="dark" content="需求最近一次更新状态为“Hold”在统计区间内,并且当前状态为“Hold”的需求数量" placement="top-start">
+                  <i class="el-icon-info" />
+                </el-tooltip>
+              </div>
+              <div class="item-title" @click.stop="getRequiredNum(item)">{{ item.total }}</div>
+              <div class="item-line" />
+              <div v-show="Number(item.relativeRatio)>=0" class="item-up">环比:<i class="el-icon-caret-top" />{{ item.relativeRatio }}%</div>
+              <div v-show="Number(item.relativeRatio)<0" class="item-down">环比:<i class="el-icon-caret-bottom" />{{ item.relativeRatio.substring(1,item.relativeRatio.length) }}%</div>
+              <div v-show="item.relativeRatio === '--'" class="item-down">环比:{{ item.relativeRatio }}%</div>
+            </article>
           </div>
-          <el-date-picker
-            v-model="stratAndEnd"
-            type="daterange"
-            align="right"
-            unlink-panels
-            range-separator="至"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-            size="small"
-            value-format="yyyy.MM.dd"
-            :default-time="['00:00:00','23:59:59']"
-            @change="dateType = ''"
+        </div>
+        <div class="chart-item bottom-padding">
+          <h3>状态累积流量图</h3>
+          <status-chart :chart-data="cumulativeData" />
+        </div>
+      </el-header>
+      <el-main class="charts-main">
+        <el-tabs v-model="activeTab" class="tab-change" @tab-click="onSubmit">
+          <el-tab-pane v-for="item in countTitle" :key="'countTitle'+item.code" :name="item.code+''">
+            <span slot="label" class="tab-item">{{ item.msg }}</span>
+          </el-tab-pane>
+        </el-tabs>
+        <div class="chart-item">
+          <h3 v-show="activeTab === '1'">新增趋势图</h3>
+          <h3 v-show="activeTab === '2'">上线趋势图</h3>
+          <h3 v-show="activeTab === '3'">PRD评审趋势图</h3>
+          <h3 v-show="activeTab === '5'">技术准入趋势图</h3>
+          <tendency-chart :chart-data="tendencyData" />
+        </div>
+        <div class="chart-item">
+          <h3>周期统计<span>(根据排期计算)</span></h3>
+          <!-- <div class="chart-item-tip">
+            <i class="el-icon-warning-outline" />
+            <span>仅统计状态已变更“已排期”且排期不为空的需求</span>
+          </div> -->
+          <cycle-statistic :chart-data="cycleData" />
+        </div>
+        <div class="chart-item">
+          <h3>周期分布图<span>(根据排期计算)</span></h3>
+          <!-- <div class="chart-item-tip">
+            <i class="el-icon-warning-outline" />
+            <span>仅统计状态已变更“已排期”且排期不为空的需求;横坐标表示需求交付日期,纵坐标代表研发交付周期(研发、联调、上线类型排期的总周期)</span>
+          </div> -->
+          <development-cycle
+            :chart-data="developmentCycleData"
+            type="require"
+            :graph-type.sync="graphType"
+            :graph-type-list="graphTypeList"
+            @change="getDevelopmentCycle()"
           />
-        </el-form-item>
-      </el-form>
-      <el-form :model="chartForm" class="demo-form-inline" :inline="true">
-        <el-form-item label="团队:">
-          <el-select
-            v-model="chartForm.team"
-            placeholder="请选择"
-            size="small"
-            clearable
-            filterable
-            multiple
-          >
-            <el-option-group
-              v-for="group in teamOptions"
-              :key="group.label"
-              :label="group.label"
-            >
-              <el-option
-                v-for="item in group.options"
-                :key="item.teamId"
-                :label="item.teamName"
-                :value="item.teamId"
-              />
-            </el-option-group>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="需求方向:">
-          <el-cascader
-            v-model="chartForm.rqmtOrntIds"
-            size="small"
-            clearable
-            collapse-tags
-            :props="{
-              value: 'id',
-              label: 'rqmtOrntName',
-              children: 'childRqmtOrnts',
-              multiple: true
-            }"
-            :options="moduleList"
-            placeholder="请选择"
+        </div>
+        <div class="chart-item">
+          <h3>需求分布图</h3>
+          <distribution-chart
+            :chart-data="distributeData"
+            :status-list="distributeStatusList"
+            :status.sync="distributeStatus"
+            :active-tab="activeTab"
+            @change="getDistributeData()"
           />
-        </el-form-item>
-        <el-form-item>
-          <el-button type="primary" size="mini" @click="onSubmit">查询</el-button>
-        </el-form-item>
-      </el-form>
-      <div class="data-total">
-        <div v-for="(item,index) in Summary" :key="'Summary'+index" class="data-item" :class="['item'+ (index + 1)]">
-          <article>
-            <div class="item-top">
-              <div class="item-circle">
-                <img v-show="index === 0" src="../../../src/assets/defect_images/add.png">
-                <img v-show="index === 1" src="../../../src/assets/defect_images/repair.png">
-                <img v-show="index === 2" src="../../../src/assets/defect_images/reopen.png">
-                <img v-show="index === 3" src="../../../src/assets/defect_images/reopen.png">
-              </div>
-              <span>{{ item.label }}</span>
-              <el-tooltip v-if="index === 0" class="item" effect="dark" content="统计区间内,新建的需求数量" placement="top-start">
-                <i class="el-icon-info" />
-              </el-tooltip>
-              <el-tooltip v-if="index === 1" class="item" effect="dark" content="需求最近一次更新状态为“PRD评审通过”在统计区间内,并且当前状态是“PRD评审通过”及之后状态的需求数量" placement="top-start">
-                <i class="el-icon-info" />
-              </el-tooltip>
-              <el-tooltip v-if="index === 2" class="item" effect="dark" content="需求最近一次更新状态为“已上线”在统计区间内,并且当前状态是“已上线”及之后状态的需求数量" placement="top-start">
-                <i class="el-icon-info" />
-              </el-tooltip>
-              <el-tooltip v-if="index === 3" class="item" effect="dark" content="需求最近一次更新状态为“Hold”在统计区间内,并且当前状态为“Hold”的需求数量" placement="top-start">
-                <i class="el-icon-info" />
-              </el-tooltip>
-            </div>
-            <div class="item-title" @click="getRequiredNum(item)">{{ item.total }}</div>
-            <div class="item-line" />
-            <div v-show="Number(item.relativeRatio)>=0" class="item-up">环比:<i class="el-icon-caret-top" />{{ item.relativeRatio }}%</div>
-            <div v-show="Number(item.relativeRatio)<0" class="item-down">环比:<i class="el-icon-caret-bottom" />{{ item.relativeRatio.substring(1,item.relativeRatio.length) }}%</div>
-            <div v-show="item.relativeRatio === '--'" class="item-down">环比:{{ item.relativeRatio }}%</div>
-          </article>
         </div>
+        <div class="chart-item">
+          <h3>状态停留分布图</h3>
+          <status-stay-chart :chart-data="statusStayData" />
+        </div>
+        <div class="chart-item">
+          <h3>需求方向分布图</h3>
+          <belong-chart :chart-data="orntDistributeData" />
+        </div>
+        <div class="chart-item">
+          <h3>排期发生变更的需求(<span class="strong-font">{{ changeTotal }}</span>个)</h3>
+          <change-require-chart :chart-data="changeRequireData" type-name="需求" />
+        </div>
+        <div class="chart-item">
+          <h3>缺陷统计</h3>
+          <bug-list :chart-data="bugListData" />
+        </div>
+      </el-main>
+      <div @click.stop>
+        <require-drawer :drawer="drawer" :data="requireList" @clone="clone" />
       </div>
-      <div class="chart-item bottom-padding">
-        <h3>状态累积流量图</h3>
-        <status-chart :chart-data="cumulativeData" />
-      </div>
-    </el-header>
-    <el-main class="charts-main">
-      <el-tabs v-model="activeTab" class="tab-change" @tab-click="onSubmit">
-        <el-tab-pane v-for="item in countTitle" :key="'countTitle'+item.code" :name="item.code+''">
-          <span slot="label" class="tab-item">{{ item.msg }}</span>
-        </el-tab-pane>
-      </el-tabs>
-      <div class="chart-item">
-        <h3 v-show="activeTab === '1'">新增趋势图</h3>
-        <h3 v-show="activeTab === '2'">上线趋势图</h3>
-        <h3 v-show="activeTab === '3'">PRD评审趋势图</h3>
-        <h3 v-show="activeTab === '5'">技术准入趋势图</h3>
-        <tendency-chart :chart-data="tendencyData" />
-      </div>
-      <div class="chart-item">
-        <h3>周期统计<span>(根据排期计算)</span></h3>
-        <!-- <div class="chart-item-tip">
-          <i class="el-icon-warning-outline" />
-          <span>仅统计状态已变更“已排期”且排期不为空的需求</span>
-        </div> -->
-        <cycle-statistic :chart-data="cycleData" />
-      </div>
-      <div class="chart-item">
-        <h3>周期分布图<span>(根据排期计算)</span></h3>
-        <!-- <div class="chart-item-tip">
-          <i class="el-icon-warning-outline" />
-          <span>仅统计状态已变更“已排期”且排期不为空的需求;横坐标表示需求交付日期,纵坐标代表研发交付周期(研发、联调、上线类型排期的总周期)</span>
-        </div> -->
-        <development-cycle
-          :chart-data="developmentCycleData"
-          type="require"
-          :graph-type.sync="graphType"
-          :graph-type-list="graphTypeList"
-          @change="getDevelopmentCycle()"
-        />
-      </div>
-      <div class="chart-item">
-        <h3>需求分布图</h3>
-        <distribution-chart
-          :chart-data="distributeData"
-          :status-list="distributeStatusList"
-          :status.sync="distributeStatus"
-          :active-tab="activeTab"
-          @change="getDistributeData()"
-        />
-      </div>
-      <div class="chart-item">
-        <h3>状态停留分布图</h3>
-        <status-stay-chart :chart-data="statusStayData" />
-      </div>
-      <div class="chart-item">
-        <h3>需求方向分布图</h3>
-        <belong-chart :chart-data="orntDistributeData" />
-      </div>
-      <div class="chart-item">
-        <h3>排期发生变更的需求(<span class="strong-font">{{ changeTotal }}</span>个)</h3>
-        <change-require-chart :chart-data="changeRequireData" type-name="需求" />
-      </div>
-      <div class="chart-item">
-        <h3>缺陷统计</h3>
-        <bug-list :chart-data="bugListData" />
-      </div>
-    </el-main>
-    <require-drawer :drawer="drawer" :data="requireList" @clone="clone" />
-  </el-container>
+    </el-container>
+  </div>
 </template>
 <script>
 import moment from 'moment'
@@ -331,6 +335,7 @@ export default {
       this.getBugStatisticData()
     },
     setDate(type) { // 日期筛选
+      this.drawer = false
       let startDate = null
       let endDate = null
       switch (type) {

+ 170 - 165
src/views/quality/taskStatistics.vue

@@ -1,174 +1,178 @@
 <template>
-  <el-container class="defect-container">
-    <el-header class="defect-main" style="height: auto;">
-      <el-form :model="chartForm" class="demo-form-inline" :inline="true">
-        <el-form-item label="时间:">
-          <div class="date-select">
-            <span :class="[dateType==='week'?'date-active':'']" class="date-item" @click.stop="dateType='week';setDate('week')">本周</span>
-            <span :class="[dateType==='month'?'date-active':'']" class="date-item" @click.stop="dateType='month';setDate('month')">本月</span>
-            <span :class="[dateType==='year'?'date-active':'']" class="date-item" @click.stop="dateType='year';setDate('year')">本年</span>
-          </div>
-          <el-date-picker
-            v-model="stratAndEnd"
-            type="daterange"
-            align="right"
-            unlink-panels
-            range-separator="至"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-            size="small"
-            value-format="yyyy.MM.dd"
-            :default-time="['00:00:00','23:59:59']"
-            @change="dateType = ''"
-          />
-        </el-form-item>
+  <div @click="drawer = false">
+    <el-container class="defect-container">
+      <el-header class="defect-main" style="height: auto;">
+        <el-form :model="chartForm" class="demo-form-inline" :inline="true">
+          <el-form-item label="时间:">
+            <div class="date-select">
+              <span :class="[dateType==='week'?'date-active':'']" class="date-item" @click.stop="dateType='week';setDate('week')">本周</span>
+              <span :class="[dateType==='month'?'date-active':'']" class="date-item" @click.stop="dateType='month';setDate('month')">本月</span>
+              <span :class="[dateType==='year'?'date-active':'']" class="date-item" @click.stop="dateType='year';setDate('year')">本年</span>
+            </div>
+            <el-date-picker
+              v-model="stratAndEnd"
+              type="daterange"
+              align="right"
+              unlink-panels
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              size="small"
+              value-format="yyyy.MM.dd"
+              :default-time="['00:00:00','23:59:59']"
+              @change="dateType = ''"
+            />
+          </el-form-item>
 
-      </el-form>
-      <el-form :model="chartForm" class="demo-form-inline" :inline="true">
-        <el-form-item label="团队:">
-          <el-select
-            v-model="chartForm.team"
-            placeholder="请选择"
-            size="small"
-            clearable
-            filterable
-            multiple
-          >
-            <el-option-group
-              v-for="group in teamOptions"
-              :key="group.label"
-              :label="group.label"
+        </el-form>
+        <el-form :model="chartForm" class="demo-form-inline" :inline="true">
+          <el-form-item label="团队:">
+            <el-select
+              v-model="chartForm.team"
+              placeholder="请选择"
+              size="small"
+              clearable
+              filterable
+              multiple
             >
-              <el-option
-                v-for="item in group.options"
-                :key="item.teamId"
-                :label="item.teamName"
-                :value="item.teamId"
-              />
-            </el-option-group>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="技术模块:">
-          <el-cascader
-            v-model="chartForm.moduleIds"
-            size="small"
-            clearable
-            collapse-tags
-            :props="{ multiple: true }"
-            :options="moduleList"
-            placeholder="请选择"
-          />
-        </el-form-item>
-        <el-form-item>
-          <el-button type="primary" size="mini" @click="onSubmit">查询</el-button>
-        </el-form-item>
-      </el-form>
-      <div class="data-total">
-        <div v-for="(item,index) in Summary" :key="'Summary'+index" class="data-item" :class="['item'+ (index + 1)]">
-          <article>
-            <div class="item-top">
-              <div class="item-circle">
-                <img v-show="index === 0" src="../../../src/assets/defect_images/add.png">
-                <img v-show="index === 1" src="../../../src/assets/defect_images/repair.png">
-                <img v-show="index === 2" src="../../../src/assets/defect_images/reopen.png">
+              <el-option-group
+                v-for="group in teamOptions"
+                :key="group.label"
+                :label="group.label"
+              >
+                <el-option
+                  v-for="item in group.options"
+                  :key="item.teamId"
+                  :label="item.teamName"
+                  :value="item.teamId"
+                />
+              </el-option-group>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="技术模块:">
+            <el-cascader
+              v-model="chartForm.moduleIds"
+              size="small"
+              clearable
+              collapse-tags
+              :props="{ multiple: true }"
+              :options="moduleList"
+              placeholder="请选择"
+            />
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" size="mini" @click="onSubmit">查询</el-button>
+          </el-form-item>
+        </el-form>
+        <div class="data-total">
+          <div v-for="(item,index) in Summary" :key="'Summary'+index" class="data-item" :class="['item'+ (index + 1)]">
+            <article>
+              <div class="item-top">
+                <div class="item-circle">
+                  <img v-show="index === 0" src="../../../src/assets/defect_images/add.png">
+                  <img v-show="index === 1" src="../../../src/assets/defect_images/repair.png">
+                  <img v-show="index === 2" src="../../../src/assets/defect_images/reopen.png">
+                </div>
+                <span>{{ item.label }}</span>
+                <el-tooltip v-if="index === 0" class="item" effect="dark" content="统计区间内,新建的任务数量" placement="top">
+                  <i class="el-icon-info" />
+                </el-tooltip>
+                <el-tooltip v-if="index === 1" class="item" effect="dark" content="任务最近一次更新状态为“已上线”在统计区间内,并且当前状态是“已上线”的任务数量" placement="top">
+                  <i class="el-icon-info" />
+                </el-tooltip>
+                <el-tooltip v-if="index === 2" class="item" effect="dark" content="任务最近一次更新状态为“Hold”在统计区间内,并且当前状态是“Hold”的任务数量" placement="top">
+                  <i class="el-icon-info" />
+                </el-tooltip>
               </div>
-              <span>{{ item.label }}</span>
-              <el-tooltip v-if="index === 0" class="item" effect="dark" content="统计区间内,新建的任务数量" placement="top">
-                <i class="el-icon-info" />
-              </el-tooltip>
-              <el-tooltip v-if="index === 1" class="item" effect="dark" content="任务最近一次更新状态为“已上线”在统计区间内,并且当前状态是“已上线”的任务数量" placement="top">
-                <i class="el-icon-info" />
-              </el-tooltip>
-              <el-tooltip v-if="index === 2" class="item" effect="dark" content="任务最近一次更新状态为“Hold”在统计区间内,并且当前状态是“Hold”的任务数量" placement="top">
-                <i class="el-icon-info" />
-              </el-tooltip>
-            </div>
-            <div class="item-title" @click="getRequiredNum(item)">{{ item.total }}</div>
-            <div class="item-line" />
-            <div v-show="Number(item.relativeRatio)>=0" class="item-up">环比:<i class="el-icon-caret-top" />{{ item.relativeRatio }}%</div>
-            <div v-show="Number(item.relativeRatio)<0" class="item-down">环比:<i class="el-icon-caret-bottom" />{{ item.relativeRatio.substring(1,item.relativeRatio.length) }}%</div>
-            <div v-show="item.relativeRatio === '--'" class="item-down">环比:{{ item.relativeRatio }}%</div>
-          </article>
+              <div class="item-title" @click.stop="getRequiredNum(item)">{{ item.total }}</div>
+              <div class="item-line" />
+              <div v-show="Number(item.relativeRatio)>=0" class="item-up">环比:<i class="el-icon-caret-top" />{{ item.relativeRatio }}%</div>
+              <div v-show="Number(item.relativeRatio)<0" class="item-down">环比:<i class="el-icon-caret-bottom" />{{ item.relativeRatio.substring(1,item.relativeRatio.length) }}%</div>
+              <div v-show="item.relativeRatio === '--'" class="item-down">环比:{{ item.relativeRatio }}%</div>
+            </article>
+          </div>
         </div>
+        <div class="chart-item bottom-padding">
+          <h3>状态累积流量图</h3>
+          <status-chart :chart-data="cumulativeData" />
+        </div>
+      </el-header>
+      <el-main class="charts-main">
+        <el-tabs v-model="activeTab" class="tab-change" @tab-click="onSubmit">
+          <el-tab-pane name="1">
+            <span slot="label" class="tab-item">累计新增</span>
+          </el-tab-pane>
+          <el-tab-pane name="2">
+            <span slot="label" class="tab-item">累计上线</span>
+          </el-tab-pane>
+        </el-tabs>
+        <div class="chart-item">
+          <h3 v-show="activeTab === '1'">新增趋势图</h3>
+          <h3 v-show="activeTab === '2'">上线趋势图</h3>
+          <tendency-chart :chart-data="tendencyData" type-title="任务数量" />
+        </div>
+        <div class="chart-item">
+          <h3>所属需求方向分布图</h3>
+          <belong-requirement-chart :chart-data="belongRequirementData" />
+        </div>
+        <div class="chart-item">
+          <h3>周期统计<span>(根据排期计算)</span></h3>
+          <!-- <div class="chart-item-tip">
+            <i class="el-icon-warning-outline" />
+            <span>仅统计状态已变更“已排期”且排期不为空的任务</span>
+          </div> -->
+          <cycle-statistic :chart-data="cycleData" type="task" />
+        </div>
+        <div class="chart-item">
+          <h3>周期&等待时长分布图<span>(根据排期计算)</span></h3>
+          <!-- <div class="chart-item-tip">
+            <i class="el-icon-warning-outline" />
+            <span>仅统计状态已变更“已排期”且排期不为空的任务;横坐标表示任务交付日期,纵坐标代表研发交付周期(研发、联调、上线类型排期的总周期)</span>
+          </div> -->
+          <development-cycle
+            :chart-data="developmentCycleData"
+            type="task"
+            :graph-type.sync="graphType"
+            :graph-type-list="graphTypeList"
+            @change="getDevelopmentCycle()"
+          />
+        </div>
+        <div class="chart-item">
+          <h3>任务分布图</h3>
+          <distribution-chart
+            :chart-data="distributeData"
+            :status-list="distributeStatusList"
+            :status.sync="distributeStatus"
+            :active-tab="activeTab"
+            @change="getDistributeData()"
+          />
+        </div>
+        <div class="chart-item">
+          <h3>状态停留分布图</h3>
+          <status-stay-chart :chart-data="statusStayData" />
+        </div>
+        <div class="chart-item">
+          <h3>模块分布图</h3>
+          <belong-chart :chart-data="moduleDistributeData" />
+        </div>
+        <div class="chart-item">
+          <h3>排期发生变更的任务(<span class="strong-font">{{ changeTotal }}</span>个)</h3>
+          <change-require-chart :chart-data="changeTaskData" type-name="任务" />
+        </div>
+        <div class="chart-item">
+          <h3>报告统计</h3>
+          <cycle-statistic :chart-data="reportSummaryData" child-data="relativeRatio" :show-tips="false" />
+        </div>
+        <div class="chart-item">
+          <h3>缺陷统计</h3>
+          <bug-list :chart-data="bugListData" />
+        </div>
+      </el-main>
+      <div @click.stop>
+        <require-drawer :drawer="drawer" :data="requireList" @clone="clone" />
       </div>
-      <div class="chart-item bottom-padding">
-        <h3>状态累积流量图</h3>
-        <status-chart :chart-data="cumulativeData" />
-      </div>
-    </el-header>
-    <el-main class="charts-main">
-      <el-tabs v-model="activeTab" class="tab-change" @tab-click="onSubmit">
-        <el-tab-pane name="1">
-          <span slot="label" class="tab-item">累计新增</span>
-        </el-tab-pane>
-        <el-tab-pane name="2">
-          <span slot="label" class="tab-item">累计上线</span>
-        </el-tab-pane>
-      </el-tabs>
-      <div class="chart-item">
-        <h3 v-show="activeTab === '1'">新增趋势图</h3>
-        <h3 v-show="activeTab === '2'">上线趋势图</h3>
-        <tendency-chart :chart-data="tendencyData" type-title="任务数量" />
-      </div>
-      <div class="chart-item">
-        <h3>所属需求方向分布图</h3>
-        <belong-requirement-chart :chart-data="belongRequirementData" />
-      </div>
-      <div class="chart-item">
-        <h3>周期统计<span>(根据排期计算)</span></h3>
-        <!-- <div class="chart-item-tip">
-          <i class="el-icon-warning-outline" />
-          <span>仅统计状态已变更“已排期”且排期不为空的任务</span>
-        </div> -->
-        <cycle-statistic :chart-data="cycleData" type="task" />
-      </div>
-      <div class="chart-item">
-        <h3>周期&等待时长分布图<span>(根据排期计算)</span></h3>
-        <!-- <div class="chart-item-tip">
-          <i class="el-icon-warning-outline" />
-          <span>仅统计状态已变更“已排期”且排期不为空的任务;横坐标表示任务交付日期,纵坐标代表研发交付周期(研发、联调、上线类型排期的总周期)</span>
-        </div> -->
-        <development-cycle
-          :chart-data="developmentCycleData"
-          type="task"
-          :graph-type.sync="graphType"
-          :graph-type-list="graphTypeList"
-          @change="getDevelopmentCycle()"
-        />
-      </div>
-      <div class="chart-item">
-        <h3>任务分布图</h3>
-        <distribution-chart
-          :chart-data="distributeData"
-          :status-list="distributeStatusList"
-          :status.sync="distributeStatus"
-          :active-tab="activeTab"
-          @change="getDistributeData()"
-        />
-      </div>
-      <div class="chart-item">
-        <h3>状态停留分布图</h3>
-        <status-stay-chart :chart-data="statusStayData" />
-      </div>
-      <div class="chart-item">
-        <h3>模块分布图</h3>
-        <belong-chart :chart-data="moduleDistributeData" />
-      </div>
-      <div class="chart-item">
-        <h3>排期发生变更的任务(<span class="strong-font">{{ changeTotal }}</span>个)</h3>
-        <change-require-chart :chart-data="changeTaskData" type-name="任务" />
-      </div>
-      <div class="chart-item">
-        <h3>报告统计</h3>
-        <cycle-statistic :chart-data="reportSummaryData" child-data="relativeRatio" :show-tips="false" />
-      </div>
-      <div class="chart-item">
-        <h3>缺陷统计</h3>
-        <bug-list :chart-data="bugListData" />
-      </div>
-    </el-main>
-    <require-drawer :drawer="drawer" :data="requireList" @clone="clone" />
-  </el-container>
+    </el-container>
+  </div>
 </template>
 <script>
 import moment from 'moment'
@@ -336,6 +340,7 @@ export default {
       this.getBugStatisticData()
     },
     setDate(type) { // 日期筛选
+      this.drawer = false
       let startDate = null
       let endDate = null
       switch (type) {