Pārlūkot izejas kodu

项目任务页面

qinzhipeng_v 5 gadi atpakaļ
vecāks
revīzija
932e257f08

+ 9 - 1
src/api/projectPage.js

@@ -2,7 +2,7 @@ import request from '@/utils/request'
 import { mockUrl } from '@/apiConfig/api'
 // ================================== Interface ======================================
 
-// const mockUrl = 'http://10.179.24.176:8980' // 线下
+// const mockUrl = 'http://172.23.161.241:8980' // 线下
 // const mockUrl = 'http://10.179.24.123:8980' // 线上
 
 export function projectInit(data) {
@@ -92,3 +92,11 @@ export function launchTestUpdate(data) {
     data
   })
 }
+
+// 业务线  新加
+export function projectGetTypeMap() {
+  return request({
+    url: mockUrl + '/project/getTypeMap',
+    method: 'get'
+  })
+}

+ 14 - 0
src/api/qualityMeasurement.js

@@ -0,0 +1,14 @@
+import request from '@/utils/request'
+import { mockUrl } from '@/apiConfig/api'
+// ================================== Interface ======================================
+
+// const mockUrl = 'http://10.179.24.176:8980' // 线下
+// const mockUrl = 'http://10.179.24.123:8980' // 线上
+
+// 业务线nav
+export function apiBusinessLineAll() {
+  return request({
+    url: mockUrl + '/api/business-line/all',
+    method: 'get'
+  })
+}

+ 8 - 0
src/api/workbench.js

@@ -26,3 +26,11 @@ export function personalworkstationQueryStatusAndPriority(data) {
     data
   })
 }
+
+export function personalworkstationQueryPeriodBugAndTask(data) {
+  return request({
+    url: mockUrl + '/personalworkstation/queryPeriodBugAndTask',
+    method: 'post',
+    data
+  })
+}

+ 2 - 2
src/apiConfig/api.js

@@ -1,3 +1,3 @@
 /*eslint-disable*/   //规避eslint的检查,如没有eslint可不写
-// export const mockUrl = 'http://10.179.24.176:8980' // 线下
-export const mockUrl = 'http://10.179.24.123:8980' // 线上
+export const mockUrl = 'http://10.179.24.176:8980' // 线下
+// export const mockUrl = 'http://10.179.24.123:8980' // 线上

+ 2 - 2
src/apiConfig/mock.js

@@ -1,3 +1,3 @@
 /*eslint-disable*/   //规避eslint的检查,如没有eslint可不写
-// export const mockUrl = 'http://10.179.88.110:8089' // 线下
-export const mockUrl = 'http://mock.Intra.xiaojukeji.com' // 线上
+export const mockUrl = 'http://10.179.88.110:8089' // 线下
+// export const mockUrl = 'http://mock.Intra.xiaojukeji.com' // 线上

BIN
src/assets/1.jpg


BIN
src/assets/1566993017042.jpg


+ 21 - 2
src/router/index.js

@@ -81,7 +81,7 @@ export const constantRoutes = [
       {
         path: 'workbench',
         name: 'workbench',
-        hidden: true,
+        // hidden: true,
         component: () => import('@/views/Platform/workbench'),
         meta: { title: '我的工作台' }
       },
@@ -317,6 +317,7 @@ export const constantRoutes = [
       }
     ]
   },
+
   {
     path: '/data',
     component: Layout,
@@ -339,8 +340,26 @@ export const constantRoutes = [
       }
     ]
   },
-  { path: '*', redirect: '/404', hidden: true }
 
+  { path: '*', redirect: '/404', hidden: true },
+
+  {
+    path: '/quality',
+    component: Layout,
+    redirect: '/quality/qualityMeasurement.vue',
+    name: '质量度量',
+    // hidden: true,
+    meta: { title: '质量度量', icon: 'rule' },
+    children: [
+      {
+        path: 'qualityMeasurement',
+        name: '质量度量',
+        // hidden: true,
+        component: () => import('@/views/quality/qualityMeasurement.vue'),
+        meta: { title: '质量度量', icon: 'rule' }
+      }
+    ]
+  }
 ]
 
 const createRouter = () => new Router({

+ 52 - 51
src/views/Platform/defectManagement.vue

@@ -15,52 +15,40 @@
         <el-date-picker v-model="queryCode.gmtCreateEnd" style="width:12%;margin-right:5px;" type="datetime" placeholder="截止时间" />
         <el-input v-model="queryCode.bugName" clearable filterable placeholder="主题" style="width:12%;margin-right:5px;" />
         <el-button type="primary" @click="dataQuery(queryCode)">查询</el-button>
-        <el-button type="primary" @click="createdCode()">新建bug</el-button>
+        <el-button type="primary" style="margin: 1% 5px;" @click="createdCode()">新建bug</el-button>
       </el-form>
     </div>
 
-    <template>
-      <el-table :data="tableData" fit style="width: 100%">
-        <el-table-column label="ID" width="120" align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.id }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="主题" width="230" align="center">
-          <template slot-scope="scope">
-            <a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView(scope.row.id)">{{ scope.row.bugName }}</a>
-          </template>
-        </el-table-column>
-        <el-table-column label="处理人" width="150" align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.currentHandler }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="创建日期" width="250" align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.gmtCreate }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="级别" width="150" align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.priority }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="状态" width="150" align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.status }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column fixed="right" label="操作" width="260" align="center">
-          <template slot-scope="scope">
-            <el-button size="mini" type="primary" @click="queryPresentation(scope.row)">更新</el-button>
-            <el-button size="mini" type="primary" @click="delePresentation(scope.row.id)">删除</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-    </template>
+    <el-table :data="tableData" fit style="width: 950%">
+      <el-table-column label="ID" width="120" align="center">
+        <template slot-scope="scope"><span>{{ scope.row.id }}</span></template>
+      </el-table-column>
+      <el-table-column label="主题" width="230" align="center">
+        <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView(scope.row.id)">{{ scope.row.bugName }}</a></template>
+      </el-table-column>
+      <el-table-column label="处理人" width="150" align="center">
+        <template slot-scope="scope"><span>{{ scope.row.currentHandler }}</span></template>
+      </el-table-column>
+      <el-table-column label="创建日期" width="250" align="center">
+        <template slot-scope="scope">
+          <span>{{ scope.row.gmtCreate }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="级别" width="150" align="center">
+        <template slot-scope="scope"><span>{{ scope.row.priority }}</span></template>
+      </el-table-column>
+      <el-table-column label="状态" width="150" align="center">
+        <template slot-scope="scope"><span>{{ scope.row.status }}</span></template>
+      </el-table-column>
+      <el-table-column fixed="right" label="操作" width="150" align="center">
+        <template slot-scope="scope">
+          <el-button size="mini" type="primary" @click="queryPresentation(scope.row)">更新</el-button>
+          <el-button size="mini" type="primary" @click="delePresentation(scope.row.id)">删除</el-button>
+        </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-pagination style="margin-top:30px;" align="center" :current-page="curIndex" :page-sizes="[5, 10, 20]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
 
     <el-dialog :title="titName" :visible.sync="dialogFormVisible" width="60%">
       <el-form ref="form" :model="form" :rules="serviceDataRules">
@@ -140,13 +128,20 @@
             </el-form-item>
           </div>
         </div>
-        <el-form-item v-show="true" label="附件" :label-width="formLabelWidth">
-          <el-upload class="upload-demo" list-type="picture-card" action="https://jsonplaceholder.typicode.com/posts/">
+        <el-form-item label="附件" :label-width="formLabelWidth">
+          <el-upload
+            class="upload-demo"
+            multiple
+            capture
+            accept="image/jpeg, image/png, image/gif, audio/mp4, video/mp4, audio/mpeg, application/vnd.ms-excel"
+            :on-change="handleChange"
+            :file-list="fileList"
+            action="http://star.xiaojukeji.com/upload/img.node"
+          >
             <!-- action="http://page-daily.kuaidadi.com/upload/img.node" 线下 -->
             <!-- action="http://star.xiaojukeji.com/upload/img.node" 线上 -->
             <!-- action="https://jsonplaceholder.typicode.com/posts/" 原始地址-->
-            <i class="el-icon-plus" />
-            <!-- <el-button size="small" type="primary">点击上传</el-button> -->
+            <el-button size="small" type="primary">点击上传</el-button>
           </el-upload>
         </el-form-item>
 
@@ -174,7 +169,7 @@
       </div>
     </el-dialog>
 
-    <el-dialog :visible.sync="dialogFormQuery" width="70%">
+    <el-dialog :visible.sync="dialogFormQuery" :fullscreen="true">
       <el-form :model="form" size="mini">
         <el-form-item :label-width="formLabelWidth" style="margin-bottom:-10px;"><span style="font-weight:bold;font-size:20px;margin-left:-60px;">主题 : </span>{{ form.bugName }}</el-form-item><hr>
         <div style="display:flex;">
@@ -222,8 +217,7 @@
 
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button @click="dialogFormQuery = false">取 消</el-button>
-        <el-button type="primary" @click="dialogFormQuery = false">确 定</el-button>
+        <el-button type="primary" @click="dialogFormQuery = false">关 闭</el-button>
       </div>
     </el-dialog>
   </div>
@@ -264,7 +258,7 @@ export default {
       userInformation: localStorage.getItem('username'),
       userNames: localStorage.getItem('realname'),
       bizJson: localStorage.getItem('key'),
-      pageSize: 20,
+      pageSize: 5,
       curIndex: 0,
       total: 0,
       show2: '',
@@ -285,7 +279,8 @@ export default {
       objData: '',
       userData: '',
       titName: '',
-      taskIdStr: ''
+      taskIdStr: '',
+      fileList: []
     }
   },
   created() {
@@ -438,6 +433,12 @@ export default {
         }
       })
     },
+
+    handleChange(file, fileList) {
+      this.fileList = fileList.slice(-3)
+      console.log(this.fileList)
+    },
+
     successFun() {
       this.$notify({ title: 'Success', message: 'Created Successfully', type: 'success', duration: 2000 })
     },

+ 6 - 11
src/views/Platform/presentation/Acceptance.vue

