reedliuqing_i 5 năm trước cách đây
mục cha
commit
0673848d26
1 tập tin đã thay đổi với 343 bổ sung77 xóa
  1. 343 77
      src/views/projectManage/bugList/bugindex.vue

+ 343 - 77
src/views/projectManage/bugList/bugindex.vue

@@ -5,9 +5,16 @@
         <el-row class="headerBg">
           <el-col :span="24" class="Layout">
             <div class="titFont Layout">
-              <span style="margin-left: 15px; width: 100px;  font-size: 22px; font-family:PingFangSC-Medium,PingFang SC;">缺陷</span>
+              <span
+                style="margin-left: 15px; width: 100px;  font-size: 22px; font-family:PingFangSC-Medium,PingFang SC;"
+              >缺陷</span>
             </div>
-            <el-button type="primary" size="mini" style="font-size: 14px;padding: 7px 10px;font-weight: normal" @click="createdDefect">新建缺陷</el-button>
+            <el-button
+              type="primary"
+              size="mini"
+              style="font-size: 14px;padding: 7px 10px;font-weight: normal"
+              @click="createdDefect"
+            >新建缺陷</el-button>
           </el-col>
           <el-col :span="24">
             <el-divider style="color: #EEF0F5;" />
@@ -16,18 +23,52 @@
             <el-form :model="formInline" class="flex_start" style="width: 100%;">
               <div class="Layout">
                 <div class="queryName">缺陷ID</div>
-                <el-input v-model="formInline.bugId" size="small" style="width:72% !important;" clearable filterable placeholder="请输入" @change="getBugList()" />
+                <el-input
+                  v-model="formInline.bugId"
+                  size="small"
+                  style="width:72% !important;"
+                  clearable
+                  filterable
+                  placeholder="请输入"
+                  @change="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="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="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="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="getBugList()"
+                >
+                  <el-option
+                    v-for="item in priorityLevelEnumList"
+                    :key="item.code"
+                    :label="item.name"
+                    :value="item.name"
+                  />
                 </el-select>
               </div>
             </el-form>
@@ -40,55 +81,144 @@
                   <div class="flex_start">
                     <div class="Layout">
                       <div class="queryName">缺陷等级</div>
-                      <el-select v-model="formInline.priority" size="small" clearable filterable placeholder="请选择">
-                        <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="请选择"
+                      >
+                        <el-option
+                          v-for="item in priorityEnumList"
+                          :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.taskId" size="small" clearable filterable placeholder="请选择">
-                        <el-option v-for="item in taskEnumList" :key="item.id" :label="item.name" :value="item.id" />
+                      <el-select
+                        v-model="formInline.taskId"
+                        size="small"
+                        clearable
+                        filterable
+                        placeholder="请选择"
+                      >
+                        <el-option
+                          v-for="item in taskEnumList"
+                          :key="item.id"
+                          :label="item.name"
+                          :value="item.id"
+                        />
                       </el-select>
                     </div>
                     <div class="Layout marginLeft">
                       <div class="queryName">所属模块</div>
-                      <el-cascader v-model="formInline.moduleIds" size="small" clearable collapse-tags :props="props" :options="business_platform_Modular" placeholder="请选择" style="width:72% !important;" @click.native="bugDataGet" />
+                      <el-cascader
+                        v-model="formInline.moduleIds"
+                        size="small"
+                        clearable
+                        collapse-tags
+                        :props="props"
+                        :options="business_platform_Modular"
+                        placeholder="请选择"
+                        style="width:72% !important;"
+                        @click.native="bugDataGet"
+                      />
                     </div>
                   </div>
 
                   <div style="margin: 1.5% 0;" class="flex_start">
                     <div class="Layout">
                       <div class="queryName">提报人</div>
