qinzhipeng_v vor 5 Jahren
Ursprung
Commit
78ad74ea7c

+ 3 - 6
src/api/defectManage.js

@@ -1,14 +1,11 @@
 import request from '@/utils/request'
-import { mockUrl, Presentation } from '@/apiConfig/api'
-// ================================== Interface ======================================
-
-// const mockUrl = 'http://10.179.24.176:8980' // 线下
-// const mockUrl = 'http://10.179.24.123:8980' // 线上
+import { mockUrl, Presentation, TeamManagement } from '@/apiConfig/api'
+// ==================================  缺陷2.0  ======================================
 
 // 全局list
 export function bugList(data) {
   return request({
-    url: mockUrl + '/bug/list',
+    url: TeamManagement + '/bug/list',
     method: 'post',
     data
   })

+ 424 - 100
src/views/Platform/bugManage/bugindex.vue

@@ -4,10 +4,9 @@
       <el-row class="headerBg" style="padding-bottom: 0;">
         <el-col :span="24" class="Layout">
           <div class="titFont Layout">
-            <div class="titIcon" />
-            <span style="margin-left: 10%; width: 100px;">缺陷</span>
+            <span style="margin-left: 10%; width: 100px;  font-size: 28px; font-family:PingFangSC-Medium,PingFang SC;">缺陷</span>
           </div>
-          <el-button type="primary" plain size="mini" @click="createdDefect">新建缺陷</el-button>
+          <el-button type="primary" size="mini" @click="createdDefect">新建缺陷</el-button>
         </el-col>
         <el-col :span="24">
           <el-divider style="color: #EEF0F5;" />
@@ -15,18 +14,18 @@
         <el-col :span="24" class="Layout" style="margin-left: 1.5%;">
           <el-form :inline="true" label-position="left" :model="formInline" label-width="80px">
             <el-form-item label="业务线">
-              <el-select v-model="formInline.name" size="small" clearable filterable placeholder="业务线">
-                <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+              <el-select v-model="formInline.bizId" size="small" clearable filterable placeholder="全部">
+                <el-option v-for="item in bizIdEnumList" :key="item.code" :label="item.name" :value="item.code" />
               </el-select>
             </el-form-item>
             <el-form-item label="状态">
-              <el-select v-model="formInline.name" size="small" clearable filterable placeholder="状态">
-                <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+              <el-select v-model="formInline.status" size="small" clearable filterable placeholder="全部">
+                <el-option v-for="item in bugEnumList" :key="item.code" :label="item.name" :value="item.code" />
               </el-select>
             </el-form-item>
             <el-form-item label="优先级">
-              <el-select v-model="formInline.name" size="small" clearable filterable placeholder="优先级">
-                <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+              <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>
             </el-form-item>
           </el-form>
@@ -39,64 +38,81 @@
             <el-col :span="24" class="DetailedScreening">
               <div style="margin: 1.5% 0 0 1.5%;">
                 <el-form-item label="缺陷等级">
-                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="业务线">
+                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="全部">
                     <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
                   </el-select>
                 </el-form-item>
                 <el-form-item label="缺陷ID">
-                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="状态">
+                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="全部">
                     <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
                   </el-select>
                 </el-form-item>
                 <el-form-item label="所属任务">
-                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="优先级">
+                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="全部">
                     <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
                   </el-select>
                 </el-form-item>
-
               </div>
               <div style="margin-left: 1.5%;">
                 <el-form-item label="提报人">
-                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="优先级">
-                    <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+                  <el-select v-model="formInline.rdOwner" 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:80px">{{ item.name }}</div>
+                        <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.idap }}</div>
+                      </div>
+                    </el-option>
                   </el-select>
                 </el-form-item>
                 <el-form-item label="责任人">