@@ -245,14 +245,18 @@ export default {
         this.showButton = false
         this.ClientData = this.$route.query.data
         if (this.ClientData.status === 1) {
+          this.status = '1'
           this.ClientData.status = '1'
         } else {
+          this.status = '2'
           this.ClientData.status = '2'
         }
         if (this.ClientData.taskLateStatus === 1) {
+          this.taskLateStatus = '1'
           this.ClientData.taskLateStatus = '1'
           this.showDelay = true
         } else {
+          this.taskLateStatus = '2'
           this.ClientData.taskLateStatus = '2'
           this.showDelay = false
         }
@@ -320,17 +324,8 @@ export default {
           typeof (this.editorSix) === 'string' ? this.ClientData.pftInfo = this.editorSix : ''
           typeof (this.editorEight) === 'string' ? this.ClientData.safeResultInfo = this.editorEight : ''
           typeof (this.editorNine) === 'string' ? this.ClientData.moniterResultInfo = this.editorNine : ''
-          // this.ClientData.projectBackground = this.editorElem
-          // this.ClientData.moduleInfo = this.editorElems
-          // this.ClientData.functionInfo = this.editorFrom
-          // this.ClientData.onlineRisk = this.editorF
-          // this.ClientData.rqtInfo = this.editorEle
-          // this.ClientData.bugTarget = this.editorData
-          // this.ClientData.fctInfo = this.editorEl
-          // this.ClientData.pftInfo = this.editorSix
-          // this.ClientData.safeResultInfo = this.editorEight
-          // this.ClientData.moniterResultInfo = this.editorNine
-          this.ClientData.taskId = this.$route.query.id
+          this.$route.query.id ? this.ClientData.taskId = this.$route.query.id : ''
+          this.$route.query.projectId ? this.ClientData.projectId = this.$route.query.projectId : ''
           this.ClientData.bizId = this.bizIdData
           this.ClientData.status = this.status
           this.ClientData.taskLateStatus = this.taskLateStatus

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

@@ -184,14 +184,18 @@ export default {
         this.pftResult = this.ClientData.pftResult
         this.sctResult = this.ClientData.sctResult
         if (this.ClientData.status === 1) {
+          this.status = '1'
           this.ClientData.status = '1'
         } else {
+          this.status = '2'
           this.ClientData.status = '2'
         }
         if (this.ClientData.taskLateStatus === 1) {
+          this.taskLateStatus = '1'
           this.ClientData.taskLateStatus = '1'
           this.showDelay = true
         } else {
+          this.taskLateStatus = '2'
           this.ClientData.taskLateStatus = '2'
           this.showDelay = false
         }

+ 14 - 6
src/views/Platform/presentation/DailyNewsAdded.vue

@@ -13,15 +13,15 @@
         </el-form-item>
       </el-col>
     </el-row>
-    <el-radio-group v-show="false" v-model="showbut">
+    <el-radio-group v-model="showbut">
       <el-radio label="1" @change="deleteProject(1)">开启项目节点</el-radio>
       <el-radio label="2" @change="deleteProject(2)">关闭项目节点</el-radio>
     </el-radio-group>
-    <div v-show="showbut1" style="border:1px solid #ccc;width:79vw;margin-top:15px;">
+    <div style="border:1px solid #ccc;width:79vw;margin-top:15px;">
       <el-button class="btn" icon="el-icon-plus" @click="createDateNode">新增时间节点</el-button>
       <el-button class="btn" icon="el-icon-delete">删除节点</el-button>
     </div>
-    <div v-show="showbut1" style="width:79vw;border:1px solid #ccc;padding:100px 0;" class="time_line_box">
+    <div style="width:79vw;border:1px solid #ccc;padding:100px 0;" class="time_line_box">
       <div class="time_line" style="width:100%;">
         <ol>
           <li style="list-style-type:none;">
@@ -180,6 +180,11 @@ export default {
         this.fromCreateData.taskId = this.$route.query.id
         this.showButton1 = false
         this.showButton = true
+      } else if (this.$route.query.projectId) {
+        this.fromCreateData = {}
+        this.fromCreateData.projectId = this.$route.query.projectId
+        this.showButton1 = false
+        this.showButton = true
       }
       this.pro = { taskId: this.fromCreateData.taskId, gntCreateEnd: this.gntCreateEnd }
       bugDailyList(this.pro).then(res => {
@@ -231,9 +236,12 @@ export default {
       this.$refs['fromCreateData'].validate((valid) => {
         if (valid) {
           this.fromCreateData = ele
-          this.fromCreateData.testExplain = this.TestProgress
-          this.fromCreateData.bugExplain = this.bugExplain
-          this.fromCreateData.problemRisks = this.projectProgress
+          typeof (this.TestProgress) === 'string' ? this.fromCreateData.testExplain = this.TestProgress : ''
+          // this.fromCreateData.testExplain = this.TestProgress
+          typeof (this.bugExplain) === 'string' ? this.fromCreateData.bugExplain = this.bugExplain : ''
+          // this.fromCreateData.bugExplain = this.bugExplain
+          typeof (this.projectProgress) === 'string' ? this.fromCreateData.problemRisks = this.projectProgress : ''
+          // 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 }

+ 0 - 9
src/views/Platform/presentation/presentationReport.vue

@@ -205,7 +205,6 @@ export default {
         this.showButton1 = true
         this.showButton = false
         this.fromCreateData = this.$route.query.data
-        console.log(this.$route.query.data.lateStatus)
         if (this.fromCreateData.lateReason !== null) {
           this.fromCreateData.lateStatus = '1'
           this.showDelay = true
@@ -280,14 +279,6 @@ export default {
       e === '1' ? this.showDelay = true : this.showDelay = false
     },
     showStatusData(e) {
-      // console.log(e)
-      // if (e === 1) {
-      //   this.fromCreateData.getInfo = '1'
-      //   this.showData = true
-      // } else {
-      //   this.fromCreateData.getInfo = '2'
-      //   this.showData = false
-      // }
       e === '1' ? this.showData = true : this.showData = false
     },
     clickPreview(ele) {

+ 175 - 651
src/views/Platform/projectPage.vue

@@ -5,7 +5,7 @@
         <span style="padding: 0 5px 0 0;">创建时间</span>
         <el-date-picker v-model="queryLists.dateQuery" align="left" size="medium" type="datetime" style="width: 180px;" placeholder="选择日期" :picker-options="pickerOptions" />
         <span style="padding: 0 5px 0 30px;">项目名称</span>
-        <el-input v-model="queryLists.name" placeholder="项目名称" size="medium" clearable style="width: 180px;" class="filter-item" @keyup.enter.native="handleFilter" />
+        <el-input v-model="queryLists.name" placeholder="项目名称" size="medium" clearable style="width: 180px;" class="filter-item" />
         <span style="padding: 0 5px 0 30px;">状态</span>
         <el-select v-model="queryLists.statusString" size="medium" style="width: 180px; margin-right:20px;" clearable placeholder="状态">
           <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
@@ -16,7 +16,6 @@
     </el-header>
 
     <el-table :data="list" style="width: 100%;margin-bottom: 20px;margin-top: 20px;" row-key="id" lazy>
-      <!-- :tree-props="{children: 'taskInfoDOList', hasChildren: 'hasChildren'}" -->
       <el-table-column label="序号" prop="id" sortable align="center" min-width="80">
         <template slot-scope="scope">
           <span>{{ scope.row.id }}</span>
@@ -24,12 +23,12 @@
       </el-table-column>
       <el-table-column label="项目名称" min-width="200px" align="center">
         <template v-slot="scope">
-          <span class="projectStyle" @click="projectShowData(scope.row.id, scope.row);dialogTableVisible = true;">{{ scope.row.name }}</span>
+          <el-tooltip content="点击进入详情页面" placement="top"><el-tag class="tag" @click="projectShowData(scope.row.id, scope.row)">{{ scope.row.name }}</el-tag></el-tooltip>
         </template>
       </el-table-column>
       <el-table-column label="状态" min-width="80px" align="center">
         <template slot-scope="scope">
-          <span>{{ scope.row.statusString }}</span>
+          <el-tag type="success"><span>{{ scope.row.statusString }}</span></el-tag>
         </template>
       </el-table-column>
       <el-table-column label="创建时间" min-width="200px" align="center">
@@ -49,7 +48,7 @@
       </el-table-column>
       <el-table-column label="操作" align="center" min-width="250px" class-name="small-padding fixed-width" fixed="right">
         <template slot-scope="{row}">
-          <el-button type="primary" size="mini" @click="dialogFormVisible = true, changeData(row)">编辑</el-button>
+          <el-button type="primary" size="mini" @click="dialogFormVisible1 = true, changeData(row)">编辑</el-button>
           <el-button type="primary" size="mini" @click="deleteCodeData(row.id)">删除</el-button>
         </template>
       </el-table-column>
@@ -64,7 +63,7 @@
       @current-change="handleCurrentChange"
     />
 
-    <el-dialog :title="titleName" width="80%" :visible.sync="dialogFormVisible">
+    <el-dialog :title="titleName" width="80%" :visible.sync="dialogFormVisible" @close="closeDialog">
       <el-form ref="serviceDataForms" :model="form" :rules="serviceDataRules" style="width:93%;">
         <el-form-item label="项目名称" prop="name" :label-width="formLabelWidths">
           <el-input v-model="form.name" autocomplete="off" placeholder="项目名称" />
@@ -81,6 +80,11 @@
                 <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.name" />
               </el-select>
             </el-form-item>
+            <el-form-item label="平台类型" prop="platForm" :label-width="formLabelWidths">
+              <el-select v-model="form.platForm" placeholder="平台类型">
+                <el-option v-for="item in platFormString" :key="item.code" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
           </div>
           <div style="flex:1;">
             <el-form-item label="优先级" prop="priorityString" :label-width="formLabelWidths">
@@ -130,7 +134,11 @@
                 </el-form-item>
               </div>
             </div>
-            <div style="display: flex;">
+            <el-form-item style="margin-left:110px;width:84%;">
+              <div id="testInfo" />
+              <!-- <div id="testInfo1" class="text" /> -->
+            </el-form-item>
+            <!-- <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="选择日期" />
@@ -147,11 +155,11 @@
                   <el-date-picker v-model="form.clientDevTime" type="datetime" placeholder="选择日期" />
                 </el-form-item>
               </div>
-            </div>
-            <el-form-item label="开发联调时间" :label-width="formLabelWidths">
+            </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;">
+            </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="选择日期" />
@@ -180,7 +188,7 @@
                   <el-date-picker v-model="form.pmTestTime" type="datetime" placeholder="选择日期" />
                 </el-form-item>
               </div>
-            </div>
+            </div> -->
           </div>
         </transition>
         <div style="display: flex; padding-top:30px; width: 100%;">
@@ -198,450 +206,117 @@
       </div>
     </el-dialog>
 
-    <el-dialog :title="codeTitle" width="80%" :visible.sync="dialogFormTaskVisible">
-      <el-form ref="serviceTaskDataForms" :model="formTask" :rules="serviceDataRules">
-        <el-form-item label="任务名称" prop="name" label-width="100px" style="width:93%;">
-          <el-input v-model="formTask.name" placeholder="任务名称" autocomplete="off" />
+    <el-dialog :title="titleName" width="80%" :visible.sync="dialogFormVisible1" @close="closeDialog">
+      <el-form ref="serviceDataForms" :model="form" :rules="serviceDataRules" style="width:93%;">
+        <el-form-item label="项目名称" prop="name" :label-width="formLabelWidths">
+          <el-input v-model="form.name" autocomplete="off" placeholder="项目名称" />
         </el-form-item>
         <div style="display: flex;">
           <div style="flex:1;">
-            <el-form-item label="业务线" prop="bizIdString" label-width="100px">
-              <el-select v-model="formTask.bizIdString" placeholder="业务线">
-                <el-option v-for="item in bizOptions" :key="item.value" :label="item.name" :value="item.value" />
+            <el-form-item label="业务线" prop="bizIdString" :label-width="formLabelWidths">
+              <el-select v-model="form.bizIdString" placeholder="业务线">
+                <el-option v-for="item in bizOptions" :key="item.value" :label="item.name" :value="item.name" />
               </el-select>
             </el-form-item>
-            <el-form-item label="优先级" prop="priorityString" label-width="100px">
-              <el-select v-model="formTask.priorityString" placeholder="优先级">
-                <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.value" />
+            <el-form-item label="状态" prop="statusString" :label-width="formLabelWidths">
+              <el-select v-model="form.statusString" placeholder="状态">
+                <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.name" />
               </el-select>
             </el-form-item>
-            <el-form-item label="进展" prop="stageString" label-width="100px">
-              <el-select v-model="formTask.stageString" placeholder="进展">
-                <el-option v-for="item in stageStrings" :key="item.value" :label="item.name" :value="item.value" />
+            <el-form-item label="平台类型" prop="platForm" :label-width="formLabelWidths">
+              <el-select v-model="form.platForm" placeholder="平台类型">
+                <el-option v-for="item in platFormString" :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="formTask.type" placeholder="平台类型" @change="clickType(formTask.type)">
-                <el-option v-for="item in typeString" :key="item.value" :label="item.name" :value="item.value" />
-              </el-select>
-            </el-form-item>
-            <el-form-item label="状态" prop="statusString" label-width="100px">
-              <el-select v-model="formTask.statusString" placeholder="状态">
-                <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+            <el-form-item label="优先级" prop="priorityString" :label-width="formLabelWidths">
+              <el-select v-model="form.priorityString" placeholder="优先级">
+                <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.name" />
               </el-select>
             </el-form-item>
-            <el-form-item label="任务类型" prop="taskType" label-width="100px">
-              <el-select v-model="formTask.taskType" placeholder="任务类型">
-                <el-option v-for="item in taskTypeStr" :key="item.code" :label="item.name" :value="item.name" />
+            <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="业务模块" prop="businessType" label-width="100px">
-              <el-select v-model="formTask.businessType" placeholder="业务模块">
-                <el-option v-for="item in businessTypeStr" :key="item.code" :label="item.name" :value="item.code" />
-              </el-select>
+            <el-form-item label="PM" prop="pm" :label-width="formLabelWidths">
+              <el-input v-model="form.pm" autocomplete="off" />
             </el-form-item>
-            <el-form-item label="是否免测" prop="notest" label-width="100px">
-              <el-select v-model="formTask.notest" placeholder="是否免测">
-                <el-option v-for="item in noTestString" :key="item.value" :label="item.name" :value="item.value" />
-              </el-select>
+            <el-form-item label="版本" :label-width="formLabelWidths">
+              <el-input v-model="form.version" autocomplete="off" />
+            </el-form-item>
+            <el-form-item v-show="false" label="创建人" :label-width="formLabelWidths">
+              <el-input v-model="form.creater" autocomplete="off" />
             </el-form-item>
           </div>
         </div>
-        <el-form-item label="需求文档" style="width:72vw;" label-width="100px">
-          <el-input v-model="formTask.mrdUrl" autocomplete="off" />
-        </el-form-item>
-        <el-form-item label="技术文档" style="width:72vw;" label-width="100px">
-          <el-input v-model="formTask.devUrl" autocomplete="off" />
+        <el-form-item label="需求文档" :label-width="formLabelWidths">
+          <el-input v-model="form.mrdUrl" 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="formTask.tag" style="width:220px;" autocomplete="off" />
-              </el-form-item>
-              <el-form-item label="RD" :label-width="formLabelWidth">
-                <el-input v-model="formTask.rd" style="width:220px;" autocomplete="off" />
-              </el-form-item>
-              <el-form-item label="QA" :label-width="formLabelWidth">
-                <el-input v-model="formTask.qa" style="width:220px;" autocomplete="off" />
-              </el-form-item>
-              <el-form-item label="需求评审时间" :label-width="formLabelWidth">
-                <el-date-picker v-model="formTask.mrdTime" type="datetime" placeholder="选择日期" />
-              </el-form-item>
-              <el-form-item label="计划开始开发时间" :label-width="formLabelWidth">
-                <el-date-picker v-model="formTask.startDevPlanTime" type="datetime" placeholder="选择日期" />
-              </el-form-item>
-              <el-form-item label="计划测试完成时间" :label-width="formLabelWidth">
-                <el-date-picker v-model="formTask.testFinishPlanTime" type="datetime" placeholder="选择日期" />
-              </el-form-item>
-              <el-form-item label="计划提测时间" :label-width="formLabelWidth">
-                <el-date-picker v-model="formTask.launchTestPlanTime" type="datetime" placeholder="选择日期" />
-              </el-form-item>
-              <el-form-item label="计划上线时间" :label-width="formLabelWidth">
-                <el-date-picker v-model="formTask.onlinePlanTime" type="datetime" placeholder="选择日期" />
-              </el-form-item>
-            </div>
-            <div style="flex:1;">
-              <el-form-item label="分组" :label-width="formLabelWidth">
-                <el-input v-model="formTask.group" style="width:220px;" autocomplete="off" />
-              </el-form-item>
-              <el-form-item label="PM" :label-width="formLabelWidth">
-                <el-input v-model="formTask.pm" style="width:220px;" autocomplete="off" />
-              </el-form-item>
-              <el-form-item label="关注人" prop="focusPenson" :label-width="formLabelWidth">
-                <el-input v-model="formTask.focusPenson" style="width:220px;" autocomplete="off" />
-              </el-form-item>
-              <!-- <el-form-item label="创建人" :label-width="formLabelWidth">
-                <el-input v-model="formTask.creater" autocomplete="off" />
-              </el-form-item> -->
-              <el-form-item label="实际开始开发时间" :label-width="formLabelWidth">
-                <el-date-picker v-model="formTask.startDevRealTime" type="datetime" placeholder="选择日期" />
-              </el-form-item>
-              <el-form-item label="实际测试完成时间" :label-width="formLabelWidth">
-                <el-date-picker v-model="formTask.testFinishRealTime" type="datetime" placeholder="选择日期" />
-              </el-form-item>
-              <el-form-item label="冒烟测试完成时间" :label-width="formLabelWidth">
-                <el-date-picker v-model="formTask.smokeTestFinishTime" type="datetime" placeholder="选择日期" />
-              </el-form-item>
-              <el-form-item label="实际提测时间" :label-width="formLabelWidth">
-                <el-date-picker v-model="formTask.launchTestRealTime" type="datetime" placeholder="选择日期" />
-              </el-form-item>
-              <el-form-item label="实际上线时间" :label-width="formLabelWidth">
-                <el-date-picker v-model="formTask.onlineRealTime" type="datetime" placeholder="选择日期" />
-              </el-form-item>
+          <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;" autocomplete="off" />
+                </el-form-item>
+                <el-form-item label="UI " :label-width="formLabelWidths">
+                  <el-input v-model="form.ui" style="width:220px;" autocomplete="off" />
+                </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;" autocomplete="off" />
+                </el-form-item>
+                <el-form-item label="QA " :label-width="formLabelWidths">
+                  <el-input v-model="form.qa" style="width:220px;" autocomplete="off" />
+                </el-form-item>
+              </div>
             </div>
+            <el-form-item style="margin-left:110px;width:84%;">
+              <div id="timeInfo" />
+              <!-- <div id="timeInfo1" class="text" /> -->
+            </el-form-item>
           </div>
         </transition>
-        <dir style="display:flex; width:93%;">
-          <el-form-item label="备注" style="flex:1;" label-width="60px">
-            <el-input v-model="formTask.remarks" type="textarea" :rows="4" placeholder="备注" />
+        <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="60px">
-            <el-input v-model="formTask.description" type="textarea" :rows="4" placeholder="请输入内容" />
+          <el-form-item label="描述" style="flex:1;" label-width="130px">
+            <el-input v-model="form.description" type="textarea" :rows="4" placeholder="请输入内容" />
           </el-form-item>
-        </dir>
+        </div>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button @click="dialogFormTaskVisible = false">取 消</el-button>
-        <el-button v-if="showYes" type="primary" @click="dialogFormTaskVisible = true, codeTitle === '任务新增'?createaddTaskData(formTask):updateaddTaskData(formTask)">确 定</el-button>
+        <el-button @click="dialogFormVisible1 = false">取 消</el-button>
+        <el-button type="primary" @click="dialogFormVisible1 = true, titleName === '新增'?createCode(form):updateData(form)">确 定</el-button>
       </div>
     </el-dialog>
-
-    <!-- 二页面 -->
-    <el-dialog width="80%" :visible.sync="dialogTableVisible">
-      <div style="font-size:18px;color:#000000;">项目管理</div><hr>
-      <div>
-        <div style=" diaplay: flex; padding-top:30px;">
-          <span class="tableproject" style="flex:1;">状态</span>
-          <el-select v-model="projectData.statusString" style="width: 100px;" size="mini" placeholder="状态" @change="updateData(projectData)">
-            <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.name" />
-          </el-select>
-          <span class="tableproject" style="flex:1;">优先级</span>
-          <el-select v-model="projectData.priorityString" style="width: 100px;" size="mini" placeholder="优先级" @change="updateData(projectData)">
-            <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.name" />
-          </el-select>
-          <span class="tableproject" style="flex:1;">进展</span>
-          <el-select v-model="projectData.stageString" placeholder="进展" style="width: 100px;" size="mini" @change="updateData(projectData)">
-            <el-option v-for="item in stageStrings" :key="item.value" :label="item.name" :value="item.name" />
-          </el-select>
-          <el-button type="primary" size="small" style="float:right;margin-right:7%" @click="dialogFormVisible = true, changeData">编辑</el-button>
-        </div><hr>
-        <el-form style=" padding-left: 100px;" label="right" size="mini" label-width="110px">
-          <el-form-item label="项目名称 :"><span>{{ projectData.name }}</span></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="PM :"><span>{{ projectData.pm }}</span></el-form-item>
-            <el-form-item label="版本 :"><span>{{ projectData.version }}</span></el-form-item>
-            <el-form-item label="开始时间 :"><span>{{ projectData.createTime }}</span></el-form-item>
-          </el-form>
-          <el-form style="flex:1; padding-left: 100px;" label="right" size="mini" label-width="110px">
-            <el-form-item label="QA :"><span>{{ projectData.qa }}</span></el-form-item>
-            <el-form-item label="RD :"><span>{{ projectData.rd }}</span></el-form-item>
-            <el-form-item label="计划上线时间 :"><span>{{ projectData.allOnlineTime }}</span></el-form-item>
-          </el-form>
-        </div>
-        <el-form style=" padding-left: 100px;" label="right" size="mini" label-width="110px">
-          <el-form-item label="需求文档 :"><span>{{ projectData.mrdUrl }}</span></el-form-item>
-        </el-form>
-
-        <el-form style=" padding-left: 100px;" label="right" size="mini" label-width="110px">
-          <el-form-item label="描述 :"><span>{{ projectData.description }}</span></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 :"><span>{{ projectData.ue }}</span></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 :"><span>{{ projectData.ui }}</span></el-form-item>
-            </el-form>
-          </div>
-          <div style="display: flex;">
-            <el-form style="flex:1; margin-left: 50px;" label="right" size="mini" label-width="150px">
-              <el-form-item label="需求评审时间 :"><span>{{ projectData.mrdTime }}</span></el-form-item>
-              <el-form-item label="服务端开始开发时间 :"><span>{{ projectData.serviceDevTime }}</span></el-form-item>
-            </el-form>
-            <el-form style="flex:1; margin-right: -50px;" label="right" size="mini" label-width="150px">
-              <el-form-item label="全量时间 :"><span>{{ projectData.allOnlineTime }}</span></el-form-item>
-              <el-form-item label="客户端提测时间 :"><span>{{ projectData.clientLaunchTestTime }}</span></el-form-item>
-            </el-form>
-          </div>
-          <el-form style="margin-left: 95px;"><el-form-item label="开发联调时间 :"><span>{{ projectData.joinTestTime }}</span></el-form-item></el-form>
-          <div style="display: flex;">
-            <el-form style="flex:1; margin-left: 50px;" label="right" size="mini" label-width="150px">
-              <el-form-item label="服务端测试完成时间 :"><span>{{ projectData.serviceFinishTestTime }}</span></el-form-item>
-              <el-form-item label="服务端提测时间 :"><span>{{ projectData.serviceLaunchTestTime }}</span></el-form-item>
-              <el-form-item label="服务端上线时间 :"><span>{{ projectData.serverOnLine }}</span></el-form-item>
-              <el-form-item label="产品验收时间 :"><span>{{ projectData.pmTestTime }}</span></el-form-item>
-            </el-form>
-            <el-form style="flex:1; margin-left: 50px;" label="right" size="mini" label-width="150px">
-              <el-form-item label="客户端开始开发时间 :"><span>{{ projectData.clientDevTime }}</span></el-form-item>
-              <el-form-item label="客户端测试完成时间 :"><span>{{ projectData.clientFinishTestTime }}</span></el-form-item>
-              <el-form-item label="客户端上线时间 :"><span>{{ projectData.clientOnlineTime }}</span></el-form-item>
-              <el-form-item label="灰度时间 :"><span>{{ projectData.pmTestTime }}</span></el-form-item>
-            </el-form>
-          </div>
-        </div>
-      </transition>
-
-      <div style="margin-top:20px;">
-        <div style="font-size:18px;color:#000000;">任务信息
-          <el-button type="primary" size="small" style="float:right;margin:-8px 7% 0 0;" @click=" dialogFormTaskVisible = true, changeaddTaskData()">新增</el-button>
-        </div><hr>
-        <el-table
-          :data="listData"
-          row-key="id"
-          style="width: 100%"
-        >
-          <el-table-column label="序号" prop="id" sortable align="center" min-width="60">
-            <template slot-scope="scope">
-              <span>{{ scope.row.id }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column label="任务名称" prop="name" align="center" min-width="100">
-            <template slot-scope="scope">
-              <span class="projectStyle" @click="taskInformation = true, getClickId(scope.row, scope.row.id)">{{ scope.row.name }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column label="状态" prop="statusString" align="center" min-width="60">
-            <template slot-scope="scope">
-              <span>{{ scope.row.statusString }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column label="创建时间" prop="createTime" align="center" min-width="150">
-            <template slot-scope="scope">
-              <span>{{ scope.row.createTime }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column label="计划上线时间" prop="modifyTime" align="center" min-width="150">
-            <template slot-scope="scope">
-              <span>{{ scope.row.onlinePlanTime }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column label="操作" align="center" min-width="150">
-            <template slot-scope="{row}">
-              <el-button type="primary" size="small" @click=" dialogFormTaskVisible = true, seeTaskData(row)">编辑</el-button>
-              <el-button type="primary" size="small" @click="deleteTaskDataOut1(row.id)">删除</el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </el-dialog>
-
-    <!-- 三页面 -->
-    <el-dialog width="80%" :visible.sync="taskInformation">
-      <div style="font-size:18px;color:#000000;">任务信息</div><hr>
-      <div width="70%" style="padding-top:30px;">
-        <div style="padding-bottom:5px; diaplay: flex;">
-          <span class="tableproject" style="flex:1;">状态</span>
-          <el-select v-model="taskDatas.statusString" style="width: 100px;" size="mini" placeholder="状态" @change="updateaddTaskData(taskDatas)">
-            <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.name" />
-          </el-select>
-          <span class="tableproject" style="flex:1;">优先级</span>
-          <el-select v-model="taskDatas.priorityString" style="width: 100px;" size="mini" placeholder="优先级" @change="updateaddTaskData(taskDatas)">
-            <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.name" />
-          </el-select>
-          <el-button type="primary" size="small" @click="createReport(1, taskDatas)">新建提测报告</el-button>
-          <el-button type="primary" size="small" @click="createReport(2, taskDatas)">新建日报报告</el-button>
-          <el-button type="primary" size="small" @click="createReport(3, taskDatas)">新建准出报告</el-button>
-          <el-button type="primary" size="small" @click="createReport(4, taskDatas)">新建bug</el-button>
-          <el-button type="primary" size="small" style="float:right;margin-right:7%" @click=" dialogFormTaskVisible = true, queryTaskData(taskDatas)">编辑</el-button>
-        </div>
-        <hr>
-        <div style="display:flex;">
-          <el-form style="flex:1; padding-left: 130px;" size="mini" label="right" label-width="110px">
-            <el-form-item label="任务名称 :"><span>{{ taskDatas.name }}</span></el-form-item>
-            <el-form-item label="PM :"><span>{{ taskDatas.pm }}</span></el-form-item>
-            <el-form-item label="RD :"><span>{{ taskDatas.rd }}</span></el-form-item>
-            <el-form-item label="QA :"><span>{{ taskDatas.qa }}</span></el-form-item>
-            <el-form-item label="打回次数 :"><span>{{ taskDatas.reopen }}</span></el-form-item>
-          </el-form>
-          <el-form style="flex:1;" label="right" size="mini" label-width="110px">
-            <el-form-item label="业务线 :"><span>{{ taskDatas.bizIdString }}</span></el-form-item>
-            <el-form-item label="任务类型 :"><span>{{ taskDatas.taskType }}</span></el-form-item>
-            <el-form-item label="平台类型 :"><span>{{ taskDatas.typeString }}</span></el-form-item>
-            <el-form-item label="是否免测 :"><span>{{ taskDatas.noTestString }}</span></el-form-item>
-            <el-form-item label="业务模块 :"><span>{{ taskDatas.businessType }}</span></el-form-item>
-
-          </el-form>
-        </div>
-        <el-form label="right" style="margin-left:30px;" size="mini" label-width="210px">
-          <el-form-item label="需求文档 :" style="width:60vw;"><span>{{ taskDatas.mrdUrl }}</span></el-form-item>
-          <el-form-item label="技术文档 :" style="width:60vw;"><span>{{ taskDatas.devUrl }}</span></el-form-item>
-          <el-form-item label="描述 :" style="width:60vw;"><span>{{ taskDatas.description }}</span></el-form-item>
-          <el-form-item label="备注 :" style="width:60vw;"><span>{{ taskDatas.remarks }}</span></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="formLabelWidth"><span>{{ taskDatas.tag }}</span></el-form-item>
-                <el-form-item label="需求评审时间 :" :label-width="formLabelWidth"><span>{{ taskDatas.mrdTime }}</span></el-form-item>
-                <el-form-item label="计划开始开发时间 :" :label-width="formLabelWidth"><span>{{ taskDatas.startDevPlanTime }}</span></el-form-item>
-                <el-form-item label="计划测试完成时间 :" :label-width="formLabelWidth"><span>{{ taskDatas.testFinishPlanTime }}</span></el-form-item>
-                <el-form-item label="计划提测时间 :" :label-width="formLabelWidth"><span>{{ taskDatas.launchTestPlanTime }}</span></el-form-item>
-                <el-form-item label="计划上线时间 :" :label-width="formLabelWidth"><span>{{ taskDatas.onlinePlanTime }}</span></el-form-item>
-              </div>
-              <div style="flex:1;">
-                <el-form-item label="分组 :" :label-width="formLabelWidth"><span>{{ taskDatas.group }}</span></el-form-item>
-                <el-form-item label="关注人 :" prop="focusPenson" :label-width="formLabelWidth"><span>{{ taskDatas.focusPenson }}</span></el-form-item>
-                <el-form-item label="实际开始开发时间 :" :label-width="formLabelWidth"><span>{{ taskDatas.startDevRealTime }}</span></el-form-item>
-                <el-form-item label="实际测试完成时间 :" :label-width="formLabelWidth"><span>{{ taskDatas.testFinishRealTime }}</span></el-form-item>
-                <el-form-item label="冒烟测试完成时间 :" :label-width="formLabelWidth"><span>{{ taskDatas.smokeTestFinishTime }}</span></el-form-item>
-                <el-form-item label="实际提测时间 :" :label-width="formLabelWidth"><span>{{ taskDatas.launchTestRealTime }}</span></el-form-item>
-                <el-form-item label="实际上线时间 :" :label-width="formLabelWidth"><span>{{ taskDatas.onlineRealTime }}</span></el-form-item>
-              </div>
-            </div>
-          </transition>
-        </el-form>
-      </div>
-      <div style="margin-top:20px; width=100%">
-        <div style="font-size:18px;color:#000000;" />
-        <el-tabs :tab-position="tabPosition" style="height: 200px; width:100%;">
-          <el-tab-pane label="提测报告">
-            <el-table :data="listTaskDatas" style="width: 100%">
-              <el-table-column label="ID" prop="id" align="center" min-width="60">
-                <template slot-scope="scope"><span>{{ scope.row.id }}</span></template>
-              </el-table-column>
-              <el-table-column label="标题" prop="name" align="center" min-width="100">
-                <template slot-scope="scope"><span class="projectStyle" @click="queryData(scope.row.id, listTaskDatas)"><a href="#">{{ scope.row.name }}</a></span></template>
-              </el-table-column>
-              <el-table-column label="创建时间" prop="gmtCreate" align="center" min-width="150">
-                <template slot-scope="scope"><span>{{ scope.row.gmtCreate }}</span></template>
-              </el-table-column>
-              <el-table-column label="状态" prop="statusString" align="center" min-width="80">
-                <template slot-scope="scope"><span>{{ scope.row.statusString }}</span></template>
-              </el-table-column>
-              <el-table-column label="操作" align="center" min-width="150">
-                <template slot-scope="scope">
-                  <el-button type="primary" size="small" disabled>查看</el-button>
-                  <el-button type="primary" size="small" @click="yesCallBack1(2,scope.row.id)">打回</el-button>
-                  <el-button type="primary" size="small" @click="yesCallBack(1,scope.row.id)">通过</el-button>
-                </template>
-              </el-table-column>
-            </el-table>
-          </el-tab-pane>
-          <el-tab-pane label="日报报告">
-            <el-table :data="dailyTestReports" style="width: 100%">
-              <el-table-column label="ID" prop="id" align="center" min-width="60">
-                <template slot-scope="scope"><span>{{ scope.row.id }}</span></template>
-              </el-table-column>
-              <el-table-column label="标题" prop="name" align="center" min-width="100">
-                <template slot-scope="scope"><span>{{ scope.row.reportName }}</span></template>
-              </el-table-column>
-              <el-table-column label="创建时间" prop="gmtCreate" align="center" min-width="150">
-                <template slot-scope="scope"><span>{{ scope.row.gmtCreate }}</span></template>
-              </el-table-column>
-            </el-table>
-          </el-tab-pane>
-          <el-tab-pane label="准出报告">
-            <el-table :data="projectTestReports" style="width: 100%">
-              <el-table-column label="ID" prop="id" align="center" min-width="60">
-                <template slot-scope="scope"><span>{{ scope.row.id }}</span></template>
-              </el-table-column>
-              <el-table-column label="标题" prop="name" align="center" min-width="100">
-                <template slot-scope="scope"><span>{{ scope.row.reportName }}</span></template>
-              </el-table-column>
-              <el-table-column label="创建时间" prop="gmtCreate" align="center" min-width="150">
-                <template slot-scope="scope"><span>{{ scope.row.gmtCreate }}</span></template>
-              </el-table-column>
-              <el-table-column label="状态" prop="status" align="center" min-width="80">
-                <template slot-scope="scope"><span>{{ scope.row.statusString }}</span></template>
-              </el-table-column>
-            </el-table>
-          </el-tab-pane>
-          <el-tab-pane label="bug报告">
-            <el-table :data="projectBug" style="width: 100%">
-              <el-table-column label="ID" align="center" min-width="60">
-                <template slot-scope="scope"><span>{{ scope.row.id }}</span></template>
-              </el-table-column>
-              <el-table-column label="标题" align="center" min-width="100">
-                <template slot-scope="scope"><span class="projectStyle" @click="queryBugData(scope.row.id, projectBug)"><a href="#">{{ scope.row.bugName }}</a></span></template>
-              </el-table-column>
-              <el-table-column label="状态" align="center" min-width="80">
-                <template slot-scope="scope"><span>{{ scope.row.status }}</span></template>
-              </el-table-column>
-              <el-table-column label="当前处理人" align="center" min-width="100">
-                <template slot-scope="scope"><span>{{ scope.row.currentHandler }}</span></template>
-              </el-table-column>
-              <el-table-column label="创建时间" align="center" min-width="150">
-                <template slot-scope="scope"><span>{{ scope.row.gmtCreate }}</span></template>
-              </el-table-column>
-            </el-table>
-          </el-tab-pane>
-        </el-tabs>
-        <div style="height:aotu; text-align:center;">----------------------------------我是底线---------------------------------</div>
-      </div>
-    </el-dialog>
-    <el-dialog title="打回原因" :visible.sync="centerDialogVisible" width="30%" center>
-      <el-input v-model="CallBackTheReason" type="textarea" :rows="2" />
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="centerDialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="yesCallBack(2, CallBackTheReason)">确 定</el-button>
-      </span>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { projectInit, addProject, deleteProject, updateProject, getProjectData, createTaskData, deleteTaskData, getTaskData, updateTaskList, launchTestUpdate } from '@/api/projectPage.js'
+import { projectInit, addProject, deleteProject, updateProject } from '@/api/projectPage.js'
+import E from 'wangeditor' // 富文本
 
 export default {
   name: 'Projects',
   data() {
     return {
-      tt: '',
       list: [],
-      listData: [],
-      listTaskDatas: [],
-      projectTestReports: [],
-      dailyTestReports: [],
-      businessTypeStr: [],
-      taskTypeStr: [],
-      projectBug: [],
-      tabPosition: 'top',
-      textarea: '',
-      CallBackTheReason: '',
       show2: false,
-      showYes: true,
-      centerDialogVisible: false,
+      test: false,
+      time: false,
       titleName: '',
-      codeTitle: '',
       formLabelWidths: '160px',
       formLabelWidth: '150px',
       curIndex: 1, // 初始页
-      pageSize: 5, //    每页的数据
+      pageSize: 5, // 每页的数据
       total: 0,
       noTestString: [{ name: '测试', value: 0 }, { name: '自测', value: 1 }],
       typeString: [{ name: '服务端', value: 1 }, { name: '客户端', value: 2 }],
@@ -651,17 +326,16 @@ export default {
       bizOptions: [{ name: '万象', value: 101 }, { name: '企业级', value: 100 }, { name: '滴滴代驾', value: 261 }, { name: 'prado', value: 330 }, { name: 'carbo', value: 331 }, { name: '海马', value: 309 }],
       userInformation: localStorage.getItem('username'),
       userNames: localStorage.getItem('realname'),
-      statusShow: '',
-      childrenList: '',
       parameter: '',
       queryLists: {},
       queryListData: {},
-      projectShow: '',
       statusproject: false,
+      platFormString: [], // 平台类型Data
       projectData: {},
+      timeInfo: [],
+      testInfo: [],
       Arra: [],
       bizData: {},
-      dialogStatus: '',
       bizJson: '',
       deleteCode: '',
       userData: '',
@@ -687,22 +361,14 @@ export default {
           }
         ]
       },
-      CallBackStatus: '',
-      CallBackId: '',
-      datachange: true,
-      dialogTableVisible: false,
-      dialogFormTaskVisible: false,
-      taskInformation: false,
       dialogFormVisible: false,
+      dialogFormVisible1: false,
       objData: {},
-      getId: '',
       getName: '',
       form: {},
       formTask: {},
       taskDatas: {},
       codeData: '',
-      clientTypeEnumList: '',
-      serviceTypeEnumList: '',
       serviceDataRules: {
         notest: [{ required: true, message: '是否免测不能为空', trigger: 'change' }],
         type: [{ required: true, message: '平台类型不能为空', trigger: 'change' }],
@@ -712,14 +378,16 @@ export default {
         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' }]
+        platForm: [{ required: true, message: '平台类型不能为空', trigger: 'change' }]
       }
     }
   },
   created() {
     this.getList()
   },
+  mounted() {
+    this.wangeditor()
+  },
   methods: {
     getList() {
       this.bizJson = localStorage.getItem('key')
@@ -732,18 +400,44 @@ export default {
       }
       projectInit(this.queryListData).then(response => {
         this.list = response.data
-        this.total = response.total
-        this.serviceTypeEnumList = response.query.serviceTypeEnumList
-        this.clientTypeEnumList = response.query.clientTypeEnumList
-        this.taskTypeStr = response.query.taskAndRoutineEnumList
+        this.total = this.list.length
+        this.platFormString = response.query.platformTypeEnumList
       })
     },
-    // 新增
+
+    wangeditor() {
+      this.testInfo = new E('#testInfo')
+      this.timeInfo = new E('#timeInfo')
+      // this.timeInfo.customConfig.menus = ['bold', 'foreColor', 'italic', 'underline', 'link', 'list', 'justify', 'image', 'link', 'table']
+      this.timeInfo.customConfig.onchange = (html) => { this.timeInfo = html }
+    },
+
+    // 新建项目
     changeaddData() {
       this.$nextTick(() => {
         this.$refs['serviceDataForms'].clearValidate()
       })
       this.titleName = '新增'
+
+      setTimeout(() => {
+        this.testInfo.customConfig.uploadImgServer = '/upload-img' // 上传图片到服务器
+        this.testInfo.customConfig.showLinkImg = false // 隐藏网络图片
+        this.testInfo.customConfig.uploadImgHooks = {}
+        this.testInfo.customConfig.linkCheck = function(text, link) {
+          console.log(text) // 插入的文字
+          console.log(link) // 插入的链接
+          return true // 返回 true 表示校验成功
+          // return '验证失败' // 返回字符串,即校验失败的提示信息
+        }
+        this.testInfo.customConfig.menus = ['bold', 'foreColor', 'italic', 'underline', 'list', 'justify', 'table']
+        this.testInfo.customConfig.customUploadImg = function(files, insert) {
+          console.log(files)
+          insert('https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png')
+        }
+        this.testInfo.customConfig.onchange = (html) => { this.timeInfo = html }
+        this.testInfo.create()
+        this.testInfo.txt.html(``)
+      }, 100)
       this.form = {}
     },
 
@@ -751,6 +445,7 @@ export default {
       this.$refs['serviceDataForms'].validate((valid) => {
         if (valid) {
           this.bizData = vel
+          typeof (this.timeInfo) === 'string' ? this.bizData.timeInfo = this.timeInfo : ''
           for (var a of this.statusOptionss) {
             vel.statusString === a.name ? this.bizData.status = a.value : ''
           }
@@ -761,8 +456,6 @@ export default {
             vel.stageString === f.name ? this.bizData.stage = f.value : ''
           }
           this.bizData.bizId = this.bizJson
-          // this.bizData.status = vel.statusString
-          // this.bizData.priority = vel.priorityString
         } else {
           console.log('error submit!!')
           return false
@@ -782,13 +475,42 @@ export default {
       })
     },
 
-    // 编辑
+    closeDialog() {
+      this.testInfo = new E('#testInfo')
+      this.timeInfo = new E('#timeInfo')
+      // this.testInfo.txt.clear()
+      // this.timeInfo !== '' ? this.timeInfo.txt.clear() : ''
+      this.show2 = false
+    },
+
+    // 项目编辑
     changeData(vel) {
       this.titleName = '编辑'
-      this.form = vel
+      for (var a of this.list) {
+        if (a.id === vel.id) {
+          this.form = a
+        }
+      }
+      for (var b of this.platFormString) {
+        b.code === this.projectData.platForm ? this.projectData.platForm = b.name : ''
+      }
+      setTimeout(() => {
+        // this.timeInfo.customConfig.uploadImgServer = '/upload' // 上传图片到服务器
+        // this.timeInfo.customConfig.showLinkImg = false // 隐藏网络图片
+        // this.timeInfo.customConfig.customUploadImg = function(files, insert) {
+        //   console.log(files)
+        //   insert('File.url')
+        // }
+        this.timeInfo.customConfig.menus = ['bold', 'foreColor', 'italic', 'underline', 'list', 'justify', 'table']
+        this.timeInfo.customConfig.onchange = (html) => { this.timeInfo = html }
+        this.timeInfo.create()
+        this.timeInfo.txt.html(this.form.timeInfo)
+      }, 100)
     },
+
     updateData(vel) {
       this.bizData = vel
+      typeof (this.timeInfo) === 'string' ? this.bizData.timeInfo = this.timeInfo : ''
       for (var a of this.statusOptionss) {
         vel.statusString === a.name ? this.bizData.status = a.value : ''
       }
@@ -815,8 +537,7 @@ export default {
       this.objData = { projectInfo: this.bizData, user: this.userData }
       updateProject(this.objData).then(response => {
         if (response.code === 200) {
-          this.dialogFormVisible = false
-          this.dialogTableVisible = false
+          this.dialogFormVisible1 = false
           this.bizData = {}
           this.successFun()
           this.getList()
@@ -825,13 +546,15 @@ export default {
         }
       })
     },
+
+    // 项目删除提示
     deleteCodeData(e) {
       this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
       }).then(() => {
-        this.handleDelete(e)
+        this.handleDelete(e) // 点击确认删除
         this.$message({
           type: 'success',
           message: '删除成功!'
@@ -844,7 +567,7 @@ export default {
       })
     },
 
-    // 删除
+    // 项目删除
     handleDelete(e) {
       this.userData = { id: '', ename: this.userInformation, name: this.userNames }
       deleteProject(e, this.userData).then(response => {
@@ -873,139 +596,10 @@ export default {
         this.list = response.data
       })
     },
-    // 项目页面
-    projectShowData(vel, ele) {
-      this.parameter = vel
-      this.bizData = ele
-      this.changeData(this.bizData)
-      getProjectData(vel, this.bizData).then(response => {
-        this.projectData = response.data
-        this.listData = response.data.taskInfoDOList
-      })
-    },
-    deleteTaskDataOut1(e) {
-      this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        this.deleteTaskDataOut(e)
-        this.$message({ type: 'success', message: '删除成功!' })
-      }).catch(() => {
-        this.$message({ type: 'info', message: '已取消删除' })
-      })
-    },
-    // 任务删除
-    deleteTaskDataOut(e) {
-      this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-      deleteTaskData(e, this.userData).then(response => {
-        if (response.code === 200) {
-          this.getList()
-          this.successFun()
-          this.dialogTableVisible = false
-        } else {
-          this.errorFun(response.msg)
-        }
-      })
-    },
-    // 任务查看
-    seeTaskData(vel) {
-      this.showYes = false
-      this.formTask = vel
-      this.queryTaskData(vel)
-    },
-    // 任务编辑
-    queryTaskData(ele) {
-      this.showYes = true
-      this.codeTitle = '任务编辑'
-      ele.type === '服务端' ? this.businessTypeStr = this.clientTypeEnumList : this.businessTypeStr = this.serviceTypeEnumList
-      this.formTask = ele
-    },
-    // 任务新增
-    changeaddTaskData() {
-      this.$nextTick(() => {
-        this.$refs['serviceTaskDataForms'].clearValidate()
-      })
-      this.showYes = true
-      this.codeTitle = '任务新增'
-      this.formTask = {}
-    },
-    createaddTaskData(vel) {
-      this.$refs['serviceTaskDataForms'].validate((valid) => {
-        if (valid) {
-          this.formTask = vel
-          this.formTask.bizId = vel.bizIdString
-          this.formTask.priority = vel.priorityString
-          this.formTask.status = vel.statusString
-          this.formTask.stage = vel.stageString
-          this.formTask.projectId = this.parameter
-        } else {
-          console.log('error submit!!')
-          return false
-        }
-
-        this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-        this.objData = { taskInfo: this.formTask, user: this.userData }
-        createTaskData(this.objData).then(response => {
-          if (response.code === 200) {
-            this.getList()
-            this.successFun()
-            this.dialogTableVisible = false
-            this.dialogFormTaskVisible = false
-          } else {
-            this.errorFun(response.msg)
-          }
-        })
-      })
-    },
 
-    // 获取任务点击id
-    getClickId(ele, e) {
-      this.formTask = ele
-      this.queryTaskData(this.formTask)
-      getTaskData(e).then(response => {
-        this.taskDatas = response.data
-        this.listTaskDatas = response.data.launchTestInfoList
-        this.listTaskDatas.statusString = this.taskDatas.statusString
-        this.projectTestReports = response.data.projectTestReports
-        this.projectTestReports.statusString = this.taskDatas.statusString
-        this.dailyTestReports = response.data.dailyTestReports
-        this.projectBug = response.data.bugBaseInfoDOS
-        // this.dailyTestReports.statusString = this.taskDatas.statusString
-      })
-    },
-
-    updateaddTaskData(vel) {
-      this.formTask = vel
-      this.formTask.projectId = this.parameter
-      // this.formTask.priority = vel.priority
-      for (var e of this.bizOptions) {
-        // vel.bizIdString === e.name ? this.formTask.bizId = e.value : ''
-        typeof (vel.bizIdString) === 'number' ? this.formTask.bizId = vel.bizIdString : vel.bizIdString === e.name ? this.formTask.bizId = e.value : ''
-      }
-      for (var ele of this.statusOptionss) {
-        typeof (vel.statusString) === 'number' ? this.formTask.status = vel.statusString : vel.statusString === ele.name ? this.formTask.status = ele.value : ''
-      }
-      for (var el of this.statusOptionss) {
-        typeof (vel.stageString) === 'number' ? this.formTask.stage = vel.stageString : vel.stageString === el.name ? this.formTask.stage = el.value : ''
-      }
-      for (var els of this.priorityStrings) {
-        typeof (vel.priorityString) === 'number' ? this.formTask.priority = vel.priorityString : vel.priorityString === els.name ? this.formTask.priority = els.value : ''
-      }
-      this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-      this.objData = { taskInfo: this.formTask, user: this.userData }
-      updateTaskList(this.objData).then(response => {
-        if (response.code === 200) {
-          this.dialogFormTaskVisible = false
-          this.taskInformation = false
-          this.dialogTableVisible = false
-          this.queryTaskData(this.formTask)
-          this.getList()
-          this.successFun()
-        } else {
-          this.errorFun(response.msg)
-        }
-      })
+    // 项目详情页面跳转
+    projectShowData(e, ele) {
+      this.$router.push({ path: '/Platform/presentation/projectQuery', query: { id: e }})
     },
     handleSizeChange(size) {
       this.pageSize = size
@@ -1015,97 +609,27 @@ export default {
       this.curIndex = curIndex
       this.getList()
     },
-    createReport(e, ele) {
-      this.codeData = { id: ele.id, name: ele.name }
-      if (ele.typeString === '客户端') {
-        switch (e) {
-          case 1:
-            this.$router.push({ path: '/Platform/presentation/PresentReport', query: { id: ele.id }})
-            break
-          case 2:
-            this.$router.push({ path: '/Platform/presentation/DailyNewsAdded', query: { id: ele.id }})
-            break
-          case 3:
-            this.$router.push({ path: '/Platform/presentation/ClientAcceptance', query: { id: ele.id }})
-            break
-          case 4:
-            this.$router.push({ path: '/Platform/defectManagement', query: { id: ele.id, code: 4 }})
-            break
-        }
-      } else {
-        switch (e) {
-          case 1:
-            this.$router.push({ path: '/Platform/presentation/presentationReport', query: { id: ele.id }})
-            break
-          case 2:
-            this.$router.push({ path: '/Platform/presentation/DailyNewsAdded', query: { id: ele.id }})
-            break
-          case 3:
-            this.$router.push({ path: '/Platform/presentation/Acceptance', query: { id: ele.id }})
-            break
-          case 4:
-            this.$router.push({ path: '/Platform/defectManagement', query: { id: ele.id, code: 4 }})
-            break
-        }
-      }
-    },
     successFun() {
       this.$notify({ title: 'Success', message: 'Created Successfully', type: 'success', duration: 2000 })
     },
     errorFun(e) {
       this.$notify({ title: 'Failed', message: e, type: 'error', duration: 2000 })
-    },
-    yesCallBack(e, ele) {
-      this.centerDialogVisible = false
-      if (e === 1) {
-        this.tt = { status: 1, id: ele }
-      } else {
-        this.tt = { status: 2, id: this.CallBackId, launchRepulseInfo: ele }
-      }
-      this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-      this.objData = { launchTestInfo: this.tt, user: this.userData }
-      launchTestUpdate(this.objData).then(res => {
-        res.code === 200 ? this.successFun() : this.errorFun(res.msg)
-      })
-    },
-    clickType(e) {
-      // this.formTask.businessType = ''
-      e === 1 ? this.businessTypeStr = this.serviceTypeEnumList : this.businessTypeStr = this.clientTypeEnumList
-    },
-    yesCallBack1(e, ele) {
-      this.centerDialogVisible = true
-      this.CallBackStatus = e
-      this.CallBackId = ele
-    },
-    queryData(e, ele) {
-      for (var val of ele) {
-        if (e === val.id) {
-          this.mub = val
-        }
-      }
-      this.$router.push({ path: '/Platform/presentation/acceptTheReport', query: { data: this.mub }})
-    },
-    queryBugData(e, ele) {
-      // location.href = 'http://localhost:9528/#/Platform/presentation/defectManageQuery?id=' + e
-      for (var val of ele) {
-        if (e === val.id) {
-          this.mub = val
-        }
-      }
-      this.$router.push({ path: '/Platform/presentation/defectManageQuery', query: { data: this.mub }})
     }
   }
 }
 </script>
 
-<style>
-.projectStyle{
-  color: blue;
-  cursor: pointer;
-}
-.tableproject{
-  display:inline-block;
-  width:90px;
-  text-align: right;
-}
+<style scoped>
+  .toolbar {
+    border: 2px solid #ccc;
+  }
+  .text {
+    font-size: 15px;
+    color: #606266;
+    border: 2px solid #ccc;
+    height: auto;
+  }
+  .tag {
+    cursor: pointer;
+  }
 </style>

+ 696 - 166
src/views/Platform/projectQuery/projectQuery.vue

@@ -1,218 +1,502 @@
 <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 class="eleStyle">
+
+    <!---------------------------查看------------------------------>
+
+    <div v-show="queryLay" style="height:100%;width:80%; background:#ffffff; margin: 3% 9% 9% 9%; border-radius: 8px;">
+      <div style="margin:0% 2%;">
+        <div style=" padding-top:2%;font-size:18px;color:#000000;">项目管理</div>
+        <el-divider />
+        <div>
           <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>
+            <span class="tableproject" style="flex:1;">状态</span>
+            <el-select v-model="projectData.status" style="width: 100px;" size="mini" placeholder="状态" @change="updateData(projectData)">
+              <el-option v-for="item in processStatusEnumList" :key="item.code" :label="item.name" :value="item.code" />
+            </el-select>
+            <span class="tableproject" style="flex:1;">优先级</span>
+            <el-select v-model="projectData.priority" style="width: 100px;" size="mini" placeholder="优先级" @change="updateData(projectData)">
+              <el-option v-for="item in priorityEnumList" :key="item.code" :label="item.name" :value="item.code" />
+            </el-select>
+            <span class="tableproject" style="flex:1;">进展</span>
+            <el-select v-model="projectData.stage" placeholder="进展" style="width: 100px;" size="mini" @change="updateData(projectData)">
+              <el-option v-for="item in stageEnumList" :key="item.code" :label="item.name" :value="item.code" />
+            </el-select>
+            <el-button type="primary" size="small" @click="createReport(2, projectData)">新建日报报告</el-button>
+            <el-button type="primary" size="small" @click="createReport(3, projectData)">新建准出报告</el-button>
+            <el-button type="primary" size="small" @click=" dialogFormTaskVisible = true, changeaddTaskData(projectData, 1)">新建任务</el-button>
+            <el-button type="primary" size="small" style="float:right;margin-right:7%" @click="dialogFormVisible = true, changeData(projectData)">编辑</el-button>
+          </div>
+          <el-divider />
+          <!-- <el-form style=" padding-left: 100px;" label="right" size="mini" label-width="110px">
+            <el-form-item label="项目名称 :"><span>{{ projectData.name }}</span></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="项目名称 :"><span>{{ projectData.name }}</span></el-form-item>
+              <el-form-item label="PM :"><span>{{ projectData.pm }}</span></el-form-item>
+              <el-form-item label="版本 :"><span>{{ projectData.version }}</span></el-form-item>
+              <!-- <el-form-item label="计划上线时间 :"><span>{{ projectData.allOnlineTime }}</span></el-form-item> -->
+              <!-- <el-form-item label="开始时间 :"><span>{{ projectData.createTime }}</span></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 style="flex:1; padding-left: 100px;" label="right" size="mini" label-width="110px">
+              <el-form-item label="平台类型 :"><span>{{ projectData.platForm }}</span></el-form-item>
+              <el-form-item label="QA :"><span>{{ projectData.qa }}</span></el-form-item>
+              <el-form-item label="RD :"><span>{{ projectData.rd }}</span></el-form-item>
+            </el-form>
+          </div>
+          <el-form style=" padding-left: 100px;" label="right" size="mini" label-width="110px">
+            <el-form-item label="需求文档 :"><span>{{ projectData.mrdUrl }}</span></el-form-item>
+          </el-form>
+
+          <el-form style=" padding-left: 100px;" label="right" size="mini" label-width="110px">
+            <el-form-item label="描述 :"><span>{{ projectData.description }}</span></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 :"><span>{{ projectData.ue }}</span></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 style="flex:1; margin-right: 130px;" label="right" size="mini" label-width="100px">
+                <el-form-item label="UI :"><span>{{ projectData.ui }}</span></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>
+              <div class="rich" v-html="projectData.timeInfo" />
+            </div>
+            <!-- <div style="display: flex;">
+              <el-form style="flex:1; margin-left: 50px;" label="right" size="mini" label-width="150px">
+                <el-form-item label="需求评审时间 :"><span>{{ projectData.mrdTime }}</span></el-form-item>
+                <el-form-item label="服务端开始开发时间 :"><span>{{ projectData.serviceDevTime }}</span></el-form-item>
+              </el-form>
+              <el-form style="flex:1; margin-right: -50px;" label="right" size="mini" label-width="150px">
+                <el-form-item label="全量时间 :"><span>{{ projectData.allOnlineTime }}</span></el-form-item>
+                <el-form-item label="客户端提测时间 :"><span>{{ projectData.clientLaunchTestTime }}</span></el-form-item>
+              </el-form>
+            </div> -->
+            <!-- <el-form style="margin-left: 95px;"><el-form-item label="开发联调时间 :"><span>{{ projectData.joinTestTime }}</span></el-form-item></el-form>
+            <div style="display: flex;">
+              <el-form style="flex:1; margin-left: 50px;" label="right" size="mini" label-width="150px">
+                <el-form-item label="服务端测试完成时间 :"><span>{{ projectData.serviceFinishTestTime }}</span></el-form-item>
+                <el-form-item label="服务端提测时间 :"><span>{{ projectData.serviceLaunchTestTime }}</span></el-form-item>
+                <el-form-item label="服务端上线时间 :"><span>{{ projectData.serverOnLine }}</span></el-form-item>
+                <el-form-item label="产品验收时间 :"><span>{{ projectData.pmTestTime }}</span></el-form-item>
+              </el-form>
+              <el-form style="flex:1; margin-left: 50px;" label="right" size="mini" label-width="150px">
+                <el-form-item label="客户端开始开发时间 :"><span>{{ projectData.clientDevTime }}</span></el-form-item>
+                <el-form-item label="客户端测试完成时间 :"><span>{{ projectData.clientFinishTestTime }}</span></el-form-item>
+                <el-form-item label="客户端上线时间 :"><span>{{ projectData.clientOnlineTime }}</span></el-form-item>
+                <el-form-item label="灰度时间 :"><span>{{ projectData.pmTestTime }}</span></el-form-item>
+              </el-form>
+            </div> -->
+          </div>
+        </transition>
+
+        <div style="margin-top:20px; width=100%">
+          <el-tabs tab-position="top" style="height: 200px; width:100%;">
+            <el-tab-pane label="任务信息">
+              <el-table :data="listData" style="width: 100%" max-height="310">
+                <el-table-column label="ID" prop="id" align="center" min-width="60"><template slot-scope="scope"><span>{{ scope.row.id }}</span></template></el-table-column>
+                <el-table-column label="标题" prop="name" align="center" min-width="100"><template slot-scope="scope"><el-tooltip content="点击查看详情页面" placement="top" style="cursor: pointer;"><el-tag class="tag" @click="getClickId(scope.row)">{{ scope.row.name }}</el-tag></el-tooltip></template></el-table-column>
+                <el-table-column label="创建时间" prop="gmtCreate" align="center" min-width="150"><template slot-scope="scope"><span>{{ scope.row.createTime }}</span></template></el-table-column>
+                <el-table-column label="状态" prop="statusString" align="center" min-width="80"><template slot-scope="scope"><span>{{ scope.row.statusString }}</span></template></el-table-column>
+                <el-table-column label="操作" align="center" min-width="150">
+                  <template slot-scope="{row}">
+                    <el-button type="primary" size="mini" @click=" dialogFormTaskVisible = true, changeaddTaskData(row, 2)">编辑</el-button>
+                    <el-button type="primary" size="mini" @click="deleteTaskDataOut1(row.id)">删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </el-tab-pane>
+            <el-tab-pane label="日报报告">
+              <el-table :data="dailyTestReports" max-height="390" style="width: 100%">
+                <el-table-column label="ID" prop="id" align="center" min-width="60"><template slot-scope="scope">{{ scope.row.id }}</template></el-table-column>
+                <el-table-column label="标题" prop="name" align="center" min-width="100"><template slot-scope="scope">{{ scope.row.reportName }}</template></el-table-column>
+                <el-table-column label="创建时间" prop="gmtCreate" align="center" min-width="150"><template slot-scope="scope">{{ scope.row.createTime }}</template></el-table-column>
+              </el-table>
+            </el-tab-pane>
+            <el-tab-pane label="准出报告">
+              <el-table :data="projectTestReports" max-height="390" style="width: 100%">
+                <el-table-column label="ID" prop="id" align="center" min-width="60"><template slot-scope="scope">{{ scope.row.id }}</template></el-table-column>
+                <el-table-column label="标题" prop="name" align="center" min-width="100"><template slot-scope="scope">{{ scope.row.reportName }}</template></el-table-column>
+                <el-table-column label="创建时间" prop="gmtCreate" align="center" min-width="150"><template slot-scope="scope">{{ scope.row.createTime }}</template></el-table-column>
+                <el-table-column label="状态" prop="status" align="center" min-width="80"><template slot-scope="scope">{{ scope.row.statusString }}</template></el-table-column>
+              </el-table>
+            </el-tab-pane>
+          </el-tabs>
+          <div style="height:5%; text-align:center;">
+            <el-button type="primary" style="margin:18% 0 3% 0;" @click="clickOut">关 闭</el-button>
           </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>
+    </div>
+
+    <!------------------------- 项目编辑 ---------------------->
+
+    <el-dialog title="项目编辑" width="80%" :visible.sync="dialogFormVisible" @open="openObject">
+      <el-form ref="form" :model="form" :rules="serviceDataRules" style="width:93%;">
+        <el-form-item label="项目名称" prop="name" :label-width="formLabelWidths">
+          <el-input v-model="form.name" autocomplete="off" placeholder="项目名称" />
+        </el-form-item>
+        <div style="display: flex;">
+          <div style="flex:1;">
+            <el-form-item label="业务线" prop="bizId" :label-width="formLabelWidths">
+              <el-select v-model="form.bizId" placeholder="业务线">
+                <el-option v-for="item in bizIdEnumLists" :key="item.code" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="状态" prop="status" :label-width="formLabelWidths">
+              <el-select v-model="form.status" placeholder="状态">
+                <el-option v-for="item in processStatusEnumList" :key="item.code" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="平台类型" prop="platForm" :label-width="formLabelWidths">
+              <el-select v-model="form.platForm" placeholder="平台类型">
+                <el-option v-for="item in platFormString" :key="item.code" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div style="flex:1;">
+            <el-form-item label="优先级" prop="priority" :label-width="formLabelWidths">
+              <el-select v-model="form.priority" placeholder="优先级">
+                <el-option v-for="item in priorityEnumList" :key="item.code" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="进展" prop="stage" :label-width="formLabelWidths">
+              <el-select v-model="form.stage" 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="PM" prop="pm" :label-width="formLabelWidths">
+              <el-input v-model="form.pm" autocomplete="off" />
+            </el-form-item>
+            <el-form-item label="版本" :label-width="formLabelWidths">
+              <el-input v-model="form.version" autocomplete="off" />
+            </el-form-item>
+            <el-form-item v-show="false" label="创建人" :label-width="formLabelWidths">
+              <el-input v-model="form.creater" autocomplete="off" />
+            </el-form-item>
+          </div>
+        </div>
+        <el-form-item label="需求文档" :label-width="formLabelWidths">
+          <el-input v-model="form.mrdUrl" 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=" 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;" autocomplete="off" />
+                </el-form-item>
+                <el-form-item label="UI " :label-width="formLabelWidths">
+                  <el-input v-model="form.ui" style="width: 220px;" autocomplete="off" />
+                </el-form-item>
               </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 style="flex: 1; margin-left: 135px;">
+                <el-form-item label="RD " :label-width="formLabelWidths">
+                  <el-input v-model="form.rd" style="width: 220px;" autocomplete="off" />
+                </el-form-item>
+                <el-form-item label="QA " :label-width="formLabelWidths">
+                  <el-input v-model="form.qa" style="width: 220px;" autocomplete="off" />
+                </el-form-item>
+              </div>
+            </div>
+
+            <el-form-item style="margin-left:110px;width:84%;">
+              <div id="timeInfo" />
+              <!-- <div id="timeInfo1" class="text" /> -->
+            </el-form-item>
+
+            <!-- <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>
-              <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 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>
-          </transition>
-        </el-form>
-        <div align="center">
-          <el-button type="primary" @click="clickOut">返回bug主页</el-button>
+            <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>
-      </el-tab-pane>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false">取 消</el-button>
+        <el-button type="primary" @click="dialogFormVisible = true, updateData1(form)">确 定</el-button>
+      </div>
+    </el-dialog>
 
-      <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;">
+    <!--------------------- 任务新增,编辑 --------------------->
+
+    <el-dialog :title="codeTitle" width="80%" :visible.sync="dialogFormTaskVisible">
+      <el-form ref="formTask" :model="formTask" :rules="serviceDataRules">
+        <el-form-item label="任务名称" prop="name" label-width="100px" style="width:93%;">
+          <el-input v-model="formTask.name" placeholder="任务名称" autocomplete="off" />
+        </el-form-item>
+        <div style="display: flex;">
+          <div style="flex:1;">
+            <el-form-item label="业务线" prop="bizId" label-width="100px">
+              <el-select v-model="formTask.bizId" placeholder="业务线" @change="bizId(formTask.bizId)">
+                <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="priority" label-width="100px">
+              <el-select v-model="formTask.priority" placeholder="优先级">
+                <el-option v-for="item in priorityEnumList" :key="item.code" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="进展" prop="stage" label-width="100px">
+              <el-select v-model="formTask.stage" 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="formTask.type" placeholder="平台类型" @change="changeType(formTask.type)">
+                <el-option v-for="item in typeString" :key="item.code" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="状态" prop="status" label-width="100px">
+              <el-select v-model="formTask.status" placeholder="状态">
+                <el-option v-for="item in processStatusEnumList" :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="formTask.taskType" placeholder="任务类型">
+                <el-option v-for="item in taskTypeStr" :key="item.code" :label="item.name" :value="item.name" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div style="flex:1;">
+            <el-form-item v-if="business" label="业务模块" prop="clientType" label-width="100px">
+              <el-select v-model="formTask.clientType" placeholder="业务模块" @change="clientType(formTask.clientType)">
+                <el-option v-for="item in businessTypeStr" :key="item.code" :label="item.name" :value="item.name" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="是否免测" prop="notest" label-width="100px">
+              <el-select v-model="formTask.notest" placeholder="是否免测">
+                <el-option v-for="item in noTestEnumList" :key="item.code" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item v-if="osTypeShow" label="端类型" prop="osType" label-width="100px">
+              <el-select v-model="formTask.osType" placeholder="端类型">
+                <el-option v-for="item in osTypeEnum" :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="formTask.mrdUrl" autocomplete="off" />
+        </el-form-item>
+        <el-form-item label="技术文档" style="width:72vw;" label-width="100px">
+          <el-input v-model="formTask.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="业务线" 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 label="标签" :label-width="formLabelWidth">
+                <el-input v-model="formTask.tag" style="width:220px;" autocomplete="off" />
               </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 label="RD" :label-width="formLabelWidth">
+                <el-input v-model="formTask.rd" style="width:220px;" autocomplete="off" />
               </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 label="QA" :label-width="formLabelWidth">
+                <el-input v-model="formTask.qa" style="width:220px;" autocomplete="off" />
+              </el-form-item>
+              <el-form-item label="需求评审时间" :label-width="formLabelWidth">
+                <el-date-picker v-model="formTask.mrdTime" type="datetime" placeholder="选择日期" />
+              </el-form-item>
+              <el-form-item label="计划开始开发时间" :label-width="formLabelWidth">
+                <el-date-picker v-model="formTask.startDevPlanTime" type="datetime" placeholder="选择日期" />
+              </el-form-item>
+              <el-form-item label="计划测试完成时间" :label-width="formLabelWidth">
+                <el-date-picker v-model="formTask.testFinishPlanTime" type="datetime" placeholder="选择日期" />
               </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 label="计划提测时间" :label-width="formLabelWidth">
+                <el-date-picker v-model="formTask.launchTestPlanTime" type="datetime" placeholder="选择日期" />
+              </el-form-item>
+              <el-form-item label="计划上线时间" :label-width="formLabelWidth">
+                <el-date-picker v-model="formTask.onlinePlanTime" type="datetime" placeholder="选择日期" />
               </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 label="分组" :label-width="formLabelWidth">
+                <el-input v-model="formTask.group" style="width:220px;" autocomplete="off" />
+              </el-form-item>
+              <el-form-item label="PM" :label-width="formLabelWidth">
+                <el-input v-model="formTask.pm" style="width:220px;" autocomplete="off" />
+              </el-form-item>
+              <el-form-item label="关注人" prop="focusPenson" :label-width="formLabelWidth">
+                <el-input v-model="formTask.focusPenson" style="width:220px;" autocomplete="off" />
+              </el-form-item>
+              <el-form-item label="实际开始开发时间" :label-width="formLabelWidth">
+                <el-date-picker v-model="formTask.startDevRealTime" type="datetime" placeholder="选择日期" />
+              </el-form-item>
+              <el-form-item label="实际测试完成时间" :label-width="formLabelWidth">
+                <el-date-picker v-model="formTask.testFinishRealTime" type="datetime" placeholder="选择日期" />
+              </el-form-item>
+              <el-form-item label="冒烟测试完成时间" :label-width="formLabelWidth">
+                <el-date-picker v-model="formTask.smokeTestFinishTime" type="datetime" placeholder="选择日期" />
+              </el-form-item>
+              <el-form-item label="实际提测时间" :label-width="formLabelWidth">
+                <el-date-picker v-model="formTask.launchTestRealTime" type="datetime" placeholder="选择日期" />
+              </el-form-item>
+              <el-form-item label="实际上线时间" :label-width="formLabelWidth">
+                <el-date-picker v-model="formTask.onlineRealTime" 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>
+        </transition>
+        <dir style="display:flex; width:93%;">
+          <el-form-item label="备注" style="flex:1;" label-width="60px">
+            <el-input v-model="formTask.remark" type="textarea" :rows="4" placeholder="备注" />
+          </el-form-item>
+          <el-form-item label="描述" style="flex:1;" label-width="60px">
+            <el-input v-model="formTask.description" type="textarea" :rows="4" placeholder="请输入内容" />
+          </el-form-item>
+        </dir>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormTaskVisible = false">取 消</el-button>
+        <el-button type="primary" @click="dialogFormTaskVisible = true, codeTitle === '任务新增'?createaddTaskData(formTask, 1):createaddTaskData(formTask, 2)">确 定</el-button>
+      </div>
+    </el-dialog>
+
   </div>
 </template>
 
 <script>
-import { projectInit, updateProject, getProjectData } from '@/api/projectPage.js'
+import { projectInit, updateProject, getProjectData, createTaskData, deleteTaskData, updateTaskList, projectGetTypeMap } from '@/api/projectPage.js'
 import { bugGetEnum } from '@/api/defectManage' // 下拉菜单data
+import E from 'wangeditor' // 富文本
+
 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' }],
+        bizId: [{ required: true, message: '业务线不能为空', trigger: 'change' }],
+        status: [{ required: true, message: '状态不能为空', trigger: 'change' }],
+        priority: [{ required: true, message: '优先级不能为空', trigger: 'change' }],
+        stage: [{ required: true, message: '进展不能为空', trigger: 'change' }],
         pm: [{ required: true, message: 'pm不能为空', trigger: 'change' }],
         taskType: [{ required: true, message: '任务类型不能为空', trigger: 'change' }],
-        businessType: [{ required: true, message: '业务模块不能为空', trigger: 'change' }]
+        clientType: [{ required: true, message: '业务模块不能为空', trigger: 'change' }],
+        osType: [{ required: true, message: '端类型不能为空', trigger: 'change' }],
+        platForm: [{ required: true, message: '平台类型不能为空', trigger: 'change' }]
       },
       reasonStr: [],
+      queryLay: true,
       platformTypeStr: [],
       stageStr: [],
       discoveryMethodStr: [],
+      platFormString: [],
       repairResultStr: [],
       bizIdEnumList: [],
+      businessTypeStr: [],
       userInformation: localStorage.getItem('username'),
       userNames: localStorage.getItem('realname'),
       bizJson: localStorage.getItem('key'),
-      form: {},
+      projectData: {},
       statusShow: false,
       repairShow: false,
       formLabelWidth1: '160px',
       formLabelWidths: '160px',
+      formLabelWidth: '160px',
       objData: '',
       userData: '',
       taskIdStr: '',
       url: '',
       arrurl: '',
-      show2: false
+      show2: false,
+      bizIdEnumLists: [], // project优先级
+      parameter: '', // projactId
+      business: false, // 业务模块show
+      osTypeEnum: [], // 端类型Data
+      osTypeShow: false, // 端类型show
+      codeTitle: '', // title 任务
+      taskTypeStr: [], // 任务类型Data
+      dialogFormVisible: false, // 项目弹窗
+      dialogFormTaskVisible: false, // 任务弹窗
+      noTestEnumList: [], // 是否免测
+      formTask: {}, // 任务新增 编辑data
+      form: [], // 项目 新增data
+      typeString: [], // 平台类型
+      stageEnumList: [], // 进展
+      priorityEnumList: [], // 优先级
+      processStatusEnumList: [], // 状态
+      timeInfo: [], // 富文本
+      listData: [], // 任务data
+      dailyTestReports: [], // 日报报告Data
+      projectTestReports: [] // 准出报告Data
+
     }
   },
   created() {
+    this.bugListSelect()
     this.getList()
     this.getList1()
-    this.bugListSelect()
   },
   methods: {
     getList1() {
@@ -221,48 +505,67 @@ export default {
         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
+        this.projectData = this.$route.query.data
+        for (var a of this.platFormString) {
+          a.code === this.projectData.platForm ? this.projectData.platForm = a.name : ''
+        }
       } else {
         this.url = window.location.href // 获取url中"?"符后的字串
         this.arrurl = this.url.split('?id=')
         getProjectData(this.arrurl[1]).then(res => {
-          this.form = res.data
+          this.projectData = res.data
+          this.projectTestReports = res.data.projectTestReports
+          this.dailyTestReports = res.data.dailyTestReports
+          this.listData = res.data.taskInfoDOList
+          for (var a of this.platFormString) {
+            a.code === this.projectData.platForm ? this.projectData.platForm = a.name : ''
+          }
+          this.parameter = res.data.id
         })
       }
     },
+    getTimeInFoData() {
+      this.projectData.timeInfo === '' ? '' : this.timeInfo.txt.html(this.projectData.timeInfo)
+      // this.timeInfo.txt.html(this.projectData.timeInfo)
+    },
     bugListSelect() {
       bugGetEnum().then(res => {
-        this.bizIdEnumList = res.data.bizIdEnumList
-        this.bugStatusStr = res.data.bugEnumList
+        this.platFormString = res.data.platformTypeEnumList // project 平台类型
+        this.bizIdEnumLists = res.data.bizIdEnumList // project优先级
         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.priorityEnumList = res.data.priorityEnumList
         this.discoveryMethodStr = res.data.discoveryMethodEnumList
         this.repairResultStr = res.data.repairResultEnumList
+        this.processStatusEnumList = res.data.processStatusEnumList
+        this.stageEnumList = res.data.stageEnumList
+        this.noTestEnumList = res.data.noTestEnumList
       })
     },
-    updateData(vel) {
-      console.log(vel)
-      this.bizData = vel
-      this.$refs['serviceDataForms'].validate((valid) => {
+
+    // 项目编辑提交
+    updateData1(vel) {
+      this.$refs['form'].validate((valid) => {
         if (valid) {
-          this.bizData.status = vel.status
-          this.bizData.priority = vel.priority
-          this.bizData.stage = vel.stage
+          this.bizData = vel
+          for (var a of this.platFormString) {
+            a.name === vel.platForm ? this.bizData.platForm = a.code : ''
+          }
+          typeof (this.timeInfo) === 'string' ? this.bizData.timeInfo = this.timeInfo : ''
           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.dialogFormVisible = false
+              this.getList()
               this.successFun()
             } else {
               this.errorFun(response.msg)
@@ -273,6 +576,207 @@ export default {
         }
       })
     },
+
+    // 查看头部change
+    updateData(vel) {
+      this.bizData = vel
+      for (var a of this.platFormString) {
+        a.name === vel.platForm ? this.bizData.platForm = a.code : ''
+      }
+      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) {
+          for (var a of this.platFormString) {
+            a.code === vel.platForm ? this.bizData.platForm = a.name : ''
+          }
+          this.bizData = {}
+          this.successFun()
+        } else {
+          this.errorFun(response.msg)
+        }
+      })
+    },
+
+    // change 业务线
+    bizId(e) {
+      for (var a of this.bizIdEnumList) {
+        if (e === a.code) {
+          this.typeString = a.child
+        }
+      }
+      this.business = false
+      this.osTypeShow = false
+      this.$set(this.formTask, 'type', '')
+    },
+
+    // chnage 平台类型
+    changeType(e) {
+      for (var b of this.typeString) {
+        if (e === b.code) {
+          this.businessTypeStr = b.child
+          b.child !== null ? this.business = true : this.business = false
+        }
+        this.osTypeShow = false
+        this.$set(this.formTask, 'clientType', '')
+      }
+    },
+
+    // 业务模块
+    clientType(e) {
+      for (var a of this.businessTypeStr) {
+        if (e === a.name) {
+          this.osTypeEnum = a.child
+          a.child !== null ? this.osTypeShow = true : this.osTypeShow = false
+        }
+        this.$set(this.formTask, 'osType', '')
+      }
+    },
+
+    // 弹窗添加富文本,加载DOM
+    openObject() {
+      this.getList()
+      setTimeout(() => {
+        this.timeInfo = new E('#timeInfo')
+        this.timeInfo.customConfig.menus = ['bold', 'foreColor', 'italic', 'underline', 'list', 'justify', 'link', 'table']
+        this.timeInfo.customConfig.onchange = (html) => { this.timeInfo = html }
+        this.timeInfo.create()
+        this.timeInfo.txt.html(``)
+        this.getTimeInFoData()
+      }, 100)
+    },
+
+    // 项目编辑
+    changeData(vel) {
+      this.form = vel
+    },
+
+    // 跳转任务页面 获取任务点击id
+    getClickId(ele) {
+      this.$router.push({ path: '/Platform/presentation/taskQuery', query: { id: ele.id }})
+    },
+
+    // 任务新增提交
+    createaddTaskData(vel, e) {
+      switch (e) {
+        case 1:
+          this.$refs['formTask'].validate((valid) => {
+            if (valid) {
+              this.formTask = vel
+              this.formTask.projectId = this.parameter
+            }
+            this.userData = { id: '', ename: this.userInformation, name: this.userNames }
+            this.objData = { taskInfo: this.formTask, user: this.userData }
+            createTaskData(this.objData).then(response => {
+              if (response.code === 200) {
+                this.getList()
+                this.successFun()
+                this.dialogFormTaskVisible = false
+              } else {
+                this.errorFun(response.msg)
+              }
+            })
+          })
+          break
+        case 2:
+          this.formTask = vel
+          this.formTask.projectId = this.parameter
+          this.userData = { id: '', ename: this.userInformation, name: this.userNames }
+          this.objData = { taskInfo: this.formTask, user: this.userData }
+          updateTaskList(this.objData).then(response => {
+            if (response.code === 200) {
+              this.dialogFormTaskVisible = false
+              this.getList()
+              this.successFun(response.msg)
+            } else {
+              this.errorFun(response.msg)
+            }
+          })
+          break
+      }
+    },
+
+    // 任务 1新增 2编辑
+    changeaddTaskData(ele, vel) {
+      projectGetTypeMap().then(res => {
+        this.bizIdEnumList = res.data
+        switch (vel) {
+          case 1:
+            this.$nextTick(() => {
+              this.$refs['formTask'].clearValidate()
+            })
+            this.codeTitle = '任务新增'
+            this.formTask = {}
+            break
+          case 2:
+            this.codeTitle = '任务编辑'
+            this.formTask = ele
+            ele.clientType !== null ? this.business = true : this.business = false
+            ele.osType !== null ? this.osTypeShow = true : this.osTypeShow = false
+            for (var b of this.bizIdEnumList) {
+              ele.bizId === b.code ? this.typeString = b.child : ''
+            }
+            for (var s of this.typeString) {
+              ele.type === s.code ? this.businessTypeStr = s.child : ''
+            }
+            // for (var c of this.typeString) {
+            //   ele.clientType === c.name ? this.businessTypeStr = c.child : ''
+            // }
+            for (var d of this.businessTypeStr) {
+              ele.osType === d.code ? this.osTypeEnum = d.child : ''
+            }
+        }
+      })
+    },
+
+    // task delete
+    deleteTaskDataOut1(e) {
+      this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        this.deleteTaskDataOut(e)
+        this.$message({ type: 'success', message: '删除成功!' })
+      }).catch(() => {
+        this.$message({ type: 'info', message: '已取消删除' })
+      })
+    },
+
+    // 任务删除
+    deleteTaskDataOut(e) {
+      this.userData = { id: '', ename: this.userInformation, name: this.userNames }
+      deleteTaskData(e, this.userData).then(response => {
+        if (response.code === 200) {
+          this.getList1()
+        } else {
+          this.errorFun(response.msg)
+        }
+      })
+    },
+
+    // 新建准出,日报报告跳转
+    createReport(e, ele) {
+      if (ele.platForm !== '服务端') {
+        switch (e) {
+          case 2:
+            this.$router.push({ path: '/Platform/presentation/DailyNewsAdded', query: { projectId: this.parameter }})
+            break
+          case 3:
+            this.$router.push({ path: '/Platform/presentation/ClientAcceptance', query: { projectId: this.parameter }})
+        }
+      } else {
+        switch (e) {
+          case 2:
+            this.$router.push({ path: '/Platform/presentation/DailyNewsAdded', query: { projectId: this.parameter }})
+            break
+          case 3:
+            this.$router.push({ path: '/Platform/presentation/Acceptance', query: { projectId: this.parameter }})
+        }
+      }
+    },
+
+    // 返回
     clickOut() {
       this.$router.push({ path: '/Platform/projectPage' })
     },
@@ -285,3 +789,29 @@ export default {
   }
 }
 </script>
+
+<style scoped>
+  .eleStyle {
+    width: 100%;
+    height:100%;
+    background:#F2F3F6;
+    /* position:fixed; */
+    display: inline-block;
+  }
+  .el-divider--horizontal {
+    margin: 3px;
+    background: #F2F3F6;
+  }
+  .toolbar {
+    border: 2px solid #ccc;
+  }
+  .text {
+    font-size: 15px;
+    color: #606266;
+    border: 2px solid #ccc;
+    height: auto;
+  }
+  .rich>>> table tr td{border:1px solid #ccc;font-size: 15px; color: #606266}
+  .rich>>> table th{border:1px solid #ccc; font-size: 15px; color: #606266}
+  .rich>>> table {border:1px solid #ccc; border-collapse: collapse;line-height: 30px; text-align: center;font-size: 15px; color: #606266}
+</style>

+ 440 - 152
src/views/Platform/projectQuery/taskQuery.vue

@@ -1,200 +1,279 @@
 <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 class="eleStyle">
+    <!---------------------------查看------------------------------>
+    <div v-show="queryLay" style="height:100%;width:80%; background:#ffffff; margin: 3% 9% 9% 9%; border-radius: 8px;">
+      <div style="margin:0% 2%;">
+        <div style=" padding-top:2%;font-size:18px;color:#000000;">任务信息</div>
+        <el-divider />
+        <div width="70%" style="padding-top:30px;">
+          <div style="padding-bottom:5px; diaplay: flex;">
+            <span class="tableproject" style="flex:1;">状态</span>
+            <el-select v-model="form.status" style="width: 100px;" size="mini" placeholder="状态" @change="updateaddTaskData(form)">
+              <el-option v-for="item in processStatusEnumList" :key="item.code" :label="item.name" :value="item.code" />
+            </el-select>
+            <span class="tableproject" style="flex:1;">优先级</span>
+            <el-select v-model="form.priority" style="width: 100px;" size="mini" placeholder="优先级" @change="updateaddTaskData(form)">
+              <el-option v-for="item in bugLevelStr" :key="item.code" :label="item.name" :value="item.code" />
+            </el-select>
+            <el-button type="primary" size="small" @click="createReport(1, form)">新建提测报告</el-button>
+            <el-button type="primary" size="small" @click="createReport(2, form)">新建日报报告</el-button>
+            <el-button type="primary" size="small" @click="createReport(3, form)">新建准出报告</el-button>
+            <el-button type="primary" size="small" @click="createReport(4, form)">新建bug</el-button>
+            <el-button type="primary" size="small" style="float:right;margin-right:7%" @click="queryTaskData(form)">编辑</el-button>
           </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-divider />
+          <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.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.taskType }}</el-form-item>
+                <el-form-item label="平台类型 : " :label-width="formLabelWidth1">{{ form.type }}</el-form-item>
+                <el-form-item label="是否免测 : " :label-width="formLabelWidth1">{{ form.noTestString }}</el-form-item>
+                <el-form-item v-if="business" label="业务模块 : " :label-width="formLabelWidth1">{{ form.clientType }}</el-form-item>
+                <el-form-item v-if="osTypeShow" label="端类型 : " :label-width="formLabelWidth1">{{ form.osType }}</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>
+            </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>
-              </div>
-            </transition>
+              </transition>
+            </el-form>
+
           </el-form>
-          <div align="center">
-            <el-button type="primary" @click="clickOut">返回bug主页</el-button>
+          <div style="margin-top:20px; width=100%">
+            <el-tabs tab-position="top" style="height: 200px; width:100%;">
+              <el-tab-pane label="提测报告">
+                <el-table :data="listTaskDatas" style="width: 100%" max-height="390" @row-click="queryData">
+                  <el-table-column label="ID" prop="id" align="center" min-width="60"><template slot-scope="scope"><span>{{ scope.row.id }}</span></template></el-table-column>
+                  <el-table-column label="标题" prop="name" align="center" min-width="100"><template slot-scope="scope">{{ scope.row.name }}</template></el-table-column>
+                  <el-table-column label="创建时间" prop="gmtCreate" align="center" min-width="150"><template slot-scope="scope"><span>{{ scope.row.gmtCreate }}</span></template></el-table-column>
+                  <el-table-column label="状态" prop="statusString" align="center" min-width="80"><template slot-scope="scope"><span>{{ scope.row.statusString }}</span></template></el-table-column>
+                  <el-table-column label="操作" align="center" min-width="150">
+                    <template slot-scope="scope">
+                      <el-button type="primary" size="small" disabled>查看</el-button>
+                      <el-button type="primary" size="small" @click="yesCallBack1(2,scope.row.id)">打回</el-button>
+                      <el-button type="primary" size="small" @click="yesCallBack(1,scope.row.id)">通过</el-button>
+                    </template>
+                  </el-table-column>
+                </el-table>
+              </el-tab-pane>
+              <el-tab-pane label="日报报告">
+                <el-table :data="dailyTestReports" max-height="390" style="width: 100%">
+                  <el-table-column label="ID" prop="id" align="center" min-width="60"><template slot-scope="scope">{{ scope.row.id }}</template></el-table-column>
+                  <el-table-column label="标题" prop="name" align="center" min-width="100"><template slot-scope="scope"><el-tooltip content="点击查看详情页面" placement="top" style="cursor: pointer;"><el-tag class="tag" @click="getClickId(scope.row)">{{ scope.row.reportName }}</el-tag></el-tooltip></template></el-table-column>
+                  <el-table-column label="创建时间" prop="gmtCreate" align="center" min-width="150"><template slot-scope="scope">{{ scope.row.gmtCreate }}</template></el-table-column>
+                </el-table>
+              </el-tab-pane>
+              <el-tab-pane label="准出报告">
+                <el-table :data="projectTestReports" max-height="390" style="width: 100%">
+                  <el-table-column label="ID" prop="id" align="center" min-width="60"><template slot-scope="scope">{{ scope.row.id }}</template></el-table-column>
+                  <el-table-column label="标题" prop="name" align="center" min-width="100"><template slot-scope="scope">{{ scope.row.reportName }}</template></el-table-column>
+                  <el-table-column label="创建时间" prop="gmtCreate" align="center" min-width="150"><template slot-scope="scope">{{ scope.row.gmtCreate }}</template></el-table-column>
+                  <el-table-column label="状态" prop="status" align="center" min-width="80"><template slot-scope="scope">{{ scope.row.statusString }}</template></el-table-column>
+                </el-table>
+              </el-tab-pane>
+              <el-tab-pane label="bug报告">
+                <el-table :data="projectBug" max-height="390" style="width: 100%" @row-click="queryBugData">
+                  <el-table-column label="ID" align="center" min-width="60"><template slot-scope="scope">{{ scope.row.id }}</template></el-table-column>
+                  <el-table-column label="标题" align="center" min-width="100"><template slot-scope="scope">{{ scope.row.bugName }}</template></el-table-column>
+                  <el-table-column label="状态" align="center" min-width="80"><template slot-scope="scope">{{ scope.row.status }}</template></el-table-column>
+                  <el-table-column label="当前处理人" align="center" min-width="100"><template slot-scope="scope">{{ scope.row.currentHandler }}</template></el-table-column>
+                  <el-table-column label="创建时间" align="center" min-width="150"><template slot-scope="scope">{{ scope.row.gmtCreate }}</template></el-table-column>
+                </el-table>
+              </el-tab-pane>
+            </el-tabs>
+            <div style="height:5%; text-align:center;">
+              <el-button type="primary" style="margin:15% 0 3% 0;" @click="clickOut">关 闭</el-button>
+            </div>
           </div>
-        </el-form>
-      </el-tab-pane>
+        </div>
+      </div>
 
-      <el-tab-pane label=" 编 辑 ">
-        <el-form ref="form" :model="form" :rules="serviceDataRules">
+      <!--------------------------------- 编辑 ---------------------------------->
+      <el-dialog title="任务信息" width="80%" :visible.sync="dialogFormTaskVisible" @close="Refresh">
+        <el-form ref="fromCode" :model="fromCode" :rules="serviceDataRules">
           <el-form-item label="任务名称" prop="name" label-width="100px" style="width:93%;">
-            <el-input v-model="form.name" placeholder="任务名称" autocomplete="off" />
+            <el-input v-model="fromCode.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-form-item label="业务线" prop="bizId" label-width="100px">
+                <el-select v-model="fromCode.bizId" placeholder="业务线" @change="bizId(fromCode.bizId)">
                   <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-form-item label="优先级" prop="priority" label-width="100px">
+                <el-select v-model="fromCode.priority" 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-form-item label="进展" prop="stage" label-width="100px">
+                <el-select v-model="fromCode.stage" 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 v-model="fromCode.type" placeholder="平台类型" @change="changeType(fromCode.type)">
+                  <el-option v-for="item in typeString" :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-form-item label="状态" prop="status" label-width="100px">
+                <el-select v-model="fromCode.status" placeholder="状态">
+                  <el-option v-for="item in processStatusEnumList" :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-select v-model="fromCode.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-form-item v-if="business" label="业务模块" prop="clientType" label-width="100px">
+                <el-select v-model="fromCode.clientType" placeholder="业务模块" @change="clientType(fromCode.clientType)">
+                  <el-option v-for="item in businessTypeStr" :key="item.code" :label="item.name" :value="item.name" />
                 </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 v-model="fromCode.notest" placeholder="是否免测">
+                  <el-option v-for="item in noTestEnumList" :key="item.code" :label="item.name" :value="item.code" />
+                </el-select>
+              </el-form-item>
+              <el-form-item v-if="osTypeShow" label="端类型" prop="osType" label-width="100px">
+                <el-select v-model="fromCode.osType" placeholder="端类型">
+                  <el-option v-for="item in osTypeEnum" :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-input v-model="fromCode.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-input v-model="fromCode.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-input v-model="fromCode.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-input v-model="fromCode.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-input v-model="fromCode.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-date-picker v-model="fromCode.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-date-picker v-model="fromCode.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-date-picker v-model="fromCode.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-date-picker v-model="fromCode.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-date-picker v-model="fromCode.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-input v-model="fromCode.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-input v-model="fromCode.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-input v-model="fromCode.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-date-picker v-model="fromCode.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-date-picker v-model="fromCode.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-date-picker v-model="fromCode.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-date-picker v-model="fromCode.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-date-picker v-model="fromCode.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-input v-model="fromCode.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-input v-model="fromCode.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 slot="footer" class="dialog-footer">
+          <el-button @click="dialogFormTaskVisible = false">取 消</el-button>
+          <el-button type="primary" @click="updateaddTaskData1(fromCode)">确 定</el-button>
         </div>
-      </el-tab-pane>
-    </el-tabs>
+      </el-dialog>
+
+      <!-- 打回 -->
+      <el-dialog title="打回原因" :visible.sync="centerDialogVisible" width="30%" center>
+        <el-input v-model="CallBackTheReason" type="textarea" :rows="2" />
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="centerDialogVisible = false">取 消</el-button>
+          <el-button type="primary" @click="yesCallBack(2, CallBackTheReason)">确 定</el-button>
+        </span>
+      </el-dialog>
+    </div>
   </div>
 </template>
 
 <script>
-import { updateTaskList, getTaskData } from '@/api/projectPage.js'
+import { updateTaskList, getTaskData, launchTestUpdate, projectGetTypeMap } from '@/api/projectPage.js'
 import { bugGetEnum } from '@/api/defectManage' // 下拉菜单data
 export default {
   name: 'TaskQuery',
@@ -203,25 +282,34 @@ export default {
       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' }],
+        bizId: [{ required: true, message: '业务线不能为空', trigger: 'change' }],
+        status: [{ required: true, message: '状态不能为空', trigger: 'change' }],
+        priority: [{ required: true, message: '优先级不能为空', trigger: 'change' }],
+        stage: [{ required: true, message: '进展不能为空', trigger: 'change' }],
         pm: [{ required: true, message: 'pm不能为空', trigger: 'change' }],
         taskType: [{ required: true, message: '任务类型不能为空', trigger: 'change' }],
-        businessType: [{ required: true, message: '业务模块不能为空', trigger: 'change' }]
+        clientType: [{ required: true, message: '业务模块不能为空', trigger: 'change' }],
+        osType: [{ required: true, message: '端类型不能为空', trigger: 'change' }]
       },
+      processStatusEnumList: [],
       reasonStr: [],
       platformTypeStr: [],
       stageStr: [],
+      osTypeEnum: [],
       discoveryMethodStr: [],
       repairResultStr: [],
       bizIdEnumList: [],
+      listTaskDatas: [],
+      projectTestReports: [],
+      dailyTestReports: [],
+      taskTypeStr: [],
+      noTestEnumList: [],
+      projectBug: [],
+      typeString: [],
       clientTypeEnumList: [],
       serviceTypeEnumList: [],
       businessTypeStr: [],
@@ -231,10 +319,20 @@ export default {
       userNames: localStorage.getItem('realname'),
       bizJson: localStorage.getItem('key'),
       form: {},
+      fromCode: {},
+      dialogFormTaskVisible: false,
+      centerDialogVisible: false,
       statusShow: false,
       repairShow: false,
+      queryLay: true,
+      reatedLay: false,
+      osTypeShow: false,
+      business: false,
       formLabelWidth1: '160px',
       formLabelWidth: '160px',
+      formLabelWidths: '160px',
+      formTask: {},
+      CallBackTheReason: '',
       objData: '',
       userData: '',
       taskIdStr: '',
@@ -244,62 +342,63 @@ export default {
     }
   },
   created() {
+    this.beforeCreate()
     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 : ''
-            }
+      this.url = window.location.href // 获取url中"?"符后的字串
+      this.arrurl = this.url.split('?id=')
+      getTaskData(this.arrurl[1]).then(res => {
+        this.listTaskDatas = res.data.launchTestInfoList
+        this.listTaskDatas.statusString = this.form.statusString
+        this.projectTestReports = res.data.projectTestReports
+        this.projectTestReports.statusString = this.form.statusString
+        this.dailyTestReports = res.data.dailyTestReports
+        this.projectBug = res.data.bugBaseInfoDOS
+        this.form = res.data
+        // console.log(this.form)
+        this.fromCode = res.data
+        // console.log(typeof (this.form.osType))
+        if (typeof (this.form.osType) === 'number') {
+          for (var a of this.osTypeEnum) {
+            this.form.osType === a.code ? this.form.osType = 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 : ''
+        }
+        if (typeof (this.form.type) === 'number') {
+          for (var s of this.bizIdEnumList) {
+            this.form.bizId === s.code ? this.typeString = s.child : ''
+            for (var d of this.typeString) {
+              this.form.type === d.code ? this.form.type = d.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
+        }
+        this.form.clientType !== '' ? this.business = true : this.business = false
+        this.business === false ? this.osTypeShow = false : this.osTypeShow = true
       })
     },
-    updateaddTaskData(vel) {
-      this.form = vel
-      this.$refs['form'].validate((valid) => {
+
+    // 编辑 提交
+    updateaddTaskData1(vel) {
+      this.$refs['fromCode'].validate((valid) => {
         if (valid) {
-          this.form.projectId = this.parameter
+          this.fromCode = vel
+          for (var ele of this.typeString) {
+            this.fromCode.type === ele.name ? this.fromCode.type = ele.code : ''
+          }
+          for (var q of this.osTypeEnum) {
+            this.fromCode.osType === q.name ? this.fromCode.osType = q.code : ''
+          }
+          this.osTypeShow === false ? this.$set(this.fromCode, 'osType', '') : ''
+          this.business === false ? this.$set(this.fromCode, 'clientType', '') : ''
           this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-          this.objData = { taskInfo: this.form, user: this.userData }
+          this.objData = { taskInfo: this.fromCode, user: this.userData }
           updateTaskList(this.objData).then(response => {
             if (response.code === 200) {
-              this.successFun()
+              this.getList()
+              this.successFun(response.msg)
+              this.dialogFormTaskVisible = false
             } else {
               this.errorFun(response.msg)
             }
@@ -309,18 +408,207 @@ export default {
         }
       })
     },
-    clickType(e) {
-      e === 1 ? this.businessTypeStr = this.serviceTypeEnumList : this.businessTypeStr = this.clientTypeEnumList
+
+    // change 业务线
+    bizId(e) {
+      for (var a of this.bizIdEnumList) {
+        if (e === a.code) {
+          this.typeString = a.child
+        }
+      }
+      this.business = false
+      this.osTypeShow = false
+      this.$set(this.fromCode, 'type', '')
+    },
+
+    // chnage 平台类型
+    changeType(e) {
+      for (var b of this.typeString) {
+        if (e === b.code) {
+          this.businessTypeStr = b.child
+          b.child !== null ? this.business = true : this.business = false
+        }
+
+        this.$set(this.fromCode, 'clientType', '')
+        this.$set(this.fromCode, 'osType', '')
+        this.osTypeShow = false
+      }
+    },
+
+    // 业务模块
+    clientType(e) {
+      for (var a of this.businessTypeStr) {
+        if (e === a.name) {
+          this.osTypeEnum = a.child
+          a.child !== null ? this.osTypeShow = true : this.osTypeShow = false
+        }
+        this.$set(this.fromCode, 'osType', '')
+      }
+    },
+
+    // 任务编辑
+    queryTaskData(ele) {
+      this.dialogFormTaskVisible = true
+      projectGetTypeMap().then(res => {
+        this.bizIdEnumList = res.data
+        ele.clientType !== '' ? this.business = true : this.business = false
+        this.osTypeShow === false ? this.$set(this.fromCode, 'osType', '') : ''
+        ele.osType !== '' ? this.osTypeShow = true : this.osTypeShow = false
+        for (var b of this.bizIdEnumList) {
+          ele.bizId === b.code ? this.typeString = b.child : ''
+        }
+        for (var s of this.typeString) {
+          ele.type === s.name ? this.businessTypeStr = s.child : ''
+        }
+        for (var c of this.businessTypeStr) {
+          ele.clientType === c.name ? this.osTypeEnum = c.child : ''
+        }
+      })
+    },
+
+    // 查看页面更改状态 优先级
+    updateaddTaskData(vel) {
+      this.formTask = vel
+      this.userData = { id: '', ename: this.userInformation, name: this.userNames }
+      this.objData = { taskInfo: this.formTask, user: this.userData }
+      updateTaskList(this.objData).then(response => {
+        if (response.code === 200) {
+          this.getList()
+          this.successFun(response.msg)
+        } else {
+          this.errorFun(response.msg)
+        }
+      })
+    },
+
+    // 通过
+    yesCallBack(e, ele) {
+      this.centerDialogVisible = false
+      if (e === 1) {
+        this.tt = { status: 1, id: ele }
+      } else {
+        this.tt = { status: 2, id: this.CallBackId, launchRepulseInfo: ele }
+      }
+      this.userData = { id: '', ename: this.userInformation, name: this.userNames }
+      this.objData = { launchTestInfo: this.tt, user: this.userData }
+      launchTestUpdate(this.objData).then(res => {
+        res.code === 200 ? this.successFun() : this.errorFun(res.msg)
+      })
+    },
+
+    // 打回
+    yesCallBack1(e, ele) {
+      this.centerDialogVisible = true
+      this.CallBackStatus = e
+      this.CallBackId = ele
+    },
+
+    // 提测报告跳转
+    queryData(ele) {
+      this.$router.push({ path: '/Platform/presentation/acceptTheReport', query: { data: ele.id }})
+    },
+
+    // bug报告跳转
+    queryBugData(ele) {
+      this.$router.push({ path: '/Platform/presentation/defectManageQuery', query: { id: ele.id }})
+    },
+
+    // 创建日报 提测 准出报告跳转
+    createReport(e, ele) {
+      if (ele.typeString === '客户端') {
+        switch (e) {
+          case 1:
+            this.$router.push({ path: '/Platform/presentation/PresentReport', query: { id: ele.id }})
+            break
+          case 2:
+            this.$router.push({ path: '/Platform/presentation/DailyNewsAdded', query: { id: ele.id }})
+            break
+          case 3:
+            this.$router.push({ path: '/Platform/presentation/ClientAcceptance', query: { id: ele.id }})
+            break
+          case 4:
+            this.$router.push({ path: '/Platform/defectManagement', query: { id: ele.id, code: 4 }})
+            break
+        }
+      } else {
+        switch (e) {
+          case 1:
+            this.$router.push({ path: '/Platform/presentation/presentationReport', query: { id: ele.id }})
+            break
+          case 2:
+            this.$router.push({ path: '/Platform/presentation/DailyNewsAdded', query: { id: ele.id }})
+            break
+          case 3:
+            this.$router.push({ path: '/Platform/presentation/Acceptance', query: { id: ele.id }})
+            break
+          case 4:
+            this.$router.push({ path: '/Platform/defectManagement', query: { id: ele.id, code: 4 }})
+            break
+        }
+      }
     },
+
+    // 返回
     clickOut() {
       this.$router.push({ path: '/Platform/projectPage' })
     },
-    successFun() {
-      this.$notify({ title: 'Success', message: 'Created Successfully', type: 'success', duration: 2000 })
+    successFun(e) {
+      this.$notify({ title: 'Success', message: e, type: 'success', duration: 2000 })
     },
     errorFun(e) {
       this.$notify({ title: 'Failed', message: e, type: 'error', duration: 2000 })
+    },
+    beforeCreate() {
+      projectGetTypeMap().then(res => {
+        this.bizIdEnumList = res.data
+      })
+      document.querySelector('body').setAttribute('style', 'background-color:#fff')
+    },
+    getClickId(e) {
+      this.$router.push({ path: '/Platform/presentation/testPresenyL', query: { data: e.id }})
+    },
+
+    // Dialog 关闭的回调
+    Refresh() {
+      this.osTypeShow === false ? this.$set(this.fromCode, 'osType', '') : ''
+      this.getList()
+    },
+
+    // 所有下拉菜单数据
+    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
+        this.noTestEnumList = res.data.noTestEnumList
+        this.processStatusEnumList = res.data.processStatusEnumList
+        this.osTypeEnum = res.data.osTypeEnum
+      })
     }
   }
 }
 </script>
+
+<style scoped>
+  .eleStyle {
+    width: 100%;
+    height:100%;
+    background:#F2F3F6;
+    /* position:fixed; */
+    display: inline-block;
+  }
+  .el-divider--horizontal {
+    margin: 0px;
+    background: #F2F3F6;
+  }
+</style>

+ 1 - 2
src/views/Platform/teamPage.vue

@@ -1,4 +1,3 @@
-
 <template>
   <el-container>
     <el-aside width="150pt">
@@ -102,7 +101,7 @@ export default {
       bizId: '',
       curIndex: 1, // 初始页
       pageSize: 10, // 每页的数据
-      total: 1,
+      total: 0,
       userData: '',
       folderName: '',
       list: [],

+ 344 - 196
src/views/Platform/workbench.vue

@@ -1,182 +1,184 @@
 <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>
+  <!-- -------------------------- 待处理 ----------------------------- -->
+
+  <div style="background:#F2F3F6">
+    <div style="background:#F2F3F6;font-size:0.9rem;margin: 0% 4% 0% 4%;">
+      <el-tabs v-model="activeName" @tab-click="handleClick">
+        <el-tab-pane label="待处理" name="first">
+          <div style="white-space:nowrap;margin:1% 0;"><img v-show="img" style="width:10px;height:10px;margin: 0 1% 0.45% 0" :src="imgUrl"><span class="titStyle">近期代办</span></div>
+          <div style="height:44em;">
+            <el-badge v-show="show1" :value="num1" class="item"><el-button type="primary" class="itemName" size="small" plain @click="clickNum(1)">{{ oneData.name }}</el-button></el-badge>
+            <el-badge v-show="show2" :value="num2" class="item"><el-button type="primary" class="itemName" size="small" plain @click="clickNum(2)">{{ oneData1.name }}</el-button></el-badge>
+            <el-badge v-show="show3" :value="num3" class="item"><el-button type="primary" class="itemName" size="small" plain @click="clickNum(3)">{{ oneData2.name }}</el-button></el-badge>
+            <el-badge v-show="show1" style="margin-bottom:24px;"><el-button type="primary" size="small" @click="clickNum(4)"> 更 多 </el-button></el-badge>
+            <div align="center" style="background:#FFFFFF; height:60vh%; text-align:center; border-radius:8px;">
+              <div align="center" style="height:35em;">
+                类型
+                <el-select v-model="bugOrTask1.isBugOrTask" size="small" style="width: 13%;margin: 2% 5% 2% 1%;" clearable placeholder="类型" @change="getstatus(bugOrTask1.isBugOrTask)">
+                  <el-option v-for="item in bugTask" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                状态
+                <el-select v-model="bugOrTask1.status" size="small" multiple collapse-tags style="width: 13%;margin: 2% 5% 2% 1%;" clearable placeholder="状态">
+                  <el-option v-for="item in bugStatusStr1" :key="item.code" :label="item.name" :value="item.code" />
+                </el-select>
+                优先级
+                <el-select v-model="bugOrTask1.priority" size="small" style="width: 13%;margin: 2% 5% 2% 1%;" clearable placeholder="优先级">
+                  <el-option v-for="item in bugLevelStr" :key="item.code" :label="item.name" :value="item.code" />
+                </el-select>
+                主题 <el-input v-model="bugOrTask1.title" size="small" placeholder="主题" clearable style="width: 14%;margin: 2% 5% 2% 1%;" />
+
+                <el-button type="primary" size="small" style="margin:2% 0%;" @click="clickQuery(bugOrTask1)">查询</el-button>
+                <!-- <div align="center" style="height:30em;"> -->
+                <el-table v-if="bug" :data="tableType" border max-height="390" :header-cell-style="getRowClass" style="width:95%;" align="center" @row-click="clickQueryTableTask">
+                  <el-table-column type="index" label="序号" width="150" align="center" />
+                  <el-table-column label="类型" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.isBugOrTask }}</template></el-table-column>
+                  <el-table-column label="主题" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.bugName }}</template></el-table-column>
+                  <el-table-column label="优先级" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.priority }}</template></el-table-column>
+                  <el-table-column 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 label="最近更新时间" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.gmtModify }}</template></el-table-column>
+                </el-table>
+                <el-table v-if="task" :data="tableType" border max-height="390" :header-cell-style="getRowClass" style="width: 95%" align="center" @row-click="clickQueryTableTask">
+                  <el-table-column type="index" label="序号" width="150" align="center" />
+                  <el-table-column label="类型" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.isBugOrTask }}</template></el-table-column>
+                  <el-table-column label="主题" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.name }}</template></el-table-column>
+                  <el-table-column label="优先级" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.priorityString }}</template></el-table-column>
+                  <el-table-column label="状态" min-width="100" 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="100" align="center"><template slot-scope="scope">{{ scope.row.modifyTime }}</template></el-table-column>
+                </el-table>
+              </div>
+            </div>
+          </div>
+        </el-tab-pane>
+
+        <!-- ------------------------- 工作统计 ------------------------------ -->
+
+        <el-tab-pane label="工作统计" name="second">
+          <div style="white-space:nowrap;margin:1% 0;"><img v-show="img" style="width:10px;height:10px;margin: 0 1% 0.45% 0" :src="imgUrl"><span class="titStyle">本周统计</span></div>
+          <div style="height:44em;">
+            <el-badge :value="HashSet" class="item"><el-button type="primary" class="itemName" size="small" plain @click="queryClickTable(1)">任务进行中</el-button></el-badge>
+            <el-badge :value="HashSet1" class="item"><el-button type="primary" class="itemName" size="small" plain @click="queryClickTable(2)">任务已上线</el-button></el-badge>
+            <el-badge :value="Vector" class="item"><el-button type="primary" class="itemName" size="small" plain @click="queryClickTable(3)">bug待解决</el-button></el-badge>
+            <el-badge :value="Vector1" class="item"><el-button type="primary" class="itemName" size="small" plain @click="queryClickTable(4)">bug已解决</el-button></el-badge>
+
+            <div style="background:#FFFFFF; height:60vh%; text-align:center; border-radius:8px;">
+              <div style="white-space:nowrap; padding: 0 2.5%;">
+                时间
+                <el-date-picker v-model="bugOrTask.value2" size="small" style="margin: 2% 6% 2% 1%;" type="datetimerange" :picker-options="pickerOptions" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" align="right" />
+                类型
+                <el-select v-model="bugOrTask.isBugOrTask" size="small" style="width: 13%;  margin: 2% 6% 2% 1%;" clearable placeholder="类型" @change="Setstatus(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" size="small" style="width: 13%;margin: 2% 6% 2% 1%;" clearable placeholder="状态">
+                  <el-option v-for="item in bugStatusStr" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-button type="primary" size="small" @click="clickQueryTaskAndBug(bugOrTask)">查询</el-button>
+              </div>
+              <div align="center" style="height:30em;">
+                <el-table v-if="taskShow" :data="tableData" :header-cell-style="getRowClass" border max-height="390" style="width: 95%" align="center" @row-click="clickQueryTableTask">
+                  <el-table-column type="index" label="序号" width="150" align="center" />
+                  <el-table-column label="主题" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.name }}</template></el-table-column>
+                  <el-table-column label="类型" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.isBugOrTask }}</template></el-table-column>
+                  <el-table-column label="状态" min-width="100" 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="100" align="center"><template slot-scope="scope">{{ scope.row.modifyTime }}</template></el-table-column>
+                </el-table>
+
+                <el-table v-if="bugShow" :data="tableData" :header-cell-style="getRowClass" border max-height="390" style="width: 95%" align="center" @row-click="clickQueryTableTask">
+                  <el-table-column type="index" label="序号" width="150" align="center" />
+                  <el-table-column label="主题" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.bugName }}</template></el-table-column>
+                  <el-table-column label="进展" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.stage }}</template></el-table-column>
+                  <el-table-column label="优先级" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.priority }}</template></el-table-column>
+                  <el-table-column 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 label="最近更新时间" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.gmtModify }}</template></el-table-column>
+                </el-table>
+              </div>
+            </div>
+          </div>
+        </el-tab-pane>
+      </el-tabs>
+
+      <!-- 项目展示 -->
+      <el-dialog tltle="详情" :visible.sync="dialogTableVisible" width="70%">
+        <el-table :data="gridData" max-height="390" @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>
+
+      <!-- 任务展示 -->
+      <el-dialog tltle="详情" :visible.sync="dialogTableVisible1" width="70%">
+        <el-table :data="gridData1" max-height="390" :header-cell-style="getRowClass" @row-click="clickQueryTable2">
+          <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-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-dialog>
+
+      <!-- 缺陷展示 -->
+      <el-dialog tltle="详情" :visible.sync="dialogTableVisibleTow" width="70%">
+        <el-table :data="gridData2" max-height="390" :header-cell-style="getRowClass" @row-click="clickQueryTable3">
           <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-column label="主题" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.bugName }}</template></el-table-column>