-                      <el-select v-model="formInline.creator" filterable clearable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" size="small" placeholder="请输入姓名或邮箱前缀">
-                        <el-option v-for="item in options" :key="item.idap" :label="item.name" :value="test2(item, 0)">
+                      <el-select
+                        v-model="formInline.creator"
+                        filterable
+                        clearable
+                        remote
+                        reserve-keyword
+                        :remote-method="remoteMethod"
+                        :loading="loading"
+                        size="small"
+                        placeholder="请输入姓名或邮箱前缀"
+                      >
+                        <el-option
+                          v-for="item in options"
+                          :key="item.idap"
+                          :label="item.name"
+                          :value="test2(item, 0)"
+                        >
                           <div style="display: flex;justify-content: start;">
-                            <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.deptName }}</div>
+                            <div
+                              style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden"
+                            >{{ item.deptName }}</div>
                             <div style="min-width:80px">{{ item.name }}</div>
-                            <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.idap }}</div>
+                            <div
+                              style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden"
+                            >{{ item.idap }}</div>
                           </div>
                         </el-option>
                       </el-select>
                     </div>
                     <div class="Layout marginLeft">
                       <div class="queryName">责任人</div>
-                      <el-select v-model="formInline.assigner" filterable clearable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" size="small" placeholder="请输入姓名或邮箱前缀">
-                        <el-option v-for="item in options" :key="item.idap" :label="item.name" :value="test2(item, 0)">
+                      <el-select
+                        v-model="formInline.assigner"
+                        filterable
+                        clearable
+                        remote
+                        reserve-keyword
+                        :remote-method="remoteMethod"
+                        :loading="loading"
+                        size="small"
+                        placeholder="请输入姓名或邮箱前缀"
+                      >
+                        <el-option
+                          v-for="item in options"
+                          :key="item.idap"
+                          :label="item.name"
+                          :value="test2(item, 0)"
+                        >
                           <div style="display: flex;justify-content: start;">
-                            <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.deptName }}</div>
+                            <div
+                              style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden"
+                            >{{ item.deptName }}</div>
                             <div style="min-width:80px">{{ item.name }}</div>
-                            <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.idap }}</div>
+                            <div
+                              style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden"
+                            >{{ item.idap }}</div>
                           </div>
                         </el-option>
                       </el-select>
                     </div>
                     <div class="Layout marginLeft">
                       <div class="queryName">修复人</div>
-                      <el-select v-model="formInline.currentHandler" filterable clearable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" size="small" placeholder="请输入姓名或邮箱前缀">
-                        <el-option v-for="item in options" :key="item.idap" :label="item.name" :value="test2(item, 0)">
+                      <el-select
+                        v-model="formInline.currentHandler"
+                        filterable
+                        clearable
+                        remote
+                        reserve-keyword
+                        :remote-method="remoteMethod"
+                        :loading="loading"
+                        size="small"
+                        placeholder="请输入姓名或邮箱前缀"
+                      >
+                        <el-option
+                          v-for="item in options"
+                          :key="item.idap"
+                          :label="item.name"
+                          :value="test2(item, 0)"
+                        >
                           <div style="display: flex;justify-content: start;">
-                            <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.deptName }}</div>
+                            <div
+                              style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden"
+                            >{{ item.deptName }}</div>
                             <div style="min-width:80px">{{ item.name }}</div>
-                            <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.idap }}</div>
+                            <div
+                              style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden"
+                            >{{ item.idap }}</div>
                           </div>
                         </el-option>
                       </el-select>
@@ -97,40 +227,107 @@
                   <div style="margin: 1.5% 0;" class="flex_start">
                     <div class="Layout">
                       <div class="queryName">发现方式</div>