-                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="优先级">
-                    <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+                  <el-select v-model="formInline.rdOwner" 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:80px">{{ item.name }}</div>
+                        <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.idap }}</div>
+                      </div>
+                    </el-option>
                   </el-select>
                 </el-form-item>
                 <el-form-item label="修复人">
-                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="优先级">
-                    <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+                  <el-select v-model="formInline.rdOwner" 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:80px">{{ item.name }}</div>
+                        <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.idap }}</div>
+                      </div>
+                    </el-option>
                   </el-select>
                 </el-form-item>
               </div>
               <div style="margin-left: 1.5%;">
                 <el-form-item label="发现方式">
-                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="优先级">
-                    <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="全部">
+                    <el-option v-for="item in discoveryMethodEnumList" :key="item.code" :label="item.name" :value="item.code" />
                   </el-select>
                 </el-form-item>
                 <el-form-item label="发现阶段">
-                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="优先级">
-                    <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="全部">
+                    <el-option v-for="item in bugStageEnumList" :key="item.code" :label="item.name" :value="item.code" />
                   </el-select>
                 </el-form-item>
                 <el-form-item label="客户端">
-                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="优先级">
+                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="全部">
                     <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
                   </el-select>
                 </el-form-item>
               </div>
               <div style="margin-left: 1.5%;">
                 <el-form-item label="版本">
-                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="优先级">
+                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="全部">
                     <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
                   </el-select>
                 </el-form-item>
                 <el-form-item label="修复结果">
-                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="优先级">
+                  <el-select v-model="formInline.name" size="small" clearable filterable placeholder="全部">
                     <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
                   </el-select>
                 </el-form-item>
@@ -108,110 +124,370 @@
                 </el-form-item>
               </div>
             </el-col>
-
           </el-row>
         </el-form>
       </div>
     </el-header>
     <el-main>
       <el-row class="headerBg">
+        <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">
+            <el-table-column label="优先级" align="center">
+              <template slot-scope="scope">
+                <div class="div_priority" :style="{background: priorityColors[scope.row.priority % priorityColors.length]}">{{ scope.row.priorityLevel }}</div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="bugName" label="缺陷标题" min-width="180" align="center" show-overflow-tooltip>
+              <template slot-scope="scope">
+                <div style="text-align: left;">
+                  <span style=" color: #A7AEBC; font-size; 12px;">{{ 'BUG-' + scope.row.id }}</span><br>
+                  <span class="bugNameSty" @click="click_bugName(scope.row.id)">{{ scope.row.bugName }}</span>
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="bizName" label="业务线" align="center" />
+            <el-table-column prop="priorityName" label="缺陷等级" align="center" />
+            <el-table-column prop="bugStatusName" label="状态" align="center">
+              <template slot-scope="scope">
+                <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="创建日期" align="center">
+              <template slot-scope="scope">
+                {{ scope.row.gmtCreate | naspOut }}
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-col>
         <el-col :span="24">
-          <el-table
-            size="small"
-            :data="tableData"
-            style="width: 100%"
-          >
-            <el-table-column
-              prop="date"
-              label="优先级"
-              width="180"
-              align="center"
-            />
-            <el-table-column
-              prop="name"
-              label="缺陷标题"
-              width="180"
-              align="center"
+          <div align="right">
+            <el-pagination
+              :current-page="currentPage4"
+              :page-sizes="[15, 20, 30]"
+              :page-size="15"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="total"
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
             />
-            <el-table-column
-              prop="address"
-              label="业务线"
-              align="center"
-            />
-            <el-table-column
-              prop="address"
-              label="缺陷等级"
-              align="center"
-            />
-            <el-table-column
-              prop="address"
-              label="状态"
-              align="center"
-            />
-            <el-table-column
-              prop="address"
-              label="提报人"
-              align="center"
-            />
-            <el-table-column
-              prop="address"
-              label="责任人"
-              align="center"
-            />
-            <el-table-column
-              prop="address"
-              label="修复人"
-              align="center"
-            />
-            <el-table-column
-              prop="address"
-              label="创建日期"
-              align="center"
-            />
-          </el-table>
+          </div>
         </el-col>
       </el-row>
     </el-main>
     <createdBug v-if="modalShow" ref="createdBug" />