+          <el-table-column label="进展" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.stage }}</template></el-table-column>
+          <el-table-column label="优先级" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.priority }}</template></el-table-column>
+          <el-table-column label="状态" min-width="120" align="center"><template slot-scope="scope"><el-tag type="success">{{ scope.row.status }}</el-tag></template></el-table-column>
+          <el-table-column label="最近更新时间" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.gmtModify }}</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>
+      </el-dialog>
+    </div>
   </div>
 </template>
 <script>
-// import { bugGetEnum } from '@/api/defectManage'
-import { personalworkstationQueryBackLog, personalworkstationQueryBackLogBugAndTask, personalworkstationQueryStatusAndPriority } from '@/api/workbench'
+
+import { personalworkstationQueryBackLog, personalworkstationQueryBackLogBugAndTask, personalworkstationQueryStatusAndPriority, personalworkstationQueryPeriodBugAndTask } from '@/api/workbench'
+
 export default {
   name: 'Workbench',
   data() {
     return {
-      bugTask: [{ name: 'bug', value: 0 }, { name: 'task', value: 1 }],
+      imgUrl: require('@/assets/1566993017042.jpg'),
+      bugTask: [{ name: '缺陷', value: 0 }, { name: '任务', value: 1 }],
+      taskStatus: [{ name: '进行中', value: 0 }, { name: '已上线', value: 1 }],
+      bugStatus: [{ name: '待解决', value: 0 }, { name: '已解决', value: 1 }],
       userInformation: localStorage.getItem('username'),
-      userNames: localStorage.getItem('realname'),
       bizJson: localStorage.getItem('key'),
       dialogTableVisible: false,
+      dialogTableVisible1: false,
+      dialogTableVisibleTow: false,
+      img: false,
+      clievent: '{ background:#409EFF; color: #FFFFFF;}',
+      Vector1Arry: '',
+      VectorArry: '',
+      HashSetArray: '',
+      HashSet1Array: '',
       activeName: 'first',
       bugOrTask: {},
-      value: '',
-      values: [],
-      num: 10,
+      bugOrTask1: {},
+      value2: '',
       userName: '',
       Informationen: {},
       tableData: [],
+      tableType: [],
       bugLevelStr: [],
       bugStatusStr: [],
+      bugStatusStr1: [],
       gridData: [],
+      gridData1: [],
+      gridData2: [],
       isBugOrTask: '',
-      pageSize: 5,
-      curIndex: 1,
-      total: 1,
       oneData: {},
+      oneData1: {},
+      oneData2: {},
+      oneData3: {},
       show1: false,
       show2: false,
       show3: false,
@@ -184,13 +186,39 @@ export default {
       num2: '',
       num3: '',
       task: true,
-      bug: false
+      bug: false,
+      bugShow: false,
+      taskShow: true,
+      HashSet: '',
+      HashSet1: '',
+      Vector: '',
+      Vector1: '',
+      pickerOptions: {
+        shortcuts: [{
+          text: '最近一周',
+          onClick(picker) {
+            const end = new Date()
+            const start = new Date()
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+            picker.$emit('pick', [start, end])
+          }
+        }, {
+          text: '最近一个月',
+          onClick(picker) {
+            const end = new Date()
+            const start = new Date()
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+            picker.$emit('pick', [start, end])
+          }
+        }]
+      }
     }
   },
   created() {
     this.getTopShowData()
   },
   methods: {
+    // 待处理  list
     getTopShowData() {
       this.userName = { bizId: this.bizJson, ename: this.userInformation }
       personalworkstationQueryBackLog(this.userName).then(res => {
@@ -210,9 +238,24 @@ export default {
             this.num3 = res.data.list[2].taskCount
             this.show3 = true
           }
+          if (this.num1 + this.num2 + this.num3 === 0) {
+            this.img = false
+          } else {
+            this.img = true
+          }
+          this.oneData3 = res.data.list
         }
       })
     },
+
+    // 表头样式
+    getRowClass({ row, rowIndex }) {
+      if (rowIndex === 0) {
+        return 'background:#F0F2F4;color:#333B4A;'
+      }
+    },
+
+    // 展示项目和任务table
     clickNum(e) {
       switch (e) {
         case 1:
@@ -223,32 +266,40 @@ export default {
           break
         case 3:
           this.gridData = this.oneData2.taskInfoDOList
+          break
+        case 4:
+          this.gridData = this.oneData3
       }
       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
-      })
+      if (e.isBugOrTask === 0 || e.isBugOrTask === 1) {
+        this.isBugOrTask = e.isBugOrTask
+        this.userName = e
+        this.userName.status = e.status
+        this.userName.bizId = this.bizJson
+        this.userName.handlerPerson = this.userInformation
+        this.userName.title = e.title
+        personalworkstationQueryBackLogBugAndTask(this.userName).then(res => {
+          res.data.taskInfoList === null ? this.total = res.data.bugBaseInfoList.list.length : this.total = res.data.taskInfoList.length
+          res.data.taskInfoList === null ? this.tableType = res.data.bugBaseInfoList.list : this.tableType = res.data.taskInfoList
+          res.data.taskInfoList === null ? this.task = false : this.task = true
+          res.data.bugBaseInfoList === null ? this.bug = false : this.bug = true
+          for (var a of this.tableType) {
+            this.isBugOrTask === 0 ? this.isBugOrTask = '缺陷' : this.isBugOrTask = '任务'
+            a.isBugOrTask = this.isBugOrTask
+          }
+        })
+      } else {
+        this.$message({ message: '请选择类型', type: 'success', center: true })
+      }
     },
+
+    // 待处理的缺陷和任务切换
     getstatus(e) {
-      this.tableData = []
+      this.tableType = []
       this.Informationen.isBugOrTask = e
       this.Informationen.bizId = this.bizJson
       this.Informationen.handlerPerson = this.userInformation
@@ -264,27 +315,106 @@ export default {
           brr.push({ 'code': b, 'name': priorityList[b] })
         }
         this.bugLevelStr = brr
-        this.bugStatusStr = arr
+        this.bugStatusStr1 = arr
       })
     },
