PrinceLee 5 éve
szülő
commit
ff071b7d01

BIN
src/assets/detailPage/任务@2x.png


BIN
src/assets/detailPage/已完成@2x.png


BIN
src/assets/detailPage/缺陷修复@2x.png


BIN
src/assets/detailPage/需求@2x.png


+ 23 - 3
src/views/projectManage/projectList/components/dataStatistics.vue

@@ -2,7 +2,9 @@
   <div class="data-main">
     <article>
       <div class="data-num">
-        <div class="data-add blue" @click="need_open = true" />
+        <div class="data-add blue" @click="need_open = true">
+          <img :src="requireImg">
+        </div>
         <div class="data-detail">
           <b v-if="requireData">{{ requireData.total }}</b>
           <span>需求数量</span>
@@ -15,7 +17,9 @@
     </article>
     <article>
       <div class="data-num">
-        <div class="data-add green" @click="reated_task()" />
+        <div class="data-add green" @click="reated_task()">
+          <img :src="taskImg">
+        </div>
         <div class="data-detail">
           <b v-if="taskData">{{ taskData.total }}</b>
           <span>任务数量</span>
@@ -28,7 +32,9 @@
     </article>
     <article>
       <div class="data-num">
-        <div class="data-add red" @click="created_bug()" />
+        <div class="data-add red" @click="created_bug()">
+          <img :src="bugImg">
+        </div>
         <div class="data-detail">
           <b v-if="bugData">{{ bugData.total }}</b>
           <span>缺陷数量</span>
@@ -57,6 +63,9 @@ import RequirementCreate from '@/views/projectManage/requirement/list/create'
 import openDialog from '@/views/projectManage/dialog_vue'
 import createdBug from '@/views/projectManage/bugList/file/createdBug'
 import { getProjectSumData } from '@/api/projectViewDetails'
+import requireImg from '@/assets/detailPage/需求@2x.png'
+import taskImg from '@/assets/detailPage/任务@2x.png'
+import bugImg from '@/assets/detailPage/缺陷修复@2x.png'
 export default {
   components: {
     normalEchart,
@@ -66,6 +75,9 @@ export default {
   },
   data() {
     return {
+      requireImg: requireImg,
+      taskImg: taskImg,
+      bugImg: bugImg,
       edit: false,
       need_open: false, // 新建需求
       dataChart1: false,
@@ -162,6 +174,14 @@ article{
       height: 92px;
       width: 92px;
       border-radius: 50%;
+      position: relative;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      img {
+        height: 36px;
+        width: 36px;
+      }
     }
     .blue {
       background-color:rgba(64,158,255,0.15);

+ 18 - 2
src/views/projectManage/requirement/components/dataStatistics.vue

@@ -2,7 +2,9 @@
   <div class="data-main">
     <article>
       <div class="data-num">
-        <div class="data-add green" @click="reated_task()" />
+        <div class="data-add green" @click="reated_task()">
+          <img :src="taskImg">
+        </div>
         <div class="data-detail">
           <b v-if="taskData">{{ taskData.total }}</b>
           <span>任务数量</span>
@@ -15,7 +17,9 @@
     </article>
     <article>
       <div class="data-num">
-        <div class="data-add red" @click="created_bug()" />
+        <div class="data-add red" @click="created_bug()">
+          <img :src="bugImg">
+        </div>
         <div class="data-detail">
           <b v-if="bugData">{{ bugData.total }}</b>
           <span>缺陷数量</span>
@@ -35,6 +39,8 @@ import normalEchart from '@/components/chart/normalEchart'
 import openDialog from '@/views/projectManage/dialog_vue'
 import createdBug from '@/views/projectManage/bugList/file/createdBug'
 import { getRequireSumData } from '@/api/requirement'
+import taskImg from '@/assets/detailPage/任务@2x.png'
+import bugImg from '@/assets/detailPage/缺陷修复@2x.png'
 export default {
   components: {
     normalEchart,
@@ -43,6 +49,8 @@ export default {
   },
   data() {
     return {
+      taskImg: taskImg,
+      bugImg: bugImg,
       edit: false,
       dataChart1: false,
       echartsOption2: null,
@@ -125,6 +133,14 @@ article{
       height: 92px;
       width: 92px;
       border-radius: 50%;
+      position: relative;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      img {
+        height: 36px;
+        width: 36px;
+      }
     }
     .blue {
       background-color:rgba(64,158,255,0.15);

+ 13 - 1
src/views/projectManage/taskList/components/dataStatistics.vue

@@ -2,7 +2,9 @@
   <div class="data-main">
     <article>
       <div class="data-num">
-        <div class="data-add red" @click="created_bug()" />
+        <div class="data-add red" @click="created_bug()">
+          <img :src="bugImg">
+        </div>
         <div class="data-detail">
           <b v-if="bugData">{{ bugData.total }}</b>
           <span>缺陷数量</span>
@@ -20,6 +22,7 @@
 import normalEchart from '@/components/chart/normalEchart'
 import createdBug from '@/views/projectManage/bugList/file/createdBug'
 import { getRequireSumData } from '@/api/requirement'
+import bugImg from '@/assets/detailPage/缺陷修复@2x.png'
 export default {
   components: {
     normalEchart,
@@ -27,6 +30,7 @@ export default {
   },
   data() {
     return {
+      bugImg: bugImg,
       edit: false,
       dataChart1: false,
       echartsOption3: null,
@@ -98,6 +102,14 @@ article{
       height: 92px;
       width: 92px;
       border-radius: 50%;
+      position: relative;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      img {
+        height: 36px;
+        width: 36px;
+      }
     }
     .blue {
       background-color:rgba(64,158,255,0.15);

+ 49 - 0
src/views/projectManage/taskList/taskViewDetail.vue

@@ -3,6 +3,15 @@
     <el-container>
       <el-header class="main-header">
         <div class="top-page-title">
+          <div v-if="form_query.stage>0" class="task-stage">
+            <div class="task-stage-main">
+              <img :src="stageImg">
+              <div class="task-stage-title">
+                <p class="task-stage-h1">{{ form_query.stageString }}</p>
+                <p class="task-stage-h2">{{ form_query.lateMsg }}</p>
+              </div>
+            </div>
+          </div>
           <el-tooltip :disabled="form_query.name && form_query.name.length > 20 ? false : true" effect="dark" :content="form_query.name" placement="bottom">
             <div class="header-title">任务 : {{ form_query.name | ellipsis(10) }}</div>
           </el-tooltip>
@@ -229,6 +238,7 @@ import dataStatistics from './components/dataStatistics'
 import TestReport from '@/views/Platform/presentation/Templates/TestReport' // 提测
 import DailyReport from '@/views/Platform/presentation/Templates/DailyReport' // 日报
 import ClientReport from '@/views/Platform/presentation/Templates/ClientReport' // 准出
+import stage from '@/assets/detailPage/已完成@2x.png'
 export default {
   components: {
     searchPeople,
@@ -256,6 +266,7 @@ export default {
   },
   data() {
     return {
+      stageImg: stage,
       activeName: '1', // 顶部tab切换
       userInformation: localStorage.getItem('username'),
       userNames: localStorage.getItem('realname'),
@@ -511,6 +522,44 @@ export default {
     }
   }
 }
+.task-stage {
+  position: absolute;
+  left: 20px;
+  top: 10px;
+  z-index: 999;
+  .task-stage-main {
+    position: relative;
+    height: 102px;
+    width: 102px;
+    img{
+      height: 102px;
+      width: 102px;
+    }
+    .task-stage-title{
+      position: absolute;
+      left: 0;
+      right: 0;
+      top: 0;
+      bottom: 0;
+      transform-origin: center center;
+      transform: rotate(-20deg);
+      color: #F56C6C;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+    }
+    .task-stage-h1 {
+      font-size: 16px;
+      text-align: center;
+      margin: 0;
+    }
+    .task-stage-h2 {
+      font-size: 10px;
+      text-align: center;
+      margin: 0;
+    }
+  }
+}
 >>>.module .el-form-item__content {
     display: inline-block;
     width: calc(100% - 100px);

+ 0 - 1507
src/views/projectManage/taskList/taskViewDetails.vue

@@ -1,1507 +0,0 @@
-<template>
-  <div @click="display = false">
-    <div class="bgbugTa" style="background-color:#F2F3F6;display:flex;align-items: center;justify-content: center;">
-      <el-container>
-        <el-header class="bgborder bgborderButton" style=" margin: 15px 1%; height:60px;display: flex; justify-content: space-between; align-items: center;">
-          <div style="float: left;display: flex; justify-content: space-between; align-items: center;">
-            <span :style="{ background: bgStyle, color:colorStyle } " class="timeStyle">
-              {{ task_form.stageString }}
-              <br>
-              {{ task_form.lateMsg }}
-            </span>
-            <el-tooltip :disabled="task_form.name && task_form.name.length < 19 ? true : false" class="item" effect="dark" :content="task_form.name" placement="bottom">
-              <span style="font-size:20px;font-family:MicrosoftYaHei;color:rgba(51,51,51,1);">任务 : {{ task_form.name | ellipsis }}</span>
-            </el-tooltip>
-            <el-dropdown trigger="click" placement="bottom" @command="handleCommand">
-              <el-button size="mini" style="cursor: pointer;margin-left:15px">
-                {{ task_form.statusString }}
-                <i class="el-icon-arrow-down el-icon--right" />
-              </el-button>
-              <el-dropdown-menu slot="dropdown" align="center">
-                <el-dropdown-item
-                  v-for="item in taskStatus"
-                  :key="item.value"
-                  :command="{value:item.code,label:item.msg}"
-                  :disabled="task_form.statusString === item.msg? true: false"
-                >{{ item.msg }}</el-dropdown-item>
-              </el-dropdown-menu>
-            </el-dropdown>
-          </div>
-          <span style="float: right;">
-            <span style="display: inline-flex;vertical-align: middle; cursor: pointer; color: #6F7C93;" @click.stop="setChild(), display = true"><img style="width: 24px; display: inline-block;" :src="image_url"><span style="margin-left: 10px;">{{ num }}</span></span>
-            <el-button style="margin: 0 10px;" size="mini" @click="centerDialogVisible_task = true">删除任务</el-button>
-            <el-dropdown trigger="click" placement="bottom">
-              <el-button size="mini" type="primary">
-                新建
-                <i class="el-icon-arrow-down el-icon--right" />
-              </el-button>
-              <el-dropdown-menu slot="dropdown">
-                <el-dropdown-item @click.native="createReport(4, task_form)">新建Bug</el-dropdown-item>
-                <el-dropdown-item @click.native="createReport(1, task_form)">新建提测报告</el-dropdown-item>
-                <el-dropdown-item @click.native="createReport(2, task_form)">新建测试报告</el-dropdown-item>
-                <el-dropdown-item @click.native="createReport(3, task_form)">新建准出报告</el-dropdown-item>
-              </el-dropdown-menu>
-            </el-dropdown>
-          </span>
-        </el-header>
-        <el-container>
-          <el-aside class="bgborder" style="overflow: hidden; margin:0 1%;minWidth: 55%;">
-            <div style="display:flex;align-items: center;margin-bottom:20px;margin: 20px 0 50px 20px;">
-              <div style="width:4px;height:17px;background:#409EFF;border-radius:1px;" />
-              <div style="width:83px;height:20px;font-size:16px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px">数据统计</div>
-            </div>
-            <div style="display: flex; justify-content: space-between; align-items: center;">
-              <span style="text-align: center; margin-left: 8%; border-right:1px solid #BBBBBB; padding-right: 8%;">
-                <p style="width: 70px;">bug数量</p>
-                <p style="font-size: 70px;">{{ totalCount }}</p>
-                <p v-show="fixInFutureCount <= 0? false: true">
-                  <span style="color: #F56C6C; width: 100px;">暂不修复bug{{ fixInFutureCount }}个</span>
-                </p>
-              </span>
-              <div id="div1" style="width:100%;height:300px;margin-bottom: 3%;" />
-            </div>
-          </el-aside>
-          <el-container>
-            <el-main class="bgborder form_e special-button" style="overflow: hidden;margin: 0 2.1% 0 0;min-height: 50vh;">
-              <div style="display:flex;align-items: center;margin-bottom:20px;margin: 20px 0 0 20px;">
-                <div style="width:4px;height:17px;background:#409EFF;border-radius:1px;" />
-                <div style="width:83px;height:20px;font-size:16px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px">基础信息</div>
-              </div>
-              <el-form label-position="left" label-width="150px" style="margin: 0 4%;font-size: 14px;color: rgb(102, 102, 102);" :model="task_form">
-                <div style="text-align: right;">
-                  <el-button size="mini" @click="open_created(task_form.describe)">修改</el-button>
-                </div>
-                <el-row :gutter="20">
-                  <el-col :span="19">
-                    <el-form-item label="所属项目:" style="word-break: break-all;">
-                      <span v-show="task_form.projectName !== '无归属项目'" style="color: #409EFF;cursor: pointer;" @click="devUrl_tow(1, task_form.projectId)">{{ task_form.projectName }}</span>
-                      <span v-show="task_form.projectName === '无归属项目'">{{ task_form.projectName }}</span>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-form-item label="所属需求:" label-width="150px">
-                  <span v-show="task_form.requireName !== '无归属需求'" style="color: #409EFF;cursor: pointer;" @click="devUrl_tow(3, task_form.requireId)">{{ task_form.requireName }}</span>
-                  <span v-show="task_form.requireName === '无归属需求'">{{ task_form.requireName }}</span>
-                </el-form-item>
-                <el-form-item label="模块:">{{ task_form.moduleInfoName }}</el-form-item>
-                <el-form-item label="是否免测:">{{ task_form.noTestString }}</el-form-item>
-                <el-form-item label="开发负责人:">{{ task_form.rdObject === null? '' : task_form.rdObject.name }}</el-form-item>
-                <el-form-item label="测试负责人:">{{ task_form.qaObject === null? '' : task_form.qaObject.name }}</el-form-item>
-                <el-form-item label="涉及的客户端:">{{ task_form.involveAppString }}</el-form-item>
-                <el-form-item label="技术文档:" style="word-break: break-all;">
-                  <span style="color: #409EFF;cursor: pointer;" @click="devUrl_tow(2, task_form.devUrl)">{{ task_form.devUrl }}</span>
-                </el-form-item>
-              </el-form>
-            </el-main>
-          </el-container>
-        </el-container>
-        <el-header class="bgborder" style="margin: 1%;height: auto; padding: 0;">
-          <div style="display:flex;align-items: center;margin-bottom:20px;margin: 20px 0 20px 20px;">
-            <div style="width:4px;height:17px;background:#409EFF;border-radius:1px;" />
-            <div style="width:83px;height:20px;font-size:16px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px">排期事件</div>
-          </div>
-          <div style="margin: 2% 20px; display: flex; align-items: center; justify-content: space-between;">
-            <el-button size="mini" type="primary" plain icon="el-icon-plus" @click="add_Event">添加事件</el-button>
-            <el-radio-group v-model="radio" size="mini" style="margin-left: 5%">
-              <el-radio-button label="列表" @click.native="GanttChart(1)" />
-              <el-radio-button label="甘特图" @click.native="GanttChart(2)" />
-            </el-radio-group>
-          </div>
-          <div style=" margin: 0 20px; color: #333B4A;">
-            <div v-show="Gantt" style="padding:0 46px">
-              <gantt v-if="ganttData" :table-data="ganttData" string-type="事件" :versions="appVersion" />
-            </div>
-            <el-table v-show="table_show" :data="arr_event" style="width: 100%;" size="small" :header-cell-style="{ background: '#E9E9E9', color: '#333B4A' }" show-overflow-tooltip="true">
-              <el-table-column label="事件类型" min-width="100" align="center">
-                <template slot-scope="scope">{{ scope.row.name }}</template>
-              </el-table-column>
-              <el-table-column label="描述" min-width="200" align="center">
-                <template slot-scope="scope">{{ scope.row.desc }}</template>
-              </el-table-column>
-              <el-table-column label="排期" min-width="200" align="center">
-                <template slot-scope="scope">{{ scope.row.startTime | naspOut }} - {{ scope.row.endTime | naspOut }}</template>
-              </el-table-column>
-              <el-table-column label="人员" min-width="200" align="center">
-                <template slot-scope="scope">
-                  <div v-for="item of scope.row.peopleObject" :key="item.idapId">{{ item.name }}</div>
-                </template>
-              </el-table-column>
-              <el-table-column label="操作" min-width="200">
-                <template slot-scope="scope">
-                  <el-button size="mini" type="primary" plain @click="event_query(scope.row.id)">编辑</el-button>
-                  <el-button v-if="scope.row.canDelete === 1? false : true" size="mini" type="primary" plain @click="event_delete(scope.row.id)">删除</el-button>
-                </template>
-              </el-table-column>
-            </el-table>
-            <div class="dateSet">排期汇总:{{ tiem_date.startTime | naspOut }} ~ {{ tiem_date.endTime | naspOut }}</div>
-            <div class="dateSet" style="border-bottom:1px solid #E9E9E9;">预计上线版本:{{ task_form.preOnlineVersion }}</div>
-            <div class="dateSet" style=" display: flex; justify-content: start; align-items: center;">
-              <div style="flex:1">实际提测时间:{{ task_form.launchTestRealTime | naspOut }}</div>
-              <div style="flex:1">实际准出时间:{{ task_form.testFinishRealTime | naspOut }}</div>
-              <div style="flex:1">实际上线完成时间:{{ task_form.onlineRealTime | naspOut }}</div>
-            </div>
-          </div>
-        </el-header>
-        <el-footer class="footer" style=" height: auto;">
-          <span style="text-align: right; margin: 1% 0 -3% 0;float:right;">
-            <el-button size="mini" type="primary" plain icon="el-icon-plus" @click="createReport(4, task_form)">提Bug</el-button>
-            <el-dropdown>
-              <el-button size="mini" type="primary" plain>
-                新建
-                <i class="el-icon-arrow-down el-icon--right" />
-              </el-button>
-              <el-dropdown-menu slot="dropdown">
-                <el-dropdown-item @click.native="createReport(1, task_form)">新建提测报告</el-dropdown-item>
-                <el-dropdown-item @click.native="createReport(2, task_form)">新建测试报告</el-dropdown-item>
-                <el-dropdown-item @click.native="createReport(3, task_form)">新建准出报告</el-dropdown-item>
-              </el-dropdown-menu>
-            </el-dropdown>
-          </span>
-          <el-tabs tab-position="top" @tab-click="click_launchTestInfoDOS">
-            <el-tab-pane label="Bug" style="position: relative;">
-              <div style="padding: 1.5% 0;font-family: MicrosoftYaHei;color: rgba(51,51,51,1);font-size: 14px;align-items: center;display: flex; justify-content: space-start; align-items: center;border-top: 1px solid #E9E9E9;">
-                <span>快速筛选:</span>
-                <span v-for="(item, code) of bugStatus" :key="code" class="status" @click="bug_list(item.code)">
-                  <span :class="[item.code === codeCache ? 'selected' :'']">{{ item.msg }}</span>
-                </span>
-              </div>
-              <el-table size="mini" :data="bugBaseInfoDOList" min-height="200" style="width: 100%; font-size: 14px; color:rgba(102,102,102,1);" show-overflow-tooltip="true" :default-sort="{prop: 'priorityCode'}" :header-cell-style="{ background: '#E9E9E9', color: '#333B4A', fontSize: '14px', fontWeight: '500',borderTop: '0.5px solid #EEF0F5'}">
-                <el-table-column label="优先级" prop="priorityCode" sortable align="center">
-                  <template slot-scope="scope">
-                    <div class="div_priority" :style="{background: priorityColors[scope.row.priorityCode]}">{{ scope.row.priorityLevel | oneA }}</div>
-                  </template>
-                </el-table-column>
-                <el-table-column prop="bugName" label="缺陷标题" min-width="360" align="left" show-overflow-tooltip>
-                  <template slot-scope="scope">
-                    <span style=" color: #A7AEBC; font-size; 12px;">{{ 'BUG-' + scope.row.id }}</span><br>
-                    <span class="bugNameSty" @click.stop="click_bugName(scope.row.id)">{{ scope.row.bugName }}</span>
-                  </template>
-                </el-table-column>
-                <el-table-column prop="bizName" label="业务线" align="center" />
-                <el-table-column prop="priorityName" label="缺陷等级" align="center" />
-                <el-table-column prop="bugStatusName" label="状态" min-width="110" align="center">
-                  <template slot-scope="scope">
-                    <el-select
-                      v-model="scope.row.status"
-                      :class="{
-                        'item-color': scope.row.status === 0 || scope.row.status === 1,
-                        'item': scope.row.status === 3,
-                        'item1': scope.row.status === 2,
-                        'item2': scope.row.status === 4,
-                        'item3': scope.row.status === 5
-                      }"
-                      class="btns"
-                      size="mini"
-                      @change="blurEvent(scope.row, scope.row.status)"
-                    >
-                      <el-option v-for="item in bugEnumList" :key="item.code" :label="item.name" :value="item.code" />
-                    </el-select>
-                  </template>
-                </el-table-column>
-                <el-table-column prop="creatorList" label="提报人" align="center" />
-                <el-table-column prop="assignerList" label="责任人" align="center" />
-                <el-table-column prop="currentHandlerList" label="修复人" align="center" />
-                <el-table-column prop="gmtCreate" label="创建日期" align="center">
-                  <template slot-scope="scope">
-                    {{ scope.row.gmtCreate | naspOut }}
-                  </template>
-                </el-table-column>
-              </el-table>
-              <div style="display:flex;align-items: center;justify-content: flex-end;">
-                <el-pagination background :current-page="currentPage" :page-sizes="[10, 20, 25]" :page-size="10" layout="total, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
-              </div>
-            </el-tab-pane>
-            <el-tab-pane label="提测报告">
-              <el-table :data="launchTestInfoDOS" size="small" :header-cell-style="{ background: '#E9E9E9', color: '#333B4A' }" show-overflow-tooltip="true">
-                <el-table-column label="标题名称" min-width="150">
-                  <template slot-scope="scope">
-                    <span class="btn" @click="toReportView(scope.row, 2)">{{ scope.row.name }}</span>
-                  </template>
-                </el-table-column>
-                <el-table-column label="状态" min-width="100" align="center">
-                  <template slot-scope="scope">
-                    <span :style="{color: stColors[scope.row.status]}"> {{ scope.row.statusString }} </span>
-                  </template>
-                </el-table-column>
-                <el-table-column label="创建人" min-width="100" align="center">
-                  <template slot-scope="scope">{{ scope.row.createrObject.name }}</template>
-                </el-table-column>
-                <el-table-column label="创建日期" min-width="150" align="center">
-                  <template slot-scope="scope">{{ scope.row.gmtCreate }}</template>
-                </el-table-column>
-                <el-table-column label="操作" width="200">
-                  <template slot-scope="scope">
-                    <div v-if="scope.row.status === 1 ? false : true">
-                      <span v-if="scope.row.status === 3 ? true : false" class="btn" @click="back(1,scope.row.id, scope.row)">通过</span>
-                      <span v-if="scope.row.status === 3 ? true : false" style="margin-left: 30px;" class="btn" @click="back(2,scope.row.id, scope.row)">打回</span>
-                      <span v-if="scope.row.status === 0 ? true : false" class="btn" @click="back(5,scope.row.id, scope.row)">发送</span>
-                      <span v-if="scope.row.status === 0 ? true : false" style="margin: 0 30px;" class="btn" @click="back(6,scope.row.id, scope.row)">编辑</span>
-                      <span v-if="scope.row.status === 0 ? true : false" class="btn" @click="back(4,scope.row.id, scope.row )">删除</span>
-                      <span v-if="scope.row.status === 2 ? true : false" class="btn" @click="back(3,scope.row.id, scope.row)">重新提测</span>
-                      <el-dialog :title="titName" :visible.sync="dialog_launchTestInfoDOS" width="30%" :close-on-click-modal="false">
-                        <div style="position: absolute; top: 23px; left: 12px;width:4px;height:17px;background:#409EFF;border-radius:1px;" />
-                        <div align="center">
-                          <div>是否{{ Str }}以下提测?</div>
-                          <div style="color: #f79232;">{{ requireName }}</div>
-                        </div>
-                        <el-input v-show="Str === '打回'" v-model="CallBackTheReason" type="textarea" placeholder="请输入打回原因..." :rows="3" />
-                        <span slot="footer" class="dialog-footer">
-                          <el-button type="primary" size="mini" @click="passOrBackSend()">确 定</el-button>
-                          <el-button type="danger" size="mini" @click="endDialog">取 消</el-button>
-                        </span>
-                      </el-dialog>
-                    </div>
-                  </template>
-                </el-table-column>
-              </el-table>
-              <div align="right">
-                <el-pagination background :current-page="currentPage" :page-sizes="[15, 20, 25]" :page-size="15" layout="total, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
-              </div>
-            </el-tab-pane>
-            <el-tab-pane label="测试报告">
-              <el-table :data="dailyTestReports" size="small" :header-cell-style="{ background: '#E9E9E9', color: '#333B4A' }" show-overflow-tooltip="true">
-                <el-table-column label="标题名称" min-width="100" align="center">
-                  <template slot-scope="scope">
-                    <a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView(scope.row, 0)">{{ scope.row.reportName }}</a>
-                  </template>
-                </el-table-column>
-                <el-table-column label="状态" min-width="100" align="center">
-                  <template slot-scope="scope">{{ scope.row.statusString }}</template>
-                </el-table-column>
-                <el-table-column label="创建人" min-width="100" align="center">
-                  <template slot-scope="scope">{{ scope.row.createrObject.name }}</template>
-                </el-table-column>
-                <el-table-column label="创建日期" min-width="100" align="center">
-                  <template slot-scope="scope">{{ scope.row.gmtCreate }}</template>
-                </el-table-column>
-              </el-table>
-              <div align="right">
-                <el-pagination background :current-page="currentPage" :page-sizes="[15, 20, 25]" :page-size="15" layout="total, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
-              </div>
-            </el-tab-pane>
-            <el-tab-pane label="准出报告">
-              <el-table :data="projectTestReportDOS" size="small" :header-cell-style="{ background: '#E9E9E9', color: '#333B4A' }" show-overflow-tooltip="true">
-                <el-table-column label="标题名称" min-width="100" align="center">
-                  <template slot-scope="scope">
-                    <a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView(scope.row, 1)">{{ scope.row.reportName }}</a>
-                  </template>
-                </el-table-column>
-                <el-table-column label="状态" min-width="100" align="center">
-                  <template slot-scope="scope">{{ scope.row.reportStatusString }}</template>
-                </el-table-column>
-                <el-table-column label="创建人" min-width="100" align="center">
-                  <template slot-scope="scope">{{ scope.row.createrObject.name }}</template>
-                </el-table-column>
-                <el-table-column label="创建日期" min-width="100" align="center">
-                  <template slot-scope="scope">{{ scope.row.gmtCreate }}</template>
-                </el-table-column>
-              </el-table>
-              <div align="right">
-                <el-pagination background :current-page="currentPage" :page-sizes="[15]" :page-size="15" layout="total, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
-              </div>
-            </el-tab-pane>
-            <el-tab-pane label="评论">
-              <p v-show="commentShow" style="color:#9B9B9B">还没有评论,快来评论吧!</p>
-              <div v-for="(item, value) of commentTxt" :key="value" class="animated bounceInRight">
-                <span style="color: #333B4A; font-size:14px;margin-left:1%;">{{ item.commentInfo.name }}</span>
-                <span style="color: #9B9B9B; font-size:12px;margin-left:1%;">{{ item.commentInfo.gmtCreater }}</span>
-                <p style="color: #333B4A; font-size:14px;margin-left:2%;">{{ item.commentInfo.content }}</p>
-              </div>
-              <el-input v-model="content" rows="6" type="textarea" placeholder="请输入评论内容..." show-word-limit />
-              <p style="text-align: right;">
-                <el-button size="small" type="primary" @click="comment(content)">发表评论</el-button>
-              </p>
-            </el-tab-pane>
-          </el-tabs>
-        </el-footer>
-      </el-container>
-      <el-dialog :visible.sync="centerDialogVisible" width="30%" center :close-on-click-modal="false">
-        <div align="center">确定要删除此项目吗?</div>
-        <span slot="footer" class="dialog-footer">
-          <el-button @click="centerDialogVisible = false">取 消</el-button>
-          <el-button type="primary" @click="centerDialogVisible = false">确 定</el-button>
-        </span>
-      </el-dialog>
-      <el-dialog :visible.sync="dialogFormVisible" :close-on-click-modal="false">
-        <div style="display:flex;align-items: center;margin: -4% 7% 3% 4.5%;">
-          <div style="width:4px;height:17px;background:#409EFF;border-radius:1px;" />
-          <div style="width:83px;height:20px;font-size:18px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px">{{ even }}</div>
-        </div>
-        <el-form ref="form" :model="form" :rules="form_rules" label-width="100px">
-          <el-form-item label="事件类型" prop="type">
-            <el-select v-show="even === '新建事件'" v-model="form.type" :loading="loading" clearable placeholder="请选择" style="width: 100%">
-              <el-option v-for="item in taskScheduleEvent" :key="item.code" :label="item.msg" :value="item.code" />
-            </el-select>
-            <el-input v-show="even === '编辑事件'" v-model="form.name" :disabled="fal_se" />
-          </el-form-item>
-          <el-form-item label="事件描述">
-            <el-input v-model="form.desc" autocomplete="off" placeholder="请输入描述信息" />
-          </el-form-item>
-          <el-form-item label="排期" prop="date_start">
-            <el-date-picker v-model="form.date_start" type="daterange" range-separator="~" start-placeholder="请选择开始日期" end-placeholder="请选择结束日期" value-format="yyyy-MM-dd HH:mm:ss" />
-            <el-checkbox v-model="form.noHoliday" style="margin-left: 10px;">排除周末</el-checkbox>
-          </el-form-item>
-          <el-form-item label="参与人员">
-            <el-select v-model="form.peoples" multiple filterable remote placeholder="请输入姓名或者邮箱前缀" :remote-method="remoteMethod" :loading="loading" style="width: 100%">
-              <el-option v-for="item in options" :key="item.idap" :label="item.name" :value="test2(item, 0)">
-                <div style="display: flex;justify-content: start;">
-                  <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.deptName }}</div>
-                  <div style="min-width:80px">{{ item.name }}</div>
-                  <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.idap }}</div>
-                </div>
-              </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="排期" prop="date_start">
-            <sel-date-picker :start-end="form.date_start" />
-          </el-form-item>
-        </el-form>
-        <div slot="footer" class="dialog-footer">
-          <el-button @click="dialogFormVisible = false">取 消</el-button>
-          <el-button type="primary" @click="even === '新建事件'? event_created(form):event_update(form)">确 定</el-button>
-        </div>
-      </el-dialog>
-      <!-- <el-dialog :visible.sync="centerDialogVisible_status" width="30%" center :close-on-click-modal="false">
-        <div align="center" style="margin-bottom: 8%; font-weight: 600;">状态变更:已上线</div>
-        <div style=" margin: 2% 3%; display: flex; justify-content: space-between; align-items: center; white-space:nowrap;">
-          <span>实际上线时间:</span>
-          <el-date-picker v-model="NewDate" type="date" style="width:100%;" placeholder="选择日期" format="yyyy 年 MM 月 dd 日" />
-        </div>
-        <span slot="footer" class="dialog-footer">
-          <el-button size="mini" @click="centerDialogVisible_status = false">关 闭</el-button>
-          <el-button size="mini" type="primary" @click="task_status_uptate(NewDate)">确 定</el-button>
-        </span>
-      </el-dialog> -->
-      <!-- 删除 -->
-      <el-dialog
-        :visible.sync="centerDialogVisible_task"
-        width="30%"
-        center
-        :close-on-click-modal="false"
-        title="提示"
-        top="35vh"
-      >
-        <div align="center">
-          确定要删除<span style="color:red;">{{ task_form.name }}</span> 的任务吗?
-        </div>
-        <span slot="footer" class="dialog-footer">
-          <el-button @click="centerDialogVisible_task = false">关 闭</el-button>
-          <el-button type="primary" @click="task_delete(task_form.id )">确 定</el-button>
-        </span>
-      </el-dialog>
-      <el-dialog
-        v-if="statusDialogVisible"
-        :visible.sync="statusDialogVisible"
-        width="33%"
-        class="bug_manage_dialog"
-        :append-to-body="true"
-        :close-on-click-modal="false"
-        @close="modalClose"
-      >
-        <template v-slot:title>
-          <div style="display:flex;align-items: center;">
-            <div style="width:4px;height:15px;background:#409EFF;border-radius:1px;" />
-            <div style="width:83px;height:18px;font-size:16px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px">{{ statusDialogTitle }}</div>
-          </div>
-        </template>
-        <el-form label-width="110px" label-position="left" :model="statusDialogForm" :rules="rules">
-          <el-form-item v-if="statusDialogTitle === '待测试' || statusDialogTitle === '已完成'" label="缺陷原因" prop="bugReason">
-            <el-select v-model="statusDialogForm.bugReason" style="width: 100%">
-              <el-option v-for="item in bugReasonEnumList" :key="item.code" :label="item.name" :value="item.code" />
-            </el-select>
-          </el-form-item>
-          <el-form-item v-if="statusDialogTitle === '待测试'" label="修复方式" class="bug_manage_dialog bug_manage_dialog_fixMethod">
-            <el-input v-model="statusDialogForm.reasonOrDesc" type="textarea" placeholder="请输入具体原因和修复方式" maxlength="300" show-word-limit rows="4" />
-          </el-form-item>
-          <el-form-item v-if="statusDialogTitle === '已完成'" label="修复结果" prop="repairResult" class="bug_manage_dialog">
-            <el-select v-model="statusDialogForm.repairResult" style="width: 100%">
-              <el-option v-for="item in repairResultEnumList" :key="item.code" :label="item.name" :value="item.code" />
-            </el-select>
-          </el-form-item>
-          <el-form-item v-if="statusDialogTitle === 'Reopen'" label="Reopen原因" prop="reasonOrDesc">
-            <el-input v-model="statusDialogForm.reasonOrDesc" type="textarea" placeholder="请输入Reopen" maxlength="300" show-word-limit rows="4" />
-          </el-form-item>
-        </el-form>
-        <template v-slot:footer>
-          <el-button @click="get_list(),statusDialogVisible = false">取 消</el-button>
-          <el-button type="primary" @click="statusDialogConfirm">确 定</el-button>
-        </template>
-      </el-dialog>
-      <!-- 弹窗 -->
-      <openDialog v-if="dialog_open" ref="task_createdUpdata" @updateIteration="setChild()" />
-      <createdBug v-if="modalShow" ref="createdBug" @reloadList="bug_list(codeCache)" />
-      <TestReport v-if="dialogVisible1" ref="TestReport" />
-      <DailyReport v-if="dialogDaily" ref="DailyReport" />
-      <ClientReport v-if="dialogClient" ref="ClientReport" />
-    </div>
-    <el-drawer :visible.sync="drawerShow" :modal="false" :with-header="false" size="50%" class="bug_manage_drawer" @click.stop>
-      <div @click.stop>
-        <bug-details :id="bugId + ''" ref="bugDetails" :init-count="initCount + ''" :type="'drawer'" @close="drawerShow = false" @delete="drawerShow = false;bug_list(codeCache)" @update="bug_list(codeCache)" />
-      </div>
-    </el-drawer>
-    <drawer
-      ref="drawer"
-      title="任务成员"
-      center
-      :display.sync="display"
-      width="28%"
-      :delete="task_form"
-      :types="true"
-      :inner="true"
-      :mask="false"
-      @childValInput="childVal"
-      @click.stop
-    />
-    <task-dialog :show.sync="showTaskDialog" :task-id="taskId" :status-name="statusName" @getList="get_list" />
-  </div>
-</template>
-
-<script>
-import selDatePicker from '@/components/picker/SelDatePicker'
-const _ = require('lodash')
-import BugDetails from '@/views/projectManage/bugList/details/index.vue'
-import {
-  taskGet,
-  memberQueryMemberInfoByIDAPorName,
-  bugGetBugStatusMapInfo,
-  configShowTaskEnum,
-  ScheduleCreate,
-  tasktaskDelete,
-  taskUpdate,
-  ScheduleUpdate,
-  commentCreate,
-  commentList,
-  deleteEvent,
-  projectTestReport,
-  dailyReport,
-  launchTest
-} from '@/api/taskIndex' // ajax
-import openDialog from '@/views/projectManage/dialog_vue'
-import Utils from '../../../util.js'
-import { launchTestUpdate } from '@/api/projectPage.js'
-import { bugList, bugGetEnum, bugUpdate } from '@/api/defectManage'
-import { launchTestDelete } from '@/api/InterfaceReport'
-import echarts from 'echarts'
-import moment from 'moment'
-moment.locale('zh-cn')
-import { releaseScheduleList } from '@/api/teamBench'
-import Gantt from '@/views/gantta/gantta'
-import createdBug from '@/views/projectManage/bugList/file/createdBug' // bug缺陷
-import TestReport from '@/views/Platform/presentation/Templates/TestReport' // 提测
-import DailyReport from '@/views/Platform/presentation/Templates/DailyReport' // 日报
-import ClientReport from '@/views/Platform/presentation/Templates/ClientReport' // 准出
-import drawer from '@/views/projectManage/Drawer'
-import image_url from '@/assets/home_images/home_u.png'
-import taskDialog from '@/views/projectManage/taskList/dialog/taskDialog'
-
-export default {
-  components: {
-    openDialog,
-    Gantt,
-    createdBug,
-    TestReport,
-    BugDetails,
-    DailyReport,
-    ClientReport,
-    selDatePicker,
-    drawer,
-    taskDialog
-  },
-  filters: {
-    ellipsis(value) {
-      if (!value) return ''
-      if (value.length > 20) {
-        return value.slice(0, 20) + '...'
-      }
-      return value
-    },
-    oneA(value) {
-      if (!value) return ''
-      const da = value.substring(0, 1)
-      return da
-    },
-    naspOut(value) {
-      if (!value) return ''
-      const da = value.split(/\s+/)
-      return da[0]
-    }
-  },
-  data() {
-    return {
-      num: '',
-      image_url: image_url,
-      stColors: ['#409EFF', '#07BCA4', '#F56C6C', '#07BCA4'],
-      codeCache: null,
-      display: false,
-      bugId: 0,
-      initCount: 0,
-      drawerShow: false,
-      dialog_open: false,
-      priorityColors: ['#F56C6C', '#FF8952', '#7ED321'],
-      statusColors: ['#6AB4FF', '#6AB4FF', '#FFCC66', '#7ED321', '#F56C6C'],
-      curIndex: 1,
-      pageSize: 10,
-      statusName: '',
-      task_form: {
-        statusString: '未开始',
-        describe: '',
-        qaObject: {
-          name: ''
-        },
-        rdObject: {
-          name: ''
-        }
-      },
-      dialogVisible1: false, // 提测弹窗
-      showTaskDialog: false, // 状态弹窗
-      radio: '列表',
-      modalShow: false, // 弹窗(新建)
-      CallBackTheReason: '', // 打回原因
-      NewDate: new Date(),
-      content: '', // 评论
-      // comment_content: '', // 评论内容
-      commentTxt: [],
-      commentShow: true, // 评论为空默认显示
-      dialog_launchTestInfoDOS: false, // 打回弹窗
-      currentPage: 0,
-      tiem_date: { // 排期汇总
-        startTime: '',
-        endTime: ''
-      },
-      userInformation: localStorage.getItem('username'),
-      userNames: localStorage.getItem('realname'),
-      form_rules: {
-        type: [{ required: true, message: '事件类型不能为空', trigger: 'blur' }],
-        date_start: [{ required: true, message: '排期不能为空', trigger: 'blur' }]
-      },
-      fal_se: true,
-      arr_event: [], // 事件table
-      options: [], // 人员信息
-      bugBaseInfoDOList: [], // bug
-      launchTestInfoDOS: [], // 提测
-      dailyTestReports: [], // 测试
-      projectTestReportDOS: [], // 准出
-      loading: false,
-      table_show: true, // 表格(显示)
-      Gantt: false, // 甘特图(显示)
-      taskScheduleEvent: [], // 事件类型
-      total: 0,
-      show2: true,
-      describe: false,
-      describe1: false,
-      dialogFormVisible: false,
-      centerDialogVisible: false,
-      centerDialogVisible_task: false, // 任务dialog
-      options1: [],
-      pauseName: '', // gantta
-      ganttData: null,
-      colorSty: '#6AB4FF',
-      appVersion: {},
-      even: '', // 添加事件
-      form: {
-        name: '',
-        region: '',
-        date1: '',
-        date2: '',
-        delivery: false,
-        type: [],
-        resource: '',
-        desc: '',
-        date_start: []
-      },
-      taskId: this.$route.query.id,
-      echarts_name: [], // echarts_name
-      echarts_value: [], // echats_value
-      fixInFutureCount: '', // 已延期
-      totalCount: '', // bug总数
-      bugStatus: [],
-      test: {},
-      taskStatus: [],
-      userData: {},
-      requireName: '',
-      Str: '',
-      CallBackStatus: '',
-      CallBackId: '',
-      bgStyle: '',
-      colorStyle: '',
-      titName: '',
-      dialogDaily: false,
-      rules: {
-        bugReason: [
-          { required: true, message: '请选择缺陷原因', trigger: 'change' }
-        ],
-        repairResult: [
-          { required: true, message: '请选择修复结果', trigger: 'change' }
-        ],
-        reasonOrDesc: [
-          { required: true, message: '请输入Reopen原因', trigger: 'blur' }
-        ]
-      },
-      statusDialogForm: {},
-      repairResultEnumList: [],
-      bugReasonEnumList: [],
-      staData: {},
-      statusId: '',
-      statusDialogVisible: false,
-      dialogClient: false
-    }
-  },
-  computed: {
-    clickCount() {
-      return this.$store.state.app.clickCount
-    }
-  },
-  watch: {
-    clickCount(newVal, oldVal) {
-      this.drawerShow = false
-    }
-  },
-  created() {
-    this.get_list()
-    this.$store.state.data.status = true
-    this.$store.state.data.bizId = true
-  },
-  mounted() {
-    this.get_echarts()
-  },
-  destroyed() {
-    this.$store.state.data.status = false
-    this.$store.state.data.bizId = false
-  },
-  methods: {
-    childVal(val) {
-      this.num = val
-    },
-    modalClose() {
-      this.get_list()
-    },
-    async blurEvent(row, status) {
-      this.staData = row
-      this.statusId = status
-      if (status === 0 || status === 1 || status === 5) {
-        const userData = { id: '', ename: this.userInformation, name: this.userNames }
-        row.status = status
-        const objData = { bugBaseInfo: row, user: userData }
-        const res = await bugUpdate(objData)
-        row.isSelected = !row.isSelected
-        if (res.code === 200) {
-          this.bug_list(this.codeCache)
-          this.$message({ showClose: true, message: res.msg, type: 'success' })
-        } else {
-          this.get_list()
-          this.$message({ showClose: true, message: res.msg, type: 'error' })
-        }
-        return
-      }
-      let data = ''
-      this.bugEnumList.map(item => {
-        item.code === status ? data = item.name : ''
-      })
-      this.statusDialogTitle = data
-      this.statusDialogVisible = true
-    },
-    statusDialogConfirm() {
-      if (this.statusDialogTitle === '待测试') {
-        if (this.statusDialogForm.bugReason === 'undefined' || this.statusDialogForm.bugReason === null) {
-          this.$message.warning('请选择缺陷原因')
-        }
-      } else if (this.statusDialogTitle === '已完成') {
-        if (this.statusDialogForm.bugReason === 'undefined' || this.statusDialogForm.bugReason === null) {
-          this.$message.warning('请选择缺陷原因')
-          return
-        }
-        if (this.statusDialogForm.repairResult === 'undefined' || this.statusDialogForm.repairResult === null) {
-          this.$message.warning('请选择修复结果')
-          return
-        }
-      } else if (this.statusDialogTitle === 'Reopen') {
-        if (!this.statusDialogForm.reasonOrDesc) {
-          this.$message.warning('请输入Reopen原因')
-          return
-        }
-        this.statusDialogVisible = false
-      }
-      this.postDialogForm()
-    },
-    async postDialogForm() {
-      const userData = { id: '', ename: this.userInformation, name: this.userNames }
-      this.staData.status = this.statusId
-      this.staData.reasonOrDesc = this.statusDialogForm.reasonOrDesc
-      this.staData.repairResult = this.statusDialogForm.repairResult
-      this.staData.bugReason = this.statusDialogForm.bugReason
-      const objData = { bugBaseInfo: this.staData, user: userData }
-      const res = await bugUpdate(objData)
-      if (res.code === 200) {
-        this.bug_list(this.codeCache)
-        this.statusDialogVisible = false
-        this.statusDialogForm = {}
-        this.$message({ showClose: true, message: res.msg, type: 'success' })
-      } else if (res.code !== 200) {
-        this.$message({ showClose: true, message: res.msg, type: 'error' })
-        this.get_list()
-      }
-    },
-    async click_launchTestInfoDOS(e) {
-      let res = null
-      const params = { taskId: this.taskId, curIndex: this.curIndex, pageSize: this.pageSize }
-      switch (e.index) {
-        case '1':
-          res = await launchTest(params)
-          this.launchTestInfoDOS = res.data.list // 准出
-          break
-        case '2':
-          res = await dailyReport(params)
-          this.dailyTestReports = res.data.list
-          break
-        case '3':
-          res = await projectTestReport(params)
-          this.projectTestReportDOS = res.data.list
-          break
-        default:
-          this.total = res && res.data.total
-      }
-    },
-    toReportView(ele, index) {
-      switch (index) {
-        case 0:
-          this.dialogDaily = true
-          this.$nextTick(() => {
-            this.$refs.DailyReport.init(3, ele)
-          })
-          break
-        case 1:
-          this.dialogClient = true
-          this.$nextTick(() => {
-            this.$refs.ClientReport.init(3, ele)
-          })
-          break
-        case 2:
-          this.dialogVisible1 = true
-          this.$nextTick(() => {
-            this.$refs.TestReport.init(3, ele)
-          })
-          break
-      }
-    },
-    click_bugName(id) {
-      this.bugId = id
-      this.initCount++
-      this.drawerShow = true
-    },
-    test2(item, e) {
-      // 获取团队人员信息
-      if (typeof this.test[item.idap] === 'undefined') {
-        item.role = e
-        this.test[item.idap] = item
-      }
-      return item.idap
-    },
-    async get_list() {
-      const resEnum = await configShowTaskEnum()
-      if (resEnum.code === 200) {
-        this.taskScheduleEvent = resEnum.data.taskScheduleEvent
-        this.taskStatus = resEnum.data.taskStatus
-        this.bugStatus = resEnum.data.bugStatus
-        this.bugStatus.unshift({ code: -1, msg: '全部' })
-      }
-      const resTask = await taskGet(this.taskId)
-      if (resTask.code === 200) {
-        if (resTask.data.bizId !== Number(localStorage.getItem('bizId'))) {
-          Utils.$emit('demo', resTask.data.bizId)
-        }
-        this.pauseName = resTask.data.involveAppString === null ? '' : resTask.data.involveAppString
-        this.task_form = resTask.data
-        this.total = resTask.total
-        this.tiem_date.startTime = resTask.data.scheduleListResponse.startTime // 开始时间
-        this.tiem_date.endTime = resTask.data.scheduleListResponse.endTime // 结束时间
-        this.arr_event = resTask.data.scheduleListResponse.schedulDetailResponseList
-        this.table_loading = false
-        this.bug_list(-1)
-        this.task_form.bugBaseInfoDOList !== null ? (this.bugBaseInfoDOList = resTask.date.bugBaseInfoDOList) : (this.bugBaseInfoDOList = []) // bug
-        const param = {
-          appType: Number(resTask.data.involveApp),
-          startTime: resTask.data.scheduleListResponse.startTime,
-          endTime: resTask.data.scheduleListResponse.endTime
-        }
-        this.ganttData = this.tableDeal(
-          resTask.data.scheduleListResponse.schedulDetailResponseList
-        )
-        if (this.task_form.stageString === '未知') {
-          this.bgStyle = '#f4f4f5'
-          this.colorStyle = '#909399'
-        }
-        this.task_form.stageString === '正常' ? this.bgStyle = '#69B3FF' : ''
-        this.task_form.stageString === '延期' ? this.bgStyle = '#FF8952' : ''
-        this.task_form.stageString === '已延期' ? this.bgStyle = '#F56C6C' : ''
-        const resSchedule = await releaseScheduleList(param)
-        if (resSchedule.code === 200) {
-          this.appVersion = this.versionDeal(resSchedule.data)
-        }
-      }
-      const resComment = await commentList({ type: 3, joinId: this.taskId })
-      this.commentTxt = resComment.data
-      this.commentTxt !== '' ? this.commentShow = false : this.commentShow = true
-    },
-    tableDeal(arr) {
-      if (arr) {
-        return arr.map(eachData => ({
-          task: { description: eachData.name || '' },
-          schedules: [
-            {
-              taskName: eachData.name || '', event: eachData.desc,
-              schedule: moment(eachData.startTime).format('YYYY.MM.DD') + ' - ' + moment(eachData.endTime).format('YYYY.MM.DD'),
-              startDate: moment(eachData.startTime).format('YYYY-MM-DD'),
-              length: (moment(eachData.endTime) - moment(eachData.startTime)) / 86400000 + 1,
-              owners: eachData.peopleObject === null ? [] : eachData.peopleObject.map(eachMember => eachMember.name),
-              taskId: eachData.taskId
-            }
-          ]
-        }))
-      }
-    },
-    versionDeal(arr) {
-      if (!arr) {
-        return false
-      }
-      const result = {}
-      for (let i = 0; i < arr.length; i++) {
-        let pauseTime = moment(arr[i].startTime).format('YYYY-MM-DD')
-        while (pauseTime <= moment(arr[i].endTime).format('YYYY-MM-DD')) {
-          if (this.pauseName !== null && this.pauseName !== '') {
-            result[pauseTime] = this.pauseName + arr[i].version + arr[i].name
-          } else {
-            result[pauseTime] = ''
-          }
-          // result[pauseTime] = (this.pauseName || '') + arr[i].version + arr[i].name
-          pauseTime = moment(pauseTime).add(1, 'day').format('YYYY-MM-DD')
-        }
-      }
-      return result
-    },
-    setChild() {
-      this.$refs.drawer.getRoleList()
-    },
-    open_created(e) {
-      // 打开弹窗
-      this.dialog_open = true
-      this.$nextTick(() => {
-        this.$refs.task_createdUpdata.init(3, [null, this.taskId])
-      })
-    },
-    async get_echarts() {
-      const resBug = await bugGetBugStatusMapInfo({ taskId: this.taskId })
-      if (resBug.code === 200) {
-        this.fixInFutureCount = resBug.data.fixInFutureCount
-        this.totalCount = resBug.data.totalCount
-        resBug.data.statusInfoList.map(item => {
-          this.echarts_name.push(item.statusString)
-          this.echarts_value.push(item.count)
-        })
-      }
-      this.$nextTick(() => {
-        const myChart = echarts.init(document.getElementById('div1'))
-        myChart.setOption({
-          tooltip: {
-            trigger: 'axis',
-            axisPointer: {
-              type: 'shadow'
-            }
-          },
-          xAxis: { type: 'category', data: this.echarts_name,
-            axisTick: { alignWithLabel: true, show: false },
-            axisLine: { show: true, lineStyle: { type: 'dashed' }}
-          },
-          yAxis: [
-            {
-              gridIndex: 0,
-              axisTick: { show: false },
-              axisLabel: { show: false },
-              splitLine: { show: false },
-              axisLine: { show: false }
-            }
-          ],
-          series: [
-            {
-              data: this.echarts_value,
-              barWidth: '60%',
-              type: 'bar',
-              itemStyle: { normal: { color: '#409EFF' }},
-              label: {
-                show: true,
-                position: 'inside',
-                formatter: function(params) {
-                // 如果值大于0 正常显示,否则不显示
-                  if (params.value > 0) {
-                    return params.value
-                  } else {
-                    return ''
-                  }
-                }
-              }
-            }
-          ]
-        })
-        window.onresize = myChart.resize
-      })
-    },
-    async handleCommand(command) {
-      if (command.label === '已提测' || command.label === '已准出' || command.label === '已上线') {
-        this.statusName = command.label
-        this.showTaskDialog = true
-        return
-      } else {
-        this.task_form.statusString = command.label
-        const taskInfoDO = this.task_form
-        taskInfoDO.status = command.value
-        const user = { name: this.userNames, ename: this.userInformation, id: '' }
-        const resTask = await taskUpdate({ taskInfoDO, user })
-        if (resTask.code === 200) {
-          this.$message({ message: resTask.msg, type: 'success', offset: 150 })
-        }
-      }
-    },
-    // 事件删除
-    event_delete(id) {
-      const user = { name: this.userNames, ename: this.userInformation, id: '' }
-      deleteEvent(id, user).then(res => {
-        if (res.code === 200) {
-          this.get_list()
-          this.$message({ message: res.msg, type: 'success', offset: 150 })
-        } else {
-          this.$message({ message: res.msg + '请联系开发人员', type: 'error', offset: 150 })
-        }
-      })
-    },
-    event_query(e) {
-      // 编辑事件(添加事件)
-      this.even = '编辑事件'
-      let eventID = {}
-      this.arr_event.map(item => {
-        item.id === e ? (eventID = item) : ''
-      })
-      this.dialogFormVisible = true
-
-      this.form = _.cloneDeep(eventID)
-      if (eventID.startTime !== null) {
-        this.$set(this.form, 'date_start', [eventID.startTime, eventID.endTime])
-      } else {
-        this.$set(this.form, 'date_start', [])
-      }
-      this.options = this.form.peopleObject
-      if (this.form.peopleObject !== null && this.form.peopleObject !== '') {
-        const peopleArr = this.form.peopleObject.map((eachPeople) => eachPeople.idap)
-        this.$set(this.form, 'peoples', peopleArr)
-      }
-      this.form.noHoliday === 1 ? (this.form.noHoliday = false) : (this.form.noHoliday = true)
-    },
-    blur_describe(e) {
-      this.describe = false
-      this.describe1 = true
-      this.$set(this.task_form, 'describe', e)
-    },
-    remoteMethod(query) {
-      // 人员查询
-      if (query !== '') {
-        this.loading = true
-        setTimeout(() => {
-          this.loading = false
-          memberQueryMemberInfoByIDAPorName({ memberIDAP: query }).then(res => {
-            const obj = {}
-            this.options = res.data.reduce((cur, next) => {
-              obj[next.idap] ? '' : obj[next.idap] = true && cur.push(next)
-              return cur
-            }, [])
-          })
-        }, 200)
-      } else {
-        this.options = []
-      }
-    },
-    task_delete(e) {
-      // 删除任务
-      const user = { name: this.userNames, ename: this.userInformation, id: '' }
-      tasktaskDelete(user, e).then(res => {
-        if (res.code === 200) {
-          this.$router.push({ name: '任务', query: {}})
-          this.$message({
-            message: res.msg,
-            type: 'success',
-            duration: 1000,
-            offset: 150
-          })
-        } else {
-          this.$message({
-            message: res.msg + '请联系开发人员',
-            type: 'error',
-            duration: 1000,
-            offset: 150
-          })
-        }
-      })
-    },
-    event_update(e) {
-      // 编辑事件
-      this.even = '编辑事件'
-      this.$refs['form'].validate(valid => {
-        if (valid) {
-          const schedule = e
-          e.noHoliday === true ? (schedule.noHoliday = 0) : (schedule.noHoliday = 1)
-          schedule.peopleObject = e.peoples
-          schedule.startTime = e.date_start[0]
-          schedule.endTime = e.date_start[1]
-          schedule.taskId = Number(this.taskId)
-          this.taskScheduleEvent.map(item => {
-            item.code === e.type ? (schedule.name = item.msg) : ''
-          })
-          this.ScheduleUpdate(schedule)
-        }
-      })
-    },
-    async ScheduleUpdate(schedule) {
-      const user = { name: this.userNames, ename: this.userInformation, id: '' }
-      const res = await ScheduleUpdate({ schedule, user })
-      if (res.code === 200) {
-        this.dialogFormVisible = false
-        this.setChild()
-        this.$message({
-          message: res.msg,
-          type: 'success',
-          duration: 1000,
-          offset: 150
-        })
-        this.get_list()
-      }
-    },
-    event_created(e) {
-      // 添加事件
-      this.even = '新建事件'
-      this.$refs['form'].validate(valid => {
-        if (valid) {
-          const schedule = _.cloneDeep(e)
-          e.noHoliday ? (schedule.noHoliday = 0) : (schedule.noHoliday = 1)
-          schedule.startTime = e.date_start[0]
-          schedule.endTime = e.date_start[1]
-          schedule.taskId = Number(this.taskId)
-          delete schedule.date_start
-          this.taskScheduleEvent.map(item => {
-            item.code === e.type ? (schedule.name = item.msg) : ''
-          })
-          this.ScheduleCreate(schedule)
-        }
-      })
-    },
-    async ScheduleCreate(schedule) {
-      const user = {
-        name: this.userNames,
-        ename: this.userInformation,
-        id: ''
-      }
-      const res = await ScheduleCreate({ schedule, user })
-      if (res.code === 200) {
-        this.setChild()
-        this.dialogFormVisible = false
-        this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
-        this.get_list()
-      }
-    },
-    async bug_list(e) {
-      this.codeCache = _.cloneDeep(e)
-      // bug查询
-      const resEnum = await bugGetEnum()
-      if (resEnum.code === 200) {
-        this.bugEnumList = resEnum.data.bugEnumList // status
-        this.priorityLevelEnumList = resEnum.data.priorityLevelEnumList // 优先级
-        this.repairResultEnumList = resEnum.data.repairResultEnumList // 修复结果
-        this.bugReasonEnumList = resEnum.data.bugReasonEnumList
-      }
-      let params
-      if (e === -1) {
-        params = { taskId: this.taskId, pageSize: this.pageSize, curIndex: this.curIndex }
-      } else {
-        params = { status: e, taskId: Number(this.taskId), pageSize: this.pageSize, curIndex: this.curIndex }
-      }
-      const resList = await bugList(params)
-      if (resList.code === 200) {
-        if (resList.data) {
-          this.colorSty = e === -1 ? '#6AB4FF' : ''
-          this.bugBaseInfoDOList = resList.data
-          this.total = resList.total
-          this.bugBaseInfoDOList.map(item1 => {
-            this.priorityLevelEnumList.map(item => {
-              item1.priorityLevel !== null ? item1.priorityLevel === item.name ? item1.priorityCode = item.code : '' : ''
-            })
-          })
-        } else {
-          this.bugBaseInfoDOList = []
-        }
-      }
-    },
-    async comment(e) {
-      this.content = ''
-      this.commentShow = false
-      const commentInfo = {
-        joinId: this.taskId,
-        content: e,
-        type: 3,
-        fatherId: 0,
-        name: this.userNames,
-        email: this.userInformation
-      }
-      const user = { name: this.userNames, ename: this.userInformation, id: '' }
-      const res = await commentCreate({ commentInfo, user })
-      if (res.code === 200) {
-        this.get_list()
-        this.$message({ message: res.msg, type: 'success', offset: 150 })
-      }
-    },
-    GanttChart(e) {
-      switch (e) {
-        case 1:
-          this.table_show = true
-          this.Gantt = false
-          break
-        case 2:
-          this.table_show = false
-          this.Gantt = true
-          break
-      }
-    },
-    add_Event() {
-      // 添加事件(排期)
-      this.even = '新建事件'
-      this.dialogFormVisible = true
-      this.form = {}
-      this.$nextTick(() => { this.$refs['form'].clearValidate() })
-    },
-    devUrl_tow(e, ele) {
-      // 技术文档
-      switch (e) {
-        case 1:
-          this.$router.push({ name: '项目详情', query: { id: ele }})
-          break
-        case 2:
-          window.open(ele, '_blank')
-          break
-        case 3:
-          this.$router.push({ name: '需求详情', params: { id: ele + '' }})
-          break
-      }
-    },
-    endDialog() {
-      this.dialog_launchTestInfoDOS = false
-      this.$message({ type: 'success', message: '已取消' })
-    },
-    // 打回
-    back(e, ele, data) {
-      this.requireName = data.name
-      this.CallBackStatus = e
-      this.CallBackId = ele
-      switch (e) {
-        case 1:
-          this.dialog_launchTestInfoDOS = true
-          this.titName = '提测确认'
-          this.Str = '通过'
-          break
-        case 2:
-          this.dialog_launchTestInfoDOS = true
-          this.titName = '提测确认'
-          this.Str = '打回'
-          break
-        case 3:
-          data.taskIds = [Number(this.taskId)]
-          this.dialogVisible1 = true
-          this.$nextTick(() => {
-            this.$refs.TestReport.init(4, data)
-          })
-          break
-        case 4:
-          this.dialog_launchTestInfoDOS = true
-          this.titName = '删除确认'
-          this.Str = '删除'
-          break
-        case 5:
-          this.dialogVisible1 = true
-          this.$nextTick(() => {
-            this.$refs.TestReport.init(3, data)
-          })
-          break
-        case 6:
-          this.dialogVisible1 = true
-          this.$nextTick(() => {
-            this.$refs.TestReport.init(2, data)
-          })
-          break
-      }
-    },
-    async passOrBackSend() {
-      this.dialog_launchTestInfoDOS = false
-      const launchTestInfo = { status: this.CallBackStatus, id: this.CallBackId }
-      const userData = { id: '', ename: this.userInformation, name: this.userNames }
-      const objData = { launchTestInfo: launchTestInfo, user: userData }
-      if (this.Str === '通过' || this.Str === '打回') {
-        const res1 = await launchTestUpdate(objData)
-        res1.code === 200 ? this.$message({ message: res1.msg, type: 'success', offset: 150 }) : this.$message({ message: res1.msg, type: 'error', offset: 150 })
-        const res2 = await launchTest({ taskId: this.taskId, curIndex: this.curIndex, pageSize: this.pageSize })
-        this.launchTestInfoDOS = res2.data.list
-        this.total = res2.data.total
-      } else if (this.Str === '删除') {
-        const res3 = await launchTestDelete(userData, this.CallBackId)
-        if (res3.code === 200) {
-          this.$message({ type: 'success', message: '已删除' })
-        }
-      }
-    },
-    handleSizeChange(size) { //  分页
-      this.pageSize = size
-      this.get_list()
-    },
-    handleCurrentChange(curIndex) { //  分页
-      this.curIndex = curIndex
-      this.get_list()
-    },
-    createReport(e, ele) {
-      switch (e) {
-        case 1: // 提测
-          this.dialogVisible1 = true
-          this.$nextTick(() => { this.$refs.TestReport.init(1, ele) })
-          break
-        case 2: // 日报
-          this.dialogDaily = true
-          this.$nextTick(() => { this.$refs.DailyReport.init(1) })
-          break
-        case 3:
-          this.dialogClient = true
-          this.$nextTick(() => { this.$refs.ClientReport.init(1, ele) })
-          break
-        case 4:
-          this.modalShow = true
-          this.$nextTick(() => { this.$refs.createdBug.init(1, ele) })
-          break
-      }
-    }
-  }
-}
-</script>
-
-<style lang="scss">
-.footer .el-tabs__nav-wrap::after {
-  background-color: #FFFFFF !important;
-}
-.footer .el-tabs__header {
-  padding: 0;
-  position: relative;
-  margin: 0 0 15px;
-  width: 80%;
-}
-</style>
-<style lang="stylus" scoped>
-.btn {
-  cursor: pointer;
-}
-.btn:hover {
-  color:#409EFF
-}
-.selected {
-  color: rgb(106, 180, 255)
-}
-.bgborderButton .el-button--info.is-plain:hover {
-  background: #3f9eff !important;
-  border-color: #3f9eff !important;
-}
-
-.special-button .el-button--info.is-plain:hover {
-  background: #3f9eff !important;
-  border-color: #3f9eff !important;
-}
-
-.special-button .el-button--info.is-plain {
-  background: white !important;
-}
-
-.bgborder {
-  background-color: #FFFFFF;
-  border-radius: 4px;
-}
-
-.footer {
-  margin: 0 1% 1% 1%;
-  background-color: #FFFFFF;
-  border-radius: 4px;
-}
-
-.aside {
-  font-size: 14px;
-  margin: 5%;
-  cursor: pointer;
-}
-
-.aside:hover {
-  color: #409EFF;
-}
-
-.bgbugTa .el-main {
-  padding: 0 !important;
-}
-
-.el-tooltip__popper {
-  max-width: 200px;
-}
-
-.test {
-  height: 50vh;
-  color: #666666;
-  font-size: 14px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.el-dropdown-menu__item:not(.is-disabled):hover {
-  background-color: #f6f7fa;
-  color: #606266;
-}
-
-.bgbugTa .el-divider--horizontal {
-  display: block;
-  height: 1px;
-  width: 100%;
-  position: absolute !important;
-  margin: 0 !important;
-}
-
-.form_e .el-form-item {
-  margin-bottom: 0px;
-}
-
-.form_e label{
-  font-weight 400
-}
-
-.status {
-  margin-left: 2%;
-  cursor: pointer;
-}
-
-.status:hover {
-  color: #6AB4FF;
-}
-
-.timeStyle {
-   text-align: center;
-   padding: 5px;
-   border-radius: 4px;
-   min-height: 34px;
-   min-width: 74px;
-   display: flex;
-   justify-content: center;
-   align-items: center;
-   color: #FFF;
-   font-size:14px;
-   margin-right:20px;
-   font-family:MicrosoftYaHei;
-   color:rgba(255,255,255,1);
-}
-
-.dateSet {
-  font-size: 14px;
-  color: #333B4A;
-  margin: 1.5% 0;
-  padding-bottom:1.5%;
-}
-.div_priority {
-  color: #ffffff;
-  width: 35px;
-  padding: 0 12px;
-  border-radius: 4px;
-  margin: auto;
-  margin-right: 46%;
-}
-.bgborder >>> .el-table .cell {
-  margin: -2px 0 -2px 0 !important
-}
-.drop_down {
-  color: #606266
-}
-</style>
-<style lang="scss">
-.btns .el-input--suffix .el-input__inner {
-  padding-right: 10px;
-  padding-left: 10px;
-  width: 73px;
-}
-.item{
-  /deep/ input {
-    color: rgb(126, 211, 33);
-    border: 1px solid rgb(126, 211, 33);
-     border-color: rgb(126, 211, 33) !important;
-         font-weight: 900;
-  }
-  /deep/ .el-input__suffix {
-    color: rgb(126, 211, 33) !important;
-    right: 1px;
-  }
-  /deep/ .el-select__caret {
-    color: rgb(126, 211, 33) !important;
-  }
-}
-.item1 {
-  /deep/ input {
-    color: rgb(255, 204, 102);
-     border: 1px solid rgb(255, 204, 102);
-     border-color: rgb(255, 204, 102) !important;
-         font-weight: 900;
-  }
-  /deep/ .el-input__suffix {
-    color: rgb(255, 204, 102) !important;
-    right: 1px;
-  }
-  /deep/ .el-select__caret {
-    color: rgb(255, 204, 102) !important;
-  }
-}
-.item2 {
-  /deep/ input {
-    color: rgb(245, 108, 108);
-    border: 1px solid rgb(245, 108, 108);
-    border-color: rgb(245, 108, 108) !important;
-        font-weight: 900;
-  }
-   /deep/ .el-input__suffix {
-    color: rgb(245, 108, 108) !important;
-    right: 1px;
-  }
-  /deep/ .el-select__caret {
-   color: rgb(245, 108, 108) !important;
-  }
-}
-.item3 {
-  /deep/ input {
-    color: #D675F0;
-    border: 1px solid #D675F0;
-    border-color: #D675F0 !important;
-        font-weight: 900;
-  }
-    /deep/ .el-input__suffix {
-    color: #D675F0 !important;
-    right: 1px;
-  }
-   /deep/ .el-select__caret {
-   color: #D675F0 !important;
-  }
-}
-.item-color {
-  /deep/ input {
-    color: rgb(106, 180, 255);
-    border: 1px solid rgb(106, 180, 255);
-    border-color: rgb(106, 180, 255) !important;
-        font-weight: 900;
-  }
-    /deep/ .el-input__suffix {
-    color: rgb(106, 180, 255) !important;
-    right: 1px;
-  }
-   /deep/ .el-select__caret {
-   color: rgb(106, 180, 255) !important;
-  }
-}
-</style>