+    <el-drawer
+      style="margin-top: 80px;margin-left: 45%; width: 55%;box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)"
+      :title="'BUG-' + bugQuery.id"
+      size="100%"
+      :visible.sync="drawer"
+      :modal="false"
+      :with-header="false"
+      :before-close="handleClose"
+      :show-close="true"
+      :wrapper-closable="false"
+    >
+      <div style="margin: 3%;">
+        <div class="Layout">
+          <span>
+            <span style="font-weight: 600; font-size: 22px; vertical-align: middle;">{{ 'BUG-' + bugQuery.id }}</span>
+            <el-dropdown placement="bottom" style="margin-left: 10px;">
+              <el-button size="mini" plain>
+                未开始<i class="el-icon-arrow-down el-icon--right" />
+              </el-button>
+              <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item @click.native="createDialogVisible = true">新建需求</el-dropdown-item>
+                <el-dropdown-item>新建任务</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
+          </span>
+          <span class="Layout" style="width: 100px;">
+            <el-dropdown placement="bottom">
+              <el-button size="mini" plain> ··· </el-button>
+              <el-dropdown-menu slot="dropdown" style="text-align: center;">
+                <el-dropdown-item @click.native="createDialogVisible = true">查看详情</el-dropdown-item>
+                <el-dropdown-item>删除</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
+            <i class="el-icon-close" style="cursor: pointer;" @click="handleClose" />
+          </span>
+        </div>
+        <div style="margin: 3% 0%; font-weight: 600; font-size: 30px;">{{ bugQuery.bugName }}</div>
+        <div style="height: 570px; overflow:scroll;">
+          <div class="flex_start dividers"><div class="titIcon" style="margin-right: 1%;" />详情</div>
+          <el-row>
+            <el-col :span="24">
+              <el-divider style="color: #EEF0F5;" />
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <el-form label-position="left" label-width="100px" :model="bugQuery" style="display:flex;" class="forms">
+                <span style="flex:1;">
+                  <el-form-item label="所属任务:">{{ bugQuery.taskName }}</el-form-item>
+                  <el-form-item label="优先级:">{{ bugQuery.priorityName }}</el-form-item>
+                  <el-form-item label="所属模块:">{{ bugQuery.clientName }}</el-form-item>
+                  <el-form-item label="发现方式:">{{ bugQuery.discoveryMethodName }}</el-form-item>
+                  <el-form-item label="缺陷原因:">{{ bugQuery.reasomName }}</el-form-item>
+                  <el-form-item label="Reopen次数:">{{ bugQuery.reopenTimes }}</el-form-item>
+                </span>
+                <span style="flex:1;">
+                  <el-form-item label="端类型:">{{ bugQuery.platformTypeName }}</el-form-item>
+                  <el-form-item label="缺陷等级:">{{ bugQuery.priority }}</el-form-item>
+                  <el-form-item label="发现阶段:">{{ bugQuery.stageName }}</el-form-item>
+                  <el-form-item label="缺陷类型:">{{ bugQuery.bugTypeName }}</el-form-item>
+                  <el-form-item label="修复结果:">{{ bugQuery.repairResult }}</el-form-item>
+                </span>
+              </el-form>
+            </el-col>
+          </el-row>
+          <div class="flex_start dividers"><div class="titIcon" style="margin-right: 1%;" />客户端信息</div>
+          <el-row>
+            <el-col :span="24">
+              <el-divider style="color: #EEF0F5;" />
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <el-form label-position="left" label-width="100px" :model="bugQuery" class="Layout forms">
+                <span style="width:50%; margin-right: 3%;">
+                  <el-form-item label="客户端:">{{ bugQuery.appId }}</el-form-item>
+                  <el-form-item label="机型:">{{ bugQuery.osType }}</el-form-item>
+                  <el-form-item label="网络:">{{ bugQuery.networkType }}</el-form-item>
+                </span>
+                <span style="width:50%; margin-left: 3%;">
+                  <el-form-item label="影响版本:">{{ bugQuery.discoveryMethodName }}</el-form-item>
+                  <el-form-item label="系统版本:">{{ bugQuery.sdkVerison }}</el-form-item>
+                  <el-form-item label="网络:">{{ bugQuery.networkType }}</el-form-item>
+                </span>
+              </el-form>
+            </el-col>
+          </el-row>
+          <div class="flex_start dividers"><div class="titIcon" style="margin-right: 1%;" />用户信息</div>
+          <el-row>
+            <el-col :span="24">
+              <el-divider style="color: #EEF0F5;" />
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <el-form label-position="left" label-width="100px" :model="bugQuery" class="forms">
+                <el-form-item label="提报人:">{{ bugQuery.creator }}</el-form-item>
+                <el-form-item label="责任人">{{ bugQuery.assigner }}</el-form-item>
+                <el-form-item label="修复人">{{ bugQuery.currentHandler }}</el-form-item>
+              </el-form>
+            </el-col>
+          </el-row>
+          <div class="flex_start dividers"><div class="titIcon" style="margin-right: 1%;" />时间</div>
+          <el-row>
+            <el-col :span="24">
+              <el-divider style="color: #EEF0F5;" />
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <el-form label-position="left" label-width="100px" :model="bugQuery" class="forms">
+                <el-form-item label="修复时长:">{{ bugQuery.osType }}</el-form-item>
+                <el-form-item label="修复时长:">{{ bugQuery.osType }}</el-form-item>
+                <el-form-item label="修复时长:">{{ bugQuery.osType }}</el-form-item>
+              </el-form>
+            </el-col>
+          </el-row>
+          <div class="flex_start dividers"><div class="titIcon" style="margin-right: 1%;" />描述</div>
+          <el-row>
+            <el-col :span="24">
+              <el-divider style="color: #EEF0F5;" />
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              {{ `If I knew it was the last time, I believe I wonldn't Say goodbye with smile. Although all of world is snowing,Although all migratory birds have followed to north. I am waiting for you here all the time until I am dead one day. I really don't know How many days that I can't sleep,only because of you. Come back,Come back to me!Please!` }}
+            </el-col>
+          </el-row>
+          <div class="flex_start dividers"><div class="titIcon" style="margin-right: 1%;" />附件</div>
+          <el-row>
+            <el-col :span="24">
+              <el-divider style="color: #EEF0F5;" />
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col>
+              <el-upload
+                class="upload-demo"
+                action="http://star.xiaojukeji.com/upload/img.node"
+                :on-preview="handlePictureCardPreview"
+                :on-progress="progress"
+                :on-success="handleChange"
+                :file-list="fileList"
+                list-type="picture-card"
+              >
+                <el-button size="small" type="primary">上传附件</el-button>
+              </el-upload>
+              <el-dialog :visible.sync="dialogVisible">
+                <img width="100%" :src="dialogImageUrl" alt="">
+              </el-dialog>
+            </el-col>
+          </el-row>
+          <div class="flex_start dividers"><div class="titIcon" style="margin-right: 1%;" />评论</div>
+          <el-row>
+            <el-col :span="24">
+              <el-divider style="color: #EEF0F5;" />
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <p v-show="commentShow" style="color:#9B9B9B">还没有评论,快来评论吧!</p>
+              <div v-for="(item, value) of commentTxt" :key="value" class="animated bounceInRight">
+                <span style="color: #333B4A; font-size:14px;margin-left:1%;">{{ item.commentInfo.name }}</span>
+                <span style="color: #9B9B9B; font-size:12px;margin-left:1%;">{{ item.commentInfo.gmtCreater }}</span>
+                <p style="color: #333B4A; font-size:14px;margin-left:2%;">{{ item.commentInfo.content }}</p>
+              </div>
+              <el-input
+                v-model="content"
+                rows="6"
+                type="textarea"
+                placeholder="请输入评论内容..."
+                show-word-limit
+              />
+              <p style="text-align: right;">
+                <el-button size="mini" type="primary" @click="comment(content)">发表评论</el-button>
+              </p>
+            </el-col>
+          </el-row>
+        </div>
+      </div>
+    </el-drawer>
+
   </el-container>
 </template>
 
 <script>
 import createdBug from '@/views/Platform/bugManage/file/createdBug'