-                      <el-select v-model="formInline.discoveryMeth" size="small" clearable filterable placeholder="请选择">
-                        <el-option v-for="item in discoveryMethEnumList" :key="item.code" :label="item.name" :value="item.code" />
+                      <el-select
+                        v-model="formInline.discoveryMeth"
+                        size="small"
+                        clearable
+                        filterable
+                        placeholder="请选择"
+                      >
+                        <el-option
+                          v-for="item in discoveryMethEnumList"
+                          :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.discoveryStage" size="small" clearable filterable placeholder="请选择">
-                        <el-option v-for="item in bugStageEnumList" :key="item.code" :label="item.name" :value="item.code" />
+                      <el-select
+                        v-model="formInline.discoveryStage"
+                        size="small"
+                        clearable
+                        filterable
+                        placeholder="请选择"
+                      >
+                        <el-option
+                          v-for="item in bugStageEnumList"
+                          :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.name" size="small" clearable filterable placeholder="请选择">
-                        <el-option v-for="item in repairResultEnumList" :key="item.code" :label="item.name" :value="item.code" />
+                      <el-select
+                        v-model="formInline.name"
+                        size="small"
+                        clearable
+                        filterable
+                        placeholder="请选择"
+                      >
+                        <el-option
+                          v-for="item in repairResultEnumList"
+                          :key="item.code"
+                          :label="item.name"
+                          :value="item.code"
+                        />
                       </el-select>
                     </div>
                   </div>
                   <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="请选择">
-                        <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="请选择"
+                      >
+                        <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="请选择">
-                        <el-option v-for="item in Editionlist" :key="item.code" :label="item.msg" :value="item.code" />
+                      <el-select
+                        v-model="formInline.appVersion"
+                        size="small"
+                        clearable
+                        filterable
+                        placeholder="请选择"
+                      >
+                        <el-option
+                          v-for="item in Editionlist"
+                          :key="item.code"
+                          :label="item.msg"
+                          :value="item.code"
+                        />
                       </el-select>
                     </div>
                   </div>
@@ -147,31 +344,50 @@
       <el-main :style="type === 'page'?{padding: '1%'}:{padding: '0'}">
         <el-row class="headerBg table_v" style=" padding-top: 0px;">
           <el-col :span="24" style="min-height: 47vh;">
-            <el-table size="small" :data="tableData" style="width: 100%; font-size: 14px; color:rgba(102,102,102,1);" show-overflow-tooltip="true" :header-cell-style="{ color: '#4A4A4A', fontSize: '14px', fontWeight: '500' }">
+            <el-table
+              size="small"
+              :data="tableData"
+              style="width: 100%; font-size: 14px; color:rgba(102,102,102,1);"
+              show-overflow-tooltip="true"
+              :header-cell-style="{ color: '#4A4A4A', fontSize: '14px', fontWeight: '500' }"
+            >
               <el-table-column label="优先级" prop="priorityCode" sortable align="center">
                 <template slot-scope="scope">
-                  <div class="div_priority" :style="{background: priorityColors[scope.row.priorityCode]}">{{ scope.row.priorityLevel | oneA }}</div>
+                  <div
+                    class="div_priority"
+                    :style="{background: priorityColors[scope.row.priorityCode]}"
+                  >{{ scope.row.priorityLevel | oneA }}</div>
                 </template>
               </el-table-column>
-              <el-table-column prop="bugName" label="缺陷标题" min-width="180" align="left" show-overflow-tooltip>
+              <el-table-column
+                prop="bugName"
+                label="缺陷标题"
+                min-width="180"
+                align="left"
+                show-overflow-tooltip
+              >
                 <template slot-scope="scope">
-                  <span style=" color: #A7AEBC; font-size: 10px;">{{ 'BUG-' + scope.row.id }}</span><br>
-                  <span class="bugNameSty" @click="click_bugName(scope.row.id)">{{ scope.row.bugName }}</span>
+                  <span style=" color: #A7AEBC; font-size: 10px;">{{ 'BUG-' + scope.row.id }}</span>
+                  <br>
+                  <span
+                    class="bugNameSty"
+                    @click="click_bugName(scope.row.id)"
+                  >{{ scope.row.bugName }}</span>
                 </template>
               </el-table-column>
               <el-table-column prop="priorityName" label="缺陷等级" align="center" />
               <el-table-column prop="bugStatusName" label="状态" align="center">
                 <template slot-scope="scope">
-                  <div :style="{color: statusColors[scope.row.status % statusColors.length]}">{{ scope.row.bugStatusName }}</div>
+                  <div
+                    :style="{color: statusColors[scope.row.status % statusColors.length]}"
+                  >{{ scope.row.bugStatusName }}</div>
                 </template>
               </el-table-column>
               <el-table-column prop="creatorList" label="提报人" align="center" />
               <el-table-column prop="assignerList" label="责任人" align="center" />
               <el-table-column prop="currentHandlerList" label="修复人" align="center" />
               <el-table-column prop="gmtCreate" label="创建日期" min-width="120" align="center">
-                <template slot-scope="scope">
-                  {{ scope.row.gmtCreate | naspOut }}
-                </template>
+                <template slot-scope="scope">{{ scope.row.gmtCreate | naspOut }}</template>
               </el-table-column>
             </el-table>
           </el-col>
@@ -200,7 +416,15 @@
       class="bug_manage_drawer"
     >
       <div>
-        <bug-details :id="bugQuery.id+''" ref="bugDetails" :init-count="initCount + ''" :type="'drawer'" @close="drawerShow = false" @delete="drawerShow = false;getBugList()" @update="getBugList()" />
+        <bug-details
+          :id="bugQuery.id+''"
+          ref="bugDetails"
+          :init-count="initCount + ''"
+          :type="'drawer'"
+          @close="drawerShow = false"
+          @delete="drawerShow = false;type === 'page'?getBugList():getBugSelfList()"
+          @update="type === 'page'?getBugList():getBugSelfList()"
+        />
       </div>
     </el-drawer>
   </div>
@@ -209,7 +433,15 @@
 <script>
 import BugDetails from './details/index'
 import createdBug from '@/views/projectManage/bugList/file/createdBug'
-import { bugList, bugSelfList, bugGetEnum, settingGetBizList, taskListCreate, releaseList, settingQueryBizModuleList } from '@/api/defectManage'
+import {
+  bugList,
+  bugSelfList,
+  bugGetEnum,
+  settingGetBizList,
+  taskListCreate,
+  releaseList,
+  settingQueryBizModuleList
+} from '@/api/defectManage'
 import { memberQueryMemberInfoByIDAPorName } from '@/api/projectIndex'
 import '@/views/projectManage/bugList/css/index.css'
 export default {
@@ -325,7 +557,11 @@ export default {
           this.total = res.total
           this.tableData.map(item1 => {
             this.priorityLevelEnumList.map(item => {
-              item1.priorityLevel !== null ? item1.priorityLevel === item.name ? item1.priorityCode = item.code : '' : ''
+              item1.priorityLevel !== null
+                ? item1.priorityLevel === item.name
+                  ? (item1.priorityCode = item.code)
+                  : ''
+                : ''
             })
           })
         }
@@ -338,13 +574,21 @@ export default {
       if (pageSize) {
         this.pageSize = pageSize
       }
-      bugSelfList({ type: this.bugListType, pageSize: this.pageSize, curIndex: this.curIndex }).then(res => {
+      bugSelfList({
+        type: this.bugListType,
+        pageSize: this.pageSize,
+        curIndex: this.curIndex
+      }).then(res => {
         if (res.code === 200) {
           this.tableData = res.data
           this.total = res.total
           this.tableData.map(item1 => {
             this.priorityLevelEnumList.map(item => {
-              item1.priorityLevel !== null ? item1.priorityLevel === item.name ? item1.priorityCode = item.code : '' : ''
+              item1.priorityLevel !== null
+                ? item1.priorityLevel === item.name
+                  ? (item1.priorityCode = item.code)
+                  : ''
+                : ''
             })
           })
         }
@@ -359,12 +603,12 @@ export default {
       this.$set(this.formInline, 'priorityLevel', combination.priorityLevel)
       this.getBugList()
     },
-    queryBug() {
-
-    },
+    queryBug() {},
     getClient(e) {
       this.$set(this.formInline, 'appVersion', '')
-      this.Editionlist = this.appClient.filter(value => value.code === e)[0].childEnumInfos
+      this.Editionlist = this.appClient.filter(
+        value => value.code === e
+      )[0].childEnumInfos
     },
     test2(item, e) {
       // 获取团队人员信息
@@ -383,7 +627,7 @@ export default {
           memberQueryMemberInfoByIDAPorName({ memberIDAP: query }).then(res => {
             const obj = {}
             this.options = res.data.reduce((cur, next) => {
-              obj[next.idap] ? '' : obj[next.idap] = true && cur.push(next)
+              obj[next.idap] ? '' : (obj[next.idap] = true && cur.push(next))
               return cur
             }, [])
           })
@@ -404,13 +648,22 @@ export default {
 
     // 上传成功回调
     handleChange(response, file, fileList) {
-      this.fileDbList.push({ 'name': file.name, 'url': 'http:' + file.response.url })
+      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' })
+      this.$message({
+        showClose: true,
+        message: '文件上传成功',
+        type: 'success'
+      })
     },
     click_bugName(e) {
-      this.bugQuery = JSON.parse(JSON.stringify(this.tableData.filter(value => value.id === e)[0]))
+      this.bugQuery = JSON.parse(
+        JSON.stringify(this.tableData.filter(value => value.id === e)[0])
+      )
       this.initCount++
       setTimeout(() => {
         this.isBugNameClick = true
@@ -424,8 +677,12 @@ export default {
     },
     showSelect() {
       this.bugDataGet()
-      this.DetailedScreening === false ? this.DetailedScreening = true : this.DetailedScreening = false
-      this.goodName === '更多筛选' ? this.goodName = '收起筛选' : this.goodName = '更多筛选'
+      this.DetailedScreening === false
+        ? (this.DetailedScreening = true)
+        : (this.DetailedScreening = false)
+      this.goodName === '更多筛选'
+        ? (this.goodName = '收起筛选')
+        : (this.goodName = '更多筛选')
     },
     handleSizeChange(val) {
       this.pageSize = val
@@ -466,24 +723,33 @@ export default {
         this.appClient = res.data.appClient // 客户端
       })
     },
-    bugDataGet() { // 所属模块
-      settingQueryBizModuleList(Number(localStorage.getItem('bizId'))).then(res => {
-        this.business_platform_Modular = res.data.map(item => ({
-          ...item,
-          value: item.id,
-          label: item.moduleName,
-          children: item.childModules.length === 0 ? null : item.childModules.map(item1 => ({
-            ...item1,
-            value: item1.id,
-            label: item1.moduleName,
-            children: item1.childModules.length === 0 ? null : item1.childModules.map(item2 => ({
-              ...item2,
-              value: item2.id,
-              label: item2.moduleName
-            }))
+    bugDataGet() {
+      // 所属模块
+      settingQueryBizModuleList(Number(localStorage.getItem('bizId'))).then(
+        res => {
+          this.business_platform_Modular = res.data.map(item => ({
+            ...item,
+            value: item.id,
+            label: item.moduleName,
+            children:
+              item.childModules.length === 0
+                ? null
+                : item.childModules.map(item1 => ({
+                  ...item1,
+                  value: item1.id,
+                  label: item1.moduleName,
+                  children:
+                      item1.childModules.length === 0
+                        ? null
+                        : item1.childModules.map(item2 => ({
+                          ...item2,
+                          value: item2.id,
+                          label: item2.moduleName
+                        }))
+                }))
           }))
-        }))
-      })
+        }
+      )
     }
   }
 }