-    handleSizeChange(size) {
-      this.pageSize = size
+
+    // 工作统计全局list
+    handleClick(tab) {
+      this.total = 0
+      if (tab.label === '工作统计') {
+        this.userName = { bizId: this.bizJson, handlerPerson: this.userInformation, timeType: 1 }
+        personalworkstationQueryPeriodBugAndTask(this.userName).then(res => {
+          this.HashSet = res.data.taskInfoDoingList.length
+          this.HashSetArray = res.data.taskInfoDoingList
+          this.HashSet1 = res.data.taskInfoDoneList.length
+          this.HashSet1Array = res.data.taskInfoDoneList
+          this.Vector = res.data.bugBaseInfoDoingList.length
+          this.VectorArray = res.data.bugBaseInfoDoingList
+          this.Vector1 = res.data.bugBaseInfoDoneList.length
+          this.Vector1Arry = res.data.bugBaseInfoDoneList
+        })
+      }
     },
-    handleCurrentChange(curIndex) {
-      this.curIndex = curIndex
+
+    // 工作统计展示task,bug
+    queryClickTable(e) {
+      switch (e) {
+        case 1:
+          this.gridData1 = this.HashSetArray
+          this.dialogTableVisible1 = true
+          break
+        case 2:
+          this.gridData1 = this.HashSet1Array
+          this.dialogTableVisible1 = true
+          break
+        case 3:
+          this.gridData2 = this.VectorArray
+          this.dialogTableVisibleTow = true
+          break
+        case 4:
+          this.gridData2 = this.Vector1Arry
+          this.dialogTableVisibleTow = true
+      }
+    },
+
+    // 工作统计查询
+    clickQueryTaskAndBug(e) {
+      this.isBugOrTask = e.isBugOrTask
+      if (e.value2) {
+        if (e.value2 !== '') {
+          var obj = {
+            bizId: this.bizJson,
+            timeType: 2,
+            // status: e.status,
+            isBugOrTask: e.isBugOrTask,
+            startTime: e.value2[0],
+            endTime: e.value2[1],
+            handlerPerson: this.userInformation
+          }
+          personalworkstationQueryPeriodBugAndTask(obj).then(res => {
+            if (obj.isBugOrTask === 0) {
+              this.tableData = res.data.bugBaseInfoDoingList
+              this.bugShow = true
+              this.taskShow = false
+            } else {
+              this.tableData = res.data.taskInfoDoingList
+              this.bugShow = false
+              this.taskShow = true
+            }
+            this.total = this.tableData.length
+            for (var a of this.tableData) {
+              this.isBugOrTask === 1 ? a.isBugOrTask = '任务' : a.isBugOrTask = '缺陷'
+            }
+          })
+        } else {
+          this.$message({ message: '请选择想要查看的时间段或日期', type: 'success', center: true })
+        }
+      } else {
+        this.$message({ message: '请选择想要查看的时间段或日期', type: 'success', center: true })
+      }
     },
-    handleClick(tab, event) {
-      console.log(tab, event)
+
+    // 工作统计状态切换
+    Setstatus(e) {
+      e === 1 ? this.tableData.isBugOrTask = '任务' : this.tableData.isBugOrTask = '缺陷'
+      e === 0 ? this.bugStatusStr = this.bugStatus : this.bugStatusStr = this.taskStatus
     },
+
     clickQueryTable(e) {
       this.$router.push({ path: '/Platform/presentation/projectQuery', query: { id: e.projectId }})
     },
+    clickQueryTable2(e) {
+      this.$router.push({ path: '/Platform/presentation/taskQuery', query: { id: e.id }})
+    },
+    clickQueryTable3(e) {
+      this.$router.push({ path: '/Platform/presentation/defectManageQuery', query: { id: e.id }})
+    },
     clickQueryTableTask(e) {
-      console.log(e)
-      if (e.isBugOrTask === 'task') {
+      if (e.isBugOrTask === '任务') {
         this.$router.push({ path: '/Platform/presentation/taskQuery', query: { id: e.id }})
       }
-      if (e.isBugOrTask === 'bug') {
+      if (e.isBugOrTask === '缺陷') {
         this.$router.push({ path: '/Platform/presentation/defectManageQuery', query: { id: e.id }})
       }
     }
@@ -292,17 +422,35 @@ export default {
 }
 </script>
 <style scoped>
-  .el-divider {
-    margin-top:1%;
+  .titStyle {
+    font-size:25px;
+    color: #333B4A;
+    font-weight:bold;
+    padding:1% 0;
+  }
+
+  .item {
+  margin-top: 0.625em;
+  margin-right: 2.5em;
+  }
+
+.item1 {
+  margin-top: 0.3em;
+  margin-right: 0.4em;
   }
-  .el-col {
-    text-align: center;
-    border: 1px solid #ccc;
-    margin: 1%;
-    padding: 1.5%;
+
+.itemName {
+  width: 8.875em;
+  height: 3.25em;
+  font-size: 1em;
+  border: 1px solid #BFC6DC;
+  border-radius:  0.25em;
+  background: #FFFFFF;
+  color:#6F7C93;
+  margin-bottom: 25%;
   }
-  .num {
-    color: blue;
-    cursor: pointer;
+.itemName:hover {
+    background:#409EFF;
+    color: #FFFFFF;
   }
 </style>

+ 318 - 0
src/views/quality/qualityMeasurement.vue

@@ -0,0 +1,318 @@
+
+<template>
+  <!-- 质量度量 -->
+  <el-container>
+    <el-aside width="14%" style="margin:1%; height:100%; box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)">
+      <el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick" />
+    </el-aside>
+    <el-main style=" margin:1% 1% 1% 0%; box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)">
+      {{ bizName }} : <span style="font-weich: bold; font-size:24px;">{{ bizData }}</span>
+      <el-tabs v-model="activeName" style="margin: 3% 0%;" @tab-click="handleClick">
+        <el-tab-pane label="线上问题" name="first">
+          <el-form :inline="true" :model="formInline" class="demo-form-inline">
+            <el-form-item label="时间类型:">
+              <el-date-picker v-model="formInline.value1" size="medium" type="date" placeholder="发生时间" />
+            </el-form-item>
+            <el-form-item label="开始时间:">
+              <el-date-picker v-model="formInline.value1" size="medium" type="date" placeholder="选择日期" />
+            </el-form-item>
+            <el-form-item label="结束时间:" style="margin: 0 4%">
+              <el-date-picker v-model="formInline.value1" size="medium" type="date" placeholder="选择日期" />
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" size="medium" @click="onSubmit">查询</el-button>
+            </el-form-item>
+            <div style="display: flex;">
+              <div style="flex:1; text-align: right;">
+                <el-form-item label="是否复盘:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="是否定责:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="发现阶段:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+              </div>
+              <div style="flex:1; text-align: right">
+                <el-form-item label="问题等级:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="预期拦截阶段:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="处理时长:" />
+                <el-input v-model="formInline.value1" class="selectWidth" style="width:45px;" />
+                <span style="font-size:12px;">小时~</span>
+                <el-input v-model="formInline.value1" style="width:45px;" />
+                <span style="font-size:12px;">小时</span>
+              </div>
+              <div style="flex:1; text-align: right">
+                <el-form-item label="问题状态:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="发现手段:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+              </div>
+              <div style="flex:1; text-align: right">
+                <el-form-item label="处理结论:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="是否免提测:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+              </div>
+            </div>
+            <div>线上问题</div><hr>
+            <el-table :data="tableData" border style="width: 100%">
+              <el-table-column prop="date" label="日期" width="180" />
+              <el-table-column prop="name" label="姓名" width="180" />
+              <el-table-column prop="address" label="地址" />
+              <el-table-column prop="date" label="日期" width="180" />
+              <el-table-column prop="name" label="姓名" width="180" />
+              <el-table-column prop="address" label="地址" />
+            </el-table>
+          </el-form>
+        </el-tab-pane>
+        <el-tab-pane label="上线过程" name="second">
+          <el-form :inline="true" :model="formInline" class="demo-form-inline">
+            <el-form-item label="开始时间:">
+              <el-date-picker v-model="formInline.value1" size="medium" type="date" placeholder="选择日期" />
+            </el-form-item>
+            <el-form-item label="结束时间:" style="margin: 0 6%">
+              <el-date-picker v-model="formInline.value1" size="medium" type="date" placeholder="选择日期" />
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" size="medium" @click="onSubmit">查询</el-button>
+            </el-form-item>
+            <div style="display: flex;">
+              <div style="flex:1; text-align: right;">
+                <el-form-item label="是否免提测:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="是否有预发环境:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="是否直接全流量:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+              </div>
+              <div style="flex:1; text-align: right">
+                <el-form-item label="上线阶段:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="是否走预发环境:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="是否紧急上线:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+              </div>
+              <div style="flex:1; text-align: right">
+                <el-form-item label="预发停留时长:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="执行状态:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+              </div>
+              <div style="flex:1; text-align: right">
+                <el-form-item label="小流量停留时长:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="执行结果:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+              </div>
+            </div>
+            <div>上线过程</div><hr>
+            <el-table :data="tableData" border style="width: 100%">
+              <el-table-column prop="date" label="日期" width="180" />
+              <el-table-column prop="name" label="姓名" width="180" />
+              <el-table-column prop="address" label="地址" />
+              <el-table-column prop="date" label="日期" width="180" />
+              <el-table-column prop="name" label="姓名" width="180" />
+              <el-table-column prop="address" label="地址" />
+            </el-table>
+          </el-form>
+        </el-tab-pane>
+        <el-tab-pane label="线下缺陷" name="third">
+          <el-form :inline="true" :model="formInline" class="demo-form-inline">
+            <el-form-item label="开始时间:">
+              <el-date-picker v-model="formInline.value1" size="medium" type="date" placeholder="选择日期" />
+            </el-form-item>
+            <el-form-item label="结束时间:" style="margin: 0 6%">
+              <el-date-picker v-model="formInline.value1" size="medium" type="date" placeholder="选择日期" />
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" size="medium" @click="onSubmit">查询</el-button>
+            </el-form-item>
+            <div style="display: flex;">
+              <div style="flex:1; text-align: right;">
+                <el-form-item label="平台类型:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="优先级:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+              </div>
+              <div style="flex:1; text-align: right">
+                <el-form-item label="所属阶段:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="状态:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+              </div>
+              <div style="flex:1; text-align: right">
+                <el-form-item label="错误类型:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="解决结果:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+              </div>
+              <div style="flex:1; text-align: right">
+                <el-form-item label="缺陷分级:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+                <el-form-item label="发现方法:" />
+                <el-select v-model="formInline.value1" size="medium" clearable placeholder="请选择" :label-width="inputLabel" class="selectWidth">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+              </div>
+            </div>
+            <div>线下缺陷</div><hr>
+            <el-table :data="tableData" border style="width: 100%">
+              <el-table-column prop="date" label="日期" width="180" />
+              <el-table-column prop="name" label="姓名" width="180" />
+              <el-table-column prop="address" label="地址" />
+              <el-table-column prop="date" label="日期" width="180" />
+              <el-table-column prop="name" label="姓名" width="180" />
+              <el-table-column prop="address" label="地址" />
+            </el-table>
+          </el-form>
+        </el-tab-pane>
+      </el-tabs>
+    </el-main>
+  </el-container>
+</template>
+
+<script>
+// import { apiBusinessLineAll } from '@/api/qualityMeasurement.js'
+// import Json from '@/api/home.json'
+export default {
+  name: 'QualityMeasurement',
+  data() {
+    return {
+      bizName: '业务线',
+      bizData: '海马',
+      inputLabel: '100px',
+      statusOptionss: [],
+      tableData: [{
+        date: '2016-05-02',
+        name: '王小虎',
+        address: '上海市普陀区金沙'
+      }],
+      formInline: {
+        user: '',
+        region: ''
+      },
+      data: [{
+        label: '一级 1',
+        children: [{
+          label: '二级 1-1',
+          children: [{
+            label: '三级 1-1-1'
+          }]
+        }]
+      }, {
+        label: '一级 2',
+        children: [{
+          label: '二级 2-1',
+          children: [{
+            label: '三级 2-1-1'
+          }]
+        }, {
+          label: '二级 2-2',
+          children: [{
+            label: '三级 2-2-1'
+          }]
+        }]
+      }, {
+        label: '一级 3',
+        children: [{
+          label: '二级 3-1',
+          children: [{
+            label: '三级 3-1-1'
+          }]
+        }, {
+          label: '二级 3-2',
+          children: [{
+            label: '三级 3-2-1'
+          }]
+        }]
+      }],
+      defaultProps: {
+        children: 'children',
+        label: 'label'
+      }
+    }
+  },
+  created() {
+    this.getNav()
+  },
+  methods: {
+
+    getNav() {
+      // console.log(Json)
+      // this.$http.get('../../../static/home.json').then(function(res) { console.log(res) })
+    }
+
+  },
+  handleNodeClick(data) {
+    console.log(data)
+  },
+  handleClick(tab, event) {
+    console.log(tab, event)
+  },
+  onSubmit() {
+    console.log('submit!')
+  }
+}
+</script>
+
+<style scoped>
+.selectWidth {
+  width: 59%;
+ margin-left: -8%;
+}
+</style>
+