+import { bugList, bugGetEnum } from '@/api/defectManage'
+import { memberQueryMemberInfoByIDAPorName } from '@/api/projectIndex'
 export default {
   components: {
     createdBug
   },
+  filters: {
+    naspOut(value) {
+      if (!value) return ''
+      var da = value.split(/\s+/)
+      return da[0]
+    }
+  },
   data() {
     return {
+      priorityColors: ['#F56C6C', '#FF8952', '#7ED321'],
+      statusColors: ['#7ED321', '#FFBD39', '#F56C6C', '#409EFF', '#409EFF'],
       DetailedScreening: false, // 高级筛选
+      bugEnumList: [], // bug状态
+      bizIdEnumList: [], // bug业务线
+      priorityEnumList: [], // bug优先级
+      bugTypeEnumList: [], // bug类型
+      discoveryMethodEnumList: [], // 发现方式
+      bugStageEnumList: [], // 发现阶段
+      platformTypeEnumList: [], // 端类型
+      drawer: false, // 抽屉
+      bugQuery: '', // bug详情
+      commentShow: true, // 评论为空默认显示
+      content: '', // 评论
+      comment_content: '', // 评论内容
+      fileList: [], // 储存附件
+      dis: false,
+      commentTxt: [],
+      pageSize: 15,
+      curIndex: 1,
+      total: 0,
       goodName: '更多筛选',
+      currentPage4: 1,
       modalShow: false,
       taskIdStr: [],
       formInline: {
         user: '',
         region: ''
       },
-      tableData: [{
-        date: '2016-05-02',
-        name: '王小虎',
-        address: '上海市普陀区金沙江路 1518 弄'
-      }, {
-        date: '2016-05-04',
-        name: '王小虎',
-        address: '上海市普陀区金沙江路 1517 弄'
-      }, {
-        date: '2016-05-01',
-        name: '王小虎',
-        address: '上海市普陀区金沙江路 1519 弄'
-      }, {
-        date: '2016-05-03',
-        name: '王小虎',
-        address: '上海市普陀区金沙江路 1516 弄'
-      }]
+      tableData: [],
+      dialogVisible: false,
+      accessory: [],
+      loading: false,
+      options: [],
+      test: [], // 人员查询
+      dialogImageUrl: ''
     }
   },
+  created() {
+    this.getBugList()
+    this.bugListSelect()
+  },
   methods: {
+    getBugList() {
+      this.indexPage = {
+        // bizId: this.bizJson,
+        pageSize: this.pageSize,
+        curIndex: this.curIndex
+      }
+      bugList(this.indexPage).then(res => {
+        if (res.code === 200) {
+          // this.statistics = res.query
+          this.tableData = res.data
+          this.total = res.total
+        }
+      })
+    },
+    test2(item, e) {
+      // 获取团队人员信息
+      if (typeof this.test[item.idap] === 'undefined') {
+        item.role = e
+        this.test[item.idap] = item
+      }
+      return item.idap
+    },
+    remoteMethod(query) {
+      // 人员查询
+      if (query !== '') {
+        this.loading = true
+        setTimeout(() => {
+          this.loading = false
+          memberQueryMemberInfoByIDAPorName({ memberIDAP: query }).then(res => {
+            const obj = {}
+            this.options = res.data.reduce((cur, next) => {
+              obj[next.idap] ? '' : obj[next.idap] = true && cur.push(next)
+              return cur
+            }, [])
+          })
+        }, 200)
+      } else {
+        this.options = []
+      }
+    },
+    handlePictureCardPreview(file) {
+      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.drawer = true
+      this.bugQuery = this.tableData.filter(value => value.id === e)[0]
+      console.log(this.bugQuery, 'ddd')
+    },
+    handleClose(done) {
+      this.drawer = false
+    },
     onSubmit() {
       console.log('submit!')
     },
@@ -224,6 +500,30 @@ export default {
     showSelect() {
       this.DetailedScreening === false ? this.DetailedScreening = true : this.DetailedScreening = false
       this.goodName === '更多筛选' ? this.goodName = '收起筛选' : this.goodName = '更多筛选'
+    },
+    handleSizeChange(val) {
+      this.pageSize = val
+      this.getBugList()
+    },
+    handleCurrentChange(val) {
+      this.curIndex = val
+      this.getBugList()
+    },
+    bugListSelect() {
+      bugGetEnum().then(res => {
+        this.bugEnumList = res.data.bugEnumList // status
+        this.bizIdEnumList = res.data.bizIdEnumList // bizId
+        this.priorityEnumList = res.data.priorityEnumList // priority
+        this.bugTypeEnumList = res.data.bugTypeEnumList // bug类型
+        // this.bugStatusPriority = res.data.priorityEnumList
+        this.bugStageEnumList = res.data.bugStageEnumList // 发现阶段
+        // this.reasonStr = res.data.reasonEnumList
+        this.platformTypeEnumList = res.data.platformTypeEnumList // 端类型
+        this.discoveryMethodEnumList = res.data.discoveryMethodEnumList // 发现方式
+        // this.repairResultStr = res.data.repairResultEnumList
+        // this.clientTypeEnumList = res.data.clientTypeEnumList
+        // this.serviceTypeEnumList = res.data.serviceTypeEnumList
+      })
     }
   }
 }
@@ -239,6 +539,7 @@ export default {
    padding: 2%;
    height: auto;
    border-radius: 8px;
+   overflow-x: hidden;
 }
 .Layout {
   display:flex;
@@ -263,10 +564,8 @@ export default {
 .screen {
   font-size: 14px;
   margin-right: 1.5%;
-  color: #00A0FF
-}
-.screen:hover{
-cursor: pointer;
+  color: #00A0FF;
+  cursor: pointer;
 }
 .DetailedScreening {
   border: 1px solid rgba(238,238,238,1);
@@ -276,4 +575,29 @@ cursor: pointer;
 .el-tooltip__popper {
     max-width: 20%!important;
  }
+ .div_priority {
+  color: #ffffff;
+  width:fit-content;
+  padding: 0 12px;
+  border-radius: 4px;
+  margin: auto;
+}
+.bugNameSty:hover {
+  cursor: pointer;
+  color: #409EFF !important;
+}
+.forms .el-form-item {
+    margin-bottom: 0px;
+}
+.bgColor .el-divider--horizontal {
+    display: block;
+    height: 1px;
+    width: 100%;
+    margin: 15px 0;
+}
+.dividers {
+  margin-top: 4%;
+  font-weight: 600;
+  font-size: 18px;
+}
 </style>

+ 81 - 7
src/views/Platform/bugManage/file/createdBug.vue

@@ -48,17 +48,25 @@
               </el-form-item>
               <el-form-item label="发现方式">
                 <el-select v-model="formInline.name" size="small" clearable filterable placeholder="状态" style="width:100%;">
-                  <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+                  <el-option v-for="item in discoveryMethodEnumList" :key="item.code" :label="item.name" :value="item.code" />
                 </el-select>
               </el-form-item>
               <el-form-item label="责任人" style="width:100%;">
-                <el-input v-model="formInline.user" size="small" placeholder="请输入姓名或邮箱前缀" />
+                <el-select v-model="form.rdOwner" filterable clearable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" size="small" style="width: 100%" 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:80px">{{ item.name }}</div>
+                      <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.idap }}</div>
+                    </div>
+                  </el-option>
+                </el-select>
               </el-form-item>
             </div>
             <div style="width:100%; margin: 0 4%;">
               <el-form-item label="端类型">
                 <el-select v-model="formInline.name" size="small" clearable filterable placeholder="状态" style="width:100%;">
-                  <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+                  <el-option v-for="item in platformTypeEnumList" :key="item.code" :label="item.name" :value="item.code" />
                 </el-select>
               </el-form-item>
               <el-form-item label="缺陷等级">
@@ -76,16 +84,24 @@
               </el-form-item>
               <el-form-item label="发现阶段">
                 <el-select v-model="formInline.name" size="small" clearable filterable placeholder="状态" style="width:100%;">
-                  <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+                  <el-option v-for="item in bugStageEnumList" :key="item.code" :label="item.name" :value="item.code" />
                 </el-select>
               </el-form-item>
               <el-form-item label="缺陷类型">
                 <el-select v-model="formInline.name" size="small" clearable filterable placeholder="状态" style="width:100%;">
-                  <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+                  <el-option v-for="item in bugTypeEnumList" :key="item.code" :label="item.name" :value="item.code" />
                 </el-select>
               </el-form-item>
               <el-form-item label="修复人" style="width:100%;">
-                <el-input v-model="formInline.user" size="small" placeholder="请输入姓名或邮箱前缀" />
+                <el-select v-model="form.rdOwner" filterable clearable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" size="small" style="width: 100%" 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:80px">{{ item.name }}</div>
+                      <div style="min-width:100px;color: #8492a6; font-size: 13px; overflow:hidden">{{ item.idap }}</div>
+                    </div>
+                  </el-option>
+                </el-select>
               </el-form-item>
             </div>
           </div>
@@ -156,6 +172,8 @@
 
 <script>
 import E from 'wangeditor'
+import { bugGetEnum } from '@/api/defectManage'
+import { memberQueryMemberInfoByIDAPorName } from '@/api/projectIndex'
 export default {
   name: 'Createdbug',
   data() {
@@ -171,13 +189,26 @@ export default {
       fileList: [],
       taskIdStr: [],
       titleName: '',
+      loading: false,
+      options: [],
+      test: [], // 人员查询
       form: {},
       formInline: {
         user: '',
         region: ''
-      }
+      },
+      bugEnumList: [], // bug状态
+      bizIdEnumList: [], // bug业务线
+      priorityEnumList: [], // bug优先级
+      bugTypeEnumList: [], // bug类型
+      discoveryMethodEnumList: [], // 发现方式
+      platformTypeEnumList: [], // 端类型
+      bugStageEnumList: [] // 发现阶段
     }
   },
+  created() {
+    this.bugListSelect()
+  },
   mounted() {
     this.form.remark = 'dd'
     setTimeout(() => {
@@ -206,6 +237,7 @@ export default {
     },
     modalClose() {
       console.log('cdsc')
+      this.editorRemark.txt.clear()
       this.modalShow = false
     },
     // 上传成功回调
@@ -225,6 +257,48 @@ export default {
     },
     onSubmit() {
       console.log('submit!')
+    },
+    test2(item, e) {
+      // 获取团队人员信息
+      if (typeof this.test[item.idap] === 'undefined') {
+        item.role = e
+        this.test[item.idap] = item
+      }
+      return item.idap
+    },
+    remoteMethod(query) {
+      // 人员查询
+      if (query !== '') {
+        this.loading = true
+        setTimeout(() => {
+          this.loading = false
+          memberQueryMemberInfoByIDAPorName({ memberIDAP: query }).then(res => {
+            const obj = {}
+            this.options = res.data.reduce((cur, next) => {
+              obj[next.idap] ? '' : obj[next.idap] = true && cur.push(next)
+              return cur
+            }, [])
+          })
+        }, 200)
+      } else {
+        this.options = []
+      }
+    },
+    bugListSelect() {
+      bugGetEnum().then(res => {
+        this.bugEnumList = res.data.bugEnumList // status
+        this.bizIdEnumList = res.data.bizIdEnumList // bizId
+        this.priorityEnumList = res.data.priorityEnumList // priority
+        this.bugTypeEnumList = res.data.bugTypeEnumList // bug类型
+        // this.bugStatusPriority = res.data.priorityEnumList
+        this.bugStageEnumList = res.data.bugStageEnumList // 发现阶段
+        // this.reasonStr = res.data.reasonEnumList
+        this.platformTypeEnumList = res.data.platformTypeEnumList // 端类型
+        this.discoveryMethodEnumList = res.data.discoveryMethodEnumList // 发现方式
+        // this.repairResultStr = res.data.repairResultEnumList
+        // this.clientTypeEnumList = res.data.clientTypeEnumList
+        // this.serviceTypeEnumList = res.data.serviceTypeEnumList
+      })
     }
   }
 }

+ 1 - 19
src/views/projectManage/projectList/projectIndex.vue

@@ -125,7 +125,7 @@
               <div class="div_priority" :style="{background: priorityColors[scope.row.priority % priorityColors.length]}">{{ 'P'+scope.row.priority }}</div>
             </template>
           </el-table-column>
-          <el-table-column label="项目名称" min-width="400" show-overflow-tooltip>
+          <el-table-column label="项目名称" min-width="300" show-overflow-tooltip>
             <template slot-scope="scope">
               <div style="cursor: pointer;" @click="link_project(scope.row.id)">{{ scope.row.name }}</div>
             </template>
@@ -387,19 +387,6 @@ export default {
       currentPage: 0,
       table_project: [],
       table_loading: false,
-      options1: [
-        {
-          teamName: '选项1',
-          label: '黄金糕'
-        }
-      ],
-      items: [
-        { type: '' },
-        { type: 'success' },
-        { type: 'info' },
-        { type: 'danger' },
-        { type: 'warning' }
-      ],
       query_object: {},
       all_bizId: [], // 业务线
       test: [], // 人员查询
@@ -413,11 +400,6 @@ export default {
         { value: 5, name: 'p5' },
         { value: 6, name: 'p6' }
       ],
-      all_city_list: [
-        { value: 1, label: '秦志鹏' },
-        { value: 2, label: '汝瑞' },
-        { value: 3, label: '赵杰' }
-      ],
       arr_prjectType: [
         { value: 0, name: '业务/产品' },
         { value: 1, name: '技术升级/技术优化/技术FT' },

+ 1 - 1
src/views/projectManage/taskList/taskIndex.vue

@@ -213,7 +213,7 @@
           show-overflow-tooltip="true"
         >
           <el-table-column label min-width="30" align="center">{{ '' }}</el-table-column>
-          <el-table-column label="任务名称" min-width="400" show-overflow-tooltip>
+          <el-table-column label="任务名称" min-width="300" show-overflow-tooltip>
             <template slot-scope="scope">
               <div style="cursor: pointer;" @click="link_task(scope.row.id)">{{ scope.row.name }}</div>
             </template>

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

@@ -501,13 +501,6 @@
             placeholder="选择日期"
             format="yyyy 年 MM 月 dd 日"
           />
-          <!-- <el-date-picker
-            v-model="NewDate"
-            :default-value="new Date()"
-            type="date"
-            placeholder="选择日期"
-            style="width:100%"
-          /> -->
         </el-col>
       </el-row>
       <span slot="footer" class="dialog-footer">