ソースを参照

缺陷类型修改

wangziqian 5 年 前
コミット
b7acb862c8

+ 15 - 1
src/views/projectManage/bugList/details/bugTableDialog.vue

@@ -138,10 +138,24 @@ export default {
         this.statusObj = {
           bugEnumList: res.data.bugEnumList, // status
           repairResultEnumList: res.data.repairResultEnumList, // 修复结果
-          bugReasonEnumList: res.data.bugReasonEnumList // 缺陷原因
+          bugReasonEnumList: res.data.bugReasonEnumList, // 缺陷原因
+          theBugTypeEnumList: this.deleteChild(res.data.theBugTypeEnumList) // 缺陷类型
         }
       }
     },
+    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
+    },
     bugGetTableList(e, index) {
       this.queryData = e
       this.data = {}

+ 34 - 15
src/views/projectManage/bugList/details/index.vue

@@ -140,12 +140,15 @@
                       />
                     </el-select>
                   </el-form-item>
-                  <el-form-item label="缺陷原因">
+                  <!-- <el-form-item label="缺陷原因">
                     <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> -->
                   <el-form-item label="Reopen次数">
                     <div class="bug_manage_div">{{ bug.reopenTimes }}</div>
                   </el-form-item>
+                  <el-form-item label="Hold次数">
+                    <div class="bug_manage_div">{{ bug.holdCount }}</div>
+                  </el-form-item>
                 </el-form>
               </el-aside>
               <el-aside width="49%">
@@ -178,14 +181,19 @@
                     </el-select>
                   </el-form-item>
                   <el-form-item label="缺陷类型">
-                    <el-select v-model="bug.theBugType" @change="bugUpdate(bug,'details')">
-                      <el-option
-                        v-for="item in enums.theBugTypeEnumList"
-                        :key="item.code"
-                        :label="item.name"
-                        :value="item.code"
-                      />
-                    </el-select>
+                    <el-cascader
+                      v-model="bug.theBugType"
+                      :options="theBugTypeEnumList"
+                      :show-all-levels="false"
+                      :props="{
+                        value:'code',
+                        label:'name',
+                        children: 'childrenEnums',
+                        emitPath: false
+                      }"
+                      placeholder="请选择"
+                      @change="bugUpdate(bug,'details')"
+                    />
                   </el-form-item>
                   <el-form-item label="修复结果">
                     <div
@@ -193,10 +201,6 @@
                       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>
             </el-container>
@@ -703,7 +707,8 @@ export default {
           { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
         ]
       },
-      statusObj: null // 状态对象
+      statusObj: null, // 状态对象
+      theBugTypeEnumList: [] // 缺陷类型
     }
   },
   watch: {
@@ -1069,9 +1074,23 @@ export default {
             }
           }
         }
+        this.theBugTypeEnumList = this.deleteChild(res.data.theBugTypeEnumList) // 缺陷类型
         return res
       })
     },
+    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
+    },
     bugUpdate(form, loadingStr) {
       if (form.currentHandler.length > 0) {
         if (form.assigner.length > 0) {

+ 17 - 5
src/views/projectManage/bugList/details/statusChange.vue

@@ -32,10 +32,19 @@
             <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 v-if="statusDialogTitle === '待测试'" label="缺陷类型" prop="theBugType" class="bug_manage_dialog">
+          <el-cascader
+            v-model="statusDialogForm.theBugType"
+            :options="theBugTypeEnumList"
+            :show-all-levels="false"
+            :props="{
+              value:'code',
+              label:'name',
+              children: 'childrenEnums',
+              emitPath: false
+            }"
+            placeholder="请选择"
+          />
         </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" />
@@ -83,8 +92,9 @@ export default {
       statusDialogTitle: '', // 当前状态name值
       repairResultEnumList: [], // 修复结果
       bugReasonEnumList: [], // 缺陷原因
+      theBugTypeEnumList: [], // 缺陷类型
       rules: { // 状态表单验证
-        bugReason: [{ required: true, message: '请选择缺陷原因', trigger: ['blur', 'change'] }],
+        theBugType: [{ required: true, message: '请选择缺陷原因', trigger: ['blur', 'change'] }],
         repairResult: [{ required: true, message: '请选择修复结果', trigger: ['blur', 'change'] }]
       }
     }
@@ -102,6 +112,7 @@ export default {
           this.bugEnumList = newV.bugEnumList || []// status
           this.repairResultEnumList = newV.repairResultEnumList || []// 修复结果
           this.bugReasonEnumList = newV.bugReasonEnumList || []// 缺陷原因
+          this.theBugTypeEnumList = newV.theBugTypeEnumList || []// 缺陷类型
           this.bugStatusList(this.status)
         }
       },
@@ -122,6 +133,7 @@ export default {
           data.reasonOrDesc = this.statusDialogForm.reasonOrDesc
           data.repairResult = this.statusDialogForm.repairResult
           data.bugReason = this.statusDialogForm.bugReason
+          data.theBugType = this.statusDialogForm.theBugType
           const objData = { bugBaseInfo: data, user: this.userData }
           bugUpdate(objData).then(res => {
             if (res.code === 200) {

+ 26 - 7
src/views/projectManage/bugList/file/createdBug.vue

@@ -43,9 +43,18 @@
                   </el-select>
                 </el-form-item>
                 <el-form-item label="缺陷类型" prop="theBugType">
-                  <el-select v-model="formInline.theBugType" filterable placeholder="请选择" style="width:100%;">
-                    <el-option v-for="item in theBugTypeEnumList" :key="item.code" :label="item.name" :value="item.code" />
-                  </el-select>
+                  <el-cascader
+                    v-model="formInline.theBugType"
+                    :options="theBugTypeEnumList"
+                    :show-all-levels="false"
+                    :props="{
+                      value:'code',
+                      label:'name',
+                      children: 'childrenEnums',
+                      emitPath: false
+                    }"
+                    placeholder="请选择"
+                  />
                 </el-form-item>
 
                 <el-form-item label="责任人" style="width:100%;" prop="assigner">
@@ -278,10 +287,8 @@ export default {
         sysType: [{ required: true, message: '端类型不能为空', trigger: 'change' }],
         priority: [{ required: true, message: '缺陷等级不能为空', trigger: 'change' }],
         discoveryStage: [{ required: true, message: '发现阶段不能为空', trigger: 'change' }],
-        theBugType: [{ required: true, message: '缺陷类型不能为空', trigger: 'change' }],
         creatorList: [{ required: true, message: '提报人不能为空', trigger: 'change' }],
         currentHandler: [{ required: true, message: '修复人不能为空', trigger: 'change' }]
-
       },
       bugEnumList: [], // bug状态
       appClient: [], // 客户端
@@ -484,13 +491,25 @@ export default {
         this.clientTypeEnumList = res.data.clientTypeEnumList // 版本
         this.sysTypeEnumList = res.data.sysTypeEnumList // 客户端
         this.networkTypeEnumList = res.data.networkTypeEnumList // 网络
-        this.theBugTypeEnumList = res.data.theBugTypeEnumList // 缺陷类型
+        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(res => {
         this.business_platform_Modular = res.data.map(item => ({