wangziqian 5 lat temu
rodzic
commit
9cd0d27247

+ 1 - 0
src/components/dialog/clickHidden.vue

@@ -42,6 +42,7 @@ export default {
   methods: {
     hiddenDetail(e) { // 点击外部元素,隐藏
       const parent = document.querySelector(`#${this.id}`)
+      if (!parent) return
       const isInner = parent.contains(e.target) // 点击的元素是否在容器内部
       if (!isInner) {
         this.visible = false

+ 28 - 16
src/views/projectManage/bugList/bugindex.vue

@@ -143,24 +143,23 @@
                   <div style="margin: 1.5% 0;" class="flex_start">
                     <div class="Layout">
                       <div class="queryName">缺陷类型</div>
-                      <el-select
-                        v-model="formInline.theBugType"
-                        size="small"
+                      <el-cascader
+                        v-model="formInline.theBugTypes"
+                        :options="theBugTypeEnumList"
+                        :props="{
+                          value:'code',
+                          label:'name',
+                          children: 'childrenEnums',
+                          multiple: true,
+                          emitPath: false
+                        }"
                         clearable
-                        filterable
                         placeholder="请选择"
-                        @change="changeSelect()"
-                      >
-                        <el-option
-                          v-for="item in bugTypeEnumList"
-                          :key="item.code"
-                          :label="item.name"
-                          :value="item.code"
-                        />
-                      </el-select>
+                        size="small"
+                      />
                     </div>
                     <div class="Layout marginLeft">
-                      <div class="queryName">Reopen</div>
+                      <div class="queryName">是否发生Reopen</div>
                       <el-select
                         v-model="formInline.reopenTimes"
                         size="small"
@@ -320,7 +319,7 @@ export default {
       Editionlist: [], // 版本
       bizIdEnumList: [], // bug业务线
       taskEnumList: [], // 所属任务
-      bugTypeEnumList: [], // bug类型
+      theBugTypeEnumList: [], // 缺陷类型
       priorityEnumList: [], // 缺陷等级
       clientTypeEnumList: [], // 版本
       repairResultEnumList: [], // 修复结果
@@ -438,7 +437,6 @@ export default {
       })
       bugGetEnum().then(res => {
         this.bugEnumList = res.data.bugEnumList // status
-        this.bugTypeEnumList = res.data.theBugTypeEnumList // bug类型
         this.bugStageEnumList = res.data.bugStageEnumList // 发现阶段
         this.sysTypeEnumList = res.data.sysTypeEnumList // 端类型
         this.discoveryMethEnumList = res.data.discoveryMethEnumList // 发现方式
@@ -448,11 +446,25 @@ export default {
         this.clientTypeEnumList = res.data.clientTypeEnumList // 版本
         this.sysTypeEnumList = res.data.sysTypeEnumList // 客户端
         this.bugDevRepairTimeList = res.data.bugDevRepairTimeList // 开发修复时长
+        this.theBugTypeEnumList = this.deleteChild(res.data.theBugTypeEnumList) // 缺陷类型
       })
       releaseList().then(res => {
         this.appClient = res.data.appClient // 客户端
       })
     },
+    deleteChild(arr) { // 删除无用子属性
+      const bfs = arr => {
+        arr.forEach(item => {
+          if (!item.childrenEnums || item.childrenEnums.length === 0) {
+            delete item.childrenEnums
+          } else {
+            this.deleteChild(item.childrenEnums)
+          }
+        })
+      }
+      bfs(arr)
+      return arr
+    },
     bugDataGet() {
       // 所属模块
       settingQueryBizModuleList(Number(localStorage.getItem('bizId'))).then(

+ 1 - 0
src/views/projectManage/bugList/css/index.css

@@ -200,6 +200,7 @@
   width: 86px;
   color: #333333;
   font-size: 14px;
+  flex-shrink: 0;
 }
 .download {
   position: absolute;

+ 6 - 25
src/views/projectManage/bugList/details/index.vue

@@ -303,43 +303,18 @@
                   <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">
-                    <el-tooltip class="item" effect="dark" content="最后一次改成待测试状态的时间" placement="bottom-start">
-                      <i class="el-icon-warning" />
-                    </el-tooltip>
-                  </div>
                   <div class="bug_manage_div"> :{{ bug.waitTestTime }}</div>
                 </el-form-item>
                 <el-form-item label="已完成时间">
-                  <div class="tips">
-                    <el-tooltip class="item" effect="dark" content="最后一次改成已完成状态的时间" placement="bottom-start">
-                      <i class="el-icon-warning" />
-                    </el-tooltip>
-                  </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">
-                    <el-tooltip class="item" effect="dark" content="待测试时间-提报时间" placement="bottom-start">
-                      <i class="el-icon-warning" />
-                    </el-tooltip>
-                  </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">
-                    <el-tooltip class="item" effect="dark" content="已完成时间-待测试时间" placement="bottom-start">
-                      <i class="el-icon-warning" />
-                    </el-tooltip>
-                  </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">
-                    <el-tooltip class="item" effect="dark" content="已完成时间-提报时间" placement="bottom-start">
-                      <i class="el-icon-warning" />
-                    </el-tooltip>
-                  </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>
@@ -1455,6 +1430,12 @@ border-color: #DCDFE6;
 </style>
 
 <style scoped lang="scss">
+/deep/.el-form-item__content {
+  span {
+    display: inline-block;
+    line-height: 20px;
+  }
+}
 .str-task-name {
  margin-left: 14px;
  color: #666666;

+ 28 - 18
src/views/quality/defectStatistics.vue

@@ -19,11 +19,12 @@
             size="small"
             value-format="yyyy.MM.dd"
             :default-time="['00:00:00','23:59:59']"
+            @change="dateType = ''"
           />
         </el-form-item>
       </el-form>
       <el-form :model="defectForm" class="demo-form-inline" :inline="true">
-        <el-form-item label="团队:">
+        <el-form-item label="责任团队:">
           <el-select
             v-model="defectForm.team"
             placeholder="请选择"
@@ -197,42 +198,42 @@
           @sort-change="moduleTableSortChange"
         >
           <el-table-column prop="name" label="模块" />
-          <el-table-column v-if="activeTab=== 1" prop="repair" label="新增" sortable="custom" show-overflow-tooltip>
+          <el-table-column v-if="activeTab=== 1" prop="newData" label="新增" sortable="custom" show-overflow-tooltip>
             <template slot-scope="scope">
               <span class="table-repair-item1 repair-span">{{ scope.row.newData.total }}</span>
               <span class="repair-span">{{ scope.row.newData.detail[0].label }}:{{ scope.row.newData.detail[0].total }}</span>
               <span class="repair-span">{{ scope.row.newData.detail[1].label }}:{{ scope.row.newData.detail[1].total }}</span>
             </template>
           </el-table-column>
-          <!-- <el-table-column prop="isRepair" label="待修复/Reopen" sortable="custom">
+          <el-table-column prop="newAndReopenData" label="待修复/Reopen" sortable="custom">
             <template slot-scope="scope">
               <span class="table-repair-item2 repair-span2">{{ scope.row.newAndReopenData.total }}</span>
               <span class="repair-span">{{ scope.row.newAndReopenData.detail[0].label }}:{{ scope.row.newAndReopenData.detail[0].total }}</span>
               <span class="repair-span">{{ scope.row.newAndReopenData.detail[1].label }}:{{ scope.row.newAndReopenData.detail[1].total }}</span>
             </template>
           </el-table-column>
-          <el-table-column prop="isRepair" label="待测试" sortable="custom">
+          <el-table-column prop="waitTestData" label="待测试" sortable="custom">
             <template slot-scope="scope">
               <span class="table-repair-item2 repair-span2">{{ scope.row.waitTestData.total }}</span>
               <span class="repair-span">{{ scope.row.waitTestData.detail[0].label }}:{{ scope.row.waitTestData.detail[0].total }}</span>
               <span class="repair-span">{{ scope.row.waitTestData.detail[1].label }}:{{ scope.row.waitTestData.detail[1].total }}</span>
             </template>
-          </el-table-column> -->
-          <el-table-column prop="isRepair" label="已完成" sortable="custom">
+          </el-table-column>
+          <el-table-column prop="repairData" label="已完成" sortable="custom">
             <template slot-scope="scope">
               <span class="table-repair-item2 repair-span2">{{ scope.row.repairData.total }}</span>
               <span class="repair-span">{{ scope.row.repairData.detail[0].label }}:{{ scope.row.repairData.detail[0].total }}</span>
               <span class="repair-span">{{ scope.row.repairData.detail[1].label }}:{{ scope.row.repairData.detail[1].total }}</span>
             </template>
           </el-table-column>
-          <el-table-column prop="time" label="平均修复时长">
+          <el-table-column prop="repairTimeAvgData" label="平均修复时长">
             <template slot-scope="scope">
               <span class="table-repair-item3 repair-span">{{ scope.row.repairTimeAvgData.total }}</span>
               <span class="repair-span">{{ scope.row.repairTimeAvgData.detail[0].label }}:{{ scope.row.repairTimeAvgData.detail[0].total }}</span>
               <span class="repair-span">{{ scope.row.repairTimeAvgData.detail[1].label }}:{{ scope.row.repairTimeAvgData.detail[1].total }}</span>
             </template>
           </el-table-column>
-          <el-table-column prop="time" label="平均修复时长(去除节假日)">
+          <el-table-column prop="repairTimeAvgPurgeNhData" label="平均修复时长(去除节假日)">
             <template slot-scope="scope">
               <span class="table-repair-item4 repair-span">{{ scope.row.repairTimeAvgPurgeNhData.total }}</span>
               <span class="repair-span">{{ scope.row.repairTimeAvgPurgeNhData.detail[0].label }}:{{ scope.row.repairTimeAvgData.detail[0].total }}</span>
@@ -255,42 +256,42 @@
           @sort-change="memberTableSortChange"
         >
           <el-table-column prop="name" label="姓名" />
-          <el-table-column v-if="activeTab=== 1" prop="repair" label="新增" sortable="custom" show-overflow-tooltip>
+          <el-table-column v-if="activeTab=== 1" prop="newData" label="新增" sortable="custom" show-overflow-tooltip>
             <template slot-scope="scope">
               <span class="table-repair-item1 repair-span">{{ scope.row.newData.total }}</span>
               <span class="repair-span">{{ scope.row.newData.detail[0].label }}:{{ scope.row.newData.detail[0].total }}</span>
               <span class="repair-span">{{ scope.row.newData.detail[1].label }}:{{ scope.row.newData.detail[1].total }}</span>
             </template>
           </el-table-column>
-          <el-table-column prop="isRepair" label="待修复/Reopen" sortable="custom">
+          <el-table-column prop="newAndReopenData" label="待修复/Reopen" sortable="custom">
             <template slot-scope="scope">
               <span class="table-repair-item2 repair-span2">{{ scope.row.newAndReopenData.total }}</span>
               <span class="repair-span">{{ scope.row.newAndReopenData.detail[0].label }}:{{ scope.row.newAndReopenData.detail[0].total }}</span>
               <span class="repair-span">{{ scope.row.newAndReopenData.detail[1].label }}:{{ scope.row.newAndReopenData.detail[1].total }}</span>
             </template>
           </el-table-column>
-          <el-table-column prop="isRepair" label="待测试" sortable="custom">
+          <el-table-column prop="waitTestData" label="待测试" sortable="custom">
             <template slot-scope="scope">
               <span class="table-repair-item2 repair-span2">{{ scope.row.waitTestData.total }}</span>
               <span class="repair-span">{{ scope.row.waitTestData.detail[0].label }}:{{ scope.row.waitTestData.detail[0].total }}</span>
               <span class="repair-span">{{ scope.row.waitTestData.detail[1].label }}:{{ scope.row.waitTestData.detail[1].total }}</span>
             </template>
           </el-table-column>
-          <el-table-column prop="isRepair" label="已完成" sortable="custom">
+          <el-table-column prop="repairData" label="已完成" sortable="custom">
             <template slot-scope="scope">
               <span class="table-repair-item2 repair-span2">{{ scope.row.repairData.total }}</span>
               <span class="repair-span">{{ scope.row.repairData.detail[0].label }}:{{ scope.row.repairData.detail[0].total }}</span>
               <span class="repair-span">{{ scope.row.repairData.detail[1].label }}:{{ scope.row.repairData.detail[1].total }}</span>
             </template>
           </el-table-column>
-          <el-table-column prop="time" label="平均修复时长">
+          <el-table-column prop="repairTimeAvgData" label="平均修复时长">
             <template slot-scope="scope">
               <span class="table-repair-item3 repair-span">{{ scope.row.repairTimeAvgData.total }}</span>
               <span class="repair-span">{{ scope.row.repairTimeAvgData.detail[0].label }}:{{ scope.row.repairTimeAvgData.detail[0].total }}</span>
               <span class="repair-span">{{ scope.row.repairTimeAvgData.detail[1].label }}:{{ scope.row.repairTimeAvgData.detail[1].total }}</span>
             </template>
           </el-table-column>
-          <el-table-column prop="time" label="平均修复时长(去除节假日)">
+          <el-table-column prop="repairTimeAvgPurgeNhData" label="平均修复时长(去除节假日)">
             <template slot-scope="scope">
               <span class="table-repair-item4 repair-span">{{ scope.row.repairTimeAvgPurgeNhData.total }}</span>
               <span class="repair-span">{{ scope.row.repairTimeAvgPurgeNhData.detail[0].label }}:{{ scope.row.repairTimeAvgData.detail[0].total }}</span>
@@ -685,10 +686,15 @@ export default {
       this.moduleData = res.data || []
     },
     moduleTableSortChange(column) { // 模块table排序变动
-      if (column.prop === 'repair') {
+      console.log(column)
+      if (column.prop === 'newData') { // 新增排序
         column.order === 'ascending' ? this.moduleSort = 1 : this.moduleSort = 2
-      } else {
+      } else if (column.prop === 'repairData') { // 已完成排序
         column.order === 'ascending' ? this.moduleSort = 3 : this.moduleSort = 4
+      } else if (column.prop === 'newAndReopenData') { // 带修复
+        column.order === 'ascending' ? this.moduleSort = 5 : this.moduleSort = 6
+      } else if (column.prop === 'waitTestData') { // 待测试
+        column.order === 'ascending' ? this.moduleSort = 7 : this.moduleSort = 8
       }
       this.getModuleDistributeData()
     },
@@ -707,10 +713,14 @@ export default {
       this.memberData = res.data || []
     },
     memberTableSortChange(column) { // 责任人table排序变动
-      if (column.prop === 'repair') {
+      if (column.prop === 'newData') { // 新增排序
         column.order === 'ascending' ? this.memberSort = 1 : this.memberSort = 2
-      } else {
+      } else if (column.prop === 'repairData') { // 已完成排序
         column.order === 'ascending' ? this.memberSort = 3 : this.memberSort = 4
+      } else if (column.prop === 'newAndReopenData') { // 带修复
+        column.order === 'ascending' ? this.memberSort = 5 : this.memberSort = 6
+      } else if (column.prop === 'waitTestData') { // 待测试
+        column.order === 'ascending' ? this.memberSort = 7 : this.memberSort = 8
       }
       this.getMemberDistributeData()
     }