Răsfoiți Sursa

修改样式

qinzhipeng_v 6 ani în urmă
părinte
comite
3ad82f7adf

+ 1 - 1
src/api/projectPage.js

@@ -67,7 +67,7 @@ export function deleteTaskData(id, data) {
   })
 }
 
-// 任务list
+// 更新
 export function updateTaskList(data) {
   return request({
     url: mockUrl + `/task/update`,

+ 46 - 0
src/api/teamPage.js

@@ -0,0 +1,46 @@
+import request from '@/utils/request'
+import { mockUrl } from '@/apiConfig/api'
+
+// 新增团队成员
+export function createMembers(data) {
+  return request({
+    url: mockUrl + `/teamMembers/create`,
+    method: 'post',
+    data
+  })
+}
+
+// 修改
+export function updateMembers(data) {
+  return request({
+    url: mockUrl + `/teamMembers/update`,
+    method: 'post',
+    data
+  })
+}
+
+// 删除
+export function deleteMembers(id, data) {
+  return request({
+    url: mockUrl + `/teamMembers/delete?id=` + id,
+    method: 'post',
+    data
+  })
+}
+
+// 查看列表
+export function getMemberList(data) {
+  return request({
+    url: mockUrl + `/teamMembers/ListTeamMember`,
+    method: 'post',
+    data
+  })
+}
+
+// 查看详情
+export function getMembers(id) {
+  return request({
+    url: mockUrl + `/teamMembers/get?id=` + id,
+    method: 'get'
+  })
+}

+ 28 - 0
src/api/workbench.js

@@ -0,0 +1,28 @@
+import request from '@/utils/request'
+import { mockUrl } from '@/apiConfig/api'
+// ================================== Interface ======================================
+
+// 创建文件夹
+export function personalworkstationQueryBackLog(data) {
+  return request({
+    url: mockUrl + '/personalworkstation/queryBackLog',
+    method: 'post',
+    data
+  })
+}
+
+export function personalworkstationQueryBackLogBugAndTask(data) {
+  return request({
+    url: mockUrl + '/personalworkstation/queryBackLogBugAndTask',
+    method: 'post',
+    data
+  })
+}
+
+export function personalworkstationQueryStatusAndPriority(data) {
+  return request({
+    url: mockUrl + '/personalworkstation/queryStatusAndPriority',
+    method: 'post',
+    data
+  })
+}

+ 22 - 1
src/router/index.js

@@ -74,10 +74,17 @@ export const constantRoutes = [
   {
     path: '/Platform',
     component: Layout,
-    redirect: '/Platform/projectPage',
+    redirect: '/Platform/workbench',
     name: '流程管控',
     meta: { title: '流程管控', icon: 'env' },
     children: [
+      {
+        path: 'workbench',
+        name: 'workbench',
+        hidden: true,
+        component: () => import('@/views/Platform/workbench'),
+        meta: { title: '我的工作台' }
+      },
       {
         path: 'projectPage',
         name: 'projectPage',
@@ -184,6 +191,20 @@ export const constantRoutes = [
             hidden: true,
             component: () => import('@/views/Platform/presentation/defectManageQuery'),
             meta: { title: '缺陷查看' }
+          },
+          {
+            path: 'projectQuery',
+            name: '项目查看编辑',
+            hidden: true,
+            component: () => import('@/views/Platform/projectQuery/projectQuery.vue'),
+            meta: { title: '项目查看编辑' }
+          },
+          {
+            path: 'taskQuery',
+            name: '任务查看编辑',
+            hidden: true,
+            component: () => import('@/views/Platform/projectQuery/taskQuery.vue'),
+            meta: { title: '任务查看编辑' }
           }
         ]
       },

+ 20 - 7
src/views/Platform/defectManagement.vue

@@ -64,12 +64,18 @@
 
     <el-dialog :title="titName" :visible.sync="dialogFormVisible" width="60%">
       <el-form ref="form" :model="form" :rules="serviceDataRules">
-
-        <el-form-item label="任务" :label-width="formLabelWidth">
-          <el-select v-model="form.taskId" placeholder="任务" style="width:30%;">
-            <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
-          </el-select>
-        </el-form-item>
+        <div style="display:flex;">
+          <el-form-item style="flex:1" label="任务" :label-width="formLabelWidth">
+            <el-select v-model="form.taskId" placeholder="任务" style="width:67%;">
+              <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+            </el-select>
+          </el-form-item>
+          <el-form-item style="flex:1" label="业务线" :label-width="formLabelWidth">
+            <el-select v-model="form.bizId" placeholder="业务线" style="width:67%;">
+              <el-option v-for="item in bizOptions" :key="item.value" :label="item.name" :value="item.value" />
+            </el-select>
+          </el-form-item>
+        </div>
         <el-form-item label="主题" prop="bugName" :label-width="formLabelWidth"><el-input v-model="form.bugName" autocomplete="off" style="width:86%;" /></el-form-item>
         <el-form-item label="bug描述" prop="bugDescribe" :label-width="formLabelWidth"><el-input v-model="form.bugDescribe" type="textarea" placeholder="bug描述" rows="4" style="width:86%;" /></el-form-item>
         <div style="display:flex;">
@@ -232,6 +238,7 @@ export default {
     return {
       bugTypeStr: [],
       bugStatusStr: [],
+      bizOptions: [{ name: '万象', value: 101 }, { name: '企业级', value: 100 }, { name: '滴滴代驾', value: 261 }, { name: 'prado', value: 330 }, { name: 'carbo', value: 331 }, { name: '海马', value: 309 }],
       bugLevelStr: [{ name: 'p0', value: 0 }, { name: 'p1', value: 1 }, { name: 'p2', value: 2 }, { name: 'p3', value: 3 }],
       reasonStr: [],
       platformTypeStr: [],
@@ -356,6 +363,12 @@ export default {
     queryPresentation(ele) {
       this.titName = '编辑'
       this.form = ele
+      for (var a of this.bizOptions) {
+        if (ele.bizId === a.value) {
+          this.bizId = a.name
+        }
+      }
+      // this.bizId = ele.bizId
       this.form.taskId = ele.taskId
       this.buildShow(ele)
       this.dialogFormVisible = true
@@ -404,7 +417,7 @@ export default {
     createFormData(form) {
       this.$refs['form'].validate((valid) => {
         if (valid) {
-          form.bizId = this.bizJson
+          // form.bizId = this.bizJson
           this.userData = { id: '', ename: this.userInformation, name: this.userNames }
           this.objData = { bugBaseInfo: form, user: this.userData }
           bugCreate(this.objData).then(res => {

+ 0 - 5
src/views/Platform/presentation/ClientAcceptance.vue

@@ -222,11 +222,6 @@ export default {
           typeof (this.editorFrom) === 'string' ? this.ClientData.sctInfo = this.editorFrom : ''
           typeof (this.editorFro) === 'string' ? this.ClientData.acceptanceResultInfo = this.editorFro : ''
           typeof (this.editorEle) === 'string' ? this.ClientData.bugTarget = this.editorEle : ''
-          // this.ClientData.projectBackground = this.editorElem
-          // this.ClientData.fctInfo = this.editorElems
-          // this.ClientData.sctInfo = this.editorFrom
-          // this.ClientData.acceptanceResultInfo = this.editorFro
-          // this.ClientData.bugTarget = this.editorEle
           this.ClientData.pftResult = this.pftResult
           this.ClientData.sctResult = this.sctResult
           this.ClientData.acceptanceResult = this.acceptanceResult

+ 9 - 16
src/views/Platform/presentation/DailyNewsAdded.vue

@@ -24,7 +24,6 @@
     <div v-show="showbut1" style="width:79vw;border:1px solid #ccc;padding:100px 0;" class="time_line_box">
       <div class="time_line" style="width:100%;">
         <ol>
-          <!-- <li v-for="(todo, index) in todos" ref="todos" /> -->
           <li style="list-style-type:none;">
             <a class="order_item" style="left:5%;">一号节点</a>
           </li>
@@ -41,7 +40,6 @@
             <a class="order_item" style="left:85%;">五号节点</a>
           </li>
         </ol>
-        <!-- <span class="filling_line" style="transform: scaleX(100);" /> -->
       </div>
     </div>
 
@@ -50,7 +48,7 @@
     <div id="projectProgress1" class="text" style="text-align:left" />
     <el-row :gutter="20"><el-col :span="12"><el-form-item label="二、测试情况" class="cententTit" /></el-col></el-row>
     <div id="TestProgress" class="toolbar" />
-    <div id="TestProgress1" class="text" style="text-align:left;" />
+    <div id="TestProgress1" class="text" style="text-align:left;" @change="hahh" />
 
     <el-row :gutter="23"><el-col :span="12"><el-form-item label="三、bug情况" class="backStyle" /></el-col></el-row>
 
@@ -143,8 +141,7 @@ export default {
       statusMap1: [],
       swiper: '',
       pro: '',
-      gmtCreateEnd: '',
-      arrry: [{ title: '步骤1', description: '2019.3,27', icon: 'el-icon-sugar' }]
+      gmtCreateEnd: ''
     }
   },
   created() {
@@ -234,9 +231,9 @@ export default {
       this.$refs['fromCreateData'].validate((valid) => {
         if (valid) {
           this.fromCreateData = ele
-          this.fromCreateData.testExplain = this.testExplain
+          this.fromCreateData.testExplain = this.TestProgress
           this.fromCreateData.bugExplain = this.bugExplain
-          this.fromCreateData.problemRisks = this.problemRisks
+          this.fromCreateData.problemRisks = this.projectProgress
           this.fromCreateData.taskId = this.$route.query.id
           this.fromCreateData.bizId = this.bizJson
           this.userData = { id: '', ename: this.userInformation, name: this.userNames }
@@ -256,9 +253,9 @@ export default {
     },
     getQueryData(ele) {
       this.fromCreateData = ele
-      this.fromCreateData.testExplain = this.testExplain
+      this.fromCreateData.testExplain = this.TestProgress
       this.fromCreateData.bugExplain = this.bugExplain
-      this.fromCreateData.problemRisks = this.problemRisks
+      this.fromCreateData.problemRisks = this.projectProgress
       this.userData = { id: '', ename: this.userInformation, name: this.userNames }
       this.objData = { dailyTestReport: this.fromCreateData, user: this.userData }
       dailyReportUpdate(this.objData).then(res => {
@@ -273,7 +270,6 @@ export default {
       this.$router.push({ path: '/Platform/presentation/testPresenyL', query: { data: ele }})
     },
     deleteProject(e) {
-      console.log(this.showbut)
       if (e === 1) {
         this.showbut1 = true
         this.showbut = '1'
@@ -282,6 +278,9 @@ export default {
         this.showbut = '2'
       }
     },
+    hahh(e) {
+      console.log(e)
+    },
     createDateNode() {
 
     }
@@ -366,11 +365,5 @@ export default {
     top: 0;
     height: 100%;
     width: 100%;
-    /* background-color: #ccc; */
-    /* transform-origin: left center; */
-    /* transition-property: transform; */
-    /* transition-duration: 0.3s; */
-    /* transition-timing-function: initial; */
-    /* transition-delay: initial; */
     }
 </style>

+ 19 - 43
src/views/Platform/presentation/ResultPageyL.vue

@@ -17,13 +17,7 @@
           <span class="titleStyle" style="margin-top: 100px;">一、项目概述</span><br>
           <el-row :gutter="20">
             <el-col :span="12">
-              <el-form-item label="测试结果:">
-                <span :style="status1">{{ status }}</span>
-                <!-- <el-radio-group v-model="status">
-                  <el-radio label="1" :disabled="showDisabled">通过</el-radio>
-                  <el-radio label="2" :disabled="showDisabled1">不通过</el-radio>
-                </el-radio-group> -->
-              </el-form-item><br>
+              <el-form-item label="测试结果:"><span :style="status1">{{ status }}</span></el-form-item><br>
               <el-form-item v-show="showDelay" label="准入结果 :">{{ ClientData.smokeTestResult }}</el-form-item>
             </el-col>
           </el-row>
@@ -44,13 +38,7 @@
 
           <el-row :gutter="20">
             <el-col :span="12">
-              <el-form-item label="准出延期 :">
-                <span :style="taskLateDisabled">{{ taskLateStatus }}</span>
-                <!-- <el-radio-group v-model="taskLateStatus">
-                  <el-radio label="1" :disabled="taskLateDisabled">是</el-radio>
-                  <el-radio label="2" :disabled="taskLateDisabled1">否</el-radio>
-                </el-radio-group> -->
-              </el-form-item><br>
+              <el-form-item label="准出延期 :"><span :style="taskLateDisabled">{{ taskLateStatus }}</span></el-form-item><br>
               <el-form-item v-show="showDelay1" label="延期原因 :">{{ ClientData.taskLateReason }}</el-form-item>
             </el-col>
           </el-row>
@@ -121,13 +109,7 @@
 
           <el-row>
             <el-col>
-              <el-form-item label="测试结果 :">
-                <span :style="status1">{{ status }}</span>
-                <!-- <el-radio-group v-model="status">
-                  <el-radio label="1" :disabled="showDisabled">是</el-radio>
-                  <el-radio label="2" :disabled="showDisabled1">否</el-radio>
-                </el-radio-group> -->
-              </el-form-item><br>
+              <el-form-item label="测试结果 :"><span :style="status1">{{ status }}</span></el-form-item><br>
               <el-form-item v-show="showDelay" label="准入结果 :">{{ ClientData.smokeTestResult }}</el-form-item>
             </el-col>
           </el-row>
@@ -148,13 +130,7 @@
 
           <el-row :gutter="20">
             <el-col :span="12">
-              <el-form-item label="准出延期 :">
-                <span :style="taskLateDisabled">{{ taskLateStatus }}</span>
-                <!-- <el-radio-group v-model="taskLateStatus">
-                  <el-radio label="1" :disabled="taskLateDisabled">是</el-radio>
-                  <el-radio label="2" :disabled="taskLateDisabled1">否</el-radio>
-                </el-radio-group> -->
-              </el-form-item><br>
+              <el-form-item label="准出延期 :"><span :style="taskLateDisabled">{{ taskLateStatus }}</span></el-form-item><br>
               <el-form-item v-show="showDelay1" label="延期原因">{{ ClientData.taskLateReason }}</el-form-item>
             </el-col>
           </el-row>
@@ -237,6 +213,21 @@ export default {
     getRouterData() {
       if (this.$route.query.data) {
         this.ClientData = this.$route.query.data
+        this.editorElem1 = this.ClientData.projectBackground
+        this.editorElems1 = this.ClientData.fctInfo
+        this.editorFrom1 = this.ClientData.sctInfo
+        this.editorFro = this.ClientData.acceptanceResultInfo
+        this.editorEle1 = this.ClientData.bugTarget
+        this.editorElem = this.ClientData.projectBackground
+        this.editorElems = this.ClientData.moduleInfo
+        this.editorFrom = this.ClientData.functionInfo
+        this.editorF = this.ClientData.onlineRisk
+        this.editorEle = this.ClientData.rqtInfo
+        this.editorData = this.ClientData.bugInfo
+        this.editorEl = this.ClientData.fctInfo
+        this.editorSix = this.ClientData.pftInfo
+        this.editorEight = this.ClientData.safeResultInfo
+        this.editorNine = this.ClientData.moniterResultInfo
         if (this.ClientData.type === 2) {
           this.towShow = true
           this.oneShow = false
@@ -274,21 +265,6 @@ export default {
           case 2: this.acceptanceResult = '未通过'; this.acceptanceResult1.color = 'red'; break
           case 3: this.acceptanceResult = '未执行'; this.acceptanceResult1.color = 'Orange'; break
         }
-        this.editorElem1 = this.ClientData.projectBackground
-        this.editorElems1 = this.ClientData.fctInfo
-        this.editorFrom1 = this.ClientData.sctInfo
-        this.editorFro = this.ClientData.acceptanceResultInfo
-        this.editorEle1 = this.ClientData.bugTarget
-        this.editorElem = this.ClientData.projectBackground
-        this.editorElems = this.ClientData.moduleInfo
-        this.editorFrom = this.ClientData.functionInfo
-        this.editorF = this.ClientData.onlineRisk
-        this.editorEle = this.ClientData.rqtInfo
-        this.editorData = this.ClientData.bugInfo
-        this.editorEl = this.ClientData.fctInfo
-        this.editorSix = this.ClientData.pftInfo
-        this.editorEight = this.ClientData.safeResultInfo
-        this.editorNine = this.ClientData.moniterResultInfo
       }
     },
     download() {

+ 1 - 1
src/views/Platform/projectPage.vue

@@ -760,7 +760,7 @@ export default {
           for (var f of this.stageStrings) {
             vel.stageString === f.name ? this.bizData.stage = f.value : ''
           }
-          // this.bizData.stage = vel.stageString
+          this.bizData.bizId = this.bizJson
           // this.bizData.status = vel.statusString
           // this.bizData.priority = vel.priorityString
         } else {

+ 287 - 0
src/views/Platform/projectQuery/projectQuery.vue

@@ -0,0 +1,287 @@
+<template>
+  <div style="margin:2% 9%;">
+    <el-tabs tab-position="top" stretch style="height: auto;">
+      <el-tab-pane label=" 查 看 ">
+        <el-form :model="form" size="mini">
+          <div style=" diaplay: flex; padding-top:30px;">
+            <el-form style=" padding-left: 100px;" label="right" size="mini" :label-width="formLabelWidth1">
+              <el-form-item label="项目名称 : " :label-width="formLabelWidth1">{{ form.name }}</el-form-item>
+            </el-form>
+            <div style="display:flex;">
+              <el-form style="flex:1; padding-left: 100px;" label="right" size="mini" label-width="110px">
+                <el-form-item label="进展 : " :label-width="formLabelWidth1">{{ form.stageString }}</el-form-item>
+                <el-form-item label="PM : " :label-width="formLabelWidth1">{{ form.pm }}</el-form-item>
+                <el-form-item label="版本 : " :label-width="formLabelWidth1">{{ form.version }}</el-form-item>
+                <el-form-item label="开始时间 : " :label-width="formLabelWidth1">{{ form.createTime }}</el-form-item>
+              </el-form>
+              <el-form style="flex:1; padding-left: 100px;" label="right" size="mini" label-width="110px">
+                <el-form-item label="优先级 : " :label-width="formLabelWidth1">{{ form.priorityString }}</el-form-item>
+                <el-form-item label="状态 : " :label-width="formLabelWidth1">{{ form.statusString }}</el-form-item>
+                <el-form-item label="QA : " :label-width="formLabelWidth1">{{ form.qa }}</el-form-item>
+                <el-form-item label="RD : " :label-width="formLabelWidth1">{{ form.rd }}</el-form-item>
+                <el-form-item label="计划上线时间 : " :label-width="formLabelWidth1">{{ form.allOnlineTime }}</el-form-item>
+              </el-form>
+            </div>
+            <el-form style=" padding-left: 100px;" label="right" size="mini" label-width="110px">
+              <el-form-item label="需求文档 : " :label-width="formLabelWidth1">{{ form.mrdUrl }}</el-form-item>
+            </el-form>
+            <el-form style=" padding-left: 100px;" label="right" size="mini" label-width="110px">
+              <el-form-item label="描述 : " :label-width="formLabelWidth1">{{ form.description }}</el-form-item>
+            </el-form>
+          </div>
+          <el-button type="primary" round size="mini" icon="el-icon-arrow-down" style="cursor: pointer;" @click="show2 = !show2">详细查看</el-button>
+          <transition name="el-zoom-in-top">
+            <div v-show="show2" style="width:100%; padding-top:30px;">
+              <div style="display: flex;">
+                <el-form style="flex:1.7; margin-left: 100px;" label="right" size="mini" label-width="100px">
+                  <el-form-item label="UE : " :label-width="formLabelWidth1">{{ form.ue }}</el-form-item>
+                </el-form>
+                <el-form style="flex:1; margin-right: 130px;" label="right" size="mini" label-width="100px">
+                  <el-form-item label="UI : " :label-width="formLabelWidth1">{{ form.ui }}</el-form-item>
+                </el-form>
+              </div>
+              <div style="display: flex;">
+                <el-form style="flex:1; margin-left: 100px;" label="right" size="mini" label-width="150px">
+                  <el-form-item label="需求评审时间 : " :label-width="formLabelWidth1">{{ form.mrdTime }}</el-form-item>
+                  <el-form-item label="服务端开始开发时间 : " :label-width="formLabelWidth1">{{ form.serviceDevTime }}</el-form-item>
+                </el-form>
+                <el-form style="flex:1; margin-right: -100px;" label="right" size="mini" label-width="150px">
+                  <el-form-item label="全量时间 : " :label-width="formLabelWidth1">{{ form.allOnlineTime }}</el-form-item>
+                  <el-form-item label="客户端提测时间 : " :label-width="formLabelWidth1">{{ form.clientLaunchTestTime }}</el-form-item>
+                </el-form>
+              </div>
+              <el-form style="margin-left: 95px;"> <el-form-item label="开发联调时间 : " :label-width="formLabelWidth1">{{ form.joinTestTime }}</el-form-item></el-form>
+              <div style="display: flex;">
+                <el-form style="flex:1; margin-left: 100px;" label="right" size="mini" label-width="150px">
+                  <el-form-item label="服务端测试完成时间 : " :label-width="formLabelWidth1">{{ form.serviceFinishTestTime }}</el-form-item>
+                  <el-form-item label="服务端提测时间 : " :label-width="formLabelWidth1">{{ form.serviceLaunchTestTime }}</el-form-item>
+                  <el-form-item label="服务端上线时间 : " :label-width="formLabelWidth1">{{ form.serverOnLine }}</el-form-item>
+                  <el-form-item label="产品验收时间 : " :label-width="formLabelWidth1">{{ form.pmTestTime }}</el-form-item>
+                </el-form>
+                <el-form style="flex:1; margin-left: 100px;" label="right" size="mini" label-width="150px">
+                  <el-form-item label="客户端开始开发时间 : " :label-width="formLabelWidth1">{{ form.clientDevTime }}</el-form-item>
+                  <el-form-item label="客户端测试完成时间 : " :label-width="formLabelWidth1">{{ form.clientFinishTestTime }}</el-form-item>
+                  <el-form-item label="客户端上线时间 : " :label-width="formLabelWidth1">{{ form.clientOnlineTime }}</el-form-item>
+                  <el-form-item label="灰度时间 : " :label-width="formLabelWidth1">{{ form.pmTestTime }}</el-form-item>
+                </el-form>
+              </div>
+            </div>
+          </transition>
+        </el-form>
+        <div align="center">
+          <el-button type="primary" @click="clickOut">返回bug主页</el-button>
+        </div>
+      </el-tab-pane>
+
+      <el-tab-pane label=" 编 辑 ">
+        <el-form ref="serviceDataForms" :model="form" autocomplete="off" :rules="serviceDataRules" style="width:93%;">
+          <el-form-item label="项目名称" prop="name" :label-width="formLabelWidths"><el-input v-model="form.name" placeholder="项目名称" /></el-form-item>
+          <div style="display: flex;">
+            <div style="flex:1;">
+              <el-form-item label="业务线" prop="bizIdString" :label-width="formLabelWidths">
+                <el-select v-model="form.bizIdString" placeholder="业务线">
+                  <el-option v-for="item in bizIdEnumList" :key="item.code" :label="item.name" :value="item.name" />
+                </el-select>
+              </el-form-item>
+              <el-form-item label="状态" prop="statusString" :label-width="formLabelWidths">
+                <el-select v-model="form.statusString" placeholder="状态">
+                  <el-option v-for="item in bugStatusStr" :key="item.code" :label="item.name" :value="item.name" />
+                </el-select>
+              </el-form-item>
+            </div>
+            <div style="flex:1;">
+              <el-form-item label="优先级" prop="priorityString" :label-width="formLabelWidths">
+                <el-select v-model="form.priorityString" placeholder="优先级">
+                  <el-option v-for="item in bugLevelStr" :key="item.code" :label="item.name" :value="item.name" />
+                </el-select>
+              </el-form-item>
+              <el-form-item label="进展" prop="stageString" :label-width="formLabelWidths">
+                <el-select v-model="form.stageString" placeholder="进展">
+                  <el-option v-for="item in stageStrings" :key="item.value" :label="item.name" :value="item.name" />
+                </el-select>
+              </el-form-item>
+            </div>
+            <div style="flex:1;">
+              <el-form-item label="PM" prop="pm" :label-width="formLabelWidths"><el-input v-model="form.pm" /></el-form-item>
+              <el-form-item label="版本" :label-width="formLabelWidths"><el-input v-model="form.version" /></el-form-item>
+              <el-form-item v-show="false" label="创建人" :label-width="formLabelWidths"><el-input v-model="form.creater" /></el-form-item>
+            </div>
+          </div>
+          <el-form-item label="需求文档" :label-width="formLabelWidths"><el-input v-model="form.mrdUrl" /></el-form-item>
+          <el-button type="primary" round size="mini" icon="el-icon-arrow-down" style="cursor: pointer;" @click="show2 = !show2">详细添加</el-button>
+          <transition name="el-zoom-in-top">
+            <div v-show="show2" style=" width:100%;margin-left:50px; padding-top:30px;">
+              <div style="display: flex;">
+                <div style="flex;1;">
+                  <el-form-item label="UE " :label-width="formLabelWidths"><el-input v-model="form.ue" style="width:220px;" /></el-form-item>
+                  <el-form-item label="UI " :label-width="formLabelWidths"><el-input v-model="form.ui" style="width:220px;" /></el-form-item>
+                </div>
+                <div style="flex:1;margin-left:135px;">
+                  <el-form-item label="RD " :label-width="formLabelWidths"><el-input v-model="form.rd" style="width:220px;" /></el-form-item>
+                  <el-form-item label="QA " :label-width="formLabelWidths"><el-input v-model="form.qa" style="width:220px;" /></el-form-item>
+                </div>
+              </div>
+              <div style="display: flex;">
+                <div style="flex;1;">
+                  <el-form-item label="需求评审时间" :label-width="formLabelWidths"><el-date-picker v-model="form.mrdTime" type="datetime" placeholder="选择日期" /></el-form-item>
+                  <el-form-item label="服务端开始开发时间" :label-width="formLabelWidths"><el-date-picker v-model="form.serviceDevTime" type="datetime" placeholder="选择日期" /></el-form-item>
+                </div>
+                <div style="flex:1;margin-left:135px;">
+                  <el-form-item label="全量时间" :label-width="formLabelWidths"><el-date-picker v-model="form.allOnlineTime" type="datetime" placeholder="选择日期" /></el-form-item>
+                  <el-form-item label="客户端开始开发时间" :label-width="formLabelWidths"><el-date-picker v-model="form.clientDevTime" type="datetime" placeholder="选择日期" /></el-form-item>
+                </div>
+              </div>
+              <el-form-item label="开发联调时间" :label-width="formLabelWidths">
+                <el-date-picker v-model="form.joinTestTime" type="datetime" placeholder="选择日期" />
+              </el-form-item>
+              <div style="display: flex;">
+                <div style="flex:1;">
+                  <el-form-item label="服务端提测时间" :label-width="formLabelWidths"><el-date-picker v-model="form.serviceLaunchTestTime" type="datetime" placeholder="选择日期" /></el-form-item>
+                  <el-form-item label="服务端测试完成时间" :label-width="formLabelWidths"><el-date-picker v-model="form.serviceFinishTestTime" type="datetime" placeholder="选择日期" /></el-form-item>
+                  <el-form-item label="服务端上线时间" :label-width="formLabelWidths"><el-date-picker v-model="form.serverOnLine" type="datetime" placeholder="选择日期" /></el-form-item>
+                  <el-form-item label="灰度时间" :label-width="formLabelWidths"><el-date-picker v-model="form.grayscaleTime" type="datetime" placeholder="选择日期" /></el-form-item>
+                </div>
+                <div style="flex:1;">
+                  <el-form-item label="客户端提测时间" :label-width="formLabelWidths"><el-date-picker v-model="form.clientLaunchTestTime" type="datetime" placeholder="选择日期" /></el-form-item>
+                  <el-form-item label="客户端测试完成时间" :label-width="formLabelWidths"><el-date-picker v-model="form.clientFinishTestTime" type="datetime" placeholder="选择日期" /></el-form-item>
+                  <el-form-item label="客户端上线时间" :label-width="formLabelWidths"><el-date-picker v-model="form.clientOnlineTime" type="datetime" placeholder="选择日期" /></el-form-item>
+                  <el-form-item label="产品验收时间" :label-width="formLabelWidths"><el-date-picker v-model="form.pmTestTime" type="datetime" placeholder="选择日期" /></el-form-item>
+                </div>
+              </div>
+            </div>
+          </transition>
+          <div style="display: flex; padding-top:30px; width: 100%;">
+            <el-form-item label="备注" style="flex:1;" label-width="180px"><el-input v-model="form.remarks" type="textarea" :rows="4" placeholder="备注" /></el-form-item>
+            <el-form-item label="描述" style="flex:1;" label-width="130px"><el-input v-model="form.description" type="textarea" :rows="4" placeholder="请输入内容" /></el-form-item>
+          </div>
+          <div align="center">
+            <el-button type="primary" @click="clickOut">返回bug主页</el-button>
+            <el-button type="primary" @click="updateData(form)">确 定</el-button>
+          </div>
+        </el-form>
+      </el-tab-pane>
+    </el-tabs>
+  </div>
+</template>
+
+<script>
+import { projectInit, updateProject, getProjectData } from '@/api/projectPage.js'
+import { bugGetEnum } from '@/api/defectManage' // 下拉菜单data
+export default {
+  name: 'ProjectQuery',
+  data() {
+    return {
+      bugTypeStr: [],
+      bugStatusStr: [],
+      bugLevelStr: [],
+      stageStrings: [{ name: '正常', value: 1 }, { name: 'delay', value: 2 }, { name: 'pending', value: 3 }],
+      serviceDataRules: {
+        notest: [{ required: true, message: '是否免测不能为空', trigger: 'change' }],
+        type: [{ required: true, message: '平台类型不能为空', trigger: 'change' }],
+        name: [{ required: true, message: '项目名称不能为空', trigger: 'change' }],
+        bizIdString: [{ required: true, message: '业务线不能为空', trigger: 'change' }],
+        statusString: [{ required: true, message: '状态不能为空', trigger: 'change' }],
+        priorityString: [{ required: true, message: '优先级不能为空', trigger: 'change' }],
+        stageString: [{ required: true, message: '进展不能为空', trigger: 'change' }],
+        pm: [{ required: true, message: 'pm不能为空', trigger: 'change' }],
+        taskType: [{ required: true, message: '任务类型不能为空', trigger: 'change' }],
+        businessType: [{ required: true, message: '业务模块不能为空', trigger: 'change' }]
+      },
+      reasonStr: [],
+      platformTypeStr: [],
+      stageStr: [],
+      discoveryMethodStr: [],
+      repairResultStr: [],
+      bizIdEnumList: [],
+      userInformation: localStorage.getItem('username'),
+      userNames: localStorage.getItem('realname'),
+      bizJson: localStorage.getItem('key'),
+      form: {},
+      statusShow: false,
+      repairShow: false,
+      formLabelWidth1: '160px',
+      formLabelWidths: '160px',
+      objData: '',
+      userData: '',
+      taskIdStr: '',
+      url: '',
+      arrurl: '',
+      show2: false
+    }
+  },
+  created() {
+    this.getList()
+    this.getList1()
+    this.bugListSelect()
+  },
+  methods: {
+    getList1() {
+      this.queryListData = {
+        ename: this.userNames,
+        bizId: this.bizJson
+      }
+      projectInit(this.queryListData).then(response => {
+        this.serviceTypeEnumList = response.query.serviceTypeEnumList
+        this.clientTypeEnumList = response.query.clientTypeEnumList
+        this.taskTypeStr = response.query.taskAndRoutineEnumList
+      })
+    },
+    getList() {
+      if (this.$route.query.data) {
+        this.form = this.$route.query.data
+      } else {
+        this.url = window.location.href // 获取url中"?"符后的字串
+        this.arrurl = this.url.split('?id=')
+        getProjectData(this.arrurl[1]).then(res => {
+          this.form = res.data
+        })
+      }
+    },
+    bugListSelect() {
+      bugGetEnum().then(res => {
+        this.bizIdEnumList = res.data.bizIdEnumList
+        this.bugStatusStr = res.data.bugEnumList
+        this.stageStr = res.data.bugStageEnumList
+        this.reasonStr = res.data.reasonEnumList
+        this.platformTypeStr = res.data.platformTypeEnumList
+        this.bugTypeStr = res.data.bugTypeEnumList
+        this.bugLevelStr = res.data.priorityEnumList
+        this.discoveryMethodStr = res.data.discoveryMethodEnumList
+        this.repairResultStr = res.data.repairResultEnumList
+      })
+    },
+    updateData(vel) {
+      console.log(vel)
+      this.bizData = vel
+      this.$refs['serviceDataForms'].validate((valid) => {
+        if (valid) {
+          this.bizData.status = vel.status
+          this.bizData.priority = vel.priority
+          this.bizData.stage = vel.stage
+          this.userData = { id: '', ename: this.userInformation, name: this.userNames }
+          this.objData = { projectInfo: this.bizData, user: this.userData }
+          updateProject(this.objData).then(response => {
+            if (response.code === 200) {
+              this.bizData = {}
+              this.successFun()
+            } else {
+              this.errorFun(response.msg)
+            }
+          })
+        } else {
+          return false
+        }
+      })
+    },
+    clickOut() {
+      this.$router.push({ path: '/Platform/projectPage' })
+    },
+    successFun() {
+      this.$notify({ title: 'Success', message: 'Created Successfully', type: 'success', duration: 2000 })
+    },
+    errorFun(e) {
+      this.$notify({ title: 'Failed', message: e, type: 'error', duration: 2000 })
+    }
+  }
+}
+</script>

+ 326 - 0
src/views/Platform/projectQuery/taskQuery.vue

@@ -0,0 +1,326 @@
+<template>
+  <div style="margin:2% 9%;">
+    <el-tabs tab-position="top" stretch style="height: auto;">
+      <el-tab-pane label=" 查 看 ">
+        <el-form :model="form" size="mini">
+          <div style="display:flex;">
+            <el-form style="flex:1; padding-left: 130px;" size="mini" label="right" label-width="110px">
+              <el-form-item label="任务名称 : " :label-width="formLabelWidth1">{{ form.name }}</el-form-item>
+              <el-form-item label="任务 : " :label-width="formLabelWidth1">{{ form.statusString }}</el-form-item>
+              <el-form-item label="进展 : " :label-width="formLabelWidth1">{{ form.stageString }}</el-form-item>
+              <el-form-item label="PM : " :label-width="formLabelWidth1">{{ form.pm }}</el-form-item>
+              <el-form-item label="RD : " :label-width="formLabelWidth1">{{ form.rd }}</el-form-item>
+              <el-form-item label="QA : " :label-width="formLabelWidth1">{{ form.qa }}</el-form-item>
+              <el-form-item label="打回次数 : " :label-width="formLabelWidth1">{{ form.reopen }}</el-form-item>
+            </el-form>
+            <el-form style="flex:1;" label="right" size="mini" label-width="110px">
+              <el-form-item label="业务线 : " :label-width="formLabelWidth1">{{ form.bizIdString }}</el-form-item>
+              <el-form-item label="优先级 : " :label-width="formLabelWidth1">{{ form.priorityString }}</el-form-item>
+              <el-form-item label="任务类型 : " :label-width="formLabelWidth1">{{ form.taskType }}</el-form-item>
+              <el-form-item label="平台类型 : " :label-width="formLabelWidth1">{{ form.typeString }}</el-form-item>
+              <el-form-item label="是否免测 : " :label-width="formLabelWidth1">{{ form.noTestString }}</el-form-item>
+              <el-form-item label="业务模块 : " :label-width="formLabelWidth1">{{ form.businessType }}</el-form-item>
+            </el-form>
+          </div>
+          <el-form label="right" style="margin-left:130px;" size="mini" label-width="210px">
+            <el-form-item label="需求文档 : " :label-width="formLabelWidth1" style="width:60vw;">{{ form.mrdUrl }}</el-form-item>
+            <el-form-item label="技术文档 : " :label-width="formLabelWidth1" style="width:60vw;">{{ form.devUrl }}</el-form-item>
+            <el-form-item label="描述 : " :label-width="formLabelWidth1" style="width:60vw;">{{ form.description }}</el-form-item>
+            <el-form-item label="备注 : " :label-width="formLabelWidth1" style="width:60vw;">{{ form.remark }}</el-form-item>
+
+          </el-form>
+          <el-button type="primary" round size="mini" icon="el-icon-arrow-down" style="cursor: pointer;" @click="show2 = !show2">详细查看</el-button>
+          <el-form label="right" size="mini" label-width="110px">
+            <transition name="el-zoom-in-top">
+              <div v-show="show2" style="display: flex;margin-left:90px; width:93%; padding-top:30px;">
+                <div style="flex:1;">
+                  <el-form-item label="标签 : " :label-width="formLabelWidth1">{{ form.tag }}</el-form-item>
+                  <el-form-item label="需求评审时间 : " :label-width="formLabelWidth1">{{ form.mrdTime }}</el-form-item>
+                  <el-form-item label="计划开始开发时间 : " :label-width="formLabelWidth1">{{ form.startDevPlanTime }}</el-form-item>
+                  <el-form-item label="计划测试完成时间 : " :label-width="formLabelWidth1">{{ form.testFinishPlanTime }}</el-form-item>
+                  <el-form-item label="计划提测时间 : " :label-width="formLabelWidth1">{{ form.launchTestPlanTime }}</el-form-item>
+                  <el-form-item label="计划上线时间 : " :label-width="formLabelWidth1">{{ form.onlinePlanTime }}</el-form-item>
+                </div>
+                <div style="flex:1;">
+                  <el-form-item label="分组 : " :label-width="formLabelWidth1">{{ form.group }}</el-form-item>
+                  <el-form-item label="关注人 : " prop="focusPenson" :label-width="formLabelWidth1">{{ form.focusPenson }}</el-form-item>
+                  <el-form-item label="实际开始开发时间 : " :label-width="formLabelWidth1">{{ form.startDevRealTime }}</el-form-item>
+                  <el-form-item label="实际测试完成时间 : " :label-width="formLabelWidth1">{{ form.testFinishRealTime }}</el-form-item>
+                  <el-form-item label="冒烟测试完成时间 : " :label-width="formLabelWidth1">{{ form.smokeTestFinishTime }}</el-form-item>
+                  <el-form-item label="实际提测时间 : " :label-width="formLabelWidth1">{{ form.launchTestRealTime }}</el-form-item>
+                  <el-form-item label="实际上线时间 : " :label-width="formLabelWidth1">{{ form.onlineRealTime }}</el-form-item>
+                </div>
+              </div>
+            </transition>
+          </el-form>
+          <div align="center">
+            <el-button type="primary" @click="clickOut">返回bug主页</el-button>
+          </div>
+        </el-form>
+      </el-tab-pane>
+
+      <el-tab-pane label=" 编 辑 ">
+        <el-form ref="form" :model="form" :rules="serviceDataRules">
+          <el-form-item label="任务名称" prop="name" label-width="100px" style="width:93%;">
+            <el-input v-model="form.name" placeholder="任务名称" autocomplete="off" />
+          </el-form-item>
+          <div style="display: flex;">
+            <div style="flex:1;">
+              <el-form-item label="业务线" prop="bizIdString" label-width="100px">
+                <el-select v-model="form.bizIdString" 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="优先级" prop="priorityString" label-width="100px">
+                <el-select v-model="form.priorityString" placeholder="优先级">
+                  <el-option v-for="item in bugLevelStr" :key="item.code" :label="item.name" :value="item.code" />
+                </el-select>
+              </el-form-item>
+              <el-form-item label="进展" prop="stageString" label-width="100px">
+                <el-select v-model="form.stageString" placeholder="进展">
+                  <el-option v-for="item in stageEnumList" :key="item.code" :label="item.name" :value="item.code" />
+                </el-select>
+              </el-form-item>
+            </div>
+            <div style="flex:1;">
+              <el-form-item label="平台类型" prop="type" label-width="100px">
+                <el-select v-model="form.type" placeholder="平台类型" @change="clickType(form.type)">
+                  <el-option v-for="item in platformTypeStr" :key="item.code" :label="item.name" :value="item.code" />
+                </el-select>
+              </el-form-item>
+              <el-form-item label="状态" prop="statusString" label-width="100px">
+                <el-select v-model="form.statusString" placeholder="状态">
+                  <el-option v-for="item in bugStatusStr" :key="item.code" :label="item.name" :value="item.code" />
+                </el-select>
+              </el-form-item>
+              <el-form-item label="任务类型" prop="taskType" label-width="100px">
+                <el-select v-model="form.taskType" placeholder="任务类型">
+                  <el-option v-for="item in taskAndRoutineEnumList" :key="item.code" :label="item.name" :value="item.name" />
+                </el-select>
+              </el-form-item>
+            </div>
+            <div style="flex:1;">
+              <el-form-item label="业务模块" prop="businessType" label-width="100px">
+                <el-select v-model="form.businessType" placeholder="业务模块">
+                  <el-option v-for="item in businessTypeStr" :key="item.code" :label="item.name" :value="item.code" />
+                </el-select>
+              </el-form-item>
+              <el-form-item label="是否免测" prop="notest" label-width="100px">
+                <el-select v-model="form.notest" placeholder="是否免测">
+                  <el-option v-for="item in noTestString" :key="item.code" :label="item.name" :value="item.code" />
+                </el-select>
+              </el-form-item>
+            </div>
+          </div>
+          <el-form-item label="需求文档" style="width:72vw;" label-width="100px">
+            <el-input v-model="form.mrdUrl" autocomplete="off" />
+          </el-form-item>
+          <el-form-item label="技术文档" style="width:72vw;" label-width="100px">
+            <el-input v-model="form.devUrl" autocomplete="off" />
+          </el-form-item>
+          <el-button type="primary" round size="mini" icon="el-icon-arrow-down" style="cursor: pointer;" @click="show2 = !show2">详细添加</el-button>
+          <transition name="el-zoom-in-top">
+            <div v-show="show2" style="display: flex; width:93%; padding-top:30px;">
+              <div style="flex:1;">
+                <el-form-item label="标签" :label-width="formLabelWidth">
+                  <el-input v-model="form.tag" style="width:220px;" autocomplete="off" />
+                </el-form-item>
+                <el-form-item label="RD" :label-width="formLabelWidth">
+                  <el-input v-model="form.rd" style="width:220px;" autocomplete="off" />
+                </el-form-item>
+                <el-form-item label="QA" :label-width="formLabelWidth">
+                  <el-input v-model="form.qa" style="width:220px;" autocomplete="off" />
+                </el-form-item>
+                <el-form-item label="需求评审时间" :label-width="formLabelWidth">
+                  <el-date-picker v-model="form.mrdTime" type="datetime" placeholder="选择日期" />
+                </el-form-item>
+                <el-form-item label="计划开始开发时间" :label-width="formLabelWidth">
+                  <el-date-picker v-model="form.startDevPlanTime" type="datetime" placeholder="选择日期" />
+                </el-form-item>
+                <el-form-item label="计划测试完成时间" :label-width="formLabelWidth">
+                  <el-date-picker v-model="form.testFinishPlanTime" type="datetime" placeholder="选择日期" />
+                </el-form-item>
+                <el-form-item label="计划提测时间" :label-width="formLabelWidth">
+                  <el-date-picker v-model="form.launchTestPlanTime" type="datetime" placeholder="选择日期" />
+                </el-form-item>
+                <el-form-item label="计划上线时间" :label-width="formLabelWidth">
+                  <el-date-picker v-model="form.onlinePlanTime" type="datetime" placeholder="选择日期" />
+                </el-form-item>
+              </div>
+              <div style="flex:1;">
+                <el-form-item label="分组" :label-width="formLabelWidth">
+                  <el-input v-model="form.group" style="width:220px;" autocomplete="off" />
+                </el-form-item>
+                <el-form-item label="PM" :label-width="formLabelWidth">
+                  <el-input v-model="form.pm" style="width:220px;" autocomplete="off" />
+                </el-form-item>
+                <el-form-item label="关注人" prop="focusPenson" :label-width="formLabelWidth">
+                  <el-input v-model="form.focusPenson" style="width:220px;" autocomplete="off" />
+                </el-form-item>
+                <el-form-item label="实际开始开发时间" :label-width="formLabelWidth">
+                  <el-date-picker v-model="form.startDevRealTime" type="datetime" placeholder="选择日期" />
+                </el-form-item>
+                <el-form-item label="实际测试完成时间" :label-width="formLabelWidth">
+                  <el-date-picker v-model="form.testFinishRealTime" type="datetime" placeholder="选择日期" />
+                </el-form-item>
+                <el-form-item label="冒烟测试完成时间" :label-width="formLabelWidth">
+                  <el-date-picker v-model="form.smokeTestFinishTime" type="datetime" placeholder="选择日期" />
+                </el-form-item>
+                <el-form-item label="实际提测时间" :label-width="formLabelWidth">
+                  <el-date-picker v-model="form.launchTestRealTime" type="datetime" placeholder="选择日期" />
+                </el-form-item>
+                <el-form-item label="实际上线时间" :label-width="formLabelWidth">
+                  <el-date-picker v-model="form.onlineRealTime" type="datetime" placeholder="选择日期" />
+                </el-form-item>
+              </div>
+            </div>
+          </transition>
+          <dir style="display:flex; width:93%;">
+            <el-form-item label="备注" style="flex:1;" label-width="60px">
+              <el-input v-model="form.remark" type="textarea" :rows="4" placeholder="备注" />
+            </el-form-item>
+            <el-form-item label="描述" style="flex:1;" label-width="60px">
+              <el-input v-model="form.description" type="textarea" :rows="4" placeholder="请输入内容" />
+            </el-form-item>
+          </dir>
+        </el-form>
+        <div align="center">
+          <el-button type="primary" @click="clickOut">返回bug主页</el-button>
+          <el-button type="primary" @click="updateaddTaskData(form)">确 定</el-button>
+        </div>
+      </el-tab-pane>
+    </el-tabs>
+  </div>
+</template>
+
+<script>
+import { updateTaskList, getTaskData } from '@/api/projectPage.js'
+import { bugGetEnum } from '@/api/defectManage' // 下拉菜单data
+export default {
+  name: 'TaskQuery',
+  data() {
+    return {
+      bugTypeStr: [],
+      bugStatusStr: [],
+      bugLevelStr: [],
+      noTestString: [{ name: '测试', code: 0 }, { name: '自测', code: 1 }],
+      serviceDataRules: {
+        notest: [{ required: true, message: '是否免测不能为空', trigger: 'change' }],
+        type: [{ required: true, message: '平台类型不能为空', trigger: 'change' }],
+        name: [{ required: true, message: '项目名称不能为空', trigger: 'change' }],
+        bizIdString: [{ required: true, message: '业务线不能为空', trigger: 'change' }],
+        statusString: [{ required: true, message: '状态不能为空', trigger: 'change' }],
+        priorityString: [{ required: true, message: '优先级不能为空', trigger: 'change' }],
+        stageString: [{ required: true, message: '进展不能为空', trigger: 'change' }],
+        pm: [{ required: true, message: 'pm不能为空', trigger: 'change' }],
+        taskType: [{ required: true, message: '任务类型不能为空', trigger: 'change' }],
+        businessType: [{ required: true, message: '业务模块不能为空', trigger: 'change' }]
+      },
+      reasonStr: [],
+      platformTypeStr: [],
+      stageStr: [],
+      discoveryMethodStr: [],
+      repairResultStr: [],
+      bizIdEnumList: [],
+      clientTypeEnumList: [],
+      serviceTypeEnumList: [],
+      businessTypeStr: [],
+      stageEnumList: [],
+      taskAndRoutineEnumList: [],
+      userInformation: localStorage.getItem('username'),
+      userNames: localStorage.getItem('realname'),
+      bizJson: localStorage.getItem('key'),
+      form: {},
+      statusShow: false,
+      repairShow: false,
+      formLabelWidth1: '160px',
+      formLabelWidth: '160px',
+      objData: '',
+      userData: '',
+      taskIdStr: '',
+      url: '',
+      arrurl: '',
+      show2: false
+    }
+  },
+  created() {
+    this.bugListSelect()
+    this.getList()
+  },
+  methods: {
+    getList() {
+      if (this.$route.query.data) {
+        this.form = this.$route.query.data
+      } else {
+        this.url = window.location.href // 获取url中"?"符后的字串
+        this.arrurl = this.url.split('?id=')
+        getTaskData(this.arrurl[1]).then(res => {
+          this.form = res.data
+          if (this.form.type === 1) {
+            this.businessTypeStr = this.serviceTypeEnumList
+            for (var a of this.serviceTypeEnumList) {
+              var str = JSON.stringify(a.code)
+              this.form.businessType === str ? this.form.businessType = a.name : ''
+            }
+          }
+          if (this.form.type === 2) {
+            this.businessTypeStr = this.clientTypeEnumList
+            for (var b of this.clientTypeEnumList) {
+              var str1 = JSON.stringify(b.code)
+              this.form.businessType === str1 ? this.form.businessType = b.name : ''
+            }
+          }
+        })
+      }
+    },
+    bugListSelect() {
+      bugGetEnum().then(res => {
+        this.serviceTypeEnumList = res.data.serviceTypeEnumList
+        this.clientTypeEnumList = res.data.clientTypeEnumList
+        this.bizIdEnumList = res.data.bizIdEnumList
+        this.bugStatusStr = res.data.bugEnumList
+        this.stageStr = res.data.bugStageEnumList
+        this.reasonStr = res.data.reasonEnumList
+        this.platformTypeStr = res.data.platformTypeEnumList
+        this.bugTypeStr = res.data.bugTypeEnumList
+        this.bugLevelStr = res.data.priorityEnumList
+        this.discoveryMethodStr = res.data.discoveryMethodEnumList
+        this.repairResultStr = res.data.repairResultEnumList
+        this.stageEnumList = res.data.stageEnumList
+        this.taskAndRoutineEnumList = res.data.taskAndRoutineEnumList
+      })
+    },
+    updateaddTaskData(vel) {
+      this.form = vel
+      this.$refs['form'].validate((valid) => {
+        if (valid) {
+          this.form.projectId = this.parameter
+          this.userData = { id: '', ename: this.userInformation, name: this.userNames }
+          this.objData = { taskInfo: this.form, user: this.userData }
+          updateTaskList(this.objData).then(response => {
+            if (response.code === 200) {
+              this.successFun()
+            } else {
+              this.errorFun(response.msg)
+            }
+          })
+        } else {
+          return false
+        }
+      })
+    },
+    clickType(e) {
+      e === 1 ? this.businessTypeStr = this.serviceTypeEnumList : this.businessTypeStr = this.clientTypeEnumList
+    },
+    clickOut() {
+      this.$router.push({ path: '/Platform/projectPage' })
+    },
+    successFun() {
+      this.$notify({ title: 'Success', message: 'Created Successfully', type: 'success', duration: 2000 })
+    },
+    errorFun(e) {
+      this.$notify({ title: 'Failed', message: e, type: 'error', duration: 2000 })
+    }
+  }
+}
+</script>

+ 311 - 154
src/views/Platform/teamPage.vue

@@ -1,203 +1,360 @@
+
 <template>
   <el-container>
-    <el-aside width="200px">
+    <el-aside width="150pt">
       <el-tree
-        style="background: #E9EEF3; height:100%; padding:30px;"
-        :data="data"
+        style="background: #E9EEF3; height:93vh; padding:15%;"
+        :data="bizOptions"
         node-key="id"
-        default-expand-all
-        draggable
-        :allow-drop="allowDrop"
-        :allow-drag="allowDrag"
-        @node-drag-start="handleDragStart"
-        @node-drag-enter="handleDragEnter"
-        @node-drag-leave="handleDragLeave"
-        @node-drag-over="handleDragOver"
-        @node-drag-end="handleDragEnd"
-        @node-drop="handleDrop"
+        undraggable
+        :highlight-current="true"
+        @node-click="clickFun"
       />
     </el-aside>
     <el-container>
-      <el-header style="height: auto; display:flex; text-align:right">
-        <div style="flex:1;">
-          <div class="headerStyle">姓名<el-input v-model="value" placeholder="标题" clearable style="width: 200px;" class="filter-item" /></div>
-        </div>
-        <div style="flex:1;">
-          <div class="headerStyle">角色
-            <el-select v-model="value" style="width: 200px;" clearable placeholder="优先级">
-              <el-option v-for="item in value" :key="item.value" :label="item.name" :value="item.value" />
-            </el-select>
-          </div>
+      <el-header style="height: auto; text-align:left">
+        <div style="margin: 4%;">
+          <el-input v-model="form.name" clearable filterable placeholder="姓名" style="width:22%;margin-right:5px;" />
+          <el-input v-model="form.email" clearable filterable placeholder="邮箱" style="width:22%;margin-right:5px;" />
+          <el-select v-model="form.role" width="200" clearable placeholder="请选择角色">
+            <el-option v-for="item in roleStrings" :key="item.value" :label="item.name" :value="item.name" />
+          </el-select>
+          <el-button type="primary" style="margin-left:8%;" @click="queryList(form)">查询</el-button>
+          <el-button type="primary" @click="createGetShow">新增</el-button>
         </div>
-        <div style="flex:1;">
-          <div class="headerStyle">权限
-            <el-select v-model="value" style="width: 200px;" clearable placeholder="状态">
-              <el-option v-for="item in value" :key="item.value" :label="item.name" :value="item.value" />
-            </el-select>
-          </div>
-        </div>
-        <div style="flex:1; display:flex;">
-          <div style="flex:1;">
-            <el-button class="headerStyle" type="primary" icon="el-icon-search">查询</el-button>
-          </div>
-          <div style="flex:1;">
-            <el-button class="headerStyle" type="primary" icon="el-icon-search">新增</el-button>
+
+        <el-dialog :title="titleName" width="40%" :visible.sync="dialogFormVisible">
+          <el-form ref="MemberData" :model="MemberData" status-icon :rules="serviceDataRules" label-width="60px">
+            <el-form-item v-show="hide" label="id" prop="Id" :label-width="formLabelWidths">
+              <el-input v-model="MemberData.id" autocomplete="off" style="width:75%" :disabled="true" />
+            </el-form-item>
+            <el-form-item label="姓名" prop="name" :label-width="formLabelWidths">
+              <el-input v-model="MemberData.name" autocomplete="off" style="width:75%" />
+            </el-form-item>
+            <el-form-item label="邮箱" prop="email" :label-width="formLabelWidths">
+              <el-input v-model="MemberData.email" autocomplete="off" style="width:75%" />
+            </el-form-item>
+            <el-form-item label="业务线" prop="bizId" :label-width="formLabelWidths">
+              <el-select v-model="MemberData.bizId" placeholder="请选择业务线" style="width:75%">
+                <el-option v-for="item in bizOptions" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="角色" prop="role" :label-width="formLabelWidths">
+              <el-select v-model="MemberData.role" placeholder="请选择角色" style="width:75%">
+                <el-option v-for="item in roleStrings" :key="item.value" :label="item.name" :value="item.name" />
+              </el-select>
+            </el-form-item>
+          </el-form>
+          <div slot="footer" class="dialog-footer">
+            <el-button @click="dialogFormVisible = false,clickClose()">关 闭</el-button>
+            <el-button v-show="Determine" type="primary" @click="titleName === '新增'?createMembers(MemberData):updateData(MemberData)">确 定</el-button>
           </div>
-        </div>
+        </el-dialog>
       </el-header>
-      <el-main>
-        <el-table ref="multipleTable" :data="tableData" fit tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange">
-          <el-table-column type="selection" width="55" align="center" />
-          <el-table-column prop="name" label="姓名" width="200" align="center" />
-          <el-table-column prop="name" label="域账号" width="120" align="center" />
-          <el-table-column label="角色" width="200" align="center">
-            <template slot-scope="scope">{{ scope.row.date }}</template>
-          </el-table-column>
-          <el-table-column label="权限" width="200" align="center">
-            <template slot-scope="scope">{{ scope.row.date }}</template>
-          </el-table-column>
-          <el-table-column prop="address" label="操作" min-width="180px" align="center" fixed="right">
-            <template>
-              <el-button size="mini" type="primary" icon="el-icon-search">删除</el-button>
-              <el-button size="mini" type="primary" icon="el-icon-search">新增</el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-        <el-pagination
-          :current-page="curIndex"
-          :page-sizes="[5, 10, 20]"
-          :page-size="pageSize"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="100"
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-        />
-      </el-main>
+      <el-table :data="list" style="width: 100%; height:570vh;" row-key="id" lazy align="center">
+        <el-table-column prop="id" label="ID" width="150" align="center"><template slot-scope="scope"><span>{{ scope.row.id }}</span></template></el-table-column>
+        <el-table-column prop="name" label="姓名" width="180" align="center"><template slot-scope="scope"><span>{{ scope.row.name }}</span></template> </el-table-column>
+        <el-table-column label="team" width="180" align="center"><template slot-scope="scope"><span>{{ scope.row.teamId }}</span></template></el-table-column>
+        <el-table-column label="邮箱" width="180" align="center"><template slot-scope="scope"><span>{{ scope.row.email }}</span></template></el-table-column>
+        <el-table-column prop="role" label="角色" width="150" align="center"><template slot-scope="scope"><span>{{ scope.row.role }}</span></template></el-table-column>
+        <el-table-column label="操作" align="center" min-width="220px" fixed="right">
+          <template slot-scope="{row}">
+            <el-button size="mini" type="primary" @click="dialogFormVisible = true,queryData(row)">查看</el-button>
+            <el-button size="mini" type="primary" @click="dialogFormVisible = true,changeData(row)">编辑</el-button>
+            <el-button size="mini" type="primary" @click="deleteCodeData(row)">删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-footer>
+        <el-pagination :current-page="curIndex" :page-sizes="[5, 10, 20]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total" align="center" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+      </el-footer>
     </el-container>
   </el-container>
 </template>
 
 <script>
+import { createMembers, updateMembers, deleteMembers, getMemberList } from '@/api/teamPage.js'
 
+const operateType = {
+  OPER_ADD: 1, // 新增
+  OPER_EDIT: 2, // 编辑
+  OPER_QUERY: 3 // 查看
+}
 export default {
   name: 'TeamPage',
   data() {
     return {
-      value: '',
+      centerDialogVisible: false,
+      dialogFormVisible: false,
+      Determine: true,
+      hide: true,
       radioButton: 0,
-      pageSize: 0,
-      curIndex: 0,
-      total: 0,
-      data: [{
-        id: 1,
-        label: '代驾',
-        children: [{
-          id: 4,
-          label: '订单',
-          children: [{
-            id: 9,
-            label: '1 订单'
-          }, {
-            id: 10,
-            label: '2 订单'
-          }]
-        }, {
-          id: 6,
-          label: '营销'
-        }]
-      }, {
-        id: 2,
-        label: '乘客端',
-        children: [{
-          id: 5,
-          label: '小程序'
-        }, {
-          id: 6,
-          label: 'wabapp'
-        }]
-      }],
+      titleName: '',
+      parameter: '',
+      startId: '',
+      startName: '',
+      parentFolderId: '',
+      formLabelWidths: '120px',
+      roleStrings: [{ value: 1, name: 'rd' }, { value: 2, name: 'qa' }, { value: 3, name: 'pm' }, { value: 4, name: 'other' }],
+      bizOptions: [{ label: '滴滴代驾', value: 261 }, { label: '企业级', value: 100 }, { label: 'prado', value: 330 }, { label: 'carbo', value: 331 }, { label: '海马', value: 309 }, { label: '万象', value: 102 }],
+      userInformation: localStorage.getItem('username'),
+      userNames: localStorage.getItem('realname'),
+      bizId: '',
+      curIndex: 1, // 初始页
+      pageSize: 10, // 每页的数据
+      total: 1,
+      userData: '',
+      folderName: '',
+      list: [],
+      form: {},
+      queryListData: {},
+      bizData: {},
+      MemberData: {
+        bizId: '',
+        teamId: '',
+        email: '',
+        role: '',
+        name: ''
+      },
+      formData: {
+        bizId: '',
+        teamId: '',
+        role: '',
+        email: '',
+        name: ''
+
+      },
+      serviceDataRules: {
+        name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
+        bizId: [{ required: true, message: '业务线不能为空', trigger: 'change' }],
+        teamId: [{ required: true, message: '业务线不能为空', trigger: 'change' }],
+        role: [{ required: true, message: '角色不能为空', trigger: 'change' }],
+        email: [{ required: true, message: '邮箱不能为空', trigger: 'blur' }]
+      },
       defaultProps: {
         children: 'children',
         label: 'label'
       },
-      tableData: [{
-        date: '2016-05-03',
-        name: '王小虎',
-        address: '上海市普陀区金沙江路 1518 弄'
-      }, {
-        date: '2016-05-02',
-        name: '王小虎',
-        address: '上海市普陀区金沙江路 1518 弄'
-      }, {
-        date: '2016-05-04',
-        name: '王小虎',
-        address: '上海市普陀区金沙江路 1518 弄'
-      }, {
-        date: '2016-05-01',
-        name: '王小虎',
-        address: '上海市普陀区金沙江路 1518 弄'
-      }, {
-        date: '2016-05-08',
-        name: '王小虎',
-        address: '上海市普陀区金沙江路 1518 弄'
-      }, {
-        date: '2016-05-06',
-        name: '王小虎',
-        address: '上海市普陀区金沙江路 1518 弄'
-      }],
       multipleSelection: []
     }
   },
+  created() {
+    this.getAllList()
+  },
 
   methods: {
-    handleSelectionChange(val) {
-      console.log(val)
-      this.multipleSelection = val
+    updateDetailDialog(type) {
+      if (type === operateType.OPER_ADD) {
+        this.Determine = true
+        this.hide = false
+      } else if (type === operateType.OPER_EDIT) {
+        this.hide = true
+        this.Determine = true
+      } else if (type === operateType.OPER_QUERY) {
+        this.hide = true
+        this.Determine = false
+      }
     },
-    handleDragStart(node, ev) {
-      console.log('drag start', node)
+    handleSizeChange(size) {
+      this.pageSize = size
+      this.getAllList({
+        pageSize: this.pageSize,
+        curIndex: this.curIndex
+      })
     },
-    handleDragEnter(draggingNode, dropNode, ev) {
-      console.log('tree drag enter: ', dropNode.label)
+    handleCurrentChange(curIndex) {
+      this.curIndex = curIndex
+      this.getAllList({
+        pageSize: this.pageSize,
+        curIndex: this.curIndex
+      })
     },
-    handleDragLeave(draggingNode, dropNode, ev) {
-      console.log('tree drag leave: ', dropNode.label)
+    submitForm(formName) {
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          alert('submit!')
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
     },
-    handleDragOver(draggingNode, dropNode, ev) {
-      console.log('tree drag over: ', dropNode.label)
+    resetForm(formName) {
+      this.$refs[formName].resetFields()
     },
-    handleDragEnd(draggingNode, dropNode, dropType, ev) {
-      console.log('tree drag end: ', dropNode && dropNode.label, dropType)
+
+    // 全部列表
+    getAllList() {
+      var indexPage = {
+        pageSize: this.pageSize,
+        curIndex: this.curIndex
+      }
+      getMemberList(indexPage).then(res => {
+        this.list = res.data
+        for (var a of this.list) {
+          var b = a.teamId
+          for (var c of this.bizOptions) {
+            b === c ? b = c.label : ''
+          }
+        }
+        this.total = res.total
+      })
     },
-    handleDrop(draggingNode, dropNode, dropType, ev) {
-      console.log('tree drop: ', dropNode.label, dropType)
+
+    // 查看成员详情
+    queryData(vel) {
+      this.titleName = '查看详情'
+      this.MemberData = vel
+      this.updateDetailDialog(3)
     },
-    allowDrop(draggingNode, dropNode, type) {
-      if (dropNode.data.label === '二级 3-1') {
-        return type !== 'inner'
+
+    // 查询
+    queryList(val) {
+      console.log(val)
+      getMemberList(val).then(res => {
+        this.list = res.data
+        // this.form = {}
+      })
+    },
+
+    deleteCodeData(e) {
+      this.$confirm('确定删除吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        this.handleDelete(e)
+        this.$message({ type: 'success', message: '删除成功!' })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消删除'
+        })
+      })
+    },
+
+    // 删除
+    handleDelete(e) {
+      this.userData = { id: '', ename: this.userInformation, name: this.userNames }
+      deleteMembers(e.id, this.userData).then(response => {
+        if (response.code === 200) {
+          this.getAllList()
+          // this.queryList({ 'teamId': e.teamId })
+          this.successFun()
+        } else {
+          this.errorFun(response.msg)
+        }
+      })
+    },
+
+    // 编辑
+    changeData(vel) {
+      console.log(vel)
+      this.titleName = '编辑'
+      this.MemberData = vel
+      this.updateDetailDialog(2)
+    },
+
+    updateData(vel) {
+      if (vel === this.MemberData) {
+        this.bizData = {
+          name: vel.name,
+          id: vel.id,
+          role: vel.role,
+          email: vel.email,
+          teamId: vel.bizId,
+          bizId: vel.bizId
+        }
       } else {
-        return true
+        this.bizData = vel
+        this.bizData.name = vel.name
+        this.bizData.role = vel.role
+        this.bizData.email = vel.email
+        this.bizData.teamId = vel.teamId
+        this.bizData.bizId = vel.bizId
       }
+      this.userData = { id: '', ename: this.userInformation, name: this.userNames }
+      this.objData = { teamMembersInfo: this.bizData, user: this.userData }
+      updateMembers(this.objData).then(response => {
+        if (response.code === 200) {
+          this.dialogFormVisible = false
+          this.successFun()
+          this.getAllList()
+        } else {
+          this.errorFun()
+        }
+      })
     },
-    allowDrag(draggingNode) {
-      return draggingNode.data.label.indexOf('三级 3-2-2') === -1
+    // 新增需提示选择目录
+    createGetShow() {
+      this.titleName = '新增'
+      if (this.startId === '') {
+        this.$notify({ title: '提示', message: '请选择目录', duration: 2000 })
+      } else {
+        this.MemberData = {}
+        this.dialogFormVisible = true
+        this.$nextTick(() => {
+          this.$refs['MemberData'].clearValidate()
+        })
+        this.updateDetailDialog(1)
+      }
     },
-    statusChange(e) {
+    clickFun(e) {
       console.log(e)
-      this.radioButton = e
+      this.startId = e.value
+      this.startName = e.label
+      getMemberList({ teamId: e.value }).then(res => {
+        this.list = res.data
+      })
     },
-    handleSizeChange(size) {
-      this.pageSize = size
+
+    clickClose() {
+      this.startId = ''
     },
-    handleCurrentChange(curIndex) {
-      this.curIndex = curIndex
+
+    // 新增
+    createMembers(vel) {
+      this.$refs['MemberData'].validate((valid) => {
+        if (valid) {
+          if (vel !== '') {
+            this.bizData = {
+              name: vel.name,
+              id: vel.id,
+              role: vel.role,
+              email: vel.email,
+              teamId: this.startId,
+              bizId: vel.bizId
+            }
+          }
+          this.userData = { id: '', ename: this.userInformation, name: this.userNames }
+          this.objData = { teamMembersInfo: this.bizData, user: this.userData }
+          createMembers(this.objData).then(response => {
+            if (response.code === 200) {
+              this.dialogFormVisible = false
+              this.successFun()
+              this.getAllList()
+            } else {
+              this.errorFun()
+            }
+          })
+        } else {
+          return false
+        }
+      })
+    },
+
+    successFun() {
+      this.$notify({ title: 'Success', message: 'Created Successfully', type: 'success', duration: 5000 })
+    },
+    errorFun() {
+      this.$notify({ title: 'Failed', message: 'Created Failed', type: 'error', duration: 5000 })
     }
-  }
-}
+  }}
+
 </script>
 
 <style>
-  .headerStyle {
-  margin:10px;
-  }
+.headerStyle {
+  margin: 10px;
+}
 </style>

+ 4 - 4
src/views/Platform/useCasePage.vue

@@ -37,9 +37,9 @@
         <el-header style="height: auto; width:100%; font-size:14px; text-align:right">
           <el-row>
             <el-col :span="23" style="white-space:nowrap;">
-              <div class="headerStyle">api接口 <el-input v-model="createParticipation.api" placeholder="api接口" clearable style="width: 16%;margin-right:5px;" class="filter-item" />
-                用例优先级
-                <el-select v-model="createParticipation.casePriority" style="width: 18%;margin-right:5px;" clearable placeholder="用例优先级">
+              <div class="headerStyle">api接口 <el-input v-model="createParticipation.api" placeholder="api接口" clearable style="width: 16.3%;margin-right:5px;" class="filter-item" />
+                优先级
+                <el-select v-model="createParticipation.casePriority" style="width: 20%;margin-right:5px;" clearable placeholder="优先级">
                   <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.value" />
                 </el-select>
                 用例名
@@ -81,7 +81,7 @@
                 <span>{{ scope.row.expectedResult }}</span>
               </template>
             </el-table-column>
-            <el-table-column prop="casePriorityName" label="用例优先级" width="80" align="center">
+            <el-table-column prop="casePriorityName" label="优先级" width="80" align="center">
               <template slot-scope="scope">
                 <span>{{ scope.row.casePriorityName }}</span>
               </template>

+ 308 - 0
src/views/Platform/workbench.vue

@@ -0,0 +1,308 @@
+<template>
+  <div>
+    <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
+      <el-tab-pane label="待处理" name="first">
+        <div style="font-size:25px;font-weight:bold;padding:1% 0% 1% 2%;">近期代办</div>
+        <el-row :gutter="15">
+          <el-col v-if="show1" :span="5" :push="1"><div>{{ oneData.name }} <span style="margin: 0 10%;cursor: pointer;" @click="clickNum(1)"> 代办 <span class="num">{{ num1 }}</span></span></div></el-col>
+          <el-col v-if="show2" :span="5" :push="2"><div>{{ oneData1.name }} <span style="margin: 0 10%;cursor: pointer;" @click="clickNum(2)"> 代办 <span class="num">{{ num2 }}</span></span></div></el-col>
+          <el-col v-if="show3" :span="5" :push="3"><div>{{ oneData2.name }} <span style="margin: 0 10%;cursor: pointer;" @click="clickNum(3)"> 代办 <span class="num">{{ num3 }}</span></span></div></el-col>
+        </el-row>
+        <el-divider />
+        <div style="white-space:nowrap; text-align:center">
+          类型
+          <el-select v-model="bugOrTask.isBugOrTask" style="width: 13%;margin-right: 4%;" clearable placeholder="类型" @change="getstatus(bugOrTask.isBugOrTask)">
+            <el-option v-for="item in bugTask" :key="item.value" :label="item.name" :value="item.value" />
+          </el-select>
+          状态
+          <el-select v-model="bugOrTask.status" style="width: 13%;margin-right:4%;" clearable placeholder="状态">
+            <el-option v-for="item in bugStatusStr" :key="item.code" :label="item.name" :value="item.code" />
+          </el-select>
+          优先级
+          <el-select v-model="bugOrTask.priority" style="width: 13%;margin-right:4%;" clearable placeholder="优先级">
+            <el-option v-for="item in bugLevelStr" :key="item.code" :label="item.name" :value="item.code" />
+          </el-select>
+          <span>主题 <el-input v-model="bugOrTask.title" placeholder="主题" clearable style="width: 16.3%;" /></span>
+          <el-button type="primary" style="margin:2% 6%; " @click="clickQuery(bugOrTask)">查询</el-button>
+        </div>
+        <el-table :data="tableData" style="width: 100%" fit align="center" @row-click="clickQueryTableTask">
+          <el-table-column type="index" label="序号" min-width="130" align="right" />
+          <el-table-column v-if="bug" label="类型" min-width="100" align="center">
+            <template slot-scope="scope">{{ scope.row.isBugOrTask }}</template>
+          </el-table-column>
+          <el-table-column v-if="bug" label="主题" min-width="100" align="center">
+            <template slot-scope="scope">{{ scope.row.bugName }}</template>
+          </el-table-column>
+          <el-table-column v-if="bug" label="优先级" min-width="100" align="center">
+            <template slot-scope="scope">{{ scope.row.priority }}</template>
+          </el-table-column>
+          <el-table-column v-if="bug" label="状态" min-width="100" align="center">
+            <template slot-scope="scope"><el-tag type="success">{{ scope.row.status }}</el-tag></template>
+          </el-table-column>
+          <el-table-column v-if="bug" label="最近更新时间" min-width="100" align="center">
+            <template slot-scope="scope">{{ scope.row.modifyTime }}</template>
+          </el-table-column>
+          <el-table-column v-if="task" label="类型" min-width="130" align="center">
+            <template slot-scope="scope">{{ scope.row.isBugOrTask }}</template>
+          </el-table-column>
+          <el-table-column v-if="task" label="主题" min-width="130" align="center">
+            <template slot-scope="scope">{{ scope.row.name }}</template>
+          </el-table-column>
+          <el-table-column v-if="task" label="优先级" min-width="130" align="center">
+            <template slot-scope="scope">{{ scope.row.priorityString }}</template>
+          </el-table-column>
+          <el-table-column v-if="task" label="状态" min-width="130" align="center">
+            <template slot-scope="scope"><el-tag type="success">{{ scope.row.statusString }}</el-tag></template>
+          </el-table-column>
+          <el-table-column v-if="task" label="最近更新时间" min-width="130" align="center">
+            <template slot-scope="scope">{{ scope.row.modifyTime }}</template>
+          </el-table-column>
+        </el-table>
+        <el-pagination
+          style="margin-top:30px;"
+          align="center"
+          :current-page="curIndex"
+          :page-sizes="[20, 30, 50]"
+          :page-size="pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="total"
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+        />
+      </el-tab-pane>
+      <el-tab-pane label="工作统计" name="second">
+        <div style="font-size:25px;font-weight:bold;padding:1% 0% 1% 2%;">本周统计</div>
+        <el-row :gutter="14">
+          <el-col :span="7" :push="1"><div>跟进项目 <span style="margin: 0 10%;"> 进行中 <span style="color:blue;">{{ num }}</span></span><span style="margin: 0 10%;"> 已上线 <span style="color:blue;">{{ num }}</span></span></div></el-col>
+          <el-col :span="7" :push="8"><div>处理bug <span style="margin: 0 10%;"> 提交 <span style="color:blue;">{{ num }}</span></span> <span style="margin: 0 10%;"> 解决 <span style="color:blue;">{{ num }}</span></span></div></el-col>
+        </el-row>
+        <el-divider />
+        <div style="white-space:nowrap; text-align:center">
+          类型
+          <el-select v-model="bugOrTask.isBugOrTask" style="width: 13%;margin-right: 4%;" clearable placeholder="类型" @change="getstatus(bugOrTask.isBugOrTask)">
+            <el-option v-for="item in bugTask" :key="item.value" :label="item.name" :value="item.value" />
+          </el-select>
+          状态
+          <el-select v-model="bugOrTask.status" style="width: 13%;margin-right:4%;" clearable placeholder="状态">
+            <el-option v-for="item in bugStatusStr" :key="item.code" :label="item.name" :value="item.code" />
+          </el-select>
+          优先级
+          <el-select v-model="bugOrTask.priority" style="width: 13%;margin-right:4%;" clearable placeholder="优先级">
+            <el-option v-for="item in bugLevelStr" :key="item.code" :label="item.name" :value="item.code" />
+          </el-select>
+          <span>主题 <el-input v-model="bugOrTask.title" placeholder="主题" clearable style="width: 16.3%;" /></span>
+          <el-button type="primary" style="margin:2% 6%; " @click="clickQuery(bugOrTask)">查询</el-button>
+        </div>
+        <el-table :data="tableData" style="width: 100%" fit align="center" @row-click="clickQueryTableTask">
+          <el-table-column type="index" label="序号" min-width="120" align="center" />
+          <el-table-column label="类型" min-width="120" align="center">
+            <template slot-scope="scope">{{ scope.row.isBugOrTask }}</template>
+          </el-table-column>
+          <el-table-column label="主题" min-width="120" align="center">
+            <template slot-scope="scope">{{ scope.row.name }}</template>
+          </el-table-column>
+          <el-table-column label="优先级" sortable min-width="120" align="center">
+            <template slot-scope="scope">{{ scope.row.priorityString }}</template>
+          </el-table-column>
+          <el-table-column label="状态" min-width="120" align="center">
+            <template slot-scope="scope"><el-tag type="success">{{ scope.row.statusString }}</el-tag></template>
+          </el-table-column>
+          <el-table-column label="最近更新时间" min-width="120" align="center">
+            <template slot-scope="scope">{{ scope.row.modifyTime }}</template>
+          </el-table-column>
+        </el-table>
+        <el-pagination
+          style="margin-top:30px;"
+          align="center"
+          :current-page="curIndex"
+          :page-sizes="[20, 30, 50]"
+          :page-size="pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="total"
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+        />
+      </el-tab-pane>
+    </el-tabs>
+    <el-dialog tltle="详情" :visible.sync="dialogTableVisible" width="70%">
+      <el-table :data="gridData" @row-click="clickQueryTable">
+        <el-table-column type="index" label="序号" min-width="120" align="center" />
+        <el-table-column label="平台类型" min-width="120" align="center">
+          <template slot-scope="scope">{{ scope.row.typeString }}</template>
+        </el-table-column>
+        <el-table-column label="主题" min-width="120" align="center">
+          <template slot-scope="scope">{{ scope.row.name }}</template>
+        </el-table-column>
+        <el-table-column label="进展" min-width="120" align="center">
+          <template slot-scope="scope">{{ scope.row.stageString }}</template>
+        </el-table-column>
+        <el-table-column label="优先级" min-width="120" align="center">
+          <template slot-scope="scope">{{ scope.row.priorityString }}</template>
+        </el-table-column>
+        <el-table-column label="状态" min-width="120" align="center">
+          <template slot-scope="scope"><el-tag type="success">{{ scope.row.statusString }}</el-tag></template>
+        </el-table-column>
+        <el-table-column label="最近更新时间" min-width="120" align="center">
+          <template slot-scope="scope">{{ scope.row.modifyTime }}</template>
+        </el-table-column>
+      </el-table>
+    </el-dialog>
+  </div>
+</template>
+<script>
+// import { bugGetEnum } from '@/api/defectManage'
+import { personalworkstationQueryBackLog, personalworkstationQueryBackLogBugAndTask, personalworkstationQueryStatusAndPriority } from '@/api/workbench'
+export default {
+  name: 'Workbench',
+  data() {
+    return {
+      bugTask: [{ name: 'bug', value: 0 }, { name: 'task', value: 1 }],
+      userInformation: localStorage.getItem('username'),
+      userNames: localStorage.getItem('realname'),
+      bizJson: localStorage.getItem('key'),
+      dialogTableVisible: false,
+      activeName: 'first',
+      bugOrTask: {},
+      value: '',
+      values: [],
+      num: 10,
+      userName: '',
+      Informationen: {},
+      tableData: [],
+      bugLevelStr: [],
+      bugStatusStr: [],
+      gridData: [],
+      isBugOrTask: '',
+      pageSize: 5,
+      curIndex: 1,
+      total: 1,
+      oneData: {},
+      show1: false,
+      show2: false,
+      show3: false,
+      num1: '',
+      num2: '',
+      num3: '',
+      task: true,
+      bug: false
+    }
+  },
+  created() {
+    this.getTopShowData()
+  },
+  methods: {
+    getTopShowData() {
+      this.userName = { bizId: this.bizJson, ename: this.userInformation }
+      personalworkstationQueryBackLog(this.userName).then(res => {
+        if (res.code === 200) {
+          if (res.data.list[0]) {
+            this.oneData = res.data.list[0]
+            this.num1 = res.data.list[0].taskCount
+            this.show1 = true
+          }
+          if (res.data.list[1]) {
+            this.oneData1 = res.data.list[1]
+            this.num2 = res.data.list[1].taskCount
+            this.show2 = true
+          }
+          if (res.data.list[2]) {
+            this.oneData2 = res.data.list[2]
+            this.num3 = res.data.list[2].taskCount
+            this.show3 = true
+          }
+        }
+      })
+    },
+    clickNum(e) {
+      switch (e) {
+        case 1:
+          this.gridData = this.oneData.taskInfoDOList
+          break
+        case 2:
+          this.gridData = this.oneData1.taskInfoDOList
+          break
+        case 3:
+          this.gridData = this.oneData2.taskInfoDOList
+      }
+      this.dialogTableVisible = true
+    },
+    clickQuery(e) {
+      this.isBugOrTask = e.isBugOrTask
+      this.userName = e
+      this.userName.bizId = this.bizJson
+      this.userName.handlerPerson = this.userInformation
+      this.userName.pageSize = this.pageSize
+      this.userName.curIndex = this.curIndex
+      personalworkstationQueryBackLogBugAndTask(this.userName).then(res => {
+        // this.tableData = res.data.bugBaseInfoList
+        // this.tableData = res.data.taskInfoList
+        res.data.taskInfoList === null ? this.tableData = res.data.bugBaseInfoList.list : this.tableData = res.data.taskInfoList
+        res.data.taskInfoList === null ? this.task = false : this.task = true
+        res.data.bugBaseInfoList === null ? this.bug = false : this.bug = true
+        console.log(this.tableData)
+        for (var a of this.tableData) {
+          this.isBugOrTask === 0 ? this.isBugOrTask = 'bug' : this.isBugOrTask = 'task'
+          a.isBugOrTask = this.isBugOrTask
+        }
+        this.total = res.data.taskInfoList.length
+      })
+    },
+    getstatus(e) {
+      this.tableData = []
+      this.Informationen.isBugOrTask = e
+      this.Informationen.bizId = this.bizJson
+      this.Informationen.handlerPerson = this.userInformation
+      personalworkstationQueryStatusAndPriority(this.Informationen).then(res => {
+        var statusList = res.data.statusList
+        var arr = []
+        for (var a in statusList) {
+          arr.push({ 'code': a, 'name': statusList[a] })
+        }
+        var priorityList = res.data.priorityList
+        var brr = []
+        for (var b in priorityList) {
+          brr.push({ 'code': b, 'name': priorityList[b] })
+        }
+        this.bugLevelStr = brr
+        this.bugStatusStr = arr
+      })
+    },
+    handleSizeChange(size) {
+      this.pageSize = size
+    },
+    handleCurrentChange(curIndex) {
+      this.curIndex = curIndex
+    },
+    handleClick(tab, event) {
+      console.log(tab, event)
+    },
+    clickQueryTable(e) {
+      this.$router.push({ path: '/Platform/presentation/projectQuery', query: { id: e.projectId }})
+    },
+    clickQueryTableTask(e) {
+      console.log(e)
+      if (e.isBugOrTask === 'task') {
+        this.$router.push({ path: '/Platform/presentation/taskQuery', query: { id: e.id }})
+      }
+      if (e.isBugOrTask === 'bug') {
+        this.$router.push({ path: '/Platform/presentation/defectManageQuery', query: { id: e.id }})
+      }
+    }
+  }
+}
+</script>
+<style scoped>
+  .el-divider {
+    margin-top:1%;
+  }
+  .el-col {
+    text-align: center;
+    border: 1px solid #ccc;
+    margin: 1%;
+    padding: 1.5%;
+  }
+  .num {
+    color: blue;
+    cursor: pointer;
+  }
+</style>

+ 2 - 2
src/views/home/index.vue

@@ -72,7 +72,7 @@
         <div class="div-module-introduction">数据构造、统计、备份、分析</div>
       </el-card>
       <br>
-      <el-card style="margin-left: 0;margin-top: 36pt;" shadow="hover" @click.native="handleSelect('4')">
+      <el-card style="margin-left: 0;margin-top: 36pt;" @click.native="handleSelect('4')">
         <img class="image-module-logo" src="@/assets/home_images/功能介绍_icon_流程管控@3x.png">
         <div class="div-title">流程管控</div>
         <div class="div-module-introduction">简单、明了、一站式流程管理</div>
@@ -312,7 +312,7 @@ export default {
           this.$router.push({ name: 'jar包管理' })
           break
         case '4' :
-          this.$router.push({ name: 'projectPage' })
+          this.$router.push({ name: 'workbench' })
       }
     },
     handleScroll() {