瀏覽代碼

Merge branch 'http_test' of git.xiaojukeji.com:jacklijiajia/thoth-frontend into wangzi_dev

PrinceLee 5 年之前
父節點
當前提交
8fa1e62da9

+ 8 - 0
src/api/defectManage.js

@@ -174,3 +174,11 @@ export function deleteFilter(id) {
     method: 'get'
   })
 }
+
+// 变更记录
+export function operationLogBug(id) {
+  return request({
+    url: TeamManagement + '/operationLog/bug?bugId=' + id,
+    method: 'get'
+  })
+}

+ 26 - 2
src/styles/PublicStyle/index.scss

@@ -37,6 +37,7 @@
     padding-right: 10px;
     padding-left: 10px;
     width: 73px;
+    border: 1px solid;
   }
 }
 
@@ -125,6 +126,29 @@
     }
   }
 
+  .status_color5 { // 迭代状态样式修改(颜色)
+    /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;
+    }
+  }
+
+  .public_themeName { // 迭代,项目,任务,需求 主题
+    font-size: 22px;
+    font-weight: 600;
+    color: rgb(51, 59, 74);
+    padding-left: 15px;
+  }
+
   .scroll { // 添加滚动条(记得设置height)
     overflow: scroll;
     overflow-x: hidden;
@@ -197,10 +221,10 @@
   }
 }
 
-.task {
+.public_task {
   /deep/ .el-dialog__title {
     line-height: 24px;
-    font-size: 18px;
+    font-size: 16px;
     color: #303133;
     padding-left: 10px;
 }

+ 12 - 36
src/views/Platform/presentation/testPresentation.vue

@@ -107,14 +107,6 @@
           <el-select v-model="queryData.code" filterable placeholder="请选择任务" size="mini" style="width:100%;">
             <el-option v-for="item in restaurants" :key="item.id" :label="item.name" :value="item.id" />
           </el-select>
-          <el-tooltip
-            class="item"
-            effect="dark"
-            content="创建测试报告和准出报告时,当前的任务状态为‘测试中’,创建提测报告时,当前的任务状态为‘开发中’"
-            placement="bottom"
-          >
-            <i style="color: red; margin-left: 10px;" class="el-icon-warning-outline" />
-          </el-tooltip>
         </div>
         <span slot="footer" class="dialog-footer">
           <el-button type="primary" size="mini" @click="createPresentation(queryData.code)">创建</el-button>
@@ -313,40 +305,24 @@ export default {
 
     createPresentation(e) {
       if (e !== '') {
-        var taskData = ''
-        this.restaurants.map(item => {
-          item.id === e ? taskData = item : ''
-        })
         switch (this.ins) {
           case 1:
-            if (taskData.status !== 3) {
-              this.$message({ message: '存在状态不是【测试中】的任务,请将任务状态为【测试中】才可测试,请检查!', type: 'warning' })
-            } else {
-              this.dialogDaily = true
-              this.$nextTick(() => {
-                this.$refs.DailyReport.init(7, [e])
-              })
-            }
+            this.dialogDaily = true
+            this.$nextTick(() => {
+              this.$refs.DailyReport.init(7, [e])
+            })
             break
           case 2:
-            if (taskData.status !== 3) {
-              this.$message({ message: '存在状态不是【测试中】的任务,请将任务状态为【测试中】才可准出,请检查!', type: 'warning' })
-            } else {
-              this.dialogClient = true
-              this.$nextTick(() => {
-                this.$refs.ClientReport.init(7, [e])
-              })
-            }
+            this.dialogClient = true
+            this.$nextTick(() => {
+              this.$refs.ClientReport.init(7, [e])
+            })
             break
           case 3:
-            if (taskData.status !== 1) {
-              this.$message({ message: '存在状态不是【开发中】的任务,请将任务状态为【开发中】才可提测,请检查!', type: 'warning' })
-            } else {
-              this.dialogVisible1 = true
-              this.$nextTick(() => {
-                this.$refs.TestReport.init(7, [e])
-              })
-            }
+            this.dialogVisible1 = true
+            this.$nextTick(() => {
+              this.$refs.TestReport.init(7, [e])
+            })
             break
         }
         this.$set(this.queryData, 'code', '')

+ 3 - 3
src/views/automation/index.vue

@@ -12,16 +12,16 @@ export default {
     return {
       show: true,
       iframeHeight: '720px',
-      stable: ' http://10.179.20.26:8080/'
+      stable: ' http://api-kylin-xg02.intra.xiaojukeji.com/tech_esfe_tr_h5_platform_dev_multi_service_support_test'
     }
   },
   computed: {
     envUrl: {
       get() {
-        return envTag === 'test' ? ' http://10.179.20.26:8080/' : ' http://10.179.35.126:8080/#/'
+        return envTag === 'test' ? ' http://api-kylin-xg02.intra.xiaojukeji.com/tech_esfe_tr_h5_platform_dev_multi_service_support_test' : ' http://api-kylin-xg02.intra.xiaojukeji.com/tech_esfe_tr_h5_platform_mars_test'
       },
       set(newValue) {
-        return envTag === 'test' ? ' http://10.179.20.26:8080/' : ' http://10.179.35.126:8080/#/'
+        return envTag === 'test' ? ' http://api-kylin-xg02.intra.xiaojukeji.com/tech_esfe_tr_h5_platform_dev_multi_service_support_test' : ' http://api-kylin-xg02.intra.xiaojukeji.com/tech_esfe_tr_h5_platform_mars_test'
       }
     }
   },

+ 130 - 344
src/views/projectManage/bugList/bugindex.vue

@@ -3,72 +3,27 @@
     <el-container class="bgColor">
       <el-header v-if="type === 'page'" style="height: auto; margin-top: 1%; padding: 0 1%;">
         <el-row class="headerBg">
-          <el-col :span="24" class="Layout">
-            <div class="titFont Layout">
-              <span
-                style="width: 100px;  font-size: 22px; font-family:PingFangSC-Medium,PingFang SC;padding-left: 15px"
-              >缺陷</span>
-            </div>
-            <el-button
-              type="primary"
-              size="mini"
-              @click="createdDefect"
-            >新建缺陷</el-button>
-          </el-col>
-          <el-col :span="24">
-            <el-divider style="color: #EEF0F5;" />
-          </el-col>
+          <div class="Layout_space_between">
+            <div class="public_themeName">缺陷</div>
+            <el-button size="mini" type="primary" @click="createdDefect">新建缺陷</el-button>
+          </div>
+          <el-divider style="color: #EEF0F5; margin: 10px 0 ;" />
           <el-col :span="24" class="Layout" style="padding:0 0 1% 15px">
             <el-form :model="formInline" class="flex_start" style="width: 100%;">
               <div class="Layout">
                 <div class="queryName">缺陷标题</div>
-                <el-input
-                  v-model="formInline.bugName"
-                  size="small"
-                  style="width:72% !important;"
-                  clearable
-                  filterable
-                  placeholder="请输入标题或ID"
-                  @input="changeSelect()"
-                  @change="curIndex = 1;getBugList()"
-                />
+                <el-input v-model="formInline.bugName" size="small" style="width:72% !important;" clearable filterable placeholder="请输入标题或ID" @input="changeSelect()" @change="curIndex = 1;getBugList()" />
               </div>
               <div class="Layout marginLeft">
                 <div class="queryName">状态</div>
-                <el-select
-                  v-model="formInline.status"
-                  size="small"
-                  style="padding-left: 2px;"
-                  clearable
-                  filterable
-                  placeholder="请选择"
-                  @change="curIndex = 1;getBugList()"
-                >
-                  <el-option
-                    v-for="item in bugEnumList"
-                    :key="item.code"
-                    :label="item.name"
-                    :value="item.code"
-                  />
+                <el-select v-model="formInline.status" size="small" style="padding-left: 2px;" clearable filterable placeholder="请选择" @change="curIndex = 1;getBugList()">
+                  <el-option v-for="item in bugEnumList" :key="item.code" :label="item.name" :value="item.code" />
                 </el-select>
               </div>
               <div class="Layout marginLeft">
                 <div class="queryName">优先级</div>
-                <el-select
-                  v-model="formInline.priorityLevel"
-                  size="small"
-                  style="padding-left: 2px;"
-                  clearable
-                  filterable
-                  placeholder="请选择"
-                  @change="curIndex = 1;getBugList()"
-                >
-                  <el-option
-                    v-for="item in priorityLevelEnumList"
-                    :key="item.code"
-                    :label="item.name"
-                    :value="item.name"
-                  />
+                <el-select v-model="formInline.priorityLevel" size="small" style="padding-left: 2px;" clearable filterable placeholder="请选择" @change="curIndex = 1;getBugList()">
+                  <el-option v-for="item in priorityLevelEnumList" :key="item.code" :label="item.name" :value="item.name" />
                 </el-select>
               </div>
             </el-form>
@@ -81,20 +36,8 @@
                   <div class="flex_start">
                     <div class="Layout">
                       <div class="queryName">缺陷等级</div>
-                      <el-select
-                        v-model="formInline.priority"
-                        size="small"
-                        clearable
-                        filterable
-                        placeholder="请选择"
-                        @change="changeSelect()"
-                      >
-                        <el-option
-                          v-for="item in priorityEnumList"
-                          :key="item.code"
-                          :label="item.name"
-                          :value="item.code"
-                        />
+                      <el-select v-model="formInline.priority" size="small" clearable filterable placeholder="请选择" @change="changeSelect()">
+                        <el-option v-for="item in priorityEnumList" :key="item.code" :label="item.name" :value="item.code" />
                       </el-select>
                     </div>
                     <div class="Layout marginLeft">
@@ -285,56 +228,20 @@
                   <div style="margin: 1.5% 0;" class="flex_start">
                     <div class="Layout">
                       <div class="queryName">端类型</div>
-                      <el-select
-                        v-model="formInline.sysType"
-                        size="small"
-                        clearable
-                        filterable
-                        placeholder="请选择"
-                        @change="changeSelect()"
-                      >
-                        <el-option
-                          v-for="item in sysTypeEnumList"
-                          :key="item.code"
-                          :label="item.name"
-                          :value="item.code"
-                        />
+                      <el-select v-model="formInline.sysType" size="small" clearable filterable placeholder="请选择" @change="changeSelect()">
+                        <el-option v-for="item in sysTypeEnumList" :key="item.code" :label="item.name" :value="item.code" />
                       </el-select>
                     </div>
                     <div class="Layout marginLeft">
                       <div class="queryName">客户端</div>
-                      <el-select
-                        v-model="formInline.appId"
-                        size="small"
-                        clearable
-                        filterable
-                        placeholder="请选择"
-                        @change="getClient(formInline.appId)"
-                      >
-                        <el-option
-                          v-for="item in appClient"
-                          :key="item.code"
-                          :label="item.msg"
-                          :value="item.code"
-                        />
+                      <el-select v-model="formInline.appId" size="small" clearable filterable placeholder="请选择" @change="getClient(formInline.appId)">
+                        <el-option v-for="item in appClient" :key="item.code" :label="item.msg" :value="item.code" />
                       </el-select>
                     </div>
                     <div class="Layout marginLeft">
                       <div class="queryName">版本</div>
-                      <el-select
-                        v-model="formInline.appVersion"
-                        size="small"
-                        clearable
-                        filterable
-                        placeholder="请选择"
-                        @change="changeSelect()"
-                      >
-                        <el-option
-                          v-for="item in Editionlist"
-                          :key="item.code"
-                          :label="item.msg"
-                          :value="item.msg"
-                        />
+                      <el-select v-model="formInline.appVersion" size="small" clearable filterable placeholder="请选择" @change="changeSelect()">
+                        <el-option v-for="item in Editionlist" :key="item.code" :label="item.msg" :value="item.msg" />
                       </el-select>
                     </div>
                   </div>
@@ -482,17 +389,17 @@
                   <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
+                      'status_color': scope.row.status === 0,
+                      'status_color2': scope.row.status === 3,
+                      'status_color5': scope.row.status === 2,
+                      'status_color1': scope.row.status === 4,
+                      'status_color3': 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-option v-for="item in bugStatusList(scope.row.status)" :key="item.code" :label="item.name" :value="item.code" />
                   </el-select>
                 </template>
               </el-table-column>
@@ -524,14 +431,7 @@
       </el-main>
     </el-container>
     <createdBug v-show="modalShow" ref="createdBug" :get-bug-list="getBugList" />
-    <el-drawer
-      :visible.sync="drawerShow"
-      :modal="false"
-      :with-header="false"
-      size="50%"
-      class="bug_manage_drawer"
-      @click.stop
-    >
+    <el-drawer :visible.sync="drawerShow" :modal="false" :with-header="false" size="50%" class="bug_manage_drawer" @click.stop>
       <div @click.stop>
         <bug-details
           :id="bugQuery.id+''"
@@ -547,48 +447,41 @@
     <el-dialog
       v-if="statusDialogVisible"
       :visible.sync="statusDialogVisible"
-      width="33%"
-      class="bug_manage_dialog"
+      width="30%"
+      :title="statusDialogTitle"
+      class="public_task"
       :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">
+      <div class="blueStripe" />
+      <el-form ref="statusDialogForm" label-width="110px" label-position="left" :model="statusDialogForm" :rules="rules">
+        <el-form-item v-if="statusDialogTitle === '待测试' || statusDialogTitle === '已完成'" label="修复结果" prop="repairResult" class="bug_manage_dialog">
+          <el-select v-model="statusDialogForm.repairResult" style="width: 100%" @change="modifyResult(statusDialogForm.repairResult)">
+            <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 === '待测试' || statusDialogTitle === '已完成'" label="缺陷原因" prop="bugReason" class="bug_manage_dialog">
           <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-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-form-item v-if="statusDialogTitle === 'Reopen'" label="Reopen原因" prop="reasonOrDesc" class="bug_manage_dialog">
           <el-input v-model="statusDialogForm.reasonOrDesc" type="textarea" placeholder="请输入Reopen" maxlength="300" show-word-limit rows="4" />
         </el-form-item>
+        <el-form-item v-if="statusDialogTitle === 'Hold'" label="Hold原因" prop="reasonOrDesc" class="bug_manage_dialog">
+          <el-input v-model="statusDialogForm.reasonOrDesc" type="textarea" maxlength="300" show-word-limit rows="4" />
+        </el-form-item>
       </el-form>
       <template v-slot:footer>
-        <el-button @click="getBugList(),statusDialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="statusDialogConfirm">确 定</el-button>
+        <el-button size="small" @click="getBugList(),statusDialogVisible = false">取 消</el-button>
+        <el-button size="small" type="primary" @click="statusDialogConfirm">确 定</el-button>
       </template>
     </el-dialog>
-    <normal-dialog
-      :show-dialog="showSaveSearch"
-      :title="'保存筛选项'"
-      :width="'35%'"
-      @confirm="saveSearch('searchForm')"
-      @cancel="showSaveSearch=false"
-    >
+    <normal-dialog :show-dialog="showSaveSearch" :title="'保存筛选项'" :width="'35%'" @confirm="saveSearch('searchForm')" @cancel="showSaveSearch=false">
       <div v-if="showSaveSearch" class="file-dialog">
         <el-form ref="searchForm" :model="searchForm" :rules="searchFormRules" label-width="100px">
           <el-form-item label="过滤器名称" prop="name">
@@ -597,13 +490,7 @@
         </el-form>
       </div>
     </normal-dialog>
-    <normal-dialog
-      :show-footer="false"
-      :show-dialog="showEditSearch"
-      :title="'管理过滤器'"
-      :width="'65%'"
-      @cancel="showEditSearch=false"
-    >
+    <normal-dialog :show-footer="false" :show-dialog="showEditSearch" :title="'管理过滤器'" :width="'65%'" @cancel="showEditSearch=false">
       <filter-list :show-filter="showEditSearch" @deleteFilter="deleteFilter" />
     </normal-dialog>
   </div>
@@ -615,6 +502,7 @@ import createdBug from '@/views/projectManage/bugList/file/createdBug'
 import normalDialog from '@/components/dialog/normalDialog'
 import filterList from '@/views/projectManage/bugList/details/filterList'
 import { deepClone } from '@/utils/global'
+import '@/styles/PublicStyle/index.scss'
 import {
   bugList,
   bugSelfList,
@@ -629,7 +517,6 @@ import {
   getFilterList,
   getFilterItem
 } from '@/api/defectManage'
-// import { getCommentList } from '@/api/requirement.js'
 import { memberQueryMemberInfoByIDAPorName } from '@/api/projectIndex'
 import '@/views/projectManage/bugList/css/index.css'
 export default {
@@ -687,25 +574,17 @@ export default {
         }]
       },
       rules: {
-        bugReason: [
-          { required: true, message: '请选择缺陷原因', trigger: 'change' }
-        ],
-        repairResult: [
-          { required: true, message: '请选择修复结果', trigger: 'change' }
-        ],
-        reasonOrDesc: [
-          { required: true, message: '请输入Reopen原因', trigger: 'blur' }
-        ]
+        bugReason: [{ required: true, message: '请选择缺陷原因', trigger: ['blur', 'change'] }],
+        repairResult: [{ required: true, message: '请选择修复结果', trigger: ['blur', 'change'] }],
+        reasonOrDesc: [{ required: true, message: '请输入Reopen原因', trigger: ['blur', 'change'] }]
+      },
+      statusDialogForm: {
+        repairResult: 1
       },
-      statusDialogForm: {},
-      radio: '1',
       bugListType: 2,
       props: { multiple: true },
       reopens: [{ code: 1, name: '是' }, { code: 0, name: '否' }],
-      priorityColors: ['#F56C6C', '#FF8952', '#7ED321'],
-      statusColors: ['#6AB4FF', '#6AB4FF', '#FFCC66', '#7ED321', '#F56C6C'],
-      userInformation: localStorage.getItem('username'),
-      userNames: localStorage.getItem('realname'),
+      userData: { id: '', ename: localStorage.getItem('username'), name: localStorage.getItem('realname') },
       statusDialogTitle: '',
       statusDialogVisible: false,
       DetailedScreening: false, // 高级筛选
@@ -727,11 +606,7 @@ export default {
       bugQuery: '', // bug详情
       business_platform_Modular: [], // 所属模块
       bugQueryModel: '',
-      commentShow: true, // 评论为空默认显示
-      content: '', // 评论
-      comment_content: '', // 评论内容
       fileList: [], // 储存附件
-      dis: false,
       commentTxt: [],
       pageSize: 15,
       curIndex: 1,
@@ -744,7 +619,6 @@ export default {
       stratAndEnd: [], // 创建日期
       tableData: [],
       dialogVisible: false,
-      accessory: [],
       loading: false,
       options: [],
       test: [], // 人员查询
@@ -856,32 +730,15 @@ export default {
     modalClose() {
       this.getBugList()
     },
-    selectStatus(row) {
-      row.isSelected = !row.isSelected
-    },
     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 }
+      if (status === 0) {
         row.status = status
-        const objData = { bugBaseInfo: row, user: userData }
+        const objData = { bugBaseInfo: row, user: this.userData }
         bugUpdate(objData).then(res => {
           row.isSelected = !row.isSelected
-          if (res.code === 200) {
-            this.$message({
-              showClose: true,
-              message: res.msg,
-              type: 'success'
-            })
-          } else {
-            this.getBugList()
-            this.$message({
-              showClose: true,
-              message: res.msg,
-              type: 'error'
-            })
-          }
+          this.$message({ message: res.msg, type: res.msg })
         })
         return
       }
@@ -890,61 +747,68 @@ export default {
         item.code === status ? data = item.name : ''
       })
       this.statusDialogTitle = data
+      this.statusDialogForm = {}
+      if (status === 2) {
+        this.$set(this.statusDialogForm, 'repairResult', 1)
+      }
+      if (status === 3) {
+        this.$set(this.statusDialogForm, 'repairResult', row.repairResult)
+        this.$set(this.statusDialogForm, 'bugReason', row.bugReason)
+      }
       this.statusDialogVisible = true
     },
-    bugStatusChange(row) {
-      row.isSelected = !row.isSelected
-      this.$nextTick(() => {
-        this.$refs.inputVal.focus()
-      })
+    modifyResult(val) { // 修复结果
+      switch (val) {
+        case 9:
+          this.$set(this.statusDialogForm, 'bugReason', 9)
+          break
+        case 11:
+          this.$set(this.statusDialogForm, 'bugReason', 11)
+          break
+        case 2:
+          this.$set(this.statusDialogForm, 'bugReason', 10)
+          break
+        case 3:
+          this.$set(this.statusDialogForm, 'bugReason', 12)
+          break
+        default: this.$set(this.statusDialogForm, 'bugReason', '')
+          break
+      }
     },
-    statusDialogConfirm() {
-      if (this.statusDialogTitle === '待测试') {
-        if (typeof this.statusDialogForm.bugReason === 'undefined' || this.statusDialogForm.bugReason === null) {
-          this.$message.warning('请选择缺陷原因')
-        }
-        this.postDialogForm()
-      } else if (this.statusDialogTitle === '已完成') {
-        if (typeof this.statusDialogForm.bugReason === 'undefined' || this.statusDialogForm.bugReason === null) {
-          this.$message.warning('请选择缺陷原因')
-          return
-        }
-        if (typeof this.statusDialogForm.repairResult === 'undefined' || this.statusDialogForm.repairResult === null) {
-          this.$message.warning('请选择修复结果')
-          return
-        }
-        this.postDialogForm()
-      } else if (this.statusDialogTitle === 'Reopen') {
-        if (!this.statusDialogForm.reasonOrDesc) {
-          this.$message.warning('请输入Reopen原因')
-          return
+    statusDialogConfirm() { // 点击确定 验证 修改
+      this.$refs.statusDialogForm.validate((valid) => {
+        if (valid) {
+          this.staData.status = this.statusCode
+          this.staData.reasonOrDesc = this.statusDialogForm.reasonOrDesc
+          this.staData.repairResult = this.statusDialogForm.repairResult
+          this.staData.bugReason = this.statusDialogForm.bugReason
+          const objData = { bugBaseInfo: this.staData, user: this.userData }
+          alert()
+          bugUpdate(objData).then(res => {
+            if (res.code === 200) {
+              this.statusDialogVisible = false
+              this.statusDialogForm = {}
+            } else if (res.code !== 200) {
+              this.getBugList()
+            }
+            this.$message({ message: res.msg, type: res.msg })
+          })
         }
-        this.postDialogForm()
-        this.statusDialogVisible = false
-      }
+      })
     },
     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 objData = { bugBaseInfo: this.staData, user: this.userData }
       bugUpdate(objData).then(res => {
         if (res.code === 200) {
           this.statusDialogVisible = false
           this.statusDialogForm = {}
-          this.$message({
-            showClose: true,
-            message: res.msg,
-            type: 'success'
-          })
+          this.$message({ message: res.msg, type: res.msg })
         } else if (res.code !== 200) {
-          this.$message({
-            showClose: true,
-            message: res.msg,
-            type: 'error'
-          })
+          this.$message({ message: res.msg, type: res.msg })
           this.getBugList()
         }
       })
@@ -1001,26 +865,6 @@ export default {
       this.dialogImageUrl = file.url
       this.dialogVisible = true
     },
-
-    // 文件上传时的钩子
-    progress(event, file, fileList) {
-      this.dis = true
-    },
-
-    // 上传成功回调
-    handleChange(response, file, fileList) {
-      this.fileDbList.push({
-        name: file.name,
-        url: 'http:' + file.response.url
-      })
-      this.accessory = JSON.stringify(this.fileDbList)
-      this.dis = false
-      this.$message({
-        showClose: true,
-        message: '文件上传成功',
-        type: 'success'
-      })
-    },
     click_bugName(e) {
       this.bugQuery = JSON.parse(
         JSON.stringify(this.tableData.filter(value => value.id === e)[0])
@@ -1185,6 +1029,33 @@ export default {
     deleteFilter() {
       this.$router.push({ path: this.$route.path })
       this.getFilterList()
+    },
+    bugStatusList(status) { // 不同状态返回不同的option
+      if (status === 0) {
+        return this.bugEnumList.filter(item => {
+          return item.code === 0 || item.code === 2 || item.code === 5
+        })
+      }
+      if (status === 2) {
+        return this.bugEnumList.filter(item => {
+          return item.code === 2 || item.code === 3 || item.code === 4
+        })
+      }
+      if (status === 3) {
+        return this.bugEnumList.filter(item => {
+          return item.code === 3
+        })
+      }
+      if (status === 4) {
+        return this.bugEnumList.filter(item => {
+          return item.code === 2 || item.code === 5 || item.code === 4
+        })
+      }
+      if (status === 5) {
+        return this.bugEnumList.filter(item => {
+          return item.code === 5 || item.code === 2
+        })
+      }
     }
   }
 }
@@ -1229,89 +1100,4 @@ export default {
   padding-left: 10px;
   width: 73px;
 }
-// .btns .el-input__suffix {
-//     // display: none;
-//     visibility: hidden;
-// }
-// .btns :hover {
-//  /deep/ .el-input__suffix {
-//     // display: inline-block;
-//     visibility: inherit;
-//   }
-// }
-.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>

+ 227 - 179
src/views/projectManage/bugList/details/index.vue

@@ -6,10 +6,10 @@
       <dropdown
         v-if="map.bugEnumList && typeof bug.status !== 'undefined'"
         v-model="map.bugEnumList[bug.status]"
-        :options="enums.bugEnumList"
+        :options="bugStatusList(map.bugEnumList[bug.status])"
         :size="'small'"
         :class="{
-          'item-color' : map.bugEnumList[bug.status] === '待修复' || '修复中',
+          'item-color' : map.bugEnumList[bug.status] === '待修复',
           'item' : map.bugEnumList[bug.status] === '已完成',
           'item1' : map.bugEnumList[bug.status] === '待测试',
           'item2' : map.bugEnumList[bug.status] === 'Reopen',
@@ -68,7 +68,14 @@
                     v-if="map.bugEnumList && typeof bug.status !== 'undefined'"
                     v-model="map.bugEnumList[bug.status]"
                     size="small"
-                    :options="enums.bugEnumList"
+                    :class="{
+                      'item-color' : map.bugEnumList[bug.status] === '待修复',
+                      'item' : map.bugEnumList[bug.status] === '已完成',
+                      'item1' : map.bugEnumList[bug.status] === '待测试',
+                      'item2' : map.bugEnumList[bug.status] === 'Reopen',
+                      'item3' : map.bugEnumList[bug.status] === 'Hold'
+                    }"
+                    :options="bugStatusList(map.bugEnumList[bug.status])"
                     class="button_status"
                     @command="openStatsDialog"
                   />
@@ -163,10 +170,12 @@
                   <el-form-item label="修复结果">
                     <div
                       v-if="map.repairResultEnumList && bug"
-                      style="padding-left: 15px"
                       class="bug_manage_div"
                     >{{ map.repairResultEnumList[bug.repairResult]?map.repairResultEnumList[bug.repairResult]:'未修复' }}</div>
                   </el-form-item>
+                  <el-form-item label="Hold次数">
+                    <div class="bug_manage_div">{{ bug.holdCount }}</div>
+                  </el-form-item>
 
                 </el-form>
               </el-aside>
@@ -206,17 +215,17 @@
                     </el-select>
                   </el-form-item>
                   <el-form-item label="缺陷原因">
-                    <div v-if="map.bugReasonEnumList && bug" style="padding-left: 15px" class="bug_manage_div">{{ map.bugReasonEnumList[bug.bugReason]?map.bugReasonEnumList[bug.bugReason]:'尚未知' }}</div>
+                    <div v-if="map.bugReasonEnumList && bug" class="bug_manage_div">{{ map.bugReasonEnumList[bug.bugReason]?map.bugReasonEnumList[bug.bugReason]:'尚未知' }}</div>
                   </el-form-item>
                   <el-form-item label="Reopen次数">
-                    <div style="padding-left: 15px" class="bug_manage_div">{{ bug.reopenTimes }}</div>
+                    <div class="bug_manage_div">{{ bug.reopenTimes }}</div>
                   </el-form-item>
 
                 </el-form>
               </el-aside>
             </el-container>
           </el-main>
-          <el-main v-loading="loading.appInfo" :style="type=='page'?{'padding': '20px 30px','margin-top': '10px'}:{'padding-left':'30px','padding-right':'30px'}" class="layout_main bug_manage bug_manage_app_info">
+          <el-main v-loading="loading.appInfo" :style="type=='page'?{'padding': '20px 30px 100px 30px','margin-top': '10px'}:{'padding-left':'30px','padding-right':'30px'}" class="layout_main bug_manage bug_manage_app_info">
             <div class="module_title">
               <div class="module_title__sign" />
               <div class="module_title__caption">客户端信息</div>
@@ -291,7 +300,7 @@
             <el-aside :width="type=='page'?'100%':'100%'">
               <el-form :rules="rules" :label-width="type=='page'?'30%':'16%'" label-position="left" label-suffix=":" :hide-required-asterisk="true">
                 <el-form-item label="提报人">
-                  <div style="padding-left: 15px" class="bug_manage_div">{{ bug.creatorList }}</div>
+                  <div class="bug_manage_div">{{ bug.creatorList }}</div>
                 </el-form-item>
                 <el-form-item label="责任人" prop="assigner" :style="formHeight1 == 'type' ? { 'height': '60px' } : { 'height': 'auto' }">
                   <el-select
@@ -356,16 +365,16 @@
               </el-form>
             </el-aside>
           </el-main>
-          <el-main class="layout_main bug_manage_time_length" :style="type=='page'?{'padding': '20px 30px','margin-top': '10px'}:{'padding-left':'30px'}">
+          <el-main class="layout_main bug_manage_time_length" :style="type=='page'?{'padding': '20px 5px 20px 30px','margin-top': '10px'}:{'padding-left':'30px'}">
             <div class="module_title">
               <div class="module_title__sign" />
               <div class="module_title__caption">时间</div>
             </div>
             <el-divider v-if="type !== 'page'" />
-            <el-aside :width="type=='page'?'100%':'49%'">
-              <el-form label-position="left" label-width="32%">
+            <el-aside :width="type=='page'?'100%':'59%'">
+              <el-form label-position="left" label-width="28%">
                 <el-form-item label="提报时间">
-                  <div style="padding-left: 15px" class="bug_manage_div"> :{{ bug.gmtCreate }}</div>
+                  <div class="bug_manage_div"> :{{ bug.gmtCreate }} <span v-if="bug.gmtCreateIsHoliday === 1" class="bug_date">{{ '节假日提报' }}</span></div>
                 </el-form-item>
                 <el-form-item label="待测试时间">
                   <div class="tips">
@@ -373,7 +382,7 @@
                       <i class="el-icon-warning" />
                     </el-tooltip>
                   </div>
-                  <div style="padding-left: 15px" class="bug_manage_div"> :{{ bug.waitTestTime }}</div>
+                  <div class="bug_manage_div"> :{{ bug.waitTestTime }}</div>
                 </el-form-item>
                 <el-form-item label="已完成时间">
                   <div class="tips">
@@ -381,7 +390,7 @@
                       <i class="el-icon-warning" />
                     </el-tooltip>
                   </div>
-                  <div style="padding-left: 15px" class="bug_manage_div"> :{{ bug.finishTime }}</div>
+                  <div class="bug_manage_div"> :{{ bug.finishTime }} <span v-if="bug.finishTimeIsHoliday === 1" class="bug_date">{{ '节假日关闭' }}</span></div>
                 </el-form-item>
                 <el-form-item label="开发修复时长">
                   <div class="tips">
@@ -389,7 +398,7 @@
                       <i class="el-icon-warning" />
                     </el-tooltip>
                   </div>
-                  <div style="padding-left: 15px" class="bug_manage_div"> :{{ bug.devFixTime }}</div>
+                  <div class="bug_manage_div"> :{{ bug.devFixTime }} <br> :{{ bug.devFixTimePurgeNH }} <span v-if="bug.devFixTimePurgeNH !== null" class="bug_removeDate">{{ '去除节假日' }}</span></div>
                 </el-form-item>
                 <el-form-item label="测试验收时长">
                   <div class="tips">
@@ -397,7 +406,7 @@
                       <i class="el-icon-warning" />
                     </el-tooltip>
                   </div>
-                  <div style="padding-left: 15px" class="bug_manage_div"> :{{ bug.testCheckTime }}</div>
+                  <div class="bug_manage_div"> :{{ bug.testCheckTime }} <br> :{{ bug.testCheckTimePurgeNH }} <span v-if="bug.testCheckTimePurgeNH !== null" class="bug_removeDate">{{ '去除节假日' }}</span></div>
                 </el-form-item>
                 <el-form-item label="总修复时长">
                   <div class="tips">
@@ -405,7 +414,7 @@
                       <i class="el-icon-warning" />
                     </el-tooltip>
                   </div>
-                  <div style="padding-left: 15px" class="bug_manage_div"> :{{ bug.fixTime }}</div>
+                  <div class="bug_manage_div"> :{{ bug.fixTime }} <br> :{{ bug.fixTimePurgeNH }} <span v-if="bug.fixTimePurgeNH !== null" class="bug_removeDate">{{ '去除节假日' }}</span></div>
                 </el-form-item>
               </el-form>
             </el-aside>
@@ -500,30 +509,15 @@
                 >
                   <div class="image-name">{{ file.name }}</div>
                 </el-tooltip>
-                <img
-                  class="el-upload-list__item-thumbnail detail-img"
-                  :src="file.url"
-                  alt=""
-                >
+                <img class="el-upload-list__item-thumbnail detail-img" :src="file.url" alt="">
                 <span class="el-upload-list__item-actions">
-                  <span
-                    class="el-upload-list__item-preview"
-                    @click="handlePictureCardPreview(file)"
-                  >
+                  <span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
                     <i class="el-icon-zoom-in" />
                   </span>
-                  <span
-                    v-if="!disabled"
-                    class="el-upload-list__item-delete"
-                    @click="handleDownload(file)"
-                  >
+                  <span v-if="!disabled" class="el-upload-list__item-delete" @click="handleDownload(file)">
                     <i class="el-icon-download" />
                   </span>
-                  <span
-                    v-if="!disabled"
-                    class="el-upload-list__item-delete"
-                    @click="handleRemoveImage(file)"
-                  >
+                  <span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemoveImage(file)">
                     <i class="el-icon-delete" />
                   </span>
                 </span>
@@ -537,33 +531,41 @@
         <el-main :style="type=='page'?{'padding': '20px 30px','margin-top': '10px'}:{'padding-left':'30px'}" class="layout_main">
           <div class="module_title">
             <div class="module_title__sign" />
-            <div class="module_title__caption">评论</div>
-          </div>
-          <el-divider v-if="type !== 'page'" /><br>
-          <div>
-            <div v-for="(item,index) in comments" :key="index" class="animated bounceInRight">
-              <div
-                style="font-size:14px;color:#333B4A;display: inline-block;"
-              >{{ item.commentInfo.name }}</div>
-              <div
-                style="margin-left:20px;display: inline-block;color: #9B9B9B;font-size:12px"
-              >{{ item.commentInfo.gmtCreater }}</div>
-              <p
-                style="font-size:14px;color:#333B4A;margin-top: 10px;white-space: pre-line;"
-              >{{ item.commentInfo.content }}</p>
-              <br>
-            </div>
-            <el-input
-              v-model="commentContent"
-              type="textarea"
-              placeholder="请输入评论内容"
-              maxlength="1000"
-              show-word-limit
-              :autosize="{ minRows: 3, maxRows: 5}"
-              style="margin-bottom: 2%"
-            />
-            <el-button type="primary" size="small" style="float: right" @click="addComment">发表评论</el-button>
+            <div class="module_title__caption">动态</div>
           </div>
+          <el-divider v-if="type !== 'page'" />
+          <el-tabs v-model="activeName" @tab-click="handleClick">
+            <el-tab-pane label="评论" name="first">
+              <div>
+                <div v-for="(item,index) in comments" :key="index" class="animated bounceInRight">
+                  <div style="font-size:14px;color:#333B4A;display: inline-block;">{{ item.commentInfo.name }}</div>
+                  <div style="margin-left:20px;display: inline-block;color: #9B9B9B;font-size:12px">{{ item.commentInfo.gmtCreater }}</div>
+                  <p style="font-size:14px;color:#333B4A;margin-top: 10px;white-space: pre-line;">{{ item.commentInfo.content }}</p>
+                  <br>
+                </div>
+                <el-input
+                  v-model="commentContent"
+                  type="textarea"
+                  placeholder="请输入评论内容"
+                  maxlength="1000"
+                  show-word-limit
+                  :autosize="{ minRows: 3, maxRows: 5}"
+                  style="margin-bottom: 2%"
+                />
+                <el-button type="primary" size="small" style="float: right" @click="addComment">发表评论</el-button>
+              </div>
+            </el-tab-pane>
+            <el-tab-pane label="变更记录" name="second">
+              <div>
+                <div v-for="(item,index) in changeRecord" :key="index" style="margin: 20px 0" class="animated bounceInRight Layout_space_between">
+                  <span class="operatorName">{{ item.operator }}</span>
+                  <span class="remark">{{ item.remark.length > 25 ? item.remark.substring(0, 30) + '...' : '' }}</span>
+                  <span class="createTime">{{ item.createTime }}</span>
+                </div>
+              </div>
+            </el-tab-pane>
+          </el-tabs>
+
         </el-main>
       </el-container>
       <!-- 弹窗 -->
@@ -571,86 +573,37 @@
         v-if="statusDialogVisible"
         :visible.sync="statusDialogVisible"
         width="33%"
-        class="bug_manage_dialog"
+        :title="statusDialogTitle"
+        class="public_task"
         :append-to-body="true"
         :close-on-click-modal="false"
       >
-        <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
-          v-if="statusDialogTitle !== '删除确认'"
-          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 enums.bugReasonEnumList"
-                :key="item.code"
-                :label="item.name"
-                :value="item.code"
-              />
+        <div class="blueStripe" />
+        <el-form v-if="statusDialogTitle !== '删除确认'" label-width="110px" label-position="left" :model="statusDialogForm" :rules="rules">
+          <el-form-item v-if="statusDialogTitle === '待测试' || statusDialogTitle === '已完成'" label="修复结果" prop="repairResult" class="bug_manage_dialog">
+            <el-select v-model="statusDialogForm.repairResult" style="width: 100%" @change="modifyResult(statusDialogForm.repairResult)">
+              <el-option v-for="item in enums.repairResultEnumList" :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 enums.repairResultEnumList"
-                :key="item.code"
-                :label="item.name"
-                :value="item.code"
-              />
+          <el-form-item v-if="statusDialogTitle === '待测试' || statusDialogTitle === '已完成'" label="缺陷原因" prop="bugReason" class="bug_manage_dialog">
+            <el-select v-model="statusDialogForm.bugReason" style="width: 100%">
+              <el-option v-for="item in enums.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 === 'Reopen'" label="Reopen原因" prop="reasonOrDesc">
-            <el-input
-              v-model="statusDialogForm.reasonOrDesc"
-              type="textarea"
-              placeholder="请输入Reopen"
-              maxlength="300"
-              show-word-limit
-              rows="4"
-            />
+            <el-input v-model="statusDialogForm.reasonOrDesc" type="textarea" placeholder="请输入Reopen" maxlength="300" show-word-limit rows="4" />
+          </el-form-item>
+          <el-form-item v-if="statusDialogTitle === 'Hold'" label="Hold原因" prop="reasonOrDesc">
+            <el-input v-model="statusDialogForm.reasonOrDesc" type="textarea" maxlength="300" show-word-limit rows="4" />
           </el-form-item>
         </el-form>
         <div v-else style="text-align:center;line-height: 150px">是否要删除当前缺陷?</div>
         <template v-slot:footer>
-          <el-button @click="statusDialogCancel">取 消</el-button>
-          <el-button type="primary" @click="statusDialogConfirm">确 定</el-button>
+          <el-button size="small" @click="statusDialogCancel">取 消</el-button>
+          <el-button size="small" type="primary" @click="statusDialogConfirm">确 定</el-button>
         </template>
       </el-dialog>
       <createdBug v-if="modalShow" ref="createdBug" @father="father" />
@@ -687,8 +640,7 @@
 <script>
 import fackClickOutSide from './fackClickOutSide.js'
 import E from 'wangeditor'
-// import Utils from '../../../../util.js'
-// import { settingGetTypeMap } from '@/api/taskIndex'
+import '@/styles/PublicStyle/index.scss'
 import { getCommentList, addComment, getMemberInfo } from '@/api/requirement.js'
 import {
   bugDetails,
@@ -697,7 +649,8 @@ import {
   bugUpdate,
   taskListCreate,
   releaseList,
-  settingQueryBizModuleList
+  settingQueryBizModuleList,
+  operationLogBug
 } from '@/api/defectManage.js'
 import Dropdown from './dropdown.vue'
 import normalDialog from '@/components/dialog/normalDialog'
@@ -744,7 +697,9 @@ export default {
   },
   data() {
     return {
+      changeRecord: [], // 变更记录Data
       modalShow: false,
+      activeName: 'first', // 选项卡默认评论
       iconName: 'float_反馈_icon_close',
       bugNameIsFocus: false,
       props: { multiple: true },
@@ -874,18 +829,6 @@ export default {
     this.bugGetEnum()
     this.$nextTick(() => {
       this.bugGet(this.id, false).then(res => {
-        // this.assignerOptions = []
-        // for (const i in this.bug.assignerList.length) {
-        //   this.searchUser(this.bug.assigner[i]).then(res => {
-        //     this.assignerOptions = res.data
-        //   })
-        // }
-        // this.currentHandlerOptions = []
-        // for (const i in this.bug.currentHandlerList.length) {
-        //   this.searchUser(this.bug.currentHandler[i]).then(res => {
-        //     this.currentHandlerOptions = res.data
-        //   })
-        // }
         this.PersonnelData()
         this.changeWidthOnBlur()
         releaseList().then(res => {
@@ -902,6 +845,12 @@ export default {
     })
   },
   methods: {
+    handleClick(tab, event) {
+      console.log(tab, event)
+      operationLogBug(this.id).then(res => {
+        this.changeRecord = res.data
+      })
+    },
     closeDrawer() {
       this.$emit('close', false)
     },
@@ -933,6 +882,24 @@ export default {
         })
       }
     },
+    modifyResult(val) { // 修复结果
+      switch (val) {
+        case 9:
+          this.$set(this.statusDialogForm, 'bugReason', 9)
+          break
+        case 11:
+          this.$set(this.statusDialogForm, 'bugReason', 11)
+          break
+        case 2:
+          this.$set(this.statusDialogForm, 'bugReason', 10)
+          break
+        case 3:
+          this.$set(this.statusDialogForm, 'bugReason', 12)
+          break
+        default: this.$set(this.statusDialogForm, 'bugReason', '')
+          break
+      }
+    },
     listen(event) {
       event.preventDefault() // 阻止浏览器默认换行操作
       return false
@@ -1067,10 +1034,7 @@ export default {
         this.$message.warning('评论不能为空')
         return
       }
-      addComment({
-        commentInfo: { joinId: this.id, type: 2, content: this.commentContent },
-        user: { ename: this.userInformation }
-      }).then(res => {
+      addComment({ commentInfo: { joinId: this.id, type: 2, content: this.commentContent }, user: { ename: this.userInformation }}).then(res => {
         if (res.code === 200) {
           this.getCommentList()
         }
@@ -1118,6 +1082,33 @@ export default {
       this.bug.bugName = this.bugNameForm.bugName
       this.bugUpdate(this.bug, 'title')
     },
+    bugStatusList(status) { // 不同状态返回不同的option
+      if (status === '待修复') {
+        return this.enums.bugEnumList.filter(item => {
+          return item.code === 0 || item.code === 2 || item.code === 5
+        })
+      }
+      if (status === '待测试') {
+        return this.enums.bugEnumList.filter(item => {
+          return item.code === 2 || item.code === 3 || item.code === 4
+        })
+      }
+      if (status === '已完成') {
+        return this.enums.bugEnumList.filter(item => {
+          return item.code === 3
+        })
+      }
+      if (status === 'Reopen') {
+        return this.enums.bugEnumList.filter(item => {
+          return item.code === 2 || item.code === 5 || item.code === 4
+        })
+      }
+      if (status === 'Hold') {
+        return this.enums.bugEnumList.filter(item => {
+          return item.code === 5 || item.code === 2
+        })
+      }
+    },
     RichText() {
       this.editor = new E('#wage', '#wage1')
       this.editor.customConfig.zIndex = 0
@@ -1244,11 +1235,7 @@ export default {
       })
     },
     bugDelete() {
-      const userData = {
-        id: '',
-        ename: this.userInformation,
-        name: this.userNames
-      }
+      const userData = { id: '', ename: this.userInformation, name: this.userNames }
       return bugDelete(userData, this.bug.id).then(res => {
         return res
       })
@@ -1348,13 +1335,20 @@ export default {
     openStatsDialog(item) {
       this.statusDialogForm = JSON.parse(JSON.stringify(this.bug))
       this.statusDialogForm.status = item.code
-      if (item.name === '待修复' || item.name === '修复中' || item.name === 'Hold') {
-        this.bugUpdate(this.statusDialogForm, 'title')
-          .then(res => {
-            this.bugGet(this.bug.id, false)
-          })
+      if (item.name === '待修复') {
+        this.bugUpdate(this.statusDialogForm, 'title').then(res => {
+          this.bugGet(this.bug.id, false)
+        })
         return
       }
+      if (item.name === '待测试') {
+        this.$set(this.statusDialogForm, 'repairResult', 1)
+        this.$set(this.statusDialogForm, 'bugReason', '')
+      }
+      if (item.name === '已完成') {
+        this.$set(this.statusDialogForm, 'repairResult', this.bug.repairResult)
+        this.$set(this.statusDialogForm, 'bugReason', this.bug.bugReason)
+      }
       this.statusDialogTitle = item.name
       this.statusDialogVisible = true
     },
@@ -1374,28 +1368,18 @@ export default {
           }
         })
       } else if (this.statusDialogTitle === '待测试') {
-        if (
-          typeof this.statusDialogForm.bugReason === 'undefined' ||
-          this.statusDialogForm.bugReason === null
-        ) {
+        if (typeof this.statusDialogForm.bugReason === 'undefined' || this.statusDialogForm.bugReason === null) {
           this.$message.warning('请选择缺陷原因')
         }
-        this.postDialogForm()
-          .then(res => {
-            this.getCommentList()
-          })
+        this.postDialogForm().then(res => {
+          this.getCommentList()
+        })
       } else if (this.statusDialogTitle === '已完成') {
-        if (
-          typeof this.statusDialogForm.bugReason === 'undefined' ||
-          this.statusDialogForm.bugReason === null
-        ) {
+        if (typeof this.statusDialogForm.bugReason === 'undefined' || this.statusDialogForm.bugReason === null) {
           this.$message.warning('请选择缺陷原因')
           return
         }
-        if (
-          typeof this.statusDialogForm.repairResult === 'undefined' ||
-          this.statusDialogForm.repairResult === null
-        ) {
+        if (typeof this.statusDialogForm.repairResult === 'undefined' || this.statusDialogForm.repairResult === null) {
           this.$message.warning('请选择修复结果')
           return
         }
@@ -1405,10 +1389,9 @@ export default {
           this.$message.warning('请输入Reopen原因')
           return
         }
-        this.postDialogForm()
-          .then(res => {
-            this.getCommentList()
-          })
+        this.postDialogForm().then(res => {
+          this.getCommentList()
+        })
         // this.addComment()
         this.statusDialogVisible = false
       }
@@ -1600,6 +1583,7 @@ export default {
   border: transparent;
   color: #666666;
   font-weight: 500;
+  padding-left: 13px
 }
 .bug_manage .el-cascader .el-input__inner:hover {
   border: thin solid #DCDFE6;
@@ -1668,6 +1652,70 @@ border-color: #DCDFE6;
 </style>
 
 <style scoped lang="scss">
+/deep/ .el-tabs__nav-wrap::after {
+    content: "";
+    position: absolute;
+    left: 0;
+    bottom: 0;
+    width: 100%;
+    height: 2px;
+    background-color: #FFF;
+    z-index: 1;
+}
+.operatorName {
+  min-width: 50px;
+  font-size:14px;
+  font-family:PingFang SC;
+  font-weight:500;
+  line-height:20px;
+  color:rgba(51,59,74,1);
+  opacity:1;
+  margin-right: 10px;
+}
+
+.createTime {
+  min-width:150px;
+  font-size:14px;
+  font-family:PingFangSC-Regular;
+  line-height:20px;
+  color:rgba(68,68,68,1);
+  opacity:1;
+}
+
+.remark {
+  width:448px;
+  font-size:14px;
+  font-family:PingFangSC-Regular;
+  line-height:20px;
+  color:#444444;
+  opacity:1;
+}
+
+.bug_removeDate {
+ width:46px;
+  height:16px;
+  background:rgba(64,158,255,0.1);
+  border:1px solid #409EFF;
+  opacity:1;
+  border-radius:2px;
+  font-size:8px;
+  font-family:MicrosoftYaHei;
+  line-height:10px;
+  color:#409EFF;
+}
+
+.bug_date {
+  width:46px;
+  height:16px;
+  background:rgba(245,108,108,0.1);
+  border:1px solid rgba(245,108,108,1);
+  opacity:1;
+  border-radius:2px;
+  font-size:8px;
+  font-family:MicrosoftYaHei;
+  line-height:10px;
+  color:rgba(245,108,108,1);
+}
 .newBtn {
   font-size: 14px;
   color: rgb(51, 59, 74);

+ 1 - 1
src/views/projectManage/iteration/components/PlanningIteration.vue

@@ -215,7 +215,7 @@ export default {
             return item.id !== val.id
           })
         })
-        this.reqRight = this.leftArray
+        this.reqRight = []
       }
       if (e === 2) {
         this.citiesLeft = this.rightArray.concat(this.citiesLeft)

+ 7 - 1
src/views/projectManage/iteration/components/create.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog :visible.sync="showIteration" :show="show" class="task" :title="titName" width="40%" :close-on-click-modal="false" :destroy-on-close="true" @close="OnClose()">
+  <el-dialog :visible.sync="showIteration" :show="show" class="public_task" :title="titName" width="40%" :close-on-click-modal="false" :destroy-on-close="true" @close="OnClose()">
     <div class="blueStripe" />
     <el-form ref="ruleForm" :model="iteration" :rules="rules" label-width="120px">
       <el-form-item label="迭代名称" prop="name">
@@ -69,6 +69,12 @@ export default {
     iterations: {
       immediate: true,
       handler(iterations) {
+        if (iterations.endTime === '未设置') {
+          this.$set(this.iterations, 'endTime', '')
+        }
+        if (iterations.startTime === '未设置') {
+          this.$set(this.iterations, 'startTime', '')
+        }
         this.iteration = iterations === null ? {} : this.iterations
       }
     }

+ 1 - 1
src/views/projectManage/iteration/components/delete.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog :visible.sync="visible" :show="show" class="deleteClassName task" title="移除确认" width="60%" :close-on-click-modal="false" :destroy-on-close="true" @close="OnClose()">
+  <el-dialog :visible.sync="visible" :show="show" class="deleteClassName public_task" title="移除确认" width="60%" :close-on-click-modal="false" :destroy-on-close="true" @close="OnClose()">
     <div class="blueStripe" />
     <div align="center">
       <img style="display: inline-block; width: 40px;" :src="exclamationMark">

+ 1 - 1
src/views/projectManage/iteration/components/deleteIteration.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog :visible.sync="visible" :show="show" class="deleteClassName task" title="删除迭代" width="30%" :close-on-click-modal="false" :destroy-on-close="true" @close="OnClose()">
+  <el-dialog :visible.sync="visible" :show="show" class="deleteClassName public_task" title="删除迭代" width="30%" :close-on-click-modal="false" :destroy-on-close="true" @close="OnClose()">
     <div class="blueStripe" />
     <div align="center">
       <img style="display: inline-block; width: 40px;" :src="exclamationMark">

+ 2 - 2
src/views/projectManage/iteration/details/iterationDetails.vue

@@ -131,8 +131,8 @@ export default {
 
 .partition {
     color: #6F7C93;
-    border-left: 1px solid #c4c3c3;
-    border-right: 1px solid #c4c3c3;
+    border-left: 1px solid #D9D9D9;
+    border-right: 1px solid #D9D9D9;
     width: 35px;
     text-align: center;
     margin: 0 10px;

+ 1 - 7
src/views/projectManage/iteration/index.vue

@@ -2,7 +2,7 @@
   <el-container class="BackgroundCloth">
     <el-header class="public_header">
       <div class="Layout_space_between">
-        <div class="themeName">迭代</div>
+        <div class="public_themeName">迭代</div>
         <el-button size="mini" type="primary" @click="showIteration = true">新建迭代</el-button>
       </div>
       <el-divider style="color: #EEF0F5; margin: 10px 0 ;" />
@@ -193,12 +193,6 @@ export default {
 <style scoped lang="scss">
 .BackgroundCloth {
 
-.themeName {
-  font-size: 22px;
-  font-weight: 450;
-  padding-left: 15px;
-}
-
 .el-divider--horizontal {
   margin: 10px 0;
 }

+ 6 - 30
src/views/projectManage/projectList/components/taskList.vue

@@ -228,40 +228,16 @@ export default {
       }
     },
     filtrateTest() { // 提测筛选
-      const isDevelop = this.curcentList.every(item => {
-        return item.statusString === '开发中'
+      this.dialogTestReport = true
+      this.$nextTick(() => {
+        this.$refs.TestReport.init(7, this.curcentList.map(item => { return item.id }))
       })
-      if (!isDevelop) {
-        this.$message({
-          message: '存在状态不是【开发中】的任务,请将任务状态为【开发中】才可提测,请检查!',
-          type: 'error',
-          duration: 3000,
-          offset: 150
-        })
-      } else {
-        this.dialogTestReport = true
-        this.$nextTick(() => {
-          this.$refs.TestReport.init(7, this.curcentList.map(item => { return item.id }))
-        })
-      }
     },
     filtrateAllow() { // 准出筛选
-      const isDevelop = this.curcentList.every(item => {
-        return item.statusString === '测试中'
+      this.dialogClientReport = true
+      this.$nextTick(() => {
+        this.$refs.ClientReport.init(7, this.curcentList.map(item => { return item.id }))
       })
-      if (!isDevelop) {
-        this.$message({
-          message: '存在状态不是【测试中】的任务,请将任务状态为【测试中】才可准出,请检查!',
-          type: 'error',
-          duration: 3000,
-          offset: 150
-        })
-      } else {
-        this.dialogClientReport = true
-        this.$nextTick(() => {
-          this.$refs.ClientReport.init(7, this.curcentList.map(item => { return item.id }))
-        })
-      }
     },
     filtrateDaily() { // 建立日报
       this.dialogDailyReport = true

+ 113 - 0
src/views/projectManage/taskList/dialog/taskDialog.vue

@@ -0,0 +1,113 @@
+<template>
+  <el-dialog :visible.sync="visible" :show="show" class="deleteClassName public_task" title="状态变更" width="30%" :close-on-click-modal="false" :destroy-on-close="true" @close="OnClose()">
+    <div class="blueStripe" />
+    <div align="center">
+      <div style=" margin-bottom: 5%; white-space:nowrap;">{{ name }}</div>
+      <div style=" margin: 2% 3%; display: flex; justify-content: space-between; align-items: center; white-space:nowrap;">
+        <span>{{ codeName }}:</span>
+        <el-date-picker
+          v-model="date"
+          type="date"
+          :clearable="false"
+          format="yyyy.MM.dd"
+          value-format="yyyy.MM.dd"
+          style="width: 100%;"
+        />
+      </div>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button size="small" @click="OnClose">取 消</el-button>
+      <el-button size="small" type="primary" @click="task_status_uptate(date)">确 定</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+import '@/styles/PublicStyle/index.scss'
+import { taskUpdate } from '@/api/taskIndex' // 更新状态接口
+export default {
+  name: 'TemplateDialog',
+  props: {
+    show: { type: Boolean, default: false }, // 弹窗展示
+    statusName: { type: String, default: null }, // 状态name
+    taskId: { type: String, default: null } // 任务ID
+  },
+  data() {
+    return {
+      visible: this.show,
+      date: new Date(),
+      name: '',
+      task_Id: this.taskId,
+      codeName: '',
+      measurementTimeName: '实际提测时间',
+      exitTimeName: '实际准出时间',
+      onlineTimeName: '实际上线完成时间',
+      measurementTime: '请确认提测报告发出后再切换任务状态为已提测!',
+      exitTime: '请确认准出报告发出后再切换任务状态为已准出!',
+      onlineTime: '请确认所有端或服务均已上线后再切换任务状态为已上线',
+      userData: { id: '', ename: localStorage.getItem('username'), name: localStorage.getItem('realname') }
+    }
+  },
+  watch: {
+    show: {
+      immediate: true,
+      handler(show) {
+        this.visible = this.show
+        const date = new Date()
+        const year = date.getFullYear()
+        const month = date.getMonth() + 1
+        const strDate = date.getDate()
+        this.date = year + '.' + month + '.' + strDate
+      }
+    },
+    statusName: {
+      immediate: true,
+      handler(statusName) {
+        if (statusName === '已提测') {
+          this.name = this.measurementTime
+          this.codeName = this.measurementTimeName
+        }
+        if (statusName === '已准出') {
+          this.name = this.exitTime
+          this.codeName = this.exitTimeName
+        }
+        if (statusName === '已上线') {
+          this.name = this.onlineTime
+          this.codeName = this.onlineTimeName
+        }
+      }
+    }
+  },
+  methods: {
+    OnClose() {
+      this.$emit('update:show', false)
+    },
+    task_status_uptate(e) {
+      const taskInfoDO = {}
+      if (this.statusName === '已提测') {
+        taskInfoDO.status = 2
+        taskInfoDO.launchTestRealTime = e
+      }
+      if (this.statusName === '已准出') {
+        taskInfoDO.status = 4
+        taskInfoDO.testFinishRealTime = e
+      }
+      if (this.statusName === '已上线') {
+        taskInfoDO.status = 5
+        taskInfoDO.onlineRealTime = e
+      }
+      taskInfoDO.id = this.task_Id
+      taskInfoDO.bizId = localStorage.getItem('bizId')
+      const user = this.userData
+      taskUpdate({ taskInfoDO, user }).then(res => {
+        if (res.code === 200) {
+          this.$emit('update:show', false)
+          this.$emit('getList')
+          this.$message({ message: res.msg, type: 'success' })
+        }
+      })
+    }
+
+  }
+}
+</script>

+ 18 - 47
src/views/projectManage/taskList/taskViewDetails.vue

@@ -2,10 +2,6 @@
   <div @click="display = false">
     <div class="bgbugTa" style="background-color:#F2F3F6;display:flex;align-items: center;justify-content: center;">
       <el-container>
-        <div v-if="isHeadShow" style="width:98%;margin: 15px auto 0 auto;height:53px;background:rgba(255,255,255,1);border-radius:4px;color:#F56C6C;font-size:16px;display: flex;align-items: center;">
-          <i class="el-icon-warning-outline" style="margin-left: 20px;" />
-          <span style="margin-left: 4px;">请将排期事件里的排期填写完整,否则无法判断任务健康状态,健康状态会显示未知。</span>
-        </div>
         <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">
@@ -138,12 +134,12 @@
               </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 class="dateSet">预计上线版本:{{ task_form.preOnlineVersion }}</div>
           </div>
         </el-header>
         <el-footer class="footer" style=" height: auto;">
@@ -365,7 +361,7 @@
           <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">
+      <!-- <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>
@@ -375,7 +371,7 @@
           <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> -->
       <!-- 删除 -->
       <el-dialog
         :visible.sync="centerDialogVisible_task"
@@ -456,6 +452,7 @@
       @childValInput="childVal"
       @click.stop
     />
+    <task-dialog :show.sync="showTaskDialog" :task-id="taskId" :status-name="statusName" @getList="get_list" />
   </div>
 </template>
 
@@ -495,6 +492,7 @@ 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: {
@@ -506,7 +504,8 @@ export default {
     DailyReport,
     ClientReport,
     selDatePicker,
-    drawer
+    drawer,
+    taskDialog
   },
   filters: {
     ellipsis(value) {
@@ -542,6 +541,7 @@ export default {
       statusColors: ['#6AB4FF', '#6AB4FF', '#FFCC66', '#7ED321', '#F56C6C'],
       curIndex: 1,
       pageSize: 10,
+      statusName: '',
       task_form: {
         statusString: '未开始',
         describe: '',
@@ -553,7 +553,7 @@ export default {
         }
       },
       dialogVisible1: false, // 提测弹窗
-      isHeadShow: false,
+      showTaskDialog: false, // 状态弹窗
       radio: '列表',
       modalShow: false, // 弹窗(新建)
       CallBackTheReason: '', // 打回原因
@@ -563,7 +563,6 @@ export default {
       commentTxt: [],
       commentShow: true, // 评论为空默认显示
       dialog_launchTestInfoDOS: false, // 打回弹窗
-      centerDialogVisible_status: false, // status
       currentPage: 0,
       tiem_date: { // 排期汇总
         startTime: '',
@@ -830,7 +829,6 @@ export default {
         if (this.task_form.stageString === '未知') {
           this.bgStyle = '#f4f4f5'
           this.colorStyle = '#909399'
-          this.isHeadShow = true
         }
         this.task_form.stageString === '正常' ? this.bgStyle = '#69B3FF' : ''
         this.task_form.stageString === '延期' ? this.bgStyle = '#FF8952' : ''
@@ -947,8 +945,9 @@ export default {
       })
     },
     async handleCommand(command) {
-      if (command.label === '已上线') {
-        this.centerDialogVisible_status = true
+      if (command.label === '已提测' || command.label === '已准出' || command.label === '已上线') {
+        this.statusName = command.label
+        this.showTaskDialog = true
         return
       } else {
         this.task_form.statusString = command.label
@@ -961,21 +960,6 @@ export default {
         }
       }
     },
-    task_status_uptate(e) {
-      this.task_form.statusString = '已上线'
-      const resDate = e.getFullYear() + '-' + (e.getMonth() + 1) + '-' + e.getDate() + ' ' + e.getHours() + ':' + e.getMinutes() + ':' + e.getSeconds()
-      const taskInfoDO = this.task_form
-      taskInfoDO.status = 5
-      taskInfoDO.onlineRealTime = resDate
-      const user = { name: this.userNames, ename: this.userInformation, id: '' }
-      taskUpdate({ taskInfoDO, user }).then(res => {
-        this.centerDialogVisible_status = false
-        if (res.code === 200) {
-          this.centerDialogVisible_status = false
-        }
-        this.$message({ message: res.msg, type: 'success', offset: 150 })
-      })
-    },
     // 事件删除
     event_delete(id) {
       const user = { name: this.userNames, ename: this.userInformation, id: '' }
@@ -1278,28 +1262,16 @@ export default {
     createReport(e, ele) {
       switch (e) {
         case 1: // 提测
-          if (this.task_form.statusString !== '开发中') {
-            this.$message({ message: '存在状态不是【开发中】的任务,请将任务状态为【开发中】才可提测,请检查!', type: 'warning' })
-          } else {
-            this.dialogVisible1 = true
-            this.$nextTick(() => { this.$refs.TestReport.init(1, ele) })
-          }
+          this.dialogVisible1 = true
+          this.$nextTick(() => { this.$refs.TestReport.init(1, ele) })
           break
         case 2: // 日报
-          if (this.task_form.statusString !== '测试中') {
-            this.$message({ message: '存在状态不是【测试中】的任务,请将任务状态为【测试中】才可测试,请检查!', type: 'warning' })
-          } else {
-            this.dialogDaily = true
-            this.$nextTick(() => { this.$refs.DailyReport.init(1) })
-          }
+          this.dialogDaily = true
+          this.$nextTick(() => { this.$refs.DailyReport.init(1) })
           break
         case 3:
-          if (this.task_form.statusString !== '测试中') {
-            this.$message({ message: '存在状态不是【测试中】的任务,请将任务状态为【测试中】才可准出,请检查!', type: 'warning' })
-          } else {
-            this.dialogClient = true
-            this.$nextTick(() => { this.$refs.ClientReport.init(1, ele) })
-          }
+          this.dialogClient = true
+          this.$nextTick(() => { this.$refs.ClientReport.init(1, ele) })
           break
         case 4:
           this.modalShow = true
@@ -1435,7 +1407,6 @@ export default {
   color: #333B4A;
   margin: 1.5% 0;
   padding-bottom:1.5%;
-  border-bottom:1px solid #E9E9E9;
 }
 .div_priority {
   color: #ffffff;