qinzhipeng_v 5 лет назад
Родитель
Сommit
342351ab21
28 измененных файлов с 2544 добавлено и 2060 удалено
  1. 9 0
      src/api/ResultPage.js
  2. 1 1
      src/api/projectPage.js
  3. 22 4
      src/api/qualityCenter.js
  4. 0 7
      src/router/index.js
  5. 170 129
      src/views/Platform/bugManage/bugCreate.vue
  6. 191 82
      src/views/Platform/bugManage/bugQuery.vue
  7. 172 135
      src/views/Platform/bugManage/bugUpdate.vue
  8. 14 7
      src/views/Platform/defectManagement.vue
  9. 389 43
      src/views/Platform/presentation/Acceptance.vue
  10. 18 42
      src/views/Platform/presentation/Assumptions.vue
  11. 130 35
      src/views/Platform/presentation/ClientAcceptance.vue
  12. 19 14
      src/views/Platform/presentation/DailyNewsAdded.vue
  13. 213 144
      src/views/Platform/presentation/PresentReport.vue
  14. 4 4
      src/views/Platform/presentation/ResultPage.vue
  15. 184 23
      src/views/Platform/presentation/ResultPageyL.vue
  16. 138 189
      src/views/Platform/presentation/acceptTheReport.vue
  17. 189 162
      src/views/Platform/presentation/presentationReport.vue
  18. 6 9
      src/views/Platform/presentation/testPage.vue
  19. 7 6
      src/views/Platform/presentation/testPresentation.vue
  20. 5 5
      src/views/Platform/presentation/testPresenyL.vue
  21. 1 1
      src/views/Platform/projectPage.vue
  22. 14 14
      src/views/Platform/projectQuery/projectQuery.vue
  23. 23 23
      src/views/Platform/projectQuery/taskQuery.vue
  24. 34 29
      src/views/Platform/workbench.vue
  25. 1 1
      src/views/mock/httpmock.vue
  26. 5 468
      src/views/quality/qualityMarket.vue
  27. 543 452
      src/views/quality/qualityMeasurement.vue
  28. 42 31
      src/views/quality/qualityProcess.vue

+ 9 - 0
src/api/ResultPage.js

@@ -66,3 +66,12 @@ export function dailyReportSendmail(data) {
     data
   })
 }
+
+// bug数据获取
+export function bugFinishList(data) {
+  return request({
+    url: mockUrl + '/bug/FinishList',
+    method: 'post',
+    data
+  })
+}

+ 1 - 1
src/api/projectPage.js

@@ -96,7 +96,7 @@ export function launchTestUpdate(data) {
 // 业务线  新加
 export function projectGetTypeMap() {
   return request({
-    url: mockUrl + '/project/getTypeMap',
+    url: mockUrl + '/setting/getTypeMap',
     method: 'get'
   })
 }

+ 22 - 4
src/api/qualityCenter.js

@@ -20,19 +20,37 @@ export function getDepartment(data) {
 }
 
 // 上线数据
-export function getOnlineInfo(data) {
+export function getOnlineInfo(params) {
   return request({
     url: qualityUrl + '/api/online-process/data-info',
     method: 'get',
-    data
+    params
   })
 }
 
 // 大盘数据
-export function getOnlineAllCount(data) {
+export function getOnlineAllCount(params) {
   return request({
     url: qualityUrl + '/api/online-process/data-all-count',
     method: 'get',
-    data
+    params
+  })
+}
+
+// 线上问题
+export function getOnlineProblem(params) {
+  return request({
+    url: qualityUrl + '/api/online-problem/data-all-count',
+    method: 'get',
+    params
+  })
+}
+
+// 线上缺陷
+export function getOnlineVitium(params) {
+  return request({
+    url: qualityUrl + '/api/off-line-defects/data-all-count',
+    method: 'get',
+    params
   })
 }

+ 0 - 7
src/router/index.js

@@ -401,13 +401,6 @@ export const constantRoutes = [
     // hidden: true,
     meta: { title: '质量度量', icon: 'rule' },
     children: [
-      {
-        path: 'qualityMarket',
-        name: '质量大盘',
-        // hidden: true,
-        component: () => import('@/views/quality/qualityMarket.vue'),
-        meta: { title: '质量大盘' }
-      },
       {
         path: 'qualityMarket',
         name: '质量大盘',

+ 170 - 129
src/views/Platform/bugManage/bugCreate.vue

@@ -2,110 +2,123 @@
   <div id="window-judge" class="set-background">
     <el-form ref="form" :model="form" :rules="serviceDataRules">
       <div class="block">
-        <el-form-item prop="bugName" label="标题" :label-width="formLabelWidth"><el-input v-model="form.bugName" autocomplete="off" placeholder="普惠质量产品工具平台..." style="width:77.2%;" /></el-form-item>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" prop="bizId" label="业务线" :label-width="formLabelWidth1">
-            <el-select v-model="form.bizId" placeholder="业务线" style="width:54.5%;" @change="clickChangePlatform(form.bizId)">
-              <el-option v-for="item in bizOptions" :key="item.value" :label="item.name" :value="item.code" />
-            </el-select>
-          </el-form-item>
-          <el-form-item style="flex-grow:1" label="平台类型" prop="platformType" :label-width="formLabelWidth1">
-            <el-select ref="clearPlatform" v-model="form.platformType" placeholder="平台类型" style="width:54.5%;" @change="clickChangeBusiness(form.platformType)">
-              <el-option v-for="item in platformTypeStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
-        </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" prop="taskId" label="任务" label-width="99px">
-            <el-select v-model="form.taskId" filterable placeholder="任务" style="width: 245px;margin-right: -50px;" @change="submitJudge(form.taskId)">
-              <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
-            </el-select>
-          </el-form-item>
-          <el-form-item v-if="businessTypeShow" style="flex-grow:1" prop="businessType" label="业务模块" :label-width="formLabelWidth1">
-            <el-select ref="clearBusiness" v-model="form.businessType" placeholder="业务模块" style="width:54.5%;">
-              <el-option v-for="item in businessTypeStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
+        <div class="block-flex">
+          <el-form-item label="标题" prop="bugName" label-width="110px"><el-input v-model="form.bugName" autocomplete="off" placeholder="普惠质量产品工具平台..." style="width:90%;" /></el-form-item>
+          <div class="line-between">
+            <el-form-item label="类型" prop="bugType" label-width="124px">
+              <el-select v-model="form.bugType" style="width:76%;" placeholder="类型">
+                <el-option v-for="item in bugTypeStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="所处阶段" prop="stage" label-width="147px">
+              <el-select v-model="form.stage" placeholder="所处阶段" style="width:76%;">
+                <el-option v-for="item in stageStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="状态" prop="status" label-width="124px">
+              <el-select v-model="form.status" placeholder="状态" style="width:76%;">
+                <el-option v-for="item in bugStatusStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="问题原因" prop="reason" label-width="147px">
+              <el-select v-model="form.reason" style="width:76%;" placeholder="问题原因">
+                <el-option v-for="item in reasonStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="级别" prop="priority" label-width="124px">
+              <el-select v-model="form.priority" style="width:76%;" placeholder="级别">
+                <el-option v-for="item in bugLevelStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="发现方式" prop="discoveryMethod" label-width="147px">
+              <el-select v-model="form.discoveryMethod" style="width:76%;" placeholder="发现方式">
+                <el-option v-for="item in discoveryMethodStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item prop="taskId" label="任务" label-width="124px">
+              <el-select v-model="form.taskId" filterable placeholder="任务" style="width:76%;">
+                <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+              </el-select>
+            </el-form-item>
+            <el-form-item prop="bizId" label="业务线" label-width="147px">
+              <el-select v-model="form.bizId" placeholder="业务线" style="width:76%;" @change="clickChangePlatform(form.bizId)">
+                <el-option v-for="item in bizOptions" :key="item.value" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between-add">
+            <el-form-item label="平台类型" prop="platformType" label-width="124px">
+              <el-select ref="clearPlatform" v-model="form.platformType" placeholder="平台类型" style="width:76%;" @change="clickChangeBusiness(form.platformType)">
+                <el-option v-for="item in platformTypeStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item v-if="businessTypeShow" prop="clientType" label="业务模块" label-width="147px">
+              <el-select ref="clearBusiness" v-model="form.clientType" placeholder="业务模块" style="width:76%;" @change="clickChangeModule(form.clientType)">
+                <el-option v-for="item in businessTypeStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between-add">
+            <el-form-item v-if="moduleTypeShow" label="工程模块" prop="moduleId" label-width="124px">
+              <el-select ref="clearPlatform" v-model="form.moduleId" placeholder="工程模块" style="width:76%;">
+                <el-option v-for="item in moduleStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <el-form-item label="bug描述" prop="bugDescribe" label-width="110px"><el-input v-model="form.bugDescribe" type="textarea" placeholder="bug描述" rows="2" style="width:90%;" /></el-form-item>
         </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="类型" prop="bugType" :label-width="formLabelWidth1">
-            <el-select v-model="form.bugType" style="width:54.5%;" placeholder="类型">
-              <el-option v-for="item in bugTypeStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
-          <el-form-item style="flex-grow:1" label="发现方式" prop="discoveryMethod" :label-width="formLabelWidth1">
-            <el-select v-model="form.discoveryMethod" style="width:54.5%;" placeholder="发现方式">
-              <el-option v-for="item in discoveryMethodStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
-        </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="级别" prop="priority" :label-width="formLabelWidth1">
-            <el-select v-model="form.priority" style="width:54.5%;" placeholder="级别">
-              <el-option v-for="item in bugLevelStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
-          <el-form-item style="flex-grow:1" label="问题原因" prop="reason" :label-width="formLabelWidth1">
-            <el-select v-model="form.reason" style="width:54.5%;" placeholder="问题原因">
-              <el-option v-for="item in reasonStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
-        </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="状态" prop="status" :label-width="formLabelWidth1">
-            <el-select v-model="form.status" placeholder="状态" style="width:54.5%;">
-              <el-option v-for="item in bugStatusStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
-          <el-form-item style="flex-grow:1" label="所处阶段" prop="stage" :label-width="formLabelWidth1">
-            <el-select v-model="form.stage" placeholder="所处阶段" style="width:54.5%;">
-              <el-option v-for="item in stageStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
-        </div>
-        <el-form-item label="bug描述" prop="bugDescribe" :label-width="formLabelWidth"><el-input v-model="form.bugDescribe" type="textarea" placeholder="bug描述" rows="2" style="width:77.2%;" /></el-form-item>
       </div>
       <div class="block">
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="创建人" label-width="21%"><el-input v-model="form.creator" autocomplete="off" style="width:53.5%;" /></el-form-item>
-          <el-form-item style="flex-grow:1" label="bug责任人" prop="assigner" :label-width="formLabelWidth1"><el-input v-model="form.assigner" autocomplete="off" style="width:54.5%;" /></el-form-item>
-        </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="当前处理人" prop="currentHandler" :label-width="formLabelWidth1"><el-input v-model="form.currentHandler" autocomplete="off" style="width:55%;" /></el-form-item>
-          <el-form-item style="flex-grow:1" label="开始开发时间" label-width="24.5%">    <el-date-picker
-            v-model="form.startDevTime"
-            type="datetime"
-            placeholder="选择时间"
-            style="width:53%;"
-            value-format="yyyy-MM-dd HH:hh:mm"
-          /></el-form-item>
-        </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1;" label="reopen次数" prop="reopenTimes" label-width="22.6%;"><el-input v-model="form.reopenTimes" autocomplete="off" style="width:56%;" /></el-form-item>
-          <el-form-item style="flex-grow:1;padding-right:15px;" label="提交测试时间" label-width="26.5%">    <el-date-picker
-            v-model="form.waitTestTime"
-            type="datetime"
-            placeholder="选择时间"
-            style="width:54%;"
-            value-format="yyyy-MM-dd HH:hh:mm"
-          /></el-form-item>
+        <div class="block-flex">
+          <div class="line-between">
+            <el-form-item label="创建人" label-width="124px"><el-input v-model="form.creator" autocomplete="off" style="width:76%;" /></el-form-item>
+            <el-form-item label="bug责任人" prop="assigner" label-width="147px"><el-input v-model="form.assigner" autocomplete="off" style="width:76%;" /></el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="当前处理人" prop="currentHandler" label-width="124px"><el-input v-model="form.currentHandler" autocomplete="off" style="width:76%;" /></el-form-item>
+            <el-form-item label="开始开发时间" label-width="147px">    <el-date-picker
+              v-model="form.startDevTime"
+              type="datetime"
+              placeholder="选择时间"
+              style="width:76%;"
+              value-format="yyyy-MM-dd HH:hh:mm"
+            /></el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="reopen次数" prop="reopenTimes" label-width="124px"><el-input v-model="form.reopenTimes" autocomplete="off" style="width:76%;" /></el-form-item>
+            <el-form-item label="提交测试时间" label-width="147px">    <el-date-picker
+              v-model="form.waitTestTime"
+              type="datetime"
+              placeholder="选择时间"
+              style="width:76%;"
+              value-format="yyyy-MM-dd HH:hh:mm"
+            /></el-form-item>
+          </div>
         </div>
       </div>
       <div class="block">
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="机型" :label-width="formLabelWidth1"><el-input v-model="form.model" autocomplete="off" style="width:54.5%;" /></el-form-item>
-          <el-form-item style="flex-grow:1" label="地图类型" :label-width="formLabelWidth1"><el-input v-model="form.mapType" autocomplete="off" style="width:54.5%;" /></el-form-item>
-        </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="OS类型" :label-width="formLabelWidth1"><el-input v-model="form.osType" autocomplete="off" style="width:54.5%;" /></el-form-item>
-          <el-form-item style="flex-grow:1" label="地图版本号" :label-width="formLabelWidth1"><el-input v-model="form.mapVersion" autocomplete="off" style="width:54.5%;" /></el-form-item>
-        </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="网络类型" :label-width="formLabelWidth1"><el-input v-model="form.networkType" autocomplete="off" style="width:54.5%;" /></el-form-item>
-          <el-form-item style="flex-grow:1" label="SDK版本" :label-width="formLabelWidth1"><el-input v-model="form.sdkVersion" autocomplete="off" style="width:54.5%;" /></el-form-item>
-        </div>
-        <div style="width:100%;">
-          <el-form-item label="app版本号" label-width="11%"><el-input v-model="form.appVersion" autocomplete="off" style="width:27.2%;" /></el-form-item>
+        <div class="block-flex">
+          <div class="line-between">
+            <el-form-item label="机型" label-width="124px"><el-input v-model="form.model" autocomplete="off" style="width:76%;" /></el-form-item>
+            <el-form-item label="地图类型" label-width="147px"><el-input v-model="form.mapType" autocomplete="off" style="width:76%;" /></el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="OS类型" label-width="124px"><el-input v-model="form.osType" autocomplete="off" style="width:76%;" /></el-form-item>
+            <el-form-item label="地图版本号" label-width="147px"><el-input v-model="form.mapVersion" autocomplete="off" style="width:76%;" /></el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="网络类型" label-width="124px"><el-input v-model="form.networkType" autocomplete="off" style="width:76%;" /></el-form-item>
+            <el-form-item label="SDK版本" label-width="147px"><el-input v-model="form.sdkVersion" autocomplete="off" style="width:76%;" /></el-form-item>
+          </div>
+          <div class="line-between-add">
+            <el-form-item label="app版本号" label-width="124px"><el-input v-model="form.appVersion" autocomplete="off" style="width:76%;" /></el-form-item>
+          </div>
         </div>
       </div>
       <div class="block-end">
@@ -119,12 +132,12 @@
             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://page-daily.kuaidadi.com/upload/img.node"
+            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/" 原始地址-->
-            <el-button size="small">上传附件</el-button>
+            <el-button size="small">点击上传</el-button>
           </el-upload>
         </div>
         <el-form-item class="submit">
@@ -160,8 +173,6 @@
       <!-- <el-form-item label="创建时间" :label-width="formLabelWidth"><el-input v-model="form.gmtCreate" autocomplete="off" /></el-form-item> -->
       <!-- <el-form-item label="修改时间" :label-width="formLabelWidth"><el-input v-model="form.gmtModify" autocomplete="off" /></el-form-item> -->
     </el-form>
-    <!-- <div slot="footer" class="dialog-footer">
-    </div> -->
   </div>
 </template>
 
@@ -178,7 +189,7 @@ export default {
         bizId: '',
         taskId: '',
         platformType: '',
-        businessType: '',
+        clientType: '',
         creator: ''
       },
       businessTypeStr: [],
@@ -190,6 +201,7 @@ export default {
       reasonStr: [],
       bugStatusStr: [],
       stageStr: [],
+      moduleStr: [],
       fileList: [],
       serviceTypeEnumList: [],
       clientTypeEnumList: [],
@@ -200,6 +212,7 @@ export default {
         bizId: [{ required: true, message: '业务线不能为空', trigger: 'change' }],
         // bugName: [{ required: true, message: '主题不能为空', trigger: 'change' }],
         taskId: [{ required: true, message: '任务不能为空', trigger: 'change' }],
+        moduleId: [{ required: true, message: '工程模块不能为空', trigger: 'change' }],
         // projectId: [{ required: true, message: '项目ID不能为空', trigger: 'change' }],
         bugType: [{ required: true, message: 'bug类型不能为空', trigger: 'change' }],
         reopenTimes: [{ required: true, message: 'reopen不能为空', trigger: 'change' }],
@@ -212,13 +225,14 @@ export default {
         assigner: [{ required: true, message: 'bug责任人不能为空', trigger: 'change' }],
         currentHandler: [{ required: true, message: 'bug处理人不能为空', trigger: 'change' }],
         bugDescribe: [{ required: true, message: 'bug描述不能为空', trigger: 'change' }],
-        businessType: [{ required: true, message: '业务模块不能为空', trigger: 'change' }]
+        clientType: [{ required: true, message: '业务模块不能为空', trigger: 'change' }]
       },
       formLabelWidth: '11%',
       formLabelWidth1: '22%',
       userData: '',
       submitMissionJudge: '',
       businessTypeShow: false,
+      moduleTypeShow: false,
       userInformation: localStorage.getItem('username'),
       userNames: localStorage.getItem('realname')
     }
@@ -226,7 +240,6 @@ export default {
   created() {
     this.bugListSelect()
     this.forkDown()
-    this.taskListGet()
   },
   methods: {
     handleChange(file, fileList) {
@@ -244,27 +257,27 @@ export default {
         this.clientTypeEnumList = res.data.clientTypeEnumList
         this.serviceTypeEnumList = res.data.serviceTypeEnumList
       })
+      await taskListCreate({ statusList: [6, 7] }).then(res => { // 获取任务数据 (后期用this.taskStatus)
+        this.taskIdStr = res.data
+      })
       if (this.$route.query.id) {
         getTaskData(this.$route.query.id).then(res => {
-          console.log(res.data)
           this.taskStatus = res.data.status
-          this.$set(this.form, 'taskId', res.data.name)
-          this.$set(this.form, 'bizId', res.data.bizIdString)
-          this.$set(this.form, 'platformType', res.data.typeString)
+          // const pauseTaskId = this.taskIdStr.filter(value=>value.name === res.data.name)
+          this.$set(this.form, 'taskId', res.data.id)
+          this.$set(this.form, 'bizId', res.data.bizId)
+          this.$set(this.form, 'platformType', res.data.type)
           this.$set(this.form, 'creator', res.data.creater)
           if (res.data.clientType) {
             this.businessTypeShow = true
-            this.$set(this.form, 'businessType', res.data.clientType)
+            this.$set(this.form, 'clientType', res.data.clientType)
           }
-          this.$set(this.form, 'businessType', res.data.clientType)
+          this.$set(this.form, 'clientType', res.data.clientType)
           this.platformTypeStr = this.bizOptions.filter(value => value.code === res.data.bizId)[0].child
-          if (this.form.businessType) {
+          if (this.form.clientType) {
             this.businessTypeStr = this.platformTypeStr.filter(value => value.name === res.data.typeString)[0].child
           }
         })
-        this.taskListGet()
-      } else {
-        this.taskListGet()
       }
     },
     forkDown() {
@@ -276,26 +289,36 @@ export default {
         }
       })
     },
-    taskListGet() {
-      taskListCreate({ statusList: [6, 7] }).then(res => { // 获取任务数据 (后期用this.taskStatus)
-        this.taskIdStr = res.data
-      })
-    },
     // 业务线取子数据
     clickChangePlatform(e) {
       this.platformTypeStr = this.bizOptions.filter(value => value.code === e)[0].child
+      this.businessTypeStr = []
+      this.moduleStr = []
       this.$set(this.form, 'platformType', '')
-      this.$set(this.form, 'businessType', '')
+      this.$set(this.form, 'clientType', '')
+      this.$set(this.form, 'moduleId', '')
     },
     // 业务线取子数据
     clickChangeBusiness(e) {
-      if (this.platformTypeStr.filter(value => value.name === e)[0].child) {
+      if (this.platformTypeStr.filter(value => value.code === e)[0].child) {
         this.businessTypeShow = true
-        this.businessTypeStr = this.platformTypeStr.filter(value => value.name === e)[0].child
+        this.businessTypeStr = this.platformTypeStr.filter(value => value.code === e)[0].child
+        this.moduleStr = []
       } else {
         this.businessTypeShow = false
       }
-      this.$set(this.form, 'businessType', '')
+      this.$set(this.form, 'clientType', '')
+      this.$set(this.form, 'moduleId', '')
+    },
+    // 业务线取子数据
+    clickChangeModule(e) {
+      if (this.businessTypeStr.filter(value => value.code === e)[0].child) {
+        this.moduleTypeShow = true
+        this.moduleStr = this.businessTypeStr.filter(value => value.code === e)[0].child
+      } else {
+        this.moduleTypeShow = false
+      }
+      this.$set(this.form, 'moduleId', '')
     },
     submitJudge(e) {
       this.submitMissionJudge = e
@@ -304,15 +327,14 @@ export default {
     createFormData(form) {
       this.$refs.form.validate((valid) => {
         if (valid) {
-          console.log(form)
           if (this.$route.query.id && typeof this.form.bizId === 'string') {
             form.bizId = this.bizOptions.filter(value => value.name === form.bizId)[0].code
           }
           if (this.$route.query.id && !this.submitMissionJudge) {
             form.taskId = this.taskIdStr.filter(value => value.name === form.taskId)[0].id
           }
-          console.log(form)
-          // form.bizId = this.bizJson
+          form.reopenTimes = parseInt(form.reopenTimes)
+          form.projectId = this.taskIdStr.filter(value => value.id === this.form.taskId)[0].projectId
           this.userData = { id: '', ename: this.userInformation, name: this.userNames }
           this.objData = { bugBaseInfo: form, user: this.userData }
           bugCreate(this.objData).then(res => {
@@ -338,18 +360,37 @@ export default {
     background-color #F2F3F6
     display flex
     justify-content center
+    min-width 700px
     .block
       background-color rgba(255,255,255,1)
       box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
       border-radius 7px
-      width 1000px
+      width 78vw
       margin-top 25px
       padding 29px 50px
+      .block-flex
+        display flex
+        flex-wrap wrap
+      .block-flex >>> .el-form-item
+        width 100%
+        display flex
+      .block-flex >>> .el-form-item__content
+        width 100%
+      .line-between
+        width 100%
+        display flex
+        justify-content space-between
+      .line-between-add
+        display flex
+        flex-wrap wrap
+        width 100%
+      .line-between-add >>> .el-form-item
+        width 50%
     .block-end
       background-color rgba(255,255,255,1)
       box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
       border-radius 7px
-      width 1000px
+      width 78vw
       margin-top 25px
       padding 29px 50px
       margin-bottom 22px

+ 191 - 82
src/views/Platform/bugManage/bugQuery.vue

@@ -2,59 +2,62 @@
   <div id="window-judge" class="set-background">
     <el-form :model="form">
       <div class="block">
-        <el-form-item label="标题" :label-width="formLabelWidth">{{ form.bugName }}</el-form-item>
+        <el-form-item label="标题 :" label-width="48px">{{ form.bugName }}</el-form-item>
         <div style="display:flex;">
-          <el-form-item label="级别" prop="priority" style="display:flex;" :label-width="twoLable">
+          <el-form-item label="级别 : " prop="priority" style="display:flex;" label-width="48px">
             <el-select v-model="form.priority" placeholder="级别" style="width:80%;" @change="priorityChange">
-              <el-option v-for="item in bugLevelStr" :key="item.name" :label="item.name" :value="item.name" />
+              <el-option v-for="item in bugLevelStr" :key="item.name" :label="item.name" :value="item.code" />
             </el-select>
           </el-form-item>
-          <el-form-item label="状态" prop="status" style="display:flex;" :label-width="twoLable">
+          <el-form-item label="状态 : " prop="status" style="display:flex;" label-width="48px">
             <el-select v-model="form.status" placeholder="状态" style="width:80%;" @change="statusChange">
-              <el-option v-for="item in bugStatusStr" :key="item.name" :label="item.name" :value="item.name" />
+              <el-option v-for="item in bugStatusStr" :key="item.name" :label="item.name" :value="item.code" />
             </el-select>
           </el-form-item>
           <el-button type="primary" style="height:40px" @click="enterUpdate">编 辑</el-button>
         </div>
-        <el-form-item label="描述" prop="bugDescribe" :label-width="formLabelWidth">{{ form.bugDescribe }}</el-form-item>
+        <el-form-item label="描述 : " prop="bugDescribe" label-width="48px">{{ form.bugDescribe }}</el-form-item>
         <div class="wrap">
-          <el-form-item label="任务" label-width="18.5%" style="margin-right: 30px;">{{ form.projectName }}</el-form-item>
-          <el-form-item label="业务线" label-width="27%" style="margin-right: 30px;">{{ bizId }}</el-form-item>
-          <el-form-item label="平台类型" label-width="32%" style="margin-right: 30px;">{{ form.platformType }}</el-form-item>
-          <el-form-item label="类型" label-width="18.5%" style="margin-right: 30px;">{{ bugType }}</el-form-item>
-          <el-form-item label="业务模块" label-width="32%" style="margin-right: 30px;">{{ form.businessType }}</el-form-item>
-          <el-form-item label="所处阶段" label-width="32%" style="margin-right: 30px;">{{ form.stage }}</el-form-item>
-          <el-form-item label="发现方式" label-width="29.5%" style="margin-right: 30px;">{{ form.discoveryMethod }}</el-form-item>
-          <el-form-item label="问题原因" label-width="32%" style="margin-right: 30px;">{{ form.reason }}</el-form-item>
+          <el-form-item label="任务 : " label-width="48px" style="margin-right: 30px;">{{ form.projectName }}</el-form-item>
+          <el-form-item label="业务线 : " label-width="80px" style="margin-right: 30px;">{{ bizId }}</el-form-item>
+          <el-form-item label="平台类型 : " label-width="76px" style="margin-right: 30px;">{{ form.platformTypeName }}</el-form-item>
+          <el-form-item label="类型 : " label-width="48px" style="margin-right: 30px;">{{ bugType }}</el-form-item>
+          <el-form-item label="业务模块 : " label-width="81px" style="margin-right: 30px;">{{ form.clientName }}</el-form-item>
+          <el-form-item label="所处阶段 : " label-width="76px" style="margin-right: 30px;">{{ form.stageName }}</el-form-item>
+          <el-form-item label="发现方式 : " label-width="76px" style="margin-right: 30px;">{{ form.discoveryMethodName }}</el-form-item>
+          <el-form-item label="问题原因 : " label-width="81px" style="margin-right: 30px;">{{ form.reasomName }}</el-form-item>
+          <el-form-item label="工程模块 : " label-width="77px" style="margin-right: 30px;">{{ form.bizModuleName }}</el-form-item>
         </div>
       </div>
       <div class="block">
         <div class="wrap">
-          <el-form-item label="创建人 :" label-width="42%">{{ form.creator }}</el-form-item>
-          <el-form-item label="bug责任人 :" label-width="36%">{{ form.assigner }}</el-form-item>
-          <el-form-item label="当前处理人 :" label-width="36%">{{ currentHandler }}</el-form-item>
-          <el-form-item label="开始开发时间 :" label-width="42%">{{ form.startDevTime }}</el-form-item>
-          <el-form-item label="创建时间 :" label-width="32%">{{ form.gmtCreate }}</el-form-item>
-          <el-form-item label="提交测试时间 :" label-width="42%">{{ form.waitTestTime }}</el-form-item>
-          <el-form-item label="reopen次数 :" label-width="42%">{{ form.reopenTimes }}</el-form-item>
+          <el-form-item label="创建人 :  " label-width="42%">{{ form.creator }}</el-form-item>
+          <el-form-item label="bug责任人 : " label-width="36%">{{ form.assigner }}</el-form-item>
+          <el-form-item label="当前处理人 : " label-width="36%">{{ currentHandler }}</el-form-item>
+          <el-form-item label="开始开发时间 : " label-width="42%">{{ form.startDevTime }}</el-form-item>
+          <el-form-item label="创建时间 : " label-width="32%">{{ form.gmtCreate }}</el-form-item>
+          <el-form-item label="提交测试时间 : " label-width="42%">{{ form.waitTestTime }}</el-form-item>
+          <el-form-item label="reopen次数 : " label-width="42%">{{ form.reopenTimes }}</el-form-item>
         </div>
       </div>
       <div class="block-end">
         <div class="wrap">
-          <el-form-item label="机型 :" label-width="36%">{{ form.model }}</el-form-item>
-          <el-form-item label="地图类型 :" label-width="36%">{{ form.mapType }}</el-form-item>
-          <el-form-item label="os类型 :" label-width="36%">{{ form.osType }}</el-form-item>
-          <el-form-item label="地图版本号 :" label-width="36%">{{ form.mapVersion }}</el-form-item>
-          <el-form-item label="网络类型 :" label-width="36%">{{ form.networkType }}</el-form-item>
-          <el-form-item label="SDK版本 :" label-width="36%">{{ form.sdkVersion }}</el-form-item>
-          <el-form-item label="app版本号 :" label-width="36%">{{ form.appVersion }}</el-form-item>
-          <el-form-item label="备注 :" label-width="14%" class="remark-length">{{ form.remark }}</el-form-item>
+          <el-form-item label="机型 : " label-width="36%">{{ form.model }}</el-form-item>
+          <el-form-item label="地图类型 : " label-width="36%">{{ form.mapType }}</el-form-item>
+          <el-form-item label="os类型 : " label-width="36%">{{ form.osType }}</el-form-item>
+          <el-form-item label="地图版本号 : " label-width="36%">{{ form.mapVersion }}</el-form-item>
+          <el-form-item label="网络类型 : " label-width="36%">{{ form.networkType }}</el-form-item>
+          <el-form-item label="SDK版本 : " label-width="36%">{{ form.sdkVersion }}</el-form-item>
+          <el-form-item label="app版本号 : " label-width="36%">{{ form.appVersion }}</el-form-item>
+          <el-form-item label="修复方式 : " label-width="36%">{{ repairResult }}</el-form-item>
+          <el-form-item label="修复结果 : " label-width="36%">{{ reasonsAndSolutionForTheProblem }}</el-form-item>
         </div>
+        <el-form-item label="备注 : " label-width="10%" class="remark-length">{{ form.remark }}</el-form-item>
       </div>
     </el-form>
     <el-dialog :visible.sync="dialogInDevelopment" width="40%">
       <el-form ref="refeshDevelopmentDialog" :model="pauseData" :rules="serviceDataRules">
-        <el-form-item label="当前处理人" prop="pauseCurrentHandler" label-width="30%"><el-input v-model="pauseData.pauseCurrentHandler" autocomplete="off" style="width:55%;" /></el-form-item>
+        <el-form-item label="开发RD" prop="pauseCurrentHandler" label-width="30%"><el-input v-model="pauseData.pauseCurrentHandler" autocomplete="off" style="width:55%;" /></el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click="dialogInDevelopment = false">取 消</el-button>
@@ -63,23 +66,37 @@
     </el-dialog>
     <el-dialog :visible.sync="dialogWaitTest" width="40%">
       <el-form ref="refeshWaitTestDialog" :model="pauseData" :rules="serviceDataRules">
-        <el-form-item label="当前处理人" prop="pauseCurrentHandler" label-width="30%"><el-input v-model="pauseData.pauseCurrentHandler" autocomplete="off" style="width:55%;" /></el-form-item>
+        <el-form-item label="验收QA" prop="pauseCurrentHandler" label-width="30%"><el-input v-model="pauseData.pauseCurrentHandler" autocomplete="off" style="width:55%;" /></el-form-item>
         <el-form-item style="flex-grow:1" label="问题原因" prop="reasonPause" label-width="30%">
           <el-select v-model="pauseData.reasonPause" placeholder="问题原因" style="width:55%;">
-            <el-option v-for="item in reasonStr" :key="item.name" :label="item.name" :value="item.name" />
+            <el-option v-for="item in reasonStr" :key="item.name" :label="item.name" :value="item.code" />
           </el-select>
         </el-form-item>
         <el-form-item style="flex-grow:1" label="bug类型" prop="bugTypePause" label-width="30%">
           <el-select v-model="pauseData.bugTypePause" placeholder="bug类型" style="width:55%;">
-            <el-option v-for="item in bugTypeStr" :key="item.name" :label="item.name" :value="item.name" />
+            <el-option v-for="item in bugTypeStr" :key="item.name" :label="item.name" :value="item.code" />
           </el-select>
         </el-form-item>
+        <el-form-item label="修复方式" prop="pauseReasonsAndSolutionForTheProblem" label-width="30%"><el-input v-model="pauseData.pauseReasonsAndSolutionForTheProblem" type="textarea" autocomplete="off" rows="3" style="width:55%;" /></el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click="dialogWaitTest = false">取 消</el-button>
         <el-button type="primary" @click="queryFormDataTest">确 定</el-button>
       </div>
     </el-dialog>
+    <el-dialog :visible.sync="dialogInRepairResult" width="40%">
+      <el-form ref="refeshResultDialog" :model="pauseData" :rules="serviceDataRules">
+        <el-form-item label="修复结果" prop="pauseRepairResult" label-width="30%">
+          <el-select v-model="pauseData.pauseRepairResult" placeholder="修复结果" style="width:55%;">
+            <el-option v-for="item in repairStr" :key="item.name" :label="item.name" :value="item.code" />
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogInRepairResult = false">取 消</el-button>
+        <el-button type="primary" @click="queryFormDataRepair">确 定</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -92,15 +109,20 @@ export default {
       form: {
         id: ''
       },
+      formUpdateValue: {},
       pauseData: {
         reasonPause: '',
         bugTypePause: '',
-        pauseCurrentHandler: ''
+        pauseCurrentHandler: '',
+        pauseRepairResult: '',
+        pauseReasonsAndSolutionForTheProblem: ''
       },
       serviceDataRules: {
         pauseCurrentHandler: [{ required: true, message: '处理人不能为空', trigger: 'change' }],
         reasonPause: [{ required: true, message: '问题原因不能为空', trigger: 'change' }],
-        bugTypePause: [{ required: true, message: 'bug类型不能为空', trigger: 'change' }]
+        bugTypePause: [{ required: true, message: 'bug类型不能为空', trigger: 'change' }],
+        pauseRepairResult: [{ required: true, message: '修复结果不能为空', trigger: 'change' }],
+        pauseReasonsAndSolutionForTheProblem: [{ required: true, message: '修复方式不能为空', trigger: 'change' }]
       },
       bizId: '',
       currentHandler: '',
@@ -108,6 +130,9 @@ export default {
       twoLable: '20%',
       bugLevelStr: [],
       bugStatusStr: [],
+      repairStr: [],
+      repairResult: '',
+      reasonsAndSolutionForTheProblem: '',
       userData: '',
       bugTypeStr: [],
       reasonStr: [],
@@ -117,7 +142,8 @@ export default {
       userInformation: localStorage.getItem('username'),
       userNames: localStorage.getItem('realname'),
       dialogInDevelopment: false,
-      dialogWaitTest: false
+      dialogWaitTest: false,
+      dialogInRepairResult: false
     }
   },
   created() {
@@ -127,20 +153,24 @@ export default {
     // 先后获取
     async _initBegin() {
       await bugGetEnum().then(res => {
+        console.log(res.data.reasonEnumList)
         this.bugStatusStr = res.data.bugEnumList
         this.bugLevelStr = res.data.priorityEnumList
         this.bizIdEnumList = res.data.bizIdEnumList
         this.bugTypeStr = res.data.bugTypeEnumList
         this.reasonStr = res.data.reasonEnumList
+        this.repairStr = res.data.repairResultEnumList
       })
       bugGet(this.$route.query.id).then(res => {
         this.form = res.data
         for (const a of this.bizIdEnumList) {
           if (this.form.bizId === a.code) {
-            this.bizId = a.name
+            this.bizId = this.form.bizName
             this.currentHandler = this.form.currentHandler
+            this.repairResult = this.form.repairResultName
             this.reason = this.form.reason
-            this.bugType = this.form.bugType
+            this.bugType = this.form.bugTypeName
+            this.reasonsAndSolutionForTheProblem = this.form.reasonsAndSolutionForTheProblem
             return
           } else {
             this.bizId = ''
@@ -150,58 +180,137 @@ export default {
       })
     },
     priorityChange() {
-      this.queryFormData()
-    },
-    statusChange(e) {
-      if (e === '开发中') {
-        this.dialogInDevelopment = true
-      } else if (e === '待测试') {
-        this.dialogWaitTest = true
-      } else {
-        this.queryFormData()
-      }
-    },
-    queryFormData() {
-      // this.form.bizId = this.$route.params.pauseBizId
-      if (this.dialogWaitTest || this.dialogInDevelopment) {
-        this.form.currentHandler = this.pauseData.pauseCurrentHandler
-      }
+      this.formUpdateValue.currentHandler = this.form.currentHandler
+      this.formUpdateValue.id = this.form.id
+      this.formUpdateValue.priority = this.form.priority
       this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-      this.objData = { bugBaseInfo: this.form, user: this.userData }
+      this.objData = { bugBaseInfo: this.formUpdateValue, user: this.userData }
       bugUpdate(this.objData).then(res => {
         if (res.code === 200) {
           this.successFun()
-          this.currentHandler = this.form.currentHandler
           if (this.$refs.refeshDevelopmentDialog !== undefined) {
             this.$refs.refeshDevelopmentDialog.resetFields()
           }
         } else {
           this.errorFun()
         }
-        this.dialogInDevelopment = false
+        this.formUpdateValue = {}
       })
     },
-    queryFormDataTest() {
-      if (this.dialogWaitTest || this.dialogInDevelopment) {
-        this.form.currentHandler = this.pauseData.pauseCurrentHandler
-        this.form.reason = this.pauseData.reasonPause
-        this.form.bugType = this.pauseData.bugTypePause
+    statusChange(e) {
+      if (e === 1) {
+        this.dialogInDevelopment = true
+      } else if (e === 2) {
+        this.dialogWaitTest = true
+      } else if (e === 3) {
+        this.dialogInRepairResult = true
+      } else {
+        this.formUpdateValue.currentHandler = this.form.currentHandler
+        this.formUpdateValue.id = this.form.id
+        this.formUpdateValue.status = this.form.status
+        this.userData = { id: '', ename: this.userInformation, name: this.userNames }
+        this.objData = { bugBaseInfo: this.formUpdateValue, user: this.userData }
+        bugUpdate(this.objData).then(res => {
+          if (res.code === 200) {
+            this.successFun()
+            if (this.$refs.refeshDevelopmentDialog !== undefined) {
+              this.$refs.refeshDevelopmentDialog.resetFields()
+            }
+          } else {
+            this.errorFun()
+          }
+        })
+        this.formUpdateValue = {}
       }
-      this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-      this.objData = { bugBaseInfo: this.form, user: this.userData }
-      bugUpdate(this.objData).then(res => {
-        if (res.code === 200) {
-          this.successFun()
-          this.currentHandler = this.form.currentHandler
-          this.reason = this.form.reason
-          this.bugType = this.form.bugType
-          if (this.$refs.refeshWaitTestDialog !== undefined) {
-            this.$refs.refeshWaitTestDialog.resetFields()
+    },
+    queryFormData() {
+      this.$refs.refeshDevelopmentDialog.validate((valid) => {
+        if (valid) {
+          if (this.dialogWaitTest || this.dialogInDevelopment) {
+            this.form.currentHandler = this.pauseData.pauseCurrentHandler
           }
-        } else {
-          this.errorFun()
+          this.formUpdateValue.currentHandler = this.form.currentHandler
+          this.formUpdateValue.id = this.form.id
+          this.formUpdateValue.status = this.form.status
+          this.userData = { id: '', ename: this.userInformation, name: this.userNames }
+          this.objData = { bugBaseInfo: this.formUpdateValue, user: this.userData }
+          bugUpdate(this.objData).then(res => {
+            if (res.code === 200) {
+              this.successFun()
+              this.currentHandler = this.pauseData.pauseCurrentHandler
+              if (this.$refs.refeshDevelopmentDialog !== undefined) {
+                this.$refs.refeshDevelopmentDialog.resetFields()
+              }
+            } else {
+              this.errorFun()
+            }
+            this.dialogInDevelopment = false
+            this.formUpdateValue = {}
+          })
+        }
+      })
+    },
+    queryFormDataTest() {
+      this.$refs.refeshWaitTestDialog.validate((valid) => {
+        if (valid) {
+          if (this.dialogWaitTest || this.dialogInDevelopment) {
+            this.form.currentHandler = this.pauseData.pauseCurrentHandler
+            this.form.reason = this.pauseData.reasonPause
+            this.form.bugType = this.pauseData.bugTypePause
+          }
+          this.formUpdateValue.currentHandler = this.form.currentHandler
+          this.formUpdateValue.id = this.form.id
+          this.formUpdateValue.status = this.form.status
+          this.formUpdateValue.reason = this.pauseData.reasonPause
+          this.formUpdateValue.bugType = this.pauseData.bugTypePause
+          this.formUpdateValue.reasonsAndSolutionForTheProblem = this.pauseData.pauseReasonsAndSolutionForTheProblem
+          this.userData = { id: '', ename: this.userInformation, name: this.userNames }
+          this.objData = { bugBaseInfo: this.formUpdateValue, user: this.userData }
+          bugUpdate(this.objData).then(res => {
+            if (res.code === 200) {
+              this.successFun()
+              this.currentHandler = this.form.currentHandler
+              this.form.reasomName = this.reasonStr.filter(value => value.code === this.pauseData.reasonPause)[0].name
+              this.bugType = this.bugTypeStr.filter(value => value.code === this.pauseData.bugTypePause)[0].name
+              this.reasonsAndSolutionForTheProblem = this.form.reasonsAndSolutionForTheProblem
+              if (this.$refs.refeshWaitTestDialog !== undefined) {
+                this.$refs.refeshWaitTestDialog.resetFields()
+              }
+            } else {
+              this.errorFun()
+            }
+            this.dialogWaitTest = false
+            this.formUpdateValue = {}
+          })
+        }
+      })
+    },
+    queryFormDataRepair() {
+      this.$refs.refeshResultDialog.validate((valid) => {
+        if (valid) {
+          if (this.dialogInRepairResult) {
+            this.form.repairResult = this.pauseData.pauseRepairResult
+          }
+          this.formUpdateValue.currentHandler = this.form.currentHandler
+          this.formUpdateValue.id = this.form.id
+          this.formUpdateValue.status = this.form.status
+          this.formUpdateValue.repairResult = this.form.repairResult
+          this.userData = { id: '', ename: this.userInformation, name: this.userNames }
+          this.objData = { bugBaseInfo: this.formUpdateValue, user: this.userData }
+          bugUpdate(this.objData).then(res => {
+            if (res.code === 200) {
+              this.successFun()
+              this.repairResult = this.form.repairResult
+              if (this.$refs.refeshResultDialog !== undefined) {
+                this.$refs.refeshResultDialog.resetFields()
+              }
+            } else {
+              this.errorFun()
+            }
+            this.dialogInRepairResult = false
+            this.formUpdateValue = {}
+          })
         }
-        this.dialogWaitTest = false
       })
     },
     enterUpdate() {
@@ -226,7 +335,7 @@ export default {
       background-color rgba(255,255,255,1)
       box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
       border-radius 7px
-      width 1000px
+      width 78vw
       margin-top 25px
       padding 29px 50px
       .wrap
@@ -241,7 +350,7 @@ export default {
       background-color rgba(255,255,255,1)
       box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
       border-radius 7px
-      width 1000px
+      width 78vw
       margin-top 25px
       padding 29px 50px
       margin-bottom 22px
@@ -253,9 +362,9 @@ export default {
         display block
         word-break break-all
         word-wrap break-word
-      .remark-length >>> .el-form-item__content
-        width 450px
-        display block
-        word-break break-all
-        word-wrap break-word
+      // .remark-length >>> .el-form-item__content
+      //   width 450px
+      //   display block
+      //   word-break break-all
+      //   word-wrap break-word
 </style>

+ 172 - 135
src/views/Platform/bugManage/bugUpdate.vue

@@ -2,110 +2,123 @@
   <div id="window-judge" class="set-background">
     <el-form ref="form" :model="form" :rules="serviceDataRules">
       <div class="block">
-        <el-form-item label="标题" prop="bugName" :label-width="formLabelWidth"><el-input v-model="form.bugName" autocomplete="off" placeholder="普惠质量产品工具平台..." style="width:77.2%;" /></el-form-item>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" prop="bizId" label="业务线" :label-width="formLabelWidth1">
-            <el-select v-model="form.bizId" placeholder="业务线" style="width:54.5%;" @change="clickChangePlatform(form.bizId)">
-              <el-option v-for="item in bizOptions" :key="item.value" :label="item.name" :value="item.code" />
-            </el-select>
-          </el-form-item>
-          <el-form-item style="flex-grow:1" label="平台类型" prop="platformType" :label-width="formLabelWidth1">
-            <el-select ref="clearPlatform" v-model="form.platformType" placeholder="平台类型" style="width:54.5%;" @change="clickChangeBusiness(form.platformType)">
-              <el-option v-for="item in platformTypeStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
-        </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" prop="taskId" label="任务" label-width="99px">
-            <el-select v-model="form.taskId" filterable placeholder="任务" style="width: 245px;margin-right: -50px;">
-              <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
-            </el-select>
-          </el-form-item>
-          <el-form-item v-if="businessTypeShow" style="flex-grow:1" prop="businessType" label="业务模块" :label-width="formLabelWidth1">
-            <el-select ref="clearBusiness" v-model="form.businessType" placeholder="业务模块" style="width:54.5%;">
-              <el-option v-for="item in businessTypeStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
-        </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="类型" prop="bugType" :label-width="formLabelWidth1">
-            <el-select v-model="form.bugType" style="width:54.5%;" placeholder="类型">
-              <el-option v-for="item in bugTypeStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
-          <el-form-item style="flex-grow:1" label="发现方式" prop="discoveryMethod" :label-width="formLabelWidth1">
-            <el-select v-model="form.discoveryMethod" style="width:54.5%;" placeholder="发现方式">
-              <el-option v-for="item in discoveryMethodStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
-        </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="级别" prop="priority" :label-width="formLabelWidth1">
-            <el-select v-model="form.priority" style="width:54.5%;" placeholder="级别">
-              <el-option v-for="item in bugLevelStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
-          <el-form-item style="flex-grow:1" label="问题原因" prop="reason" :label-width="formLabelWidth1">
-            <el-select v-model="form.reason" style="width:54.5%;" placeholder="问题原因">
-              <el-option v-for="item in reasonStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
+        <div class="block-flex">
+          <el-form-item label="标题" prop="bugName" label-width="110px"><el-input v-model="form.bugName" autocomplete="off" placeholder="普惠质量产品工具平台..." style="width:90%;" /></el-form-item>
+          <div class="line-between">
+            <el-form-item label="类型" prop="bugType" label-width="124px">
+              <el-select v-model="form.bugType" style="width:76%;" placeholder="类型">
+                <el-option v-for="item in bugTypeStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="所处阶段" prop="stage" label-width="147px">
+              <el-select v-model="form.stage" placeholder="所处阶段" style="width:76%;">
+                <el-option v-for="item in stageStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="状态" prop="status" label-width="124px">
+              <el-select v-model="form.status" placeholder="状态" style="width:76%;">
+                <el-option v-for="item in bugStatusStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="问题原因" prop="reason" label-width="147px">
+              <el-select v-model="form.reason" style="width:76%;" placeholder="问题原因">
+                <el-option v-for="item in reasonStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="级别" prop="priority" label-width="124px">
+              <el-select v-model="form.priority" style="width:76%;" placeholder="级别">
+                <el-option v-for="item in bugLevelStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="发现方式" prop="discoveryMethod" label-width="147px">
+              <el-select v-model="form.discoveryMethod" style="width:76%;" placeholder="发现方式">
+                <el-option v-for="item in discoveryMethodStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item prop="taskId" label="任务" label-width="124px">
+              <el-select v-model="form.taskId" filterable placeholder="任务" style="width:76%;">
+                <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+              </el-select>
+            </el-form-item>
+            <el-form-item prop="bizId" label="业务线" label-width="147px">
+              <el-select v-model="form.bizId" placeholder="业务线" style="width:76%;" @change="clickChangePlatform(form.bizId)">
+                <el-option v-for="item in bizOptions" :key="item.value" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between-add">
+            <el-form-item label="平台类型" prop="platformType" label-width="124px">
+              <el-select ref="clearPlatform" v-model="form.platformType" placeholder="平台类型" style="width:76%;" @change="clickChangeBusiness(form.platformType)">
+                <el-option v-for="item in platformTypeStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item v-if="businessTypeShow" prop="clientType" label="业务模块" label-width="147px">
+              <el-select ref="clearBusiness" v-model="form.clientType" placeholder="业务模块" style="width:76%;" @change="clickChangeModule(form.clientType)">
+                <el-option v-for="item in businessTypeStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between-add">
+            <el-form-item v-if="moduleTypeShow" label="工程模块" prop="moduleId" label-width="124px">
+              <el-select ref="clearModule" v-model="form.moduleId" placeholder="工程模块" style="width:76%;">
+                <el-option v-for="item in moduleStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <el-form-item label="bug描述" prop="bugDescribe" label-width="110px"><el-input v-model="form.bugDescribe" type="textarea" placeholder="bug描述" rows="2" style="width:90%;" /></el-form-item>
         </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="状态" prop="status" :label-width="formLabelWidth1">
-            <el-select v-model="form.status" placeholder="状态" style="width:54.5%;">
-              <el-option v-for="item in bugStatusStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
-          <el-form-item style="flex-grow:1" label="所处阶段" prop="stage" :label-width="formLabelWidth1">
-            <el-select v-model="form.stage" placeholder="所处阶段" style="width:54.5%;">
-              <el-option v-for="item in stageStr" :key="item.name" :label="item.name" :value="item.name" />
-            </el-select>
-          </el-form-item>
-        </div>
-        <el-form-item label="bug描述" prop="bugDescribe" :label-width="formLabelWidth"><el-input v-model="form.bugDescribe" type="textarea" placeholder="bug描述" rows="2" style="width:77.2%;" /></el-form-item>
       </div>
       <div class="block">
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="创建人" label-width="21%"><el-input v-model="form.creator" autocomplete="off" style="width:54.5%;" /></el-form-item>
-          <el-form-item style="flex-grow:1" label="bug责任人" prop="assigner" :label-width="formLabelWidth1"><el-input v-model="form.assigner" autocomplete="off" style="width:53.5%;" /></el-form-item>
-        </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="当前处理人" prop="currentHandler" :label-width="formLabelWidth1"><el-input v-model="form.currentHandler" autocomplete="off" style="width:55%;" /></el-form-item>
-          <el-form-item style="flex-grow:1" label="开始开发时间" label-width="24.5%">    <el-date-picker
-            v-model="form.startDevTime"
-            type="datetime"
-            placeholder="选择时间"
-            style="width:53%;"
-            value-format="yyyy-MM-dd HH:hh:mm"
-          /></el-form-item>
-        </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1;" label="reopen次数" prop="reopenTimes" label-width="22.6%;"><el-input v-model="form.reopenTimes" autocomplete="off" style="width:56%;" /></el-form-item>
-          <el-form-item style="flex-grow:1;padding-right:15px;" label="提交测试时间" label-width="26.5%">    <el-date-picker
-            v-model="form.waitTestTime"
-            type="datetime"
-            placeholder="选择时间"
-            style="width:54%;"
-            value-format="yyyy-MM-dd HH:hh:mm"
-          /></el-form-item>
+        <div class="block-flex">
+          <div class="line-between">
+            <el-form-item label="创建人" label-width="124px"><el-input v-model="form.creator" autocomplete="off" style="width:76%;" /></el-form-item>
+            <el-form-item label="bug责任人" prop="assigner" label-width="147px"><el-input v-model="form.assigner" autocomplete="off" style="width:76%;" /></el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="当前处理人" prop="currentHandler" label-width="124px"><el-input v-model="form.currentHandler" autocomplete="off" style="width:76%;" /></el-form-item>
+            <el-form-item label="开始开发时间" label-width="147px">    <el-date-picker
+              v-model="form.startDevTime"
+              type="datetime"
+              placeholder="选择时间"
+              style="width:76%;"
+              value-format="yyyy-MM-dd HH:hh:mm"
+            /></el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="reopen次数" prop="reopenTimes" label-width="124px"><el-input v-model="form.reopenTimes" autocomplete="off" style="width:76%;" /></el-form-item>
+            <el-form-item label="提交测试时间" label-width="147px">    <el-date-picker
+              v-model="form.waitTestTime"
+              type="datetime"
+              placeholder="选择时间"
+              style="width:76%;"
+              value-format="yyyy-MM-dd HH:hh:mm"
+            /></el-form-item>
+          </div>
         </div>
       </div>
       <div class="block">
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="机型" :label-width="formLabelWidth1"><el-input v-model="form.model" autocomplete="off" style="width:54.5%;" /></el-form-item>
-          <el-form-item style="flex-grow:1" label="地图类型" :label-width="formLabelWidth1"><el-input v-model="form.mapType" autocomplete="off" style="width:54.5%;" /></el-form-item>
-        </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="OS类型" :label-width="formLabelWidth1"><el-input v-model="form.osType" autocomplete="off" style="width:54.5%;" /></el-form-item>
-          <el-form-item style="flex-grow:1" label="地图版本号" :label-width="formLabelWidth1"><el-input v-model="form.mapVersion" autocomplete="off" style="width:54.5%;" /></el-form-item>
-        </div>
-        <div style="display:flex;">
-          <el-form-item style="flex-grow:1" label="网络类型" :label-width="formLabelWidth1"><el-input v-model="form.networkType" autocomplete="off" style="width:54.5%;" /></el-form-item>
-          <el-form-item style="flex-grow:1" label="SDK版本" :label-width="formLabelWidth1"><el-input v-model="form.sdkVersion" autocomplete="off" style="width:54.5%;" /></el-form-item>
-        </div>
-        <div style="width:100%;">
-          <el-form-item label="app版本号" label-width="11%"><el-input v-model="form.appVersion" autocomplete="off" style="width:27.2%;" /></el-form-item>
+        <div class="block-flex">
+          <div class="line-between">
+            <el-form-item label="机型" label-width="124px"><el-input v-model="form.model" autocomplete="off" style="width:76%;" /></el-form-item>
+            <el-form-item label="地图类型" label-width="147px"><el-input v-model="form.mapType" autocomplete="off" style="width:76%;" /></el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="OS类型" label-width="124px"><el-input v-model="form.osType" autocomplete="off" style="width:76%;" /></el-form-item>
+            <el-form-item label="地图版本号" label-width="147px"><el-input v-model="form.mapVersion" autocomplete="off" style="width:76%;" /></el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="网络类型" label-width="124px"><el-input v-model="form.networkType" autocomplete="off" style="width:76%;" /></el-form-item>
+            <el-form-item label="SDK版本" label-width="147px"><el-input v-model="form.sdkVersion" autocomplete="off" style="width:76%;" /></el-form-item>
+          </div>
+          <div class="line-between-add">
+            <el-form-item label="app版本号" label-width="124px"><el-input v-model="form.appVersion" autocomplete="off" style="width:76%;" /></el-form-item>
+          </div>
         </div>
       </div>
       <div class="block-end">
@@ -160,8 +173,6 @@
       <!-- <el-form-item label="创建时间" :label-width="formLabelWidth"><el-input v-model="form.gmtCreate" autocomplete="off" /></el-form-item> -->
       <!-- <el-form-item label="修改时间" :label-width="formLabelWidth"><el-input v-model="form.gmtModify" autocomplete="off" /></el-form-item> -->
     </el-form>
-    <!-- <div slot="footer" class="dialog-footer">
-    </div> -->
   </div>
 </template>
 
@@ -175,7 +186,7 @@ export default {
       form: {
         id: '',
         platformType: '',
-        businessType: ''
+        clientType: ''
       },
       businessTypeStr: [],
       taskIdStr: '',
@@ -184,6 +195,7 @@ export default {
       discoveryMethodStr: [],
       reasonStr: [],
       bugStatusStr: [],
+      moduleStr: [],
       stageStr: [],
       fileList: [],
       serviceTypeEnumList: [],
@@ -195,6 +207,7 @@ export default {
         bizId: [{ required: true, message: '业务线不能为空', trigger: 'change' }],
         // bugName: [{ required: true, message: '主题不能为空', trigger: 'change' }],
         taskId: [{ required: true, message: '任务不能为空', trigger: 'change' }],
+        moduleId: [{ required: true, message: '工程模块不能为空', trigger: 'change' }],
         // projectId: [{ required: true, message: '项目ID不能为空', trigger: 'change' }],
         bugType: [{ required: true, message: 'bug类型不能为空', trigger: 'change' }],
         reopenTimes: [{ required: true, message: 'reopen不能为空', trigger: 'change' }],
@@ -207,19 +220,18 @@ export default {
         assigner: [{ required: true, message: 'bug责任人不能为空', trigger: 'change' }],
         currentHandler: [{ required: true, message: 'bug处理人不能为空', trigger: 'change' }],
         bugDescribe: [{ required: true, message: 'bug描述不能为空', trigger: 'change' }],
-        businessType: [{ required: true, message: '业务模块不能为空', trigger: 'change' }]
+        clientType: [{ required: true, message: '业务模块不能为空', trigger: 'change' }]
       },
-      formLabelWidth: '11%',
-      formLabelWidth1: '22%',
       userData: '',
+      formLabelWidth1: '22%',
       businessTypeShow: false,
+      moduleTypeShow: false,
       userInformation: localStorage.getItem('username'),
       userNames: localStorage.getItem('realname')
     }
   },
   created() {
     this._initBegin()
-    this.forkDown()
     this.taskIdGet()
   },
   methods: {
@@ -238,35 +250,25 @@ export default {
         this.clientTypeEnumList = res.data.clientTypeEnumList
         this.serviceTypeEnumList = res.data.serviceTypeEnumList
       })
-      bugGet(this.$route.query.id).then(res => {
-        this.form = res.data
-        this.platformTypeStr = this.bizOptions.filter(value => value.code === this.form.bizId)[0].child
-        if (this.form.businessType) {
-          this.businessTypeShow = true
-          this.businessTypeStr = this.platformTypeStr.filter(value => value.name === this.form.platformType)[0].child
-        }
-        // for (const a of this.bizIdEnumList) {
-        //   if (this.form.bizId === a.code) {
-        //     this.bizId = a.name
-        //     this.currentHandler = this.form.currentHandler
-        //     this.reason = this.form.reason
-        //     this.bugType = this.form.bugType
-        //     return
-        //   } else {
-        //     this.bizId = ''
-        //   }
-        // }
-        // this.bizId = this.form.bizId
-      })
-    },
-    forkDown() {
-      projectGetTypeMap().then(res => {
+      await projectGetTypeMap().then(res => {
         if (res.code === 200) {
           this.bizOptions = res.data
         } else {
           this.errorFun()
         }
       })
+      bugGet(this.$route.query.id).then(res => {
+        this.form = res.data
+        this.platformTypeStr = this.bizOptions.filter(value => value.code === this.form.bizId)[0].child
+        if (this.form.clientType) {
+          this.businessTypeShow = true
+          this.businessTypeStr = this.platformTypeStr.filter(value => value.code === this.form.platformType)[0].child
+          if (this.form.moduleId) {
+            this.moduleTypeShow = true
+            this.moduleStr = this.businessTypeStr.filter(value => value.code === this.form.clientType)[0].child
+          }
+        }
+      })
     },
     // 获取任务数据
     taskIdGet() {
@@ -277,24 +279,40 @@ export default {
     // 业务线取子数据
     clickChangePlatform(e) {
       this.platformTypeStr = this.bizOptions.filter(value => value.code === e)[0].child
+      this.businessTypeStr = []
+      this.moduleStr = []
       this.$set(this.form, 'platformType', '')
-      this.$set(this.form, 'businessType', '')
+      this.$set(this.form, 'clientType', '')
+      this.$set(this.form, 'moduleId', '')
     },
     // 业务线取子数据
     clickChangeBusiness(e) {
-      if (this.platformTypeStr.filter(value => value.name === e)[0].child) {
+      if (this.platformTypeStr.filter(value => value.code === e)[0].child) {
         this.businessTypeShow = true
-        this.businessTypeStr = this.platformTypeStr.filter(value => value.name === e)[0].child
+        this.businessTypeStr = this.platformTypeStr.filter(value => value.code === e)[0].child
+        this.moduleStr = []
       } else {
         this.businessTypeShow = false
       }
-      this.$set(this.form, 'businessType', '')
+      this.$set(this.form, 'clientType', '')
+      this.$set(this.form, 'moduleId', '')
+    },
+    // 业务线取子数据
+    clickChangeModule(e) {
+      if (this.businessTypeStr.filter(value => value.code === e)[0].child) {
+        this.moduleTypeShow = true
+        this.moduleStr = this.businessTypeStr.filter(value => value.code === e)[0].child
+      } else {
+        this.moduleTypeShow = false
+      }
+      this.$set(this.form, 'moduleId', '')
     },
     // 提交表单并且返回刷新
     createFormData(form) {
       this.$refs.form.validate((valid) => {
+        console.log(form)
         if (valid) {
-          // form.bizId = this.bizJson
+          form.reopenTimes = parseInt(form.reopenTimes)
           this.userData = { id: '', ename: this.userInformation, name: this.userNames }
           this.objData = { bugBaseInfo: form, user: this.userData }
           bugUpdate(this.objData).then(res => {
@@ -319,18 +337,37 @@ export default {
     background-color #F2F3F6
     display flex
     justify-content center
+    min-width 700px
     .block
       background-color rgba(255,255,255,1)
       box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
       border-radius 7px
-      width 1000px
+      width 78vw
       margin-top 25px
       padding 29px 50px
+      .block-flex
+        display flex
+        flex-wrap wrap
+      .block-flex >>> .el-form-item
+        width 100%
+        display flex
+      .block-flex >>> .el-form-item__content
+        width 100%
+      .line-between
+        width 100%
+        display flex
+        justify-content space-between
+      .line-between-add
+        display flex
+        flex-wrap wrap
+        width 100%
+      .line-between-add >>> .el-form-item
+        width 50%
     .block-end
       background-color rgba(255,255,255,1)
       box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
       border-radius 7px
-      width 1000px
+      width 78vw
       margin-top 25px
       padding 29px 50px
       margin-bottom 22px

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

@@ -11,7 +11,7 @@
           <el-select v-model="queryCode.status" clearable placeholder="bug状态" style="width:10%;margin-right:5px;">
             <el-option v-for="item in bugStatusStr" :key="item.code" :label="item.name" :value="item.code" />
           </el-select>
-          <el-input v-model="queryCode.currentHandler" clearable filterable placeholder="经办人" style="width:12%;margin-right:5px;" />
+          <el-input v-model="queryCode.currentHandler" clearable filterable placeholder="处理人" style="width:12%;margin-right:5px;" />
           <el-input v-model="queryCode.creator" clearable filterable placeholder="创建人" style="width:12%;margin-right:5px;" />
           <el-date-picker v-model="queryCode.gmtCreateBegin" style="width:12%;margin-right:5px;" type="datetime" placeholder="创建时间" /> -
           <el-date-picker v-model="queryCode.gmtCreateEnd" style="width:12%;margin-right:5px;" type="datetime" placeholder="截止时间" />
@@ -34,11 +34,11 @@
         <el-table-column label="创建日期" min-width="250" align="center">
           <template slot-scope="scope">{{ scope.row.gmtCreate }}</template>
         </el-table-column>
-        <el-table-column label="级别" min-width="150" align="center">
-          <template slot-scope="scope">{{ scope.row.priority }}</template>
+        <el-table-column label="级别" width="150" align="center">
+          <template slot-scope="scope"><span>{{ scope.row.priorityName }}</span></template>
         </el-table-column>
-        <el-table-column label="状态" min-width="150" align="center">
-          <template slot-scope="scope">{{ scope.row.status }}</template>
+        <el-table-column label="状态" width="150" align="center">
+          <template slot-scope="scope"><span>{{ scope.row.bugStatusName }}</span></template>
         </el-table-column>
         <el-table-column fixed="right" label="操作" min-width="250" align="center">
           <template slot-scope="scope">
@@ -151,6 +151,7 @@
               <el-button size="small" type="primary">点击上传</el-button>
             </el-upload>
           </el-form-item>
+          {{ form.accessory }}
 
           <!-- <el-form-item label="逻辑删" :label-width="formLabelWidth">
             <el-select v-model="form.isDelete" placeholder="发现方法">
@@ -291,7 +292,8 @@ export default {
       userData: '',
       titName: '',
       taskIdStr: '',
-      fileList: []
+      fileList: [],
+      fileDbList: []
     }
   },
   created() {
@@ -457,8 +459,13 @@ export default {
     },
 
     handleChange(file, fileList) {
+      this.fileDbList = []
       this.fileList = fileList.slice(-3)
-      console.log(this.fileList)
+      for (var a of this.fileList) {
+        this.fileDbList.push({ name: a.name, url: 'http' + a.response.url })
+      }
+      this.form.accessory = this.fileDbList
+      console.log(this.fileDbList)
     },
 
     successFun() {

+ 389 - 43
src/views/Platform/presentation/Acceptance.vue

@@ -17,7 +17,7 @@
             <el-button :type="tagBtn" style="margin: 0 2vw;" class="tag" @click="changeStatus(1)"> 通过 </el-button>
             <el-button :type="tagBtn1" class="tag" @click="changeStatus(2)"> 不通过 </el-button>
           </el-form-item>
-          <el-form-item label="准入结果" prop="smokeTestResult" style="flex: 2;text-align:right;"><el-input v-model="ClientData.smokeTestResult" style="width: 50vw;" placeholder="准入次数/通过次数/失败次数" /></el-form-item>
+          <el-form-item label="准入结果" prop="smokeTestResult" style="flex: 2;text-align:right;"><el-input v-model="ClientData.launchInfo" style="width: 50vw;" placeholder="准入次数/通过次数/失败次数" /></el-form-item>
         </div>
         <div style="display: flex; white-space: nowrap;">
           <el-form-item label="* 准出延期" style="flex: 1;" prop="taskLateStatus">
@@ -27,6 +27,16 @@
           <el-form-item v-if="showDelay" label="延期原因" prop="taskLateReason" style="flex: 2;text-align:right;"><el-input v-model="ClientData.taskLateReason" style="width: 50vw;" /></el-form-item>
         </div>
 
+        <div style="display: flex;white-space: nowrap;">
+          <el-form-item label="* 涉及安全项" style="flex: 1;">
+            <el-button :type="getInfoBtn" style="margin: 0 1vw" class="tag" @click="showStatusData(2)"> 是 </el-button>
+            <el-button :type="getInfoBtn1" style="margin-left: 1.7vw;" class="tag" @click="showStatusData(1)"> 否 </el-button>
+          </el-form-item>
+          <el-form-item v-if="showData" label="完成结果" prop="safeInfo" style="flex: 2;text-align:right;"><el-input v-model="ClientData.safeInfo" style="width: 50vw;" /></el-form-item>
+        </div>
+
+        <el-form-item label="SDL链接 : " style="white-space: nowrap;"><el-link href="http://wiki.intra.xiaojukeji.com/pages/viewpage.action?pageId=237016271" type="primary" target="_blank"> 普惠SDL准入标准</el-link></el-form-item>
+
         <div style="display: flex; white-space: nowrap;">
           <el-form-item label="开发人员" style="flex: 1;" prop="developer"><el-input v-model="ClientData.developer" style="width:30vw;" /></el-form-item>
           <el-form-item label="开发周期" style="flex: 1;text-align:right;" prop="devTimeEnd">
@@ -65,39 +75,108 @@
 
         <div class="titStyle">4、缺陷分析</div>
 
-        <div id="editorData" class="toolbar" />
-        <div id="editorData1" class="text" />
+        <el-table :data="tableData" border>
+          <el-table-column prop="totalBug" label="bug总数" min-width="200" align="center" edit="false">
+            <template slot-scope="scope">
+              <el-input v-if="scope.row.totalBug.edit" ref="totalBug" v-model="scope.row.totalBug.value" style="width: 100%" @blur="scope.row.totalBug.edit = false" />
+              <span v-else>{{ scope.row.totalBug.value }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="fixBug" min-width="200" align="center" label="已解决bug数">
+            <template slot-scope="scope">
+              <el-input v-if="scope.row.fixBug.edit" ref="fixBug" v-model="scope.row.fixBug.value" style="width: 100%" @blur="scope.row.fixBug.edit = false" />
+              <span v-else>{{ scope.row.fixBug.value }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="remainBug" min-width="200" align="center" label="遗留bug数">
+            <template slot-scope="scope">
+              <el-input v-if="scope.row.remainBug.edit" ref="remainBug" v-model="scope.row.remainBug.value" style="width: 100%" @blur="scope.row.remainBug.edit = false" />
+              <span v-else>{{ scope.row.remainBug.value }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="rateOfReopen" min-width="200" align="center" label="reopen率">
+            <template slot-scope="scope">
+              <el-input v-if="scope.row.rateOfReopen.edit" ref="rateOfReopen" v-model="scope.row.rateOfReopen.value" style="width: 100%" @blur="scope.row.rateOfReopen.edit = false" />
+              <span v-else>{{ scope.row.rateOfReopen.value }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="invalidBug" min-width="200" align="center" label="无效bug数">
+            <template slot-scope="scope">
+              <el-input v-if="scope.row.invalidBug.edit" ref="invalidBug" v-model="scope.row.invalidBug.value" style="width: 100%" @blur="scope.row.invalidBug.edit = false" />
+              <span v-else>{{ scope.row.invalidBug.value }}</span>
+            </template>
+          </el-table-column>
+        </el-table>
+        <el-row>
+          <el-col :span="24"><div class="titStyle">5、遗留问题</div><el-input v-model="ClientData.bugInfo" type="textarea" placeholder="请填写内容" /></el-col>
+        </el-row>
+
         <div class="backStyle">四. 测试项</div>
 
-        <div class="titStyle">1、功能测试</div>
+        <div class="titStyle" style="display:flex; margin:1% 0 -1% 0;  white-space: nowrap;">
+          <el-form-item style="flex:1; ">1、功能测试</el-form-item>
+          <div style="flex: 1; text-align: right;">
+            <el-tag :type="fctResultChange" effect="dark" class="tag" @click="fctResultradio(3)"> 未执行 </el-tag>
+            <el-tag :type="fctResultChange1" style="margin: 0 5%;" effect="dark" class="tag" @click="fctResultradio(1)"> 测试通过 </el-tag>
+            <el-tag :type="fctResultChange2" effect="dark" class="tag" @click="fctResultradio(2)"> 测试未通过 </el-tag>
+          </div>
+        </div>
 
         <div id="editorEl" class="toolbar" />
         <div id="editorEl1" class="text" />
 
-        <div class="titStyle">2、可靠性测试</div>
+        <div class="titStyle" style="display:flex; margin:1% 0 -1% 0;  white-space: nowrap;">
+          <el-form-item style="flex:1; ">2、可靠性测试</el-form-item>
+          <div style="flex: 1; text-align: right;">
+            <el-tag :type="rqtResultChange" effect="dark" class="tag" @click="rqtResultradio(3)"> 未执行 </el-tag>
+            <el-tag :type="rqtResultChange1" style="margin: 0 5%;" effect="dark" class="tag" @click="rqtResultradio(1)"> 测试通过 </el-tag>
+            <el-tag :type="rqtResultChange2" effect="dark" class="tag" @click="rqtResultradio(2)"> 测试未通过 </el-tag>
+          </div>
+        </div>
 
         <div id="editorEle" class="toolbar" />
         <div id="editorEle1" class="text" />
 
-        <div class="titStyle">3、稳定性测试</div>
+        <div class="titStyle" style="display:flex; margin:1% 0 -1% 0;  white-space: nowrap;">
+          <el-form-item style="flex:1; ">3、稳定性测试</el-form-item>
+          <div style="flex: 1; text-align: right;">
+            <el-tag :type="pftResultChange" effect="dark" class="tag" @click="pftResultradio(3)"> 未执行 </el-tag>
+            <el-tag :type="pftResultChange1" style="margin: 0 5%;" effect="dark" class="tag" @click="pftResultradio(1)"> 测试通过 </el-tag>
+            <el-tag :type="pftResultChange2" effect="dark" class="tag" @click="pftResultradio(2)"> 测试未通过 </el-tag>
+          </div>
+        </div>
 
         <div id="editorSix" class="toolbar" />
         <div id="editorSix1" class="text" />
 
-        <div class="titStyle">4、安全性测试</div>
+        <div class="titStyle" style="display:flex; margin:1% 0 -1% 0;  white-space: nowrap;">
+          <el-form-item style="flex:1; ">4、安全性测试</el-form-item>
+          <div style="flex: 1; text-align: right;">
+            <el-tag :type="safeResultChange" effect="dark" class="tag" @click="safeResultradio(3)"> 未执行 </el-tag>
+            <el-tag :type="safeResultChange1" style="margin: 0 5%;" effect="dark" class="tag" @click="safeResultradio(1)"> 测试通过 </el-tag>
+            <el-tag :type="safeResultChange2" effect="dark" class="tag" @click="safeResultradio(2)"> 测试未通过 </el-tag>
+          </div>
+        </div>
 
         <div id="editorEight" class="toolbar" />
         <div id="editorEight1" class="text" />
 
-        <div class="titStyle">5、线上监控</div>
+        <div class="titStyle" style="display:flex; margin:1% 0 -1% 0;  white-space: nowrap;">
+          <el-form-item style="flex:1; ">5、线上监控</el-form-item>
+          <div style="flex: 1; text-align: right;">
+            <el-tag :type="moniterResultChange" effect="dark" class="tag" @click="moniterResultradio(3)"> 未执行 </el-tag>
+            <el-tag :type="moniterResultChange1" style="margin: 0 5%;" effect="dark" class="tag" @click="moniterResultradio(1)"> 测试通过 </el-tag>
+            <el-tag :type="moniterResultChange2" effect="dark" class="tag" @click="moniterResultradio(2)"> 测试未通过 </el-tag>
+          </div>
+        </div>
 
         <div id="editorNine" class="toolbar" />
         <div id="editorNine1" class="text" />
 
-        <dir align="right" style="display: flex; margin: 5vw 0 0 60vw;">
+        <dir align="right" style="display: flex; margin: 5vw 0 0 50vw;">
           <div style="flex: 1;"><el-button @click="clickPreview(ClientData)"> 预 览 </el-button></div>
-          <div v-show="showButton" style="flex: 1;"><el-button type="primary" @click="getCreateData(ClientData)"> 保 存 </el-button></div>
-          <div v-show="showButton1" style="flex: 1;"><el-button type="primary" @click="getQueryData(ClientData)"> 更 新 </el-button></div>
+          <div v-show="showButton" style="flex: 1;"><el-button type="primary" @click="getCreateData(ClientData, tableData)"> 保 存 </el-button></div>
+          <div v-show="showButton1" style="flex: 1;"><el-button type="primary" @click="getQueryData(ClientData, tableData)"> 更 新 </el-button></div>
           <div style="flex: 1;"><el-button @click="open()"> 取 消 </el-button></div>
         </dir>
       </el-form>
@@ -106,7 +185,7 @@
 </template>
 
 <script>
-import { projectTestReportUpdate, projectTestReportCreate } from '@/api/ResultPage'
+import { projectTestReportUpdate, projectTestReportCreate, bugFinishList } from '@/api/ResultPage'
 import E from 'wangeditor'
 export default {
   name: 'Acceptance',
@@ -118,12 +197,29 @@ export default {
       tagBtn1: 'info',
       tagChange: 'info',
       tagChange1: 'info',
+      moniterResultChange: 'info',
+      moniterResultChange1: 'info',
+      moniterResultChange2: 'info',
+      safeResultChange: 'info',
+      safeResultChange1: 'info',
+      safeResultChange2: 'info',
+      rqtResultChange: 'info',
+      rqtResultChange1: 'info',
+      rqtResultChange2: 'info',
+      pftResultChange: 'info',
+      pftResultChange1: 'info',
+      pftResultChange2: 'info',
+      fctResultChange: 'info',
+      fctResultChange1: 'info',
+      fctResultChange2: 'info',
+      getInfoBtn: 'info',
+      getInfoBtn1: 'info',
       userInformation: localStorage.getItem('username'),
       userNames: localStorage.getItem('realname'),
-      bizIdData: localStorage.getItem('key'),
       serviceDataRules: {
         reportName: [{ required: true, message: '报告标题不能为空', trigger: 'change' }],
         ownner: [{ required: true, message: 'by不能为空', trigger: 'change' }],
+        safeInfo: [{ required: true, message: '完成结果不能为空', trigger: 'change' }],
         status: [{ required: false, message: '测试结果不能为空', trigger: 'change' }],
         taskLateStatus: [{ required: false, message: '准出延期不能为空', trigger: 'change' }],
         taskLateReason: [{ required: true, message: '延期原因不能为空', trigger: 'change' }],
@@ -133,6 +229,7 @@ export default {
         tester: [{ required: true, message: '测试人员不能为空', trigger: 'change' }],
         testTimeEnd: [{ required: true, message: '测试周期不能为空', trigger: 'change' }]
       },
+      showData: false,
       showDelay: false,
       showButton: true,
       showButton1: '',
@@ -141,20 +238,25 @@ export default {
       taskLateStatus: 0,
       value: '',
       status: '',
-      labelWidth: '60px',
       ClientData: {},
       editorElem: '',
       editorElems: '',
       editorFrom: '',
       editorF: '',
-      editorData: '',
       editorEl: '',
       editorEle: '',
       editorSix: '',
       editorEight: '',
       editorNine: '',
       bizIdCode: '',
-      projectIdCode: ''
+      projectIdCode: '',
+      bugNum: {},
+      tableData: [],
+      fctResult: '',
+      rqtResult: '',
+      pftResult: '',
+      safeResult: '',
+      moniterResult: ''
     }
   },
   created() {
@@ -165,7 +267,6 @@ export default {
     this.editorElems = new E('#editorElems', '#editorElems1')
     this.editorFrom = new E('#editorFrom', '#editorFrom1')
     this.editorF = new E('#editorF', '#editorF1')
-    this.editorData = new E('#editorData', '#editorData1')
     this.editorEl = new E('#editorEl', '#editorEl1')
     this.editorEle = new E('#editorEle', '#editorEle1')
     this.editorSix = new E('#editorSix', '#editorSix1')
@@ -176,7 +277,6 @@ export default {
     this.editorElems.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table']
     this.editorFrom.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table']
     this.editorF.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table']
-    this.editorData.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table']
     this.editorEl.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table']
     this.editorEle.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table']
     this.editorSix.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table']
@@ -187,7 +287,6 @@ export default {
     this.editorElems.customConfig.zIndex = 110
     this.editorFrom.customConfig.zIndex = 110
     this.editorF.customConfig.zIndex = 110
-    this.editorData.customConfig.zIndex = 110
     this.editorEl.customConfig.zIndex = 110
     this.editorEle.customConfig.zIndex = 110
     this.editorSix.customConfig.zIndex = 110
@@ -206,9 +305,6 @@ export default {
     this.editorF.customConfig.onchange = (html) => { this.editorF = html }
     this.editorF.create()
 
-    this.editorData.customConfig.onchange = (html) => { this.editorData = html }
-    this.editorData.create()
-
     this.editorEl.customConfig.onchange = (html) => { this.editorEl = html }
     this.editorEl.create()
 
@@ -226,7 +322,6 @@ export default {
 
     this.editorElem.txt.html(``)
     this.editorElems.txt.html(`<p></p><table style="border-radius:4px;" width="100%"><colgroup><col width="20%"><col width="20%"></colgroup><thead><tr><th>提测模块</th><th>提测分支</th></tr></thead><tbody><tr><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td></tr></tbody></table><p></p>`)
-    this.editorData.txt.html(`<p></p><table style="border-radius:4px;" width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>bug总数</th><th>已解决bug数</th><th>遗留bug数</th><th>reopen率</th><th>无效bug数</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table><p>遗留问题:</p><br>`)
     this.editorEl.txt.html(`<p></p><table style="border-radius:4px;" width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>子类</th><th>测试功能点</th><th>测试结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table><p></p>`)
     this.editorEle.txt.html(`<p></p><table style="border-radius:4px;" width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>子类</th><th>描述</th><th>测试结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table><p></p>`)
     this.editorSix.txt.html(`<p></p><table style="border-radius:4px;" width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>子类</th><th>描述</th><th>测试结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table><p></p>`)
@@ -243,24 +338,29 @@ export default {
         this.ClientData = {}
         this.bizIdCode = this.$route.query.projectId.bizId
         this.projectIdCode = this.$route.query.projectId.id
+        this.bugNum = { type: 1, projectId: this.projectIdCode }
       }
 
       if (this.$route.query.task) { // 任务页面新建
         this.ClientData = {}
         this.bizIdCode = this.$route.query.task.bizId
         this.projectIdCode = this.$route.query.task.id
+        this.bugNum = { type: 1, taskId: this.projectIdCode }
       }
 
       if (this.$route.query.projectData) { // 主页面新建
         this.ClientData = {}
         this.bizIdCode = this.$route.query.projectData.bizId
         this.projectIdCode = this.$route.query.projectData.id
+        this.$route.query.projectData.typeString === 1 ? this.ClientData.projectId = this.projectIdCode : this.ClientData.taskId = this.projectIdCode
+        this.bugNum = { type: 1, taskId: this.ClientData.taskId, projectId: this.ClientData.projectId }
       }
 
       if (this.$route.query.data) { // 报告主页更新
         this.showButton1 = true
         this.showButton = false
         this.ClientData = this.$route.query.data
+        this.bugNum = { type: 1, taskId: this.ClientData.taskId, projectId: this.ClientData.projectId }
         if (this.ClientData.status === 1) {
           this.tagBtn = 'success'
           this.status = '1'
@@ -271,14 +371,140 @@ export default {
         if (this.ClientData.taskLateStatus === 1) {
           this.tagChange = 'success'
           this.taskLateStatus = '1'
-          this.showDelay = true
+          this.showDelay = false
         } else {
           this.tagChange1 = 'danger'
           this.taskLateStatus = '2'
-          this.showDelay = false
+          this.showDelay = true
+        }
+
+        if (this.ClientData.safeInfo !== '') {
+          this.getInfoBtn1 = 'info'
+          this.getInfoBtn = 'danger'
+          this.lateStatus = 2
+          this.showData = true
+        } else {
+          this.getInfoBtn1 = 'success'
+          this.getInfoBtn = 'info'
+          this.lateStatus = 1
+          this.showData = false
+          this.$set(this.ClientData, 'safeInfo', '')
+        }
+
+        if (this.ClientData.fctResult) { // 功能测试
+          switch (this.ClientData.fctResult) {
+            case 1:
+              this.fctResultChange1 = 'success'
+              this.fctResult = 1
+              break
+            case 2:
+              this.fctResultChange2 = 'danger'
+              this.fctResult = 2
+              break
+            case 3:
+              this.fctResultChange = 'warning'
+              this.fctResult = 3
+              break
+          }
+        }
+
+        if (this.ClientData.rqtResult) { // 可靠性测试
+          switch (this.ClientData.rqtResult) {
+            case 1:
+              this.rqtResultChange1 = 'success'
+              this.rqtResult = 1
+              break
+            case 2:
+              this.rqtResultChange2 = 'danger'
+              this.rqtResult = 2
+              break
+            case 3:
+              this.rqtResultChange = 'warning'
+              this.rqtResult = 3
+              break
+          }
+        }
+
+        if (this.ClientData.pftResult) { // 稳定性测试
+          switch (this.ClientData.pftResult) {
+            case 1:
+              this.pftResultChange1 = 'success'
+              this.pftResult = 1
+              break
+            case 2:
+              this.pftResultChange2 = 'danger'
+              this.pftResult = 2
+              break
+            case 3:
+              this.pftResultChange = 'warning'
+              this.pftResult = 3
+              break
+          }
+        }
+
+        if (this.ClientData.safeResult) { // 安全性测试
+          switch (this.ClientData.safeResult) {
+            case 1:
+              this.safeResultChange1 = 'success'
+              this.safeResult = 1
+              break
+            case 2:
+              this.safeResultChange2 = 'danger'
+              this.safeResult = 2
+              break
+            case 3:
+              this.safeResultChange = 'warning'
+              this.safeResult = 3
+              break
+          }
+        }
+
+        if (this.ClientData.moniterResult) { // 线上监控
+          switch (this.ClientData.moniterResult) {
+            case 1:
+              this.moniterResultChange1 = 'success'
+              this.moniterResult = 1
+              break
+            case 2:
+              this.moniterResultChange2 = 'danger'
+              this.moniterResult = 2
+              break
+            case 3:
+              this.moniterResultChange = 'warning'
+              this.moniterResult = 3
+              break
+          }
         }
       }
+      this.getBugData(this.bugNum)
+    },
+
+    getBugData(e) {
+      bugFinishList(e).then(res => {
+        this.$set(this.ClientData, 'launchInfo', res.data.launchInfo)
+        this.tableData = [res.data]
+        this.formatData()
+      })
     },
+
+    formatData() {
+      this.tableData.forEach(item => {
+        for (var key in item) {
+          item[key] = {
+            value: item[key],
+            edit: false
+          }
+        }
+      })
+    },
+    // celledit(row, column, cell, event) {
+    //   if (row[column.property]) {
+    //     row[column.property].edit = true
+    //     setTimeout(() => {
+    //       this.$refs[column.property].focus()
+    //     }, 20)
+    //   }
+    // },
     getRouterData1() {
       if (this.$route.query.data) {
         this.ClientData = this.$route.query.data
@@ -287,7 +513,6 @@ export default {
         this.editorFrom.txt.html(this.ClientData.functionInfo)
         this.editorF.txt.html(this.ClientData.onlineRisk)
         this.editorEle.txt.html(this.ClientData.rqtInfo)
-        this.editorData.txt.html(this.ClientData.bugTarget)
         this.editorEl.txt.html(this.ClientData.fctInfo)
         this.editorSix.txt.html(this.ClientData.pftInfo)
         this.editorEight.txt.html(this.ClientData.safeResultInfo)
@@ -305,33 +530,31 @@ export default {
     },
 
     // 更新准出报告
-    getQueryData(ele) {
+    getQueryData(ele, vel) {
       this.ClientData = ele
+      // this.ClientData.bugTarget = JSON.stringify(vel[0])
       typeof (this.editorElem) === 'string' ? this.ClientData.projectBackground = this.editorElem : ''
       typeof (this.editorElems) === 'string' ? this.ClientData.moduleInfo = this.editorElems : ''
       typeof (this.editorFrom) === 'string' ? this.ClientData.functionInfo = this.editorFrom : ''
       typeof (this.editorF) === 'string' ? this.ClientData.onlineRisk = this.editorF : ''
       typeof (this.editorEle) === 'string' ? this.ClientData.rqtInfo = this.editorEle : ''
-      typeof (this.editorData) === 'string' ? this.ClientData.bugTarget = this.editorData : ''
       typeof (this.editorEl) === 'string' ? this.ClientData.fctInfo = this.editorEl : ''
       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.fctResult = this.fctResult
+      this.ClientData.rqtResult = this.rqtResult
+      this.ClientData.pftResult = this.pftResult
+      this.ClientData.safeResult = this.safeResult
+      this.ClientData.moniterResult = this.moniterResult
       this.ClientData.status = this.status
-      // if (this.$route.query.projectId) { // 项目页面
-      //   this.ClientData.bizId = this.bizIdCode
-      //   this.ClientData.projectId = this.projectIdCode
-      // }
-      // if (this.$route.query.task) { // 任务页面
-      //   this.ClientData.bizId = this.bizIdCode
-      //   this.ClientData.projectId = this.projectIdCode
-      // }
       this.ClientData.taskLateStatus = this.taskLateStatus
       this.userData = { id: '', ename: this.userInformation, name: this.userNames }
       this.objData = { projectTestReport: this.ClientData, user: this.userData }
       projectTestReportUpdate(this.objData).then(res => {
         if (res.code === 200) {
           this.$message({ type: 'success', message: '更新成功' })
+          this.$router.go(-1)
         } else {
           this.$message.error('更新失败')
         }
@@ -339,16 +562,16 @@ export default {
     },
 
     // 新建准出提交
-    getCreateData(ele) {
+    getCreateData(ele, vel) {
       this.$refs['ClientData'].validate((valid) => {
         if (valid) {
           this.ClientData = ele
+          // this.ClientData.bugTarget = JSON.stringify(vel[0])
           typeof (this.editorElem) === 'string' ? this.ClientData.projectBackground = this.editorElem : ''
           typeof (this.editorElems) === 'string' ? this.ClientData.moduleInfo = this.editorElems : ''
           typeof (this.editorFrom) === 'string' ? this.ClientData.functionInfo = this.editorFrom : ''
           typeof (this.editorF) === 'string' ? this.ClientData.onlineRisk = this.editorF : ''
           typeof (this.editorEle) === 'string' ? this.ClientData.rqtInfo = this.editorEle : ''
-          typeof (this.editorData) === 'string' ? this.ClientData.bugTarget = this.editorData : ''
           typeof (this.editorEl) === 'string' ? this.ClientData.fctInfo = this.editorEl : ''
           typeof (this.editorSix) === 'string' ? this.ClientData.pftInfo = this.editorSix : ''
           typeof (this.editorEight) === 'string' ? this.ClientData.safeResultInfo = this.editorEight : ''
@@ -366,6 +589,11 @@ export default {
             this.$route.query.projectData.typeString === 1 ? this.ClientData.projectId = this.projectIdCode : this.ClientData.taskId = this.projectIdCode
             this.ClientData.bizId = this.bizIdCode
           }
+          this.ClientData.fctResult = this.fctResult
+          this.ClientData.rqtResult = this.rqtResult
+          this.ClientData.pftResult = this.pftResult
+          this.ClientData.safeResult = this.safeResult
+          this.ClientData.moniterResult = this.moniterResult
           this.ClientData.status = this.status
           this.ClientData.taskLateStatus = this.taskLateStatus
           this.ClientData.type = 2
@@ -395,12 +623,27 @@ export default {
         this.tagChange = 'success'
         this.tagChange1 = 'info'
         this.showDelay = false
-        this.taskLateStatus = '1'
+        this.taskLateStatus = 1
+        this.$set(this.ClientData, 'taskLateReason', '')
       } else {
         this.tagChange = 'info'
         this.tagChange1 = 'danger'
         this.showDelay = true
-        this.taskLateStatus = '2'
+        this.taskLateStatus = 2
+      }
+    },
+
+    // 涉及安全项
+    showStatusData(e) {
+      if (e === 1) {
+        this.getInfoBtn1 = 'success'
+        this.getInfoBtn = 'info'
+        this.showData = false
+        this.$set(this.ClientData, 'safeInfo', '')
+      } else {
+        this.getInfoBtn1 = 'info'
+        this.getInfoBtn = 'danger'
+        this.showData = true
       }
     },
 
@@ -410,12 +653,116 @@ export default {
         this.ClientData.status = 1
         this.tagBtn = 'success'
         this.tagBtn1 = 'info'
-        this.status = '1'
+        this.status = 1
       } else {
         this.ClientData.status = 2
         this.tagBtn = 'info'
         this.tagBtn1 = 'danger'
-        this.status = '2'
+        this.status = 2
+      }
+    },
+
+    // 1、功能测试
+    fctResultradio(e) {
+      this.fctResultChange = 'info'
+      this.fctResultChange1 = 'info'
+      this.fctResultChange2 = 'info'
+      switch (e) {
+        case 1:
+          this.fctResultChange1 = 'success'
+          this.fctResult = 1
+          break
+        case 2:
+          this.fctResultChange2 = 'danger'
+          this.fctResult = 2
+          break
+        case 3:
+          this.fctResultChange = 'warning'
+          this.fctResult = 3
+          break
+      }
+    },
+
+    // 可靠性测试
+    rqtResultradio(e) {
+      this.rqtResultChange = 'info'
+      this.rqtResultChange1 = 'info'
+      this.rqtResultChange2 = 'info'
+      switch (e) {
+        case 1:
+          this.rqtResultChange1 = 'success'
+          this.rqtResult = 1
+          break
+        case 2:
+          this.rqtResultChange2 = 'danger'
+          this.rqtResult = 2
+          break
+        case 3:
+          this.rqtResultChange = 'warning'
+          this.rqtResult = 3
+          break
+      }
+    },
+    // 稳定性测试
+    pftResultradio(e) {
+      this.pftResultChange = 'info'
+      this.pftResultChange1 = 'info'
+      this.pftResultChange2 = 'info'
+      switch (e) {
+        case 1:
+          this.pftResultChange1 = 'success'
+          this.pftResult = 1
+          break
+        case 2:
+          this.pftResultChange2 = 'danger'
+          this.pftResult = 2
+          break
+        case 3:
+          this.pftResultChange = 'warning'
+          this.pftResult = 3
+          break
+      }
+    },
+
+    // 安全性测试
+    safeResultradio(e) {
+      this.safeResultChange = 'info'
+      this.safeResultChange1 = 'info'
+      this.safeResultChange2 = 'info'
+      switch (e) {
+        case 1:
+          this.safeResultChange1 = 'success'
+          this.safeResult = 1
+          break
+        case 2:
+          this.safeResultChange2 = 'danger'
+          this.safeResult = 2
+          break
+        case 3:
+          this.safeResultChange = 'warning'
+          this.safeResult = 3
+          break
+      }
+    },
+
+    // 线上监控
+    moniterResultradio(e) {
+      this.moniterResultChange = 'info'
+      this.moniterResultChange1 = 'info'
+      this.moniterResultChange2 = 'info'
+      switch (e) {
+        case 1:
+          this.moniterResultChange1 = 'success'
+          this.moniterResult = 1
+          break
+        case 2:
+          this.moniterResultChange2 = 'danger'
+          this.moniterResult = 2
+          break
+        case 3:
+          this.moniterResultChange = 'warning'
+          this.moniterResult = 3
+          break
       }
     }
   }
@@ -432,7 +779,6 @@ export default {
     font-size: 19px;
     font-weight: bold;
     border-radius: 4px;
-    /* padding:2px; */
     margin-top: 2%;
   }
   .eleStyle {

+ 18 - 42
src/views/Platform/presentation/Assumptions.vue

@@ -7,49 +7,30 @@
     </div>
     <template>
       <el-table :data="tableData" fit border style="width: 100%">
-        <el-table-column label="报告名称" width="230" align="center">
+        <el-table-column label="报告名称" min-width="230" align="center">
           <template slot-scope="scope">
             <a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView(tableData, scope.row.id)">{{ scope.row.name }}</a>
           </template>
         </el-table-column>
-        <el-table-column label="报告人" width="150" align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.submitter }}</span>
-          </template>
+        <el-table-column label="报告人" min-width="150" align="center">
+          <template slot-scope="scope">{{ scope.row.submitter }}</template>
         </el-table-column>
-        <el-table-column label="日期" width="280" align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.gmtCreate }}</span>
-          </template>
+        <el-table-column label="日期" min-width="280" align="center">
+          <template slot-scope="scope">{{ scope.row.gmtCreate }}</template>
         </el-table-column>
-        <el-table-column label="状态" width="150" align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.statusString }}</span>
-          </template>
+        <el-table-column label="状态" min-width="150" align="center">
+          <template slot-scope="scope">{{ scope.row.statusString }}</template>
         </el-table-column>
         <el-table-column label="操作" align="center" fixed="right" min-width="230">
           <template slot-scope="scope">
             <el-button size="mini" @click="queryPresentation(scope.row)">更新</el-button>
-            <el-tooltip content="功能正在实现中···" placement="top">
-              <el-button size="mini">权限</el-button>
-            </el-tooltip>
+            <el-tooltip content="功能正在实现中···" placement="top"><el-button size="mini">权限</el-button></el-tooltip>
             <el-button size="mini" @click="delePresentation(scope.row.id)">删除</el-button>
-
           </template>
         </el-table-column>
       </el-table>
     </template>
-    <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="提示" :visible.sync="centerDialogVisible" width="30%" center>
       选择任务 :
       <el-select v-model="queryData.state" filterable placeholder="搜索" style="width:80%;" @change="handleSelect($event)">
@@ -140,22 +121,16 @@ export default {
       }
     },
     selectionReport(e) {
-      console.log(this.queryData.state)
-      if (this.queryData.state !== undefined) {
+      if (this.queryData.state !== '') {
         for (var ele of this.restaurants) {
           if (ele.id === e) {
-            var hh = ele.type
+            var hh = ele
           }
         }
-        switch (hh) {
-          case 1:
-            this.centerDialogVisible = false
-            this.$router.push({ path: '/Platform/presentation/PresentReport', query: { id: this.mun }})
-            break
-          case 2:
-            this.centerDialogVisible = false
-            this.$router.push({ path: '/Platform/presentation/presentationReport', query: { id: this.mun }})
-            break
+        if (hh.type === 5) {
+          this.$router.push({ path: '/Platform/presentation/presentationReport', query: { task: hh }})
+        } else {
+          this.$router.push({ path: '/Platform/presentation/PresentReport', query: { task: hh }})
         }
       } else {
         this.centerDialogVisible = true
@@ -165,8 +140,9 @@ export default {
     getQueryData() {
       taskListCreate({ status: 5 }).then(res => {
         const arr = []
-        for (var ele of res.data) {
-          arr.push({ value: ele.name, id: ele.id, type: ele.type })
+        for (var ele of res.data.taskInfoList) {
+          arr.push({ value: ele.name, id: ele.id, type: ele.type, bizId: ele.bizId, projectId: ele.projectId })
+          console.log(arr)
         }
         this.restaurants = arr
       })

+ 130 - 35
src/views/Platform/presentation/ClientAcceptance.vue

@@ -18,7 +18,7 @@
             <el-tag :type="tagBtn" effect="dark" style="margin: 0 2vw;" class="tag" @click="changeStatus(1)"> 通过 </el-tag>
             <el-tag :type="tagBtn1" effect="dark" class="tag" @click="changeStatus(2)"> 不通过 </el-tag>
           </el-form-item>
-          <el-form-item label="准入结果" prop="smokeTestResult" style="flex: 2;text-align:right;"><el-input v-model="ClientData.smokeTestResult" style="width: 50vw;" placeholder="准入次数/通过次数/失败次数" /></el-form-item>
+          <el-form-item label="准入结果" prop="smokeTestResult" style="flex: 2;text-align:right;"><el-input v-model="ClientData.launchInfo" style="width: 50vw;" placeholder="准入次数/通过次数/失败次数" /></el-form-item>
         </div>
         <div style="display: flex; white-space: nowrap;">
           <el-form-item label="* 准出延期" style="flex: 1;" prop="taskLateStatus">
@@ -42,6 +42,7 @@
             <el-date-picker v-model="ClientData.testTimeStart" type="date" placeholder="请选择开始日期" style="margin-left: 1.3vw; width: 16vw;" />
           </el-form-item>
         </div>
+
         <div style="margin-bottom: 1%;" class="backStyle">二. 项目背景</div>
 
         <div id="editorElem" class="toolbar" />
@@ -64,7 +65,7 @@
         <div style="display:flex; margin:2% 0 -1% 0;  white-space: nowrap;">
           <el-form-item style="flex:1;">2.兼容测试</el-form-item>
           <div style="flex: 1; text-align: right;">
-            <el-tag :type="sctChange" effect="dark" class="tag" @click="changePftResult(3)"> 未执行 </el-tag>
+            <el-tag :type="sctChange" effect="dark" class="tag" @click="changeSctResult(3)"> 未执行 </el-tag>
             <el-tag :type="sctChange1" style="margin: 0 5%;" effect="dark" class="tag" @click="changeSctResult(1)"> 测试通过 </el-tag>
             <el-tag :type="sctChange2" effect="dark" class="tag" @click="changeSctResult(2)"> 测试未通过 </el-tag>
           </div>
@@ -85,26 +86,60 @@
         </div>
 
         <div id="editorFro" class="toolbar" />
-        <div id="editorFro1" class="text" style="text-align:left;cellspacing:0;cellpadding:0;min-height:100px;" />
+        <div id="editorFro1" class="text" />
 
         <div style="margin: 2% 0 2% 0;" class="backStyle">五. bug指标</div>
 
-        <div id="editorEle" class="toolbar" />
-        <div id="editorEle1" class="text" style="text-align:left;cellspacing:0;cellpadding:0;min-height:100px;" />
+        <el-table :data="tableData" border @cell-dblclick="celledit">
+          <el-table-column prop="totalBug" label="bug总数" min-width="200" align="center" edit="false">
+            <template slot-scope="scope">
+              <el-input v-if="scope.row.totalBug.edit" ref="totalBug" v-model="scope.row.totalBug.value" style="width: 100%" @blur="scope.row.totalBug.edit = false" />
+              <span v-else>{{ scope.row.totalBug.value }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="fixBug" min-width="200" align="center" label="已解决bug数">
+            <template slot-scope="scope">
+              <el-input v-if="scope.row.fixBug.edit" ref="fixBug" v-model="scope.row.fixBug.value" style="width: 100%" @blur="scope.row.fixBug.edit = false" />
+              <span v-else>{{ scope.row.fixBug.value }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="remainBug" min-width="200" align="center" label="遗留bug数">
+            <template slot-scope="scope">
+              <el-input v-if="scope.row.remainBug.edit" ref="remainBug" v-model="scope.row.remainBug.value" style="width: 100%" @blur="scope.row.remainBug.edit = false" />
+              <span v-else>{{ scope.row.remainBug.value }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="rateOfFix" min-width="200" align="center" label="bug解决率">
+            <template slot-scope="scope">
+              <el-input v-if="scope.row.rateOfFix.edit" ref="rateOfFix" v-model="scope.row.rateOfFix.value" style="width: 100%" @blur="scope.row.rateOfFix.edit = false" />
+              <span v-else>{{ scope.row.rateOfFix.value }}</span>
+            </template>
+          </el-table-column>
+          <!-- <el-table-column prop="memo" min-width="200" align="center" label="备注">
+            <template slot-scope="scope">
+              <el-input v-if="scope.row.memo.edit" ref="rateOfFix" v-model="scope.row.memo.value" style="width: 100%" @blur="scope.row.memo.edit = false" />
+              <span v-else>{{ scope.row.memo.value }}</span>
+            </template>
+          </el-table-column> -->
+        </el-table>
+
+        <el-row>
+          <el-col :span="24" style="margin:1% 0;">遗留问题<el-input v-model="ClientData.bugInfo" type="textarea" placeholder="请填写内容" style="margin-top:1%;" /></el-col>
+        </el-row>
 
-        <dir align="right" style="display: flex; margin: 5vw 0 3vw 64vw;">
+        <div align="right" style="display: flex; margin: 5vw 0 3vw 50vw;">
           <div style="flex: 1;"><el-button @click="clickPreview(ClientData)"> 预 览 </el-button></div>
-          <div v-show="showButton" style="flex: 1;"><el-button type="primary" @click="getCreateData(ClientData)"> 保 存 </el-button></div>
-          <div v-show="showButton1" style="flex: 1;"><el-button type="primary" @click="getQueryData(ClientData)"> 更 新 </el-button></div>
+          <div v-show="showButton" style="flex: 1;"><el-button type="primary" @click="getCreateData(ClientData, tableData)"> 保 存 </el-button></div>
+          <div v-show="showButton1" style="flex: 1;"><el-button type="primary" @click="getQueryData(ClientData, tableData)"> 更 新 </el-button></div>
           <div style="flex: 1;"><el-button @click="open()"> 取 消 </el-button></div>
-        </dir>
+        </div>
       </el-form>
     </div>
   </div>
 </template>
 
 <script>
-import { projectTestReportUpdate, projectTestReportCreate } from '@/api/ResultPage'
+import { projectTestReportUpdate, projectTestReportCreate, bugFinishList, projectTestReportList } from '@/api/ResultPage'
 import E from 'wangeditor'
 export default {
   name: 'ClientAcceptance',
@@ -153,8 +188,11 @@ export default {
       ClientData: {},
       editorElem: [],
       editorElems: [],
+      bugDatas: [],
       bizIdCode: '',
-      projectIdCode: ''
+      projectIdCode: '',
+      bugNum: '',
+      tableData: []
     }
   },
   created() {
@@ -165,40 +203,33 @@ export default {
     this.editorElems = new E('#editorElems', '#editorElems1')
     this.editorFrom = new E('#editorFrom', '#editorFrom1')
     this.editorFro = new E('#editorFro', '#editorFro1')
-    this.editorEle = new E('#editorEle', '#editorEle1')
 
     this.editorElem.customConfig.zIndex = 110
     this.editorElems.customConfig.zIndex = 110
     this.editorFrom.customConfig.zIndex = 110
     this.editorFro.customConfig.zIndex = 110
-    this.editorEle.customConfig.zIndex = 110
 
     this.editorElem.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table']
     this.editorElems.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table']
     this.editorFrom.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table']
     this.editorFro.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table']
-    this.editorEle.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table']
 
     this.editorElem.customConfig.onchange = (html) => { this.editorElem = html }
     this.editorElems.customConfig.onchange = (html) => { this.editorElems = html }
     this.editorFrom.customConfig.onchange = (html) => { this.editorFrom = html }
     this.editorFro.customConfig.onchange = (html) => { this.editorFro = html }
-    this.editorEle.customConfig.onchange = (html) => { this.editorEle = html }
 
     this.editorElem.create()
     this.editorElems.create()
     this.editorFrom.create()
     this.editorFro.create()
-    this.editorEle.create()
 
     this.editorElems.txt.html(`<p></p><table width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>页面</th><th>模块</th><th>接口</th><th>测试结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table><p></p>`)
     this.editorFrom.txt.html(`<p>1、机型兼容</p><table width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>手机型号</th><th>操作系统</th><th>分辨率</th><th>(微信版本号)</tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table><p>2、网络兼容</p><table width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>WIFI</th><th>4G</th><th>5G</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td></tr></tbody></table><p>3、容器兼容</p><br>`)
     this.editorFro.txt.html(`<p></p><table width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>验收项</th><th>验收点</th><th>验收人</th><th>验收结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table><p></p>`)
-    this.editorEle.txt.html(`<p></p><table width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>bug总数</th><th>已解决bug数</th><th>遗留bug数</th><th>bug解决率</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table><p>遗留问题:</p><br>`)
     this.getRouterData1()
   },
   methods: {
-
     getRouterData() {
       this.showButton = true
       this.showButton1 = false
@@ -206,25 +237,37 @@ export default {
         this.ClientData = {}
         this.bizIdCode = this.$route.query.projectId.bizId
         this.projectIdCode = this.$route.query.projectId.id
+        this.bugNum = { type: 2, projectId: this.projectIdCode }
       }
 
       if (this.$route.query.task) { // 任务页面新建
         this.ClientData = {}
         this.bizIdCode = this.$route.query.task.bizId
         this.projectIdCode = this.$route.query.task.id
+        this.bugNum = { type: 2, taskId: this.projectIdCode }
       }
 
       if (this.$route.query.projectData) { // 主页面新建
         this.ClientData = {}
         this.bizIdCode = this.$route.query.projectData.bizId
         this.projectIdCode = this.$route.query.projectData.id
+        this.$route.query.projectData.typeString === 1 ? this.ClientData.projectId = this.projectIdCode : this.ClientData.taskId = this.projectIdCode
+        this.bugNum = { type: 2, taskId: this.ClientData.taskId, projectId: this.ClientData.projectId }
       }
 
       if (this.$route.query.data) { // 准出主页面
+        projectTestReportList({ bizId: this.$route.query.data.bizId }).then(res => {
+          for (var vel of res.data) {
+            this.$route.query.data.id === vel.id
+            var obj = vel
+          }
+          console.log(obj)
+        })
         this.ClientData = {}
         this.showButton1 = true
         this.showButton = false
         this.ClientData = this.$route.query.data
+        this.bugNum = { type: 1, taskId: this.ClientData.taskId, projectId: this.ClientData.projectId }
         if (this.ClientData.status === 1) {
           this.tagBtn = 'success'
           this.tagBtn1 = 'info'
@@ -309,13 +352,13 @@ export default {
           }
         }
       }
+      this.getBugData(this.bugNum)
     },
     getRouterData1() {
       this.editorElem.txt.html(this.ClientData.projectBackground)
       this.editorElems.txt.html(this.ClientData.fctInfo)
       this.editorFrom.txt.html(this.ClientData.sctInfo)
       this.editorFro.txt.html(this.ClientData.acceptanceResultInfo)
-      this.editorEle.txt.html(this.ClientData.bugTarget)
     },
     open() {
       this.$confirm('是否放弃修改,离开页面?', '确认信息', {
@@ -326,15 +369,15 @@ export default {
         .then(() => { this.$message({ type: 'info', message: '继续修改' }) })
         .catch(action => { action === 'cancel' ? this.$router.go(-1) : '' })
     },
-    getCreateData(ele) {
+    getCreateData(ele, vel) {
       this.$refs['ClientData'].validate((valid) => {
         if (valid) {
           this.ClientData = ele
+          // this.ClientData.bugTarget = JSON.stringify(vel[0])
           typeof (this.editorElem) === 'string' ? this.ClientData.projectBackground = this.editorElem : ''
           typeof (this.editorElems) === 'string' ? this.ClientData.fctInfo = this.editorElems : ''
           typeof (this.editorFrom) === 'string' ? this.ClientData.sctInfo = this.editorFrom : ''
           typeof (this.editorFro) === 'string' ? this.ClientData.acceptanceResultInfo = this.editorFro : ''
-          typeof (this.editorEle) === 'string' ? this.ClientData.bugTarget = this.editorEle : ''
           this.ClientData.pftResult = this.pftResult
           this.ClientData.sctResult = this.sctResult
           this.ClientData.acceptanceResult = this.acceptanceResult
@@ -368,13 +411,24 @@ export default {
         }
       })
     },
-    getQueryData(ele) {
+    getQueryData(ele, vel) {
       this.ClientData = ele
+      // var obj = {}
+      // for (var a of vel) {
+      //   obj.totalBug = a.totalBug.value
+      //   obj.fixBug = a.fixBug.value
+      //   obj.remainBug = a.remainBug.value
+      //   obj.rateOfFix = a.rateOfFix.value
+      //   obj.invalidBug = a.invalidBug.value
+      //   obj.rateOfReopen = a.rateOfReopen.value
+      //   obj.launchInfo = a.launchInfo.value
+      //   obj.memo = a.memo.value
+      // }
+      // this.ClientData.bugTarget = JSON.stringify(obj)
       typeof (this.editorElem) === 'string' ? this.ClientData.projectBackground = this.editorElem : ''
       typeof (this.editorElems) === 'string' ? this.ClientData.fctInfo = this.editorElems : ''
       typeof (this.editorFrom) === 'string' ? this.ClientData.sctInfo = this.editorFrom : ''
       typeof (this.editorFro) === 'string' ? this.ClientData.acceptanceResultInfo = this.editorFro : ''
-      typeof (this.editorEle) === 'string' ? this.ClientData.bugTarget = this.editorEle : ''
       this.ClientData.pftResult = this.pftResult
       this.ClientData.sctResult = this.sctResult
       this.ClientData.acceptanceResult = this.acceptanceResult
@@ -391,6 +445,32 @@ export default {
         }
       })
     },
+    getBugData(e) {
+      bugFinishList(e).then(res => {
+        this.$set(this.ClientData, 'launchInfo', res.data.launchInfo)
+        this.tableData = [res.data]
+        this.formatData()
+      })
+    },
+
+    formatData() {
+      this.tableData.forEach(item => {
+        for (var key in item) {
+          item[key] = {
+            value: item[key],
+            edit: false
+          }
+        }
+      })
+    },
+    // celledit(row, column, cell, event) {
+    //   if (row[column.property]) {
+    //     row[column.property].edit = true
+    //     setTimeout(() => {
+    //       this.$refs[column.property].focus()
+    //     }, 20)
+    //   }
+    // },
 
     // 准出延期
     lateStatusChange(e) {
@@ -398,12 +478,13 @@ export default {
         this.tagChange = 'success'
         this.tagChange1 = 'info'
         this.showDelay = false
-        this.taskLateStatus = '1'
+        this.taskLateStatus = 1
+        this.$set(this.ClientData, 'taskLateReason', '')
       } else {
         this.tagChange = 'info'
         this.tagChange1 = 'danger'
         this.showDelay = true
-        this.taskLateStatus = '2'
+        this.taskLateStatus = 2
       }
     },
     clickPreview(ele) {
@@ -415,24 +496,31 @@ export default {
       if (e === 1) {
         this.tagBtn = 'success'
         this.tagBtn1 = 'info'
-        this.status = '1'
+        this.status = 1
       } else {
         this.tagBtn = 'info'
         this.tagBtn1 = 'danger'
-        this.status = '2'
+        this.status = 2
       }
     },
 
     // 兼容测试
     changeSctResult(e) {
-      if (e === 1) {
-        this.sctChange = 'success'
-        this.sctChange1 = 'info'
-        this.sctResult = 1
-      } else {
-        this.sctChange = 'info'
-        this.sctChange1 = 'danger'
-        this.sctResult = 2
+      this.sctChange = 'info'
+      this.sctChange1 = 'info'
+      this.sctChange2 = 'info'
+      switch (e) {
+        case 1:
+          this.sctChange1 = 'success'
+          this.sctResult = 1
+          break
+        case 2:
+          this.sctChange2 = 'danger'
+          this.sctResult = 2
+          break
+        case 3:
+          this.sctChange = 'warning'
+          this.sctResult = 3
       }
     },
 
@@ -514,3 +602,10 @@ export default {
     height: auto;
   }
 </style>
+<style lang="stylus" scoped>
+  .double
+    display flex
+    justify-content space-between
+  .double >>> .el-form-item__content
+    display flex
+</style>

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

@@ -11,7 +11,7 @@
             <el-input v-model="fromCreateData.ownner" style="width: 24vw;" placeholder="who" />
           </el-form-item>
         </div>
-        <el-radio-group 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>
@@ -42,8 +42,8 @@
                 </ol>
               </div>
             </div>
-          </el-col>
-        </el-row>
+          </el-col> -->
+        <!-- </el-row> -->
 
         <div class="backStyle">一. 进度和风险</div>
         <div id="projectProgress" class="toolbar" />
@@ -129,7 +129,9 @@ export default {
       statusMap1: [],
       pro: '',
       idCode: '', // 项目 任务的id
-      bizIdCode: '' // 业务线
+      bizIdCode: '', // 业务线
+
+      taskId: ''
     }
   },
   created() {
@@ -164,13 +166,15 @@ export default {
         this.showButton = false
         this.pro = this.$route.query.data
       }
-      if (this.$route.query.state) { // 项目主页面新建
+      if (this.$route.query.state1) { // 项目主页面新建
+        console.log(this.$route.query.state1)
         this.fromCreateData = {}
         this.showButton1 = false
         this.showButton = true
-        this.idCode = this.$route.query.state.id
-        this.bizIdCode = this.$route.query.state.bizId
-        this.$route.query.state.typeString === 1 ? this.pro = { projectId: this.idCode, bizId: this.bizIdCode } : this.pro = { taskId: this.idCode, bizId: this.bizIdCode }
+        this.projectId = this.$route.query.state1.projectId
+        this.taskId = this.$route.query.state1.taskId
+        this.bizIdCode = this.$route.query.state1.bizId
+        this.pro = { projectId: this.projectId, bizId: this.bizIdCode, taskId: this.taskId }
       }
       if (this.$route.query.task) { // 任务页面
         this.fromCreateData = {}
@@ -251,10 +255,10 @@ export default {
             this.fromCreateData.bizId = this.bizIdCode
           }
 
-          if (this.$route.query.state) { // 项目主页面新建
-            this.fromCreateData.projectId = this.idCode
-            this.fromCreateData.bizId = this.bizIdCode
-            this.$route.query.state.typeString === 1 ? this.fromCreateData.projectId = this.idCode : this.fromCreateData.taskId = this.idCode
+          if (this.$route.query.state1) { // 项目主页面新建
+            this.fromCreateData.projectId = this.$route.query.state1.projectId
+            this.fromCreateData.taskId = this.$route.query.state1.taskId
+            this.fromCreateData.bizId = this.$route.query.state1.bizId
           }
 
           this.fromCreateData.bizId = this.bizIdCode
@@ -286,6 +290,7 @@ export default {
       dailyReportUpdate(this.objData).then(res => {
         if (res.code === 200) {
           this.$message({ type: 'success', message: '更新成功' })
+          this.$router.go(-1)
         } else {
           this.$message.error('更新失败')
         }
@@ -332,11 +337,11 @@ export default {
   }
   .toolbar {
     /* width: 86vw; */
-    border: 2px solid #DEE2E7;
+    border: 1px solid #DEE2E7;
   }
   .text {
     /* width: 86vw; */
-    border: 2px solid #DEE2E7;
+    border: 1px solid #DEE2E7;
     height: auto;
     font-size: 15px;
     color: #606266

+ 213 - 144
src/views/Platform/presentation/PresentReport.vue

@@ -1,118 +1,115 @@
 <template>
   <!-- 提测报告,新增客户端报告 -->
-  <div>
-    <el-form ref="dataChange" :inline="true" :model="dataChange" :rules="serviceDataRules" style="padding:30px; margin:7% 3%;background:#fff;">
-      <el-row :gutter="20">
-        <el-col :span="13">
-          <el-form-item prop="name">
-            <el-input v-model="dataChange.name" style="width:38vw;" placeholder="报告标题(端-版本-需求提测报告)" />
+  <div class="eleStyle">
+    <div style="height:100%;width:94%; background:#ffffff; margin: 3%; border-radius: 8px; overflow: hidden;">
+      <el-form ref="dataChange" :model="dataChange" :rules="serviceDataRules" style="margin:2% 3%;">
+        <div class="double">
+          <el-form-item label="标题" prop="name">
+            <el-input v-model="dataChange.name" style="width:50vw;" placeholder="报告标题(端-版本-需求提测报告)" />
           </el-form-item>
-        </el-col>
-        <el-col :span="11">
-          <el-form-item label="by" prop="submitter" style="margin-left:80px;background: white">
-            <el-input v-model="dataChange.submitter" style="width:20vw; margin-left:30px; border:2px solid #ccc;border-radius: 4px;" placeholder="who" />
+          <el-form-item label="by" prop="submitter">
+            <el-input v-model="dataChange.submitter" style="width: 25vw;" placeholder="who" />
           </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="20"><el-col :span="12"><el-form-item label="一、提测详情" class="cententTit" /></el-col></el-row>
-      <el-row :gutter="20" type="flex">
-        <el-col :span="12">
-          <el-form-item label="是否延期" prop="lateStatus">
-            <el-radio-group v-model="dataChange.lateStatus">
-              <el-radio style="margin: 0 90px;" label="2" @change="lateStatusChange">否</el-radio>
-              <el-radio style="padding-right: 185px;" label="1" @change="lateStatusChange(1)">是</el-radio>
-            </el-radio-group>
+        </div>
+
+        <div class="backStyle">一. 提测详情</div>
+
+        <div class="double" style="white-space: nowrap;">
+          <el-form-item label="* 是否延期">
+            <div style="text-align:right;">
+              <el-button :type="lateStatusBtn" style="margin: 0 20px;" class="tag" @click="lateStatusChange(2)"> 是 </el-button>
+              <el-button :type="lateStatusBtn1" class="tag" @click="lateStatusChange(1)"> 否 </el-button>
+            </div>
           </el-form-item>
-          <el-form-item v-if="showDelay" label="延期原因" prop="lateReason" style="margin-left:75px;"><el-input v-model="dataChange.lateReason" style="width:29.8vw;" /></el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="23">
-        <el-col :span="23">
-          <el-form-item label="测试地址 " prop="packageUrl"><el-input v-model="dataChange.packageUrl" style="width:72.5vw; padding-left:7px;" /></el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="23">
-        <el-col :span="23">
-          <el-form-item label="打包分支 " prop="packageBranch"><el-input v-model="dataChange.packageBranch" style="width:72.5vw; padding-left:7px;" /></el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="20" type="flex">
-        <el-col :span="12">
-          <el-form-item label="提测环境 " prop="env"><el-input v-model="dataChange.env" style="width:30.8vw; padding-left:7px;" /></el-form-item>
-          <el-form-item label="优先级 " prop="priority" style="margin-left:75px;">
-            <el-select v-model="dataChange.priority" style="width:30.7vw;padding-left:18px;" placeholder="请选择优先级">
-              <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.name" />
-            </el-select>
+          <el-form-item v-if="showDelay" label="延期原因" prop="lateReason"><el-input v-model="dataChange.lateReason" style="width: 45vw;" /></el-form-item>
+        </div>
+
+        <div class="double" style="white-space: nowrap;">
+          <el-form-item label="* 新增Apollo">
+            <div style="text-align:right;">
+              <el-button :type="configInBtn" style="margin: 0 6px" class="tag" @click="changeApollo(1)"> 是 </el-button>
+              <el-button :type="configInBtn1" style="margin-left: 24px" class="tag" @click="changeApollo(2)"> 否 </el-button>
+            </div>
           </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="20" type="flex">
-        <el-col :span="12">
-          <el-form-item label="新增Apollo" prop="configIn">
-            <el-radio-group v-model="dataChange.configIn">
-              <el-radio style="margin: 0 83px;" label="2" @change="changeApollo">否</el-radio>
-              <el-radio style="padding-right: 185px;" label="1" @change="changeApollo(1)">是</el-radio>
-            </el-radio-group>
+          <el-form-item v-if="showApollo" label="Apollo名称" prop="configInfo"><el-input v-model="dataChange.configInfo" style="width: 45vw;" /></el-form-item>
+        </div>
+
+        <div class="double" style="white-space: nowrap;">
+          <el-form-item label="* 依赖组件">
+            <div style="text-align:right;">
+              <el-button :type="dependentBtn" style="margin: 0 20px;" class="tag" @click="changeRelyOn(1)"> 是 </el-button>
+              <el-button :type="dependentBtn1" class="tag" @click="changeRelyOn(2)"> 否 </el-button>
+            </div>
           </el-form-item>
-          <el-form-item v-if="showApollo" label="Apollo名称" prop="configInfo" style="margin-left:75px;"><el-input v-model="dataChange.configInfo" style="width:28.5vw;" /></el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="20" type="flex">
-        <el-col :span="12">
-          <el-form-item label="依赖组件" prop="dependent">
-            <el-radio-group v-model="dataChange.dependent">
-              <el-radio style="margin: 0 90px;" label="2" @change="changeRelyOn">否</el-radio>
-              <el-radio style="padding-right: 185px;" label="1" @change="changeRelyOn(1)">是</el-radio>
-            </el-radio-group>
+          <el-form-item v-if="showRelyOn" label="组件名称" prop="dependentComponents"><el-input v-model="dataChange.dependentComponents" style="width: 45vw;" /></el-form-item>
+        </div>
+
+        <div class="double">
+          <el-form-item label="测试地址" prop="packageUrl"><el-input v-model="dataChange.packageUrl" style="width:25vw;" /></el-form-item>
+          <el-form-item label="打包分支" prop="packageBranch"><el-input v-model="dataChange.packageBranch" style="width:40vw;" /></el-form-item>
+        </div>
+
+        <div class="double">
+          <el-form-item label=" 优 先 级" prop="priority">
+            <el-select v-model="dataChange.priority" style="width:25vw;" 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 v-if="showRelyOn" label="组件名称" prop="dependentComponents" style="margin-left:75px;"><el-input v-model="dataChange.dependentComponents" style="width:29.3vw;" /></el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="23">
-        <el-col :span="23">
-          <el-form-item label="PM & UI " prop="pmUi"><el-input v-model="dataChange.pmUi" style="width:72.5vw; padding-left:7px;" /></el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="23">
-        <el-col :span="23">
-          <el-form-item label="需求list" prop="functionInfo" style="padding:2px;"><el-input v-model="dataChange.functionInfo" style="width:73vw;" type="textarea" :rows="5" /></el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="23">
-        <el-col :span="23" style="padding-top:20px;">
-          <el-form-item label="自测结果"><el-input v-model="dataChange.selfTestInfo" style="width:73vw;" /></el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="23">
-        <el-col :span="23">
-          <el-form-item label="涉及接口" style="padding:2px;"><el-input v-model="dataChange.interfaceInfo" style="width:73vw;" type="textarea" :rows="3" /></el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="23">
-        <el-col :span="23">
-          <el-form-item label="测试建议" style="padding:2px;"><el-input v-model="dataChange.testSuggest" style="width:73vw;" type="textarea" :rows="5" /></el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="23"><el-col :span="12"><el-form-item label="二、联调详情" class="cententTit" /></el-col></el-row>
-      <el-row :gutter="23">
-        <el-col style="width:79.5vw;">
-          <div id="DetailsOfProposal" class="toolbar" />
-          <div id="DetailsOfProposal1" class="text" style="text-align:left;cellspacing:0;cellpadding:0;" />
-        </el-col>
-      </el-row>
-      <el-row :gutter="23"><el-col><el-form-item label="三、其他" class="cententTit" style="margin-top:20px;" /></el-col></el-row>
-      <el-row :gutter="23">
-        <el-col :span="23">
-          <el-form-item label="其他"><el-input v-model="dataChange.others" style="padding-left:25px;width:75vw;" type="textarea" :rows="5" /></el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="24" style="margin:70px 0 0 150px;" type="flex" justify="center">
-        <el-col :span="8"><el-button type="info" @click="clickPreview(dataChange)"> 预 览 </el-button></el-col>
-        <el-col v-show="showButton" :span="8"><el-button type="info" @click="getCreateData(dataChange)"> 保 存 </el-button></el-col>
-        <el-col v-show="showButton1" :span="8"><el-button type="info" @click="getQueryData(dataChange)"> 更 新 </el-button></el-col>
-        <el-col :span="8"><el-button type="info" @click="open(dataChange)"> 取 消 </el-button></el-col>
-      </el-row>
-    </el-form>
+          <el-form-item label="提测环境" prop="env"><el-input v-model="dataChange.env" style="width:40vw;" /></el-form-item>
+        </div>
+
+        <div class="double">
+          <el-col :span="24">
+            <el-form-item label="PM & UI" prop="pmUi"><el-input v-model="dataChange.pmUi" style="width:100%;" /></el-form-item>
+          </el-col>
+        </div>
+
+        <div class="double">
+          <el-col :span="24">
+            <el-form-item label="自测结果" prop="selfTestInfo"><el-input v-model="dataChange.selfTestInfo" style="width:85vw;" /></el-form-item>
+          </el-col>
+        </div>
+
+        <div class="double">
+          <el-col :span="24">
+            <el-form-item label="需求list" prop="functionInfo"><el-input v-model="dataChange.functionInfo" style="width:85vw;margin-left:9px;" /></el-form-item>
+          </el-col>
+        </div>
+
+        <div class="double">
+          <el-col :span="24">
+            <el-form-item label="涉及接口"><el-input v-model="dataChange.interfaceInfo" style="width:85vw;margin-left:9px;" type="textarea" :rows="5" /></el-form-item>
+          </el-col>
+        </div>
+
+        <div class="double">
+          <el-col :span="24">
+            <el-form-item label="测试建议"><el-input v-model="dataChange.testSuggest" style="width:85vw;margin-left:9px;" type="textarea" :rows="5" /></el-form-item>
+          </el-col>
+        </div>
+
+        <div class="backStyle">二. 联调详情</div>
+
+        <div id="DetailsOfProposal" class="toolbar" />
+        <div id="DetailsOfProposal1" class="text" />
+
+        <div class="backStyle">三. 其他</div>
+
+        <div class="double">
+          <el-col :span="24">
+            <el-form-item label="其他"><el-input v-model="dataChange.others" style="width:85vw;" type="textarea" :rows="5" /></el-form-item>
+          </el-col>
+        </div>
+
+        <div class="double" align="right" style="margin: 5vw 0 3vw 60vw;">
+          <div><el-button @click="clickPreview(dataChange)"> 预 览 </el-button></div>
+          <div v-show="showButton"><el-button type="primary" @click="getCreateData(dataChange)"> 保 存 </el-button></div>
+          <div v-show="showButton1"><el-button type="primary" @click="getQueryData(dataChange)"> 更 新 </el-button></div>
+          <div><el-button @click="open(dataChange)"> 取 消 </el-button></div>
+        </div>
+
+      </el-form>
+    </div>
   </div>
 </template>
 
@@ -126,19 +123,26 @@ export default {
     return {
       priorityStrings: [{ name: 'p0', value: 0 }, { name: 'p1', value: 1 }, { name: 'p2', value: 2 }, { name: 'p3', value: 3 }],
       serviceDataRules: {
+        selfTestInfo: [{ required: true, message: '自测结果不能为空', trigger: 'change' }],
         name: [{ required: true, message: '报告标题不能为空', trigger: 'change' }],
         submitter: [{ required: true, message: 'by不能为空', trigger: 'change' }],
         pmUi: [{ required: true, message: 'PM & UI不能为空', trigger: 'change' }],
-        lateStatus: [{ required: true, message: '是否延期不能为空', trigger: 'change' }],
+        lateStatus: [{ required: false, message: '是否延期不能为空', trigger: 'change' }],
         lateReason: [{ required: true, message: '延期原因不能为空', trigger: 'change' }],
-        dependent: [{ required: true, message: '依赖组建不能为空', trigger: 'change' }],
-        configIn: [{ required: true, message: '新增Apollo不能为空', trigger: 'change' }],
+        dependent: [{ required: false, message: '依赖组建不能为空', trigger: 'change' }],
+        configIn: [{ required: false, message: '新增Apollo不能为空', trigger: 'change' }],
         priority: [{ required: true, message: '优先级不能为空', trigger: 'change' }],
         packageUrl: [{ required: true, message: '测试地址不能为空', trigger: 'change' }],
         packageBranch: [{ required: true, message: '打包分支不能为空', trigger: 'change' }],
         functionInfo: [{ required: true, message: '需求list不能为空', trigger: 'change' }],
         env: [{ required: true, message: '提测环境不能为空', trigger: 'change' }]
       },
+      lateStatusBtn: 'info',
+      lateStatusBtn1: 'info',
+      configInBtn: 'info',
+      configInBtn1: 'info',
+      dependentBtn: 'info',
+      dependentBtn1: 'info',
       showDelay: false,
       showApollo: false,
       showRelyOn: false,
@@ -150,14 +154,15 @@ export default {
       userNames: localStorage.getItem('realname'),
       id: '',
       name: '',
-      labelWidth: '60px',
       dataChange: {},
       DetailsOfProposal: '',
       lateStatus: '',
       configInfo: '',
       dependentComponents: '',
       bizIdCode: '',
-      projectIdCode: ''
+      projectIdCode: '',
+      configIn: '',
+      dependent: ''
     }
   },
   created() {
@@ -177,6 +182,7 @@ export default {
       this.showButton = true
       this.showButton1 = false
       if (this.$route.query.task) {
+        this.dataChange.projectId = this.$route.query.task.projectId
         this.bizIdCode = this.$route.query.task.bizId
         this.projectIdCode = this.$route.query.task.id
       }
@@ -185,36 +191,50 @@ export default {
         this.showButton = false
         this.dataChange = this.$route.query.data
         if (this.dataChange.lateStatus === 1) {
-          this.dataChange.lateStatus = '1'
-          this.showDelay = true
-        } else {
-          this.dataChange.lateStatus = '2'
+          this.lateStatusBtn1 = 'success'
+          this.lateStatusBtn = 'info'
+          this.lateStatus = 1
           this.showDelay = false
+        } else {
+          this.lateStatusBtn1 = 'info'
+          this.lateStatusBtn = 'danger'
+          this.lateStatus = 2
+          this.showDelay = true
         }
         if (this.dataChange.configInfo !== '') {
-          this.dataChange.configIn = '1'
+          this.configInBtn = 'success'
+          this.configInBtn1 = 'info'
+          this.configIn = 1
           this.showApollo = true
         } else {
-          this.dataChange.configIn = '2'
+          this.configInBtn = 'info'
+          this.configInBtn1 = 'danger'
+          this.configIn = 2
           this.showApollo = false
         }
         if (this.dataChange.dependentComponents !== '') {
-          this.dataChange.dependent = '1'
+          this.dependentBtn = 'success'
+          this.dependentBtn1 = 'info'
+          this.dependent = 1
           this.showRelyOn = true
         } else {
-          this.dataChange.dependent = '2'
+          this.dependentBtn = 'info'
+          this.dependentBtn1 = 'danger'
+          this.dependent = 2
           this.showRelyOn = false
         }
       }
     },
     getQueryData(ele) {
       this.dataChange = ele
+      this.dataChange.lateStatus = this.lateStatus
       typeof (this.DetailsOfProposal) === 'string' ? this.dataChange.joinTest = this.DetailsOfProposal : ''
       this.userData = { ename: this.userInformation, name: this.userNames }
       this.objData = { launchTestInfo: this.dataChange, user: this.userData }
       launchTestUpdate(this.objData).then(res => {
         if (res.code === 200) {
           this.$message({ type: 'success', message: '更新成功' })
+          this.$router.go(-1)
         } else {
           this.$message.error('更新失败')
         }
@@ -225,28 +245,25 @@ export default {
         if (valid) {
           this.dataChange = ele
           typeof (this.DetailsOfProposal) === 'string' ? this.dataChange.joinTest = this.DetailsOfProposal : ''
-          // this.dataChange.joinTest = this.DetailsOfProposal
           if (this.$route.query.task) {
+            this.dataChange.projectId = this.$route.query.task.projectId
             this.dataChange.taskId = this.projectIdCode
             this.dataChange.bizId = this.bizIdCode
           }
-
+          this.dataChange.lateStatus = this.lateStatus
           this.dataChange.type = 1
-          this.dataChange.lateStatus === 1 ? this.dataChange.lateStatus = 1 : this.dataChange.lateStatus = 2
-          this.dataChange.configInfo === 1 ? this.dataChange.configInfo = ele.lateReason : this.dataChange.configInfo = ''
-          this.dataChange.dependentComponents === 1 ? this.dataChange.dependentComponents = ele.lateReason : this.dataChange.dependentComponents = ''
           this.userData = { ename: this.userInformation, name: this.userNames }
           this.objData = { launchTestInfo: this.dataChange, user: this.userData }
           launchTestCreate(this.objData).then(res => {
             if (res.code === 200) {
-              this.$message({ type: 'success', message: '保存成功' })
+              this.$message.success(res.msg)
               this.$router.go(-1)
             } else {
-              this.$message.error('保存失败')
+              this.$message.error(res.msg)
             }
           })
         } else {
-          console.log('error submit!!')
+          this.$message.error('必填项不能为空')
           return false
         }
       })
@@ -263,15 +280,55 @@ export default {
         .then(() => { this.$message({ type: 'info', message: '继续修改' }) })
         .catch(action => { action === 'cancel' ? this.$router.go(-1) : '' })
     },
+
+    // 是否延期
     lateStatusChange(e) {
-      e === 1 ? this.showDelay = true : this.showDelay = false
+      if (e === 2) {
+        this.lateStatusBtn = 'danger'
+        this.lateStatusBtn1 = 'info'
+        this.lateStatus = 2
+        this.showDelay = true
+      } else {
+        this.lateStatusBtn = 'info'
+        this.lateStatusBtn1 = 'success'
+        this.lateStatus = 1
+        this.showDelay = false
+        this.$set(this.dataChange, 'lateReason', '')
+      }
     },
+
+    // 新增Apollo
     changeApollo(e) {
-      e === 1 ? this.showApollo = true : this.showApollo = false
+      if (e === 1) {
+        this.configInBtn = 'success'
+        this.configInBtn1 = 'info'
+        this.configIn = 1
+        this.showApollo = true
+      } else {
+        this.$set(this.dataChange, 'configInfo', '')
+        this.configInBtn = 'info'
+        this.configInBtn1 = 'danger'
+        this.configIn = 2
+        this.showApollo = false
+      }
     },
+
+    // 依赖组件
     changeRelyOn(e) {
-      e === 1 ? this.showRelyOn = true : this.showRelyOn = false
+      if (e === 1) {
+        this.dependentBtn = 'success'
+        this.dependentBtn1 = 'info'
+        this.dependent = 1
+        this.showRelyOn = true
+      } else {
+        this.$set(this.dataChange, 'dependentComponents', '')
+        this.dependentBtn = 'info'
+        this.dependentBtn1 = 'danger'
+        this.dependent = 2
+        this.showRelyOn = false
+      }
     },
+
     clickPreview(ele) {
       this.$router.push({ path: '/Platform/presentation/acceptTheReport', query: { data: ele }})
     }
@@ -280,28 +337,40 @@ export default {
 </script>
 
 <style scoped>
-  .el-col {
-    white-space:nowrap;
+  .eleStyle {
+    width: 100%;
+    height:100%;
+    background:#F2F3F6;
+    display: inline-block;
   }
-  .el-form-item {
-    background: #ccc;
+  .backStyle {
+    font-size: 19px;
+    font-weight: bold;
     border-radius: 4px;
-    padding:2px;
+    margin: 1% 0;
   }
-  .cententTit {
-    padding-right:100px;
+  .tag {
+     width:80px;
+     text-align: center;
+     cursor:pointer
   }
   .toolbar {
-    border: 2px solid #ccc;
+    border: 1px solid #DEE2E7;
   }
   .text {
     font-size: 15px;
     color: #606266;
-    border: 2px solid #ccc;
-    height: aotu;
-  }
-  body {
-    background: #ccc;
+    border: 1px solid #DEE2E7;
+    height: auto;
   }
 
 </style>
+<style lang="stylus" scoped>
+  .double
+    display flex
+    justify-content space-between
+  .double >>> .el-form-item__content
+    display flex
+  .double >>> .el-form-item__label
+    margin-right 14.19px
+</style>

+ 4 - 4
src/views/Platform/presentation/ResultPage.vue

@@ -7,18 +7,18 @@
     </div>
     <template>
       <el-table :data="tableData" fit border style="width: 100%">
-        <el-table-column label="报告名称" width="300" align="center">
+        <el-table-column label="报告名称" min-width="150" align="center">
           <template slot-scope="scope">
             <a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView(tableData, scope.row.id)">{{ scope.row.reportName }}</a>
           </template>
         </el-table-column>
-        <el-table-column label="报告人" width="200" align="center">
+        <el-table-column label="报告人" min-width="150" align="center">
           <template slot-scope="scope">{{ scope.row.ownner }}</template>
         </el-table-column>
-        <el-table-column label="日期" width="200" align="center">
+        <el-table-column label="日期" min-width="150" align="center">
           <template slot-scope="scope">{{ scope.row.gmtCreate }}</template>
         </el-table-column>
-        <el-table-column label="状态" width="200" align="center">
+        <el-table-column label="状态" min-width="150" align="center">
           <template slot-scope="scope">{{ scope.row.statusString }}</template>
         </el-table-column>
         <el-table-column label="操作" align="center" fixed="right" min-width="230">

+ 184 - 23
src/views/Platform/presentation/ResultPageyL.vue

@@ -3,7 +3,7 @@
     <div style="height:100%;width:94%; background:#ffffff; margin: 3% 3% 8% 3%; border-radius: 8px; overflow: hidden;">
       <!-- 准出预览 -->
       <div v-if="towShow">
-        <div id="resumeId" style="padding: 3% 6%; color: #333B4A;">
+        <div id="resumeId" style="padding: 3% 9%; color: #333B4A;">
           <div style="display: flex; font-size: 19px;  white-space: nowrap; font-weight: bold;">
             <span style="flex:1;">{{ ClientDatayl.reportName }}</span>
             <span style="flex:1;">by : {{ ClientDatayl.ownner }}
@@ -17,16 +17,24 @@
               <div class="marage">测试结果 : <span :style="status1">{{ status }}</span></div><br>
               <div class="marage">开发人员 : {{ ClientDatayl.developer }}</div><br>
               <div class="marage">开发周期 : {{ ClientDatayl.devTimeEnd }} 至 {{ ClientDatayl.devTimeStart }}</div><br>
-              <div class="marage">准出延期 : <span :style="taskLateDisabled">{{ ClientDatayl.taskLateStatus }}</span></div>
+              <div class="marage">准出延期 : <span :style="taskLateDisabled">{{ ClientDatayl.taskLateStatus }}</span></div><br>
             </div>
             <div style="flex:1">
-              <div v-show="showDelay" class="marage">准入结果 : {{ ClientDatayl.smokeTestResult }}</div><br>
+              <div class="marage">准入结果 : {{ ClientDatayl.launchInfo }}</div><br>
               <div class="marage">测试人员 : {{ ClientDatayl.tester }}</div><br>
               <div class="marage">测试周期 : {{ ClientDatayl.testTimeEnd }} 至 {{ ClientDatayl.testTimeStart }} </div><br>
-              <div v-show="showDelay1" class="marage">延期原因 : {{ ClientDatayl.taskLateReason }}</div>
+              <div v-show="showDelay1" class="marage">延期原因 : {{ ClientDatayl.taskLateReason }}</div><br>
             </div>
           </div>
-
+          <div style="display:flex;">
+            <div style="flex:1">
+              <div class="marage">涉及安全项 : <span :style="getInfoBtnDisabled">{{ ClientDatayl.getInfoBtn }}</span></div><br>
+            </div>
+            <div style="flex:1">
+              <div v-show="showData" class="marage">完成结果 : {{ ClientDatayl.safeInfo }}</div>
+            </div>
+          </div>
+          <div style="white-space: nowrap;">SDL链接 : <el-link href="http://wiki.intra.xiaojukeji.com/pages/viewpage.action?pageId=237016271" type="primary" target="_blank"> 普惠SDL准入标准</el-link></div>
           <div class="titleStyle">二. 项目背景</div><br>
 
           <div class="rich" v-html="editorElem" />
@@ -47,27 +55,63 @@
 
           <div class="marage">4、缺陷分析</div>
 
+          <el-table :data="tableData" border @cell-dblclick="celledit">
+            <el-table-column prop="totalBug" label="bug总数" min-width="200" align="center" edit="false">
+              <template slot-scope="scope">
+                <el-input v-if="scope.row.totalBug.edit" ref="totalBug" v-model="scope.row.totalBug.value" style="width: 100%" @blur="scope.row.totalBug.edit = false" />
+                <span v-else>{{ scope.row.totalBug.value }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="fixBug" min-width="200" align="center" label="已解决bug数">
+              <template slot-scope="scope">
+                <el-input v-if="scope.row.fixBug.edit" ref="fixBug" v-model="scope.row.fixBug.value" style="width: 100%" @blur="scope.row.fixBug.edit = false" />
+                <span v-else>{{ scope.row.fixBug.value }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="remainBug" min-width="200" align="center" label="遗留bug数">
+              <template slot-scope="scope">
+                <el-input v-if="scope.row.remainBug.edit" ref="remainBug" v-model="scope.row.remainBug.value" style="width: 100%" @blur="scope.row.remainBug.edit = false" />
+                <span v-else>{{ scope.row.remainBug.value }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="rateOfReopen" min-width="200" align="center" label="reopen率">
+              <template slot-scope="scope">
+                <el-input v-if="scope.row.rateOfReopen.edit" ref="rateOfReopen" v-model="scope.row.rateOfReopen.value" style="width: 100%" @blur="scope.row.rateOfReopen.edit = false" />
+                <span v-else>{{ scope.row.rateOfReopen.value }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="invalidBug" min-width="200" align="center" label="无效bug数">
+              <template slot-scope="scope">
+                <el-input v-if="scope.row.invalidBug.edit" ref="invalidBug" v-model="scope.row.invalidBug.value" style="width: 100%" @blur="scope.row.invalidBug.edit = false" />
+                <span v-else>{{ scope.row.invalidBug.value }}</span>
+              </template>
+            </el-table-column>
+          </el-table>
+          <el-row>
+            <el-col :span="24"><div style="margin:2% 0;">5、遗留问题</div>{{ ClientDatayl.bugInfo }}</el-col>
+          </el-row>
+
           <div class="rich" v-html="editorData" />
 
           <div class="titleStyle">四. 测试项</div>
 
-          <div class="marage">1、功能测试</div>
+          <div class="marage">1、功能测试 : <span style="margin-left:40px;" :style="fctResultChange">{{ fctResult }}</span></div>
 
           <div class="rich" v-html="editorEl" />
 
-          <div class="marage">2、可靠性测试</div>
+          <div class="marage">2、可靠性测试 : <span style="margin-left:40px;" :style="rqtResultChange">{{ rqtResult }}</span></div>
 
           <div class="rich" v-html="editorEle" />
 
-          <div class="marage">3、稳定性测试</div>
+          <div class="marage">3、稳定性测试 : <span style="margin-left:40px;" :style="pftResultChange">{{ pftResult }}</span></div>
 
           <div class="rich" v-html="editorSix" />
 
-          <div class="marage">4、安全性测试</div>
+          <div class="marage">4、安全性测试 : <span style="margin-left:40px;" :style="safeResultChange">{{ safeResult }}</span></div>
 
           <div class="rich" v-html="editorEight" />
 
-          <div class="marage">5、线上监控</div>
+          <div class="marage">5、线上监控 : <span style="margin-left:40px;" :style="moniterResultChange">{{ moniterResult }}</span></div>
 
           <div class="rich" v-html="editorNine" />
         </div>
@@ -88,15 +132,25 @@
               <div class="marage">测试结果 : <span :style="status1">{{ status }}</span></div><br>
               <div class="marage">开发人员 : {{ ClientDatayl.developer }}</div><br>
               <div class="marage">开发周期 : {{ ClientDatayl.devTimeEnd }} 至 {{ ClientDatayl.devTimeStart }}</div><br>
-              <div class="marage">准出延期 : <span :style="taskLateDisabled">{{ ClientDatayl.taskLateStatus }}</span></div>
+              <div class="marage">准出延期 : <span :style="taskLateDisabled">{{ ClientDatayl.taskLateStatus }}</span></div><br>
             </div>
             <div style="flex:1">
-              <div v-show="showDelay" class="marage">准入结果 : {{ ClientDatayl.smokeTestResult }}</div><br>
+              <div class="marage">准入结果 : {{ ClientDatayl.launchInfo }}</div><br>
               <div class="marage">测试人员 : {{ ClientDatayl.tester }}</div><br>
               <div class="marage">测试周期 : {{ ClientDatayl.testTimeEnd }} 至 {{ ClientDatayl.testTimeStart }} </div><br>
-              <div v-show="showDelay1" class="marage">延期原因 : {{ ClientDatayl.taskLateReason }}</div>
+              <div v-show="showDelay1" class="marage">延期原因 : {{ ClientDatayl.taskLateReason }}</div><br>
             </div>
           </div>
+          <div style="display:flex;">
+            <div style="flex:1">
+              <div class="marage">涉及安全项 : <span :style="getInfoBtnDisabled">{{ ClientDatayl.getInfoBtn }}</span></div><br>
+            </div>
+            <div style="flex:1">
+              <div v-show="showData" class="marage">完成结果 : {{ ClientDatayl.safeInfo }}</div>
+            </div>
+          </div>
+
+          <div style="white-space: nowrap;">SDL链接 : <el-link href="http://wiki.intra.xiaojukeji.com/pages/viewpage.action?pageId=237016271" type="primary" target="_blank"> 普惠SDL准入标准</el-link></div>
 
           <div class="titleStyle">二. 项目背景</div>
 
@@ -120,6 +174,42 @@
 
           <div class="titleStyle">五. bug指标</div>
 
+          <el-table :data="tableData" border @cell-dblclick="celledit">
+            <el-table-column prop="totalBug" label="bug总数" min-width="200" align="center" edit="false">
+              <template slot-scope="scope">
+                <el-input v-if="scope.row.totalBug.edit" ref="totalBug" v-model="scope.row.totalBug.value" style="width: 100%" @blur="scope.row.totalBug.edit = false" />
+                <span v-else>{{ scope.row.totalBug.value }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="fixBug" min-width="200" align="center" label="已解决bug数">
+              <template slot-scope="scope">
+                <el-input v-if="scope.row.fixBug.edit" ref="fixBug" v-model="scope.row.fixBug.value" style="width: 100%" @blur="scope.row.fixBug.edit = false" />
+                <span v-else>{{ scope.row.fixBug.value }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="remainBug" min-width="200" align="center" label="遗留bug数">
+              <template slot-scope="scope">
+                <el-input v-if="scope.row.remainBug.edit" ref="remainBug" v-model="scope.row.remainBug.value" style="width: 100%" @blur="scope.row.remainBug.edit = false" />
+                <span v-else>{{ scope.row.remainBug.value }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="rateOfFix" min-width="200" align="center" label="bug解决率">
+              <template slot-scope="scope">
+                <el-input v-if="scope.row.rateOfFix.edit" ref="rateOfFix" v-model="scope.row.rateOfFix.value" style="width: 100%" @blur="scope.row.rateOfFix.edit = false" />
+                <span v-else>{{ scope.row.rateOfFix.value }}</span>
+              </template>
+            </el-table-column>
+            <!-- <el-table-column prop="memo" min-width="200" align="center" label="备注">
+              <template slot-scope="scope">
+                <el-input v-if="scope.row.memo.edit" ref="rateOfFix" v-model="scope.row.memo.value" style="width: 100%" @blur="scope.row.memo.edit = false" />
+                <span v-else>{{ scope.row.memo.value }}</span>
+              </template>
+            </el-table-column> -->
+          </el-table>
+          <el-row>
+            <el-col :span="24"><div style="margin: 2% 0;">1、遗留问题</div>{{ ClientDatayl.bugInfo }}</el-col>
+          </el-row>
+
           <div class="rich" v-html="editorEle1" />
         </div>
       </div>
@@ -131,21 +221,26 @@
 </template>
 
 <script>
-import { projectTestReportSendmail } from '@/api/ResultPage'
+import { projectTestReportSendmail, bugFinishList } from '@/api/ResultPage'
 import html2canvas from 'html2canvas'
 
 export default {
   name: 'ResultPageyL',
   data() {
     return {
-      showDelay: false,
       showDelay1: false,
       taskLateStatus: '',
-      taskLateDisabled1: { color: '' },
-      taskLateDisabled: { color: 'red' },
+      getInfoBtnDisabled: { color: 'green' },
+      taskLateDisabled: { color: 'green' },
       pftResult1: { colocr: 'green' },
       sctResult1: { colocr: 'green' },
       acceptanceResult1: { colocr: 'green' },
+      fctResultChange: { colocr: '' },
+      rqtResultChange: { color: '' },
+      pftResultChange: { color: '' },
+      safeResultChange: { color: '' },
+      moniterResultChange: { color: '' },
+      showData: false,
       status: '',
       acceptanceResult: '',
       sctResult: '',
@@ -169,7 +264,10 @@ export default {
       editorSix: '',
       editorEight: '',
       editorNine: '',
-      status1: { color: 'green' }
+      tableData: [],
+      bugNum: {},
+      status1: { color: 'green' },
+      fctResult: ''
     }
   },
   created() {
@@ -194,6 +292,7 @@ export default {
         this.editorSix = this.ClientDatayl.pftInfo
         this.editorEight = this.ClientDatayl.safeResultInfo
         this.editorNine = this.ClientDatayl.moniterResultInfo
+        this.bugNum = { type: this.ClientDatayl.type, taskId: this.ClientDatayl.taskId, projectId: this.ClientDatayl.projectId }
         if (this.ClientDatayl.type === 2) {
           this.towShow = true
           this.oneShow = false
@@ -203,19 +302,27 @@ export default {
         }
         if (this.ClientDatayl.status === 1) {
           this.status = '通过'
-          this.showDelay = true
         } else {
           this.status = '未通过'
           this.status1.color = 'red'
-          this.showDelay = false
         }
         if (this.ClientDatayl.taskLateStatus === 1) {
+          this.ClientDatayl.taskLateStatus = '否'
+          this.showDelay1 = false
+          this.taskLateDisabled.color = 'green'
+        } else {
           this.ClientDatayl.taskLateStatus = '是'
+          this.taskLateDisabled.color = 'red'
           this.showDelay1 = true
+        }
+        if (this.ClientDatayl.safeInfo !== '') {
+          this.ClientDatayl.getInfoBtn = '是'
+          this.getInfoBtnDisabled.color = 'red'
+          this.showData = true
         } else {
-          this.ClientDatayl.taskLateStatus = '否'
-          this.showDelay1 = false
-          this.taskLateDisabled1.color = 'green'
+          this.ClientDatayl.getInfoBtn = '否'
+          this.getInfoBtnDisabled.color = 'green'
+          this.showData = false
         }
         switch (this.ClientDatayl.pftResult) {
           case 1: this.pftResult = '通过'; this.pftResult1.color = 'green'; break
@@ -231,8 +338,60 @@ export default {
           case 2: this.acceptanceResult = '未通过'; this.acceptanceResult1.color = 'red'; break
           case 3: this.acceptanceResult = '未执行'; this.acceptanceResult1.color = 'Orange'; break
         }
+        switch (this.ClientDatayl.fctResult) { // 功能测试
+          case 1: this.fctResult = '通过'; this.fctResultChange.color = 'green'; break
+          case 2: this.fctResult = '未通过'; this.fctResultChange.color = 'red'; break
+          case 3: this.fctResult = '未执行'; this.fctResultChange.color = 'Orange'; break
+        }
+        switch (this.ClientDatayl.rqtResult) { // 可靠性测试
+          case 1: this.rqtResult = '通过'; this.rqtResultChange.color = 'green'; break
+          case 2: this.rqtResult = '未通过'; this.rqtResultChange.color = 'red'; break
+          case 3: this.rqtResult = '未执行'; this.rqtResultChange.color = 'Orange'; break
+        }
+        switch (this.ClientDatayl.pftResult) { // 稳定性测试
+          case 1: this.pftResult = '通过'; this.pftResultChange.color = 'green'; break
+          case 2: this.pftResult = '未通过'; this.pftResultChange.color = 'red'; break
+          case 3: this.pftResult = '未执行'; this.pftResultChange.color = 'Orange'; break
+        }
+        switch (this.ClientDatayl.safeResult) { // 安全性测试
+          case 1: this.safeResult = '通过'; this.safeResultChange.color = 'green'; break
+          case 2: this.safeResult = '未通过'; this.safeResultChange.color = 'red'; break
+          case 3: this.safeResult = '未执行'; this.safeResultChange.color = 'Orange'; break
+        }
+        switch (this.ClientDatayl.moniterResult) { // 线上监控
+          case 1: this.moniterResult = '通过'; this.moniterResultChange.color = 'green'; break
+          case 2: this.moniterResult = '未通过'; this.moniterResultChange.color = 'red'; break
+          case 3: this.moniterResult = '未执行'; this.moniterResultChange.color = 'Orange'; break
+        }
       }
+      this.getBugData(this.bugNum)
+    },
+    getBugData(e) {
+      bugFinishList(e).then(res => {
+        this.$set(this.ClientDatayl, 'launchInfo', res.data.launchInfo)
+        this.tableData = [res.data]
+        this.formatData()
+      })
+    },
+
+    formatData() {
+      this.tableData.forEach(item => {
+        for (var key in item) {
+          item[key] = {
+            value: item[key],
+            edit: false
+          }
+        }
+      })
     },
+    // celledit(row, column, cell, event) {
+    //   if (row[column.property]) {
+    //     row[column.property].edit = true
+    //     setTimeout(() => {
+    //       this.$refs[column.property].focus()
+    //     }, 20)
+    //   }
+    // },
     download() {
       this.getPdf('resumeId', this.name)
     },
@@ -325,6 +484,8 @@ export default {
     height:100%;
     background:#F2F3F6;
     display: inline-block;
+    font-size: 14px;
+    color: #606266;
   }
   .titleStyle {
     color: #333B4A;

+ 138 - 189
src/views/Platform/presentation/acceptTheReport.vue

@@ -1,147 +1,121 @@
 <template>
-  <div>
-    <!-- 提测预览 -->
-    <div v-if="oneShow">
-      <el-form :inline="true" :model="fromCreateData" style="margin:0%;7%">
-        <el-row :gutter="20">
-          <el-col :span="12" :offset="16" style="margin-top:30px;"><div><el-button icon="el-icon-message" size="mini" @click="promptEmail(fromCreateData)">发送报告</el-button><el-button icon="el-icon-check" size="mini" style="margin-left:10px;" @click="download()">下载测试报告</el-button></div></el-col>
-        </el-row>
-        <div id="resumeId" style="padding:0% 9%;">
-          <el-row :gutter="20">
-            <el-col :span="12">
-              <span style="font-size:27px;">{{ fromCreateData.name }}</span>
-              <span style="margin-left:100px">by <span style="font-weight:bold;margin-left: 10px"> {{ fromCreateData.submitter }}</span></span><br>
-
-              <span class="titleStyle" style="margin-top: 30px;">一、提测详情</span><br>
-
-              <el-form-item label="开发时间 : ">{{ fromCreateData.devTimeStart }} 至 {{ fromCreateData.devTimeEnd }}</el-form-item><br>
-              <el-form-item label="计划提测时间 : ">{{ fromCreateData.planLaunchTime }}</el-form-item><br>
-              <el-form-item label="实际提测时间 : ">{{ fromCreateData.launchTime }}</el-form-item>
-            </el-col>
-          </el-row>
-          <el-row :gutter="20">
-            <el-col :span="12">
-              <el-form-item label="是否延期 : ">
-                <span :style="lateStatus1">{{ lateStatus }}</span>
-              </el-form-item><br>
-              <el-form-item v-show="showDelay" label="延期原因 : ">{{ fromCreateData.lateReason }}</el-form-item>
-            </el-col>
-          </el-row>
-
-          <el-row :gutter="20">
-            <el-col :span="12">
-              <el-form-item label="优先级 : "> {{ fromCreateData.priority }}</el-form-item><br>
-              <el-form-item label="是否跟版 : ">{{ fromCreateData.isEdition }}</el-form-item>
-            </el-col>
-          </el-row>
-          <el-row :gutter="20">
-            <el-col :span="12">
-              <el-form-item label="涉及安全项 :">
-                <span :style="safeStatus1">{{ safeStatus }}</span>
-              </el-form-item><br>
-              <el-form-item v-show="showData" label="完成结果 :">{{ fromCreateData.safeInfo }}</el-form-item>
-            </el-col>
-          </el-row>
-          <a href="http://wiki.intra.xiaojukeji.com/pages/viewpage.action?pageId=237016271" style="color:blue; font-size:13px;">普惠SDL准入标准</a>
-          <el-row><el-col><el-form-item label="prd地址 : "> {{ fromCreateData.prdUrl }}</el-form-item></el-col></el-row>
-          <el-row><el-col><el-form-item label="设计方案 : ">{{ fromCreateData.devUrl }}</el-form-item></el-col></el-row>
-
-          <span class="titleStyle">二、提测详情</span><br>
-
-          <el-row style="width:68vw;"><div class="rich" v-html=" moduleInfoOne" /></el-row>
-          <el-row><el-col style="padding-top:20px;"><el-form-item label="自测结果 : ">{{ fromCreateData.selfTestInfo }}</el-form-item></el-col></el-row>
-          <el-row :gutter="23"><el-col :span="23"><el-form-item label="测试建议 : " style="padding:2px;">{{ fromCreateData.testSuggest }}</el-form-item></el-col></el-row>
+  <!-- 提测预览 -->
+  <div class="eleStyle">
+    <div style="height:100%;width:94%; background:#ffffff; margin: 3%; border-radius: 8px; overflow: hidden;">
+      <div id="resumeId" style="padding:2% 9%;">
+        <div style="display: flex; font-size: 19px;  white-space: nowrap; font-weight: bold;">
+          <span style="flex:2;">标题 : {{ fromCreateData.name }}</span>
+          <span style="flex:1;">by : {{ fromCreateData.submitter }} </span>
+          <span style="flex:1;">
+            <el-button type="primary" size="mini" style="margin:0 2% 0 0%;" @click="promptEmail(fromCreateData)">发送报告</el-button>
+            <el-button size="mini" @click="download()">下载测试报告</el-button>
+          </span>
+        </div>
 
-          <span class="titleStyle">三、联调详情</span><br>
+        <div class="titleStyle" style="margin:1% 0;">一. 提测详情</div>
 
-          <el-row><el-col style="width:68vw;"><div class="rich" v-html="joinTestOne" /></el-col></el-row>
+        <div v-if="oneShow">
+          <el-form :model="fromCreateData">
+            <div style="display: flex;">
+              <div style="flex:1">
+                <div class="marage">是否延期 : <span :style="lateStatus1">{{ lateStatus }}</span></div><br>
+              </div>
+              <div style="flex:1;">
+                <div v-show="showDelay" class="marage">延期原因 : <span>{{ fromCreateData.lateReason }}</span></div><br>
+              </div>
+            </div>
 
-          <span class="titleStyle">四、其他</span><br>
+            <div style="display: flex;">
+              <div style="flex:1">
+                <div class="marage">涉及安全项 : <span :style="safeStatus1">{{ safeStatus }}</span></div><br>
+              </div>
+              <div style="flex:1;">
+                <div v-show="showData" class="marage">完成结果 : <span>{{ fromCreateData.safeInfo }}</span></div><br>
+              </div>
+            </div>
 
-          <el-row :gutter="23"><el-col><el-form-item label="新增配置 :">{{ fromCreateData.configInfo }}</el-form-item></el-col></el-row>
-          <el-row :gutter="23"><el-col :span="23"><el-form-item label="其他 : ">{{ fromCreateData.others }}</el-form-item></el-col></el-row>
+            <div style="display: flex;">
+              <div style="flex:1">
+                <div class="marage">SDL链接 : <a href="http://wiki.intra.xiaojukeji.com/pages/viewpage.action?pageId=237016271" style="color:blue;">普惠SDL准入标准</a></div><br>
+                <div class="marage">是否跟版 : <span>{{ fromCreateData.isEdition }}</span></div><br>
+                <div class="marage">优 先 级 : <span>{{ fromCreateData.priority }}</span></div><br>
+              </div>
+              <div style="flex:1;">
+                <div class="marage">开发时间 : <span>{{ fromCreateData.devTimeStart }} 至 {{ fromCreateData.devTimeEnd }}</span></div><br>
+                <div class="marage">计划提测时间 : <span>{{ fromCreateData.planLaunchTime }}</span></div><br>
+                <div class="marage">实际提测时间 : <span>{{ fromCreateData.launchTime }}</span></div><br>
+              </div>
+            </div>
+            <div class="marage">prd地址 : <span>{{ fromCreateData.prdUrl }}</span></div><br>
+            <div class="marage">设计方案 : <span>{{ fromCreateData.devUrl }}</span></div><br>
+            <div class="marage">自测结果 : <span>{{ fromCreateData.selfTestInfo }}</span></div><br>
+            <div class="marage">测试建议 : <span>{{ fromCreateData.testSuggest }}</span></div><br>
+            <el-form-item label="提测模块" style="margin: 2px 0;" />
+            <div class="rich" v-html=" moduleInfoOne" />
+          </el-form>
         </div>
-      </el-form>
-    </div>
-
-    <div v-if="towShow">
-      <el-form :inline="true" :model="fromCreateData" style="margin:0%;7%">
-        <el-row :gutter="20">
-          <el-col :span="12" :offset="16" style="margin-top:30px;"><div><el-button icon="el-icon-message" size="mini" @click="promptEmail1(fromCreateData)">发送报告</el-button><el-button icon="el-icon-check" size="mini" style="margin-left:10px;" @click="download1()">下载测试报告</el-button></div></el-col>
-        </el-row>
-        <div id="resumeId1" style="padding:0% 9%;">
-          <el-row :gutter="20">
-            <el-col :span="13">
-              <span style="font-size:27px;">{{ fromCreateData.name }}</span>
-              <span style="margin-left:100px">by <span style="font-weight:bold;margin-left: 10px"> {{ fromCreateData.submitter }}</span></span><br>
-            </el-col>
-          </el-row>
-
-          <span class="titleStyle" style="margin-top: 30px;">一、提测详情</span>
 
-          <el-row :gutter="20">
-            <el-col :span="12">
-              <el-form-item label="是否延期 : ">
-                <span :style="lateStatus1">{{ lateStatus }}</span>
-                <!-- <el-radio-group v-model="lateStatus">
-                  <el-radio label="1" disabled>是</el-radio>
-                  <el-radio label="2" disabled>否</el-radio>
-                </el-radio-group> -->
-              </el-form-item><br>
-              <el-form-item v-show="showDelay" label="延期原因 : ">{{ fromCreateData.lateReason }}</el-form-item>
-            </el-col>
-          </el-row>
-          <el-row :gutter="23"><el-col><el-form-item label="测试地址 ">{{ fromCreateData.packageUrl }}</el-form-item></el-col></el-row>
-          <el-row :gutter="23"><el-col :span="23"><el-form-item label="打包分支 ">{{ fromCreateData.packageBranch }}</el-form-item></el-col></el-row>
-          <el-row :gutter="20">
-            <el-col :span="12">
-              <el-form-item label="提测环境 ">{{ fromCreateData.env }}</el-form-item><br>
-              <el-form-item label="优先级 ">{{ fromCreateData.priority }}</el-form-item>
-            </el-col>
-          </el-row>
-          <el-row :gutter="20">
-            <el-col :span="12">
-              <el-form-item label="新增Apollo">
-                <span :style="configInfo1">{{ configInfo }}</span>
-                <!-- <el-radio-group v-model="c">
-                  <el-radio label="1" disabled>是</el-radio>
-                  <el-radio label="2" disabled>否</el-radio>
-                </el-radio-group> -->
-              </el-form-item><br>
-              <el-form-item v-show="showDelay1" label="Apollo名称">{{ fromCreateData.configInfo }}</el-form-item>
-            </el-col>
-          </el-row>
-          <el-row :gutter="20">
-            <el-col :span="12">
-              <el-form-item label="依赖组件">
-                <span :style="dependentComponents1">{{ dependentComponents }}</span>
-                <!-- <el-radio-group v-model="dependentComponents">
-                  <el-radio label="1" disabled>是</el-radio>
-                  <el-radio label="2" disabled>否</el-radio>
-                </el-radio-group> -->
-              </el-form-item><br>
-              <el-form-item v-show="showDelay2" label="组件名称">{{ fromCreateData.dependentComponents }}</el-form-item>
-            </el-col>
-          </el-row>
-          <el-row><el-col><el-form-item label="PM & UI ">{{ fromCreateData.pmUi }}</el-form-item></el-col></el-row>
-          <el-row><el-col><el-form-item label="需求list">{{ fromCreateData.functionInfo }}</el-form-item></el-col></el-row>
-          <el-row><el-col><el-form-item label="自测结果">{{ fromCreateData.selfTestInfo }}</el-form-item></el-col></el-row>
-          <el-row><el-col><el-form-item label="涉及接口">{{ fromCreateData.interfaceInfo }}</el-form-item></el-col></el-row>
-          <el-row><el-col><el-form-item label="测试建议">{{ fromCreateData.testSuggest }}</el-form-item></el-col></el-row>
+        <div v-if="towShow">
+          <el-form :model="fromCreateData">
+            <div style="display:flex;">
+              <div style="flex:1">
+                <el-form-item label="测试地址 : ">{{ fromCreateData.packageUrl }}</el-form-item><br>
+                <el-form-item label="提测环境 : ">{{ fromCreateData.env }}</el-form-item><br>
+                <el-form-item label="自测结果 : ">{{ fromCreateData.selfTestInfo }}</el-form-item><br>
+              </div>
+              <div style="flex:1">
+                <el-form-item label="打包分支 : ">{{ fromCreateData.packageBranch }}</el-form-item><br>
+                <el-form-item label="优 先 级 : ">{{ fromCreateData.priority }}</el-form-item><br>
+              </div>
+            </div>
 
-          <span class="titleStyle">二、联调详情</span>
+            <div style="display: flex;">
+              <div style="flex:1">
+                <el-form-item label="新增Apollo : "><span :style="configInfo1">{{ config }}</span></el-form-item><br>
+              </div>
+              <div style="flex:1;">
+                <el-form-item v-show="showDelay1" label="Apollo名称">{{ fromCreateData.configInfo }}</el-form-item><br>
+              </div>
+            </div>
 
-          <el-row><el-col style="width:68vw;"><div class="rich" v-html="joinTestOne" /></el-col></el-row>
+            <div style="display: flex;">
+              <div style="flex:1">
+                <el-form-item label="依赖组件 : "><span :style="dependentComponents1">{{ dependentCom }}</span></el-form-item>
+              </div>
+              <div style="flex:1;">
+                <el-form-item v-show="showDelay2" label="组件名称 : ">{{ fromCreateData.dependentComponents }}</el-form-item>
+              </div>
+            </div>
 
-          <span class="titleStyle">三、其他</span>
+            <div style="display: flex; margin:1% 0;">
+              <div style="flex:1">
+                <el-form-item label="是否延期 : "><span :style="lateStatus1">{{ lateStatus }}</span></el-form-item>
+              </div>
+              <div style="flex:1;">
+                <el-form-item v-show="showDelay" label="延期原因 : ">{{ fromCreateData.lateReason }}</el-form-item>
+              </div>
+            </div>
 
-          <el-row :gutter="23"><el-col :span="23"><el-form-item label="其他">{{ fromCreateData.others }}</el-form-item></el-col></el-row>
+            <el-form-item label="PM & UI : ">{{ fromCreateData.pmUi }}</el-form-item><br>
+            <div class="noWrap">
+              <el-form-item label="测试建议 :">{{ fromCreateData.testSuggest }}</el-form-item><br>
+              <el-form-item label="需求list :">{{ fromCreateData.functionInfo }}</el-form-item><br>
+              <el-form-item label="涉及接口 :">{{ fromCreateData.interfaceInfo }}</el-form-item><br>
+            </div>
+          </el-form>
         </div>
-      </el-form>
+        <div class="titleStyle">二. 联调详情</div>
+        <div class="rich" v-html="joinTestOne" />
+
+        <div class="titleStyle">三. 其他</div>
+        <el-form>
+          <div v-if="oneShow" class="marage">新增配置 : <span>{{ fromCreateData.configInfo }}</span></div><br>
+          <div class="marage">其他 : <span>{{ fromCreateData.others }}</span></div><br>
+          <el-button style="float:right; margin:8% 50%;" @click="open()"> 返 回 </el-button>
+        </el-form>
+      </div>
     </div>
-    <el-button type="info" style="float:right; margin:2% 50%;" @click="open()"> 返 回 </el-button>
-  </div>
-</template>
+  </div></template>
 
 <script>
 import { launchTestSendmail } from '@/api/ResultPage'
@@ -151,18 +125,18 @@ export default {
   name: 'AcceptTheReport',
   data() {
     return {
-      bizIdData: localStorage.getItem('key'),
       configInfo1: { color: 'green' },
       dependentComponents1: { color: 'green' },
       lateStatus1: { color: 'red' },
       safeStatus1: { color: 'green' },
+      dependentCom: '',
+      config: '',
       showDelay: false,
       showDelay1: false,
       showDelay2: false,
       towShow: false,
       oneShow: false,
       showData: false,
-      labelWidth: '60px',
       joinTestOne: '',
       lateStatus: '',
       safeStatus: '',
@@ -179,9 +153,6 @@ export default {
     download() {
       this.getPdf('resumeId', this.name)
     },
-    download1() {
-      this.getPdf('resumeId1', this.name)
-    },
     promptEmail(e) {
       this.$prompt('请输入邮箱', '提示', {
         confirmButtonText: '确定',
@@ -192,19 +163,8 @@ export default {
         this.$message({ type: 'info', message: '取消输入' })
       })
     },
-    promptEmail1(e) {
-      this.$prompt('请输入邮箱', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消'
-      }).then(({ value }) => {
-        this.sendReport1(value, e)
-      }).catch(() => {
-        this.$message({ type: 'info', message: '取消输入' })
-      })
-    },
     getRouterData() {
       this.fromCreateData = this.$route.query.data
-      console.log(this.fromCreateData)
       if (this.fromCreateData.type === 2) {
         this.towShow = false
         this.oneShow = true
@@ -215,15 +175,16 @@ export default {
       this.name = this.fromCreateData.name
       this.joinTestOne = this.fromCreateData.joinTest
       this.moduleInfoOne = this.fromCreateData.moduleInfo
-      if (this.fromCreateData.safeInfo !== null) {
+      if (this.fromCreateData.safeInfo !== '') {
         this.showData = true
         this.safeStatus = '是'
+        this.safeStatus1.color = 'red'
       } else {
         this.showData = false
         this.safeStatus = '否'
-        this.safeStatus1.color = 'red'
+        this.safeStatus1.color = 'green'
       }
-      if (this.fromCreateData.lateStatus === 1) {
+      if (this.fromCreateData.lateReason !== '') {
         this.showDelay = true
         this.lateStatus = '是'
       } else {
@@ -231,24 +192,24 @@ export default {
         this.lateStatus = '否'
         this.lateStatus1.color = 'green'
       }
-      if (this.fromCreateData.configInfo === 1) {
+      if (this.fromCreateData.configInfo !== '') {
         this.showDelay1 = true
-        this.configInfo = '是'
+        this.config = '是'
       } else {
         this.showDelay1 = false
-        this.configInfo = '否'
+        this.config = '否'
         this.configInfo1.color = 'red'
       }
-      if (this.fromCreateData.dependentComponents === 1) {
+      if (this.fromCreateData.dependentComponents !== '') {
         this.showDelay2 = true
-        this.dependentComponents = '是'
+        this.dependentCom = '是'
       } else {
         this.showDelay2 = false
-        this.dependentComponents = '否'
+        this.dependentCom = '否'
         this.dependentComponents1.color = 'red'
       }
     },
-    open() { this.$router.go(-2) },
+    open() { this.$router.push({ path: '/Platform/presentation/Assumptions' }) },
     sendReport(e, ele) {
       var shareContent = document.getElementById('resumeId')// 需要截图的包裹的(原生的)DOM 对象
       var canvas = document.createElement('canvas') // 创建一个canvas节点
@@ -273,52 +234,40 @@ export default {
           res.code === 200 ? this.$message.success('发送测试报告成功') : this.$message.error('发送测试报告失败,请联系管理员!')
         })
       })
-    },
-    sendReport1(e, ele) {
-      var shareContent = document.getElementById('resumeId1')// 需要截图的包裹的(原生的)DOM 对象
-      var canvas = document.createElement('canvas') // 创建一个canvas节点
-      const contentWidth = shareContent.width
-      const contentHeight = shareContent.height
-      var scale = 5 // 定义任意放大倍数 支持小数
-      canvas.width = contentWidth * scale// 定义canvas 宽度 * 缩放
-      canvas.height = contentHeight * scale// 定义canvas高度 *缩放
-      canvas.getContext('2d').scale(scale, scale) // 获取context,设置scale
-      var opts = {
-        scale: scale, // 添加的scale 参数
-        canvas: canvas, // 自定义 canvas
-        width: 1200, // dom 原始宽度
-        height: 1300 // dom 原始高度
-      }
-      html2canvas(shareContent, opts).then(function(canvas) {
-        // 从 canvas 提取图片数据
-        var imgData = canvas.toDataURL('image/png')
-        var sendImgData = imgData.substring(imgData.indexOf(',') + 1)
-        var postData = { 'reportId': ele.id, 'imgStr': sendImgData, 'url': window.location.href, 'emailUser': e }
-        launchTestSendmail(postData).then(res => {
-          res.code === 200 ? this.$message.success('发送测试报告成功') : this.$message.error('发送测试报告失败,请联系管理员!')
-        })
-      })
     }
   }
 }
 </script>
 
 <style scoped>
-  .el-col {
-    white-space:nowrap;
+  .marage {
+    margin: 0.5% 0;
+  }
+  .eleStyle {
+    width: 100%;
+    height:100%;
+    background:#F2F3F6;
+    display: inline-block;
+    font-size: 14px;
+    color: #606266;
   }
   .el-form-item {
     margin: -5px 0;
   }
   .titleStyle {
-    color: #000000;
-    background: #ccc;
-    line-height: 40px;
-    padding-right: 40px;
-    font-size: 15px;
+    color: #333B4A;
+    margin: 1% 0;
+    font-size: 19px;
+    font-weight: bold;
   }
   .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>
+<style lang="stylus" scoped>
+ .noWrap >>> .el-form-item
+  display flex
+ .noWrap >>> .el-form-item__label
+  text-align left
+</style>

+ 189 - 162
src/views/Platform/presentation/presentationReport.vue

@@ -1,132 +1,110 @@
 <template>
-  <div style="margin:2% 3% 9%;">
-    <!-- 提测报告,新增服务端报告 -->
-    <el-form ref="fromCreateData" :inline="true" :model="fromCreateData" :rules="serviceDataRules">
-      <el-row :gutter="20">
-        <el-col :span="13">
-          <el-form-item label=" " prop="name">
-            <el-input v-model="fromCreateData.name" style="width:39vw;" placeholder="报告标题(端-版本-需求提测报告)" />
+
+  <!-- 提测报告,新增服务端报告 -->
+  <div class="eleStyle">
+    <div style="height:100%;width:94%; background:#ffffff; margin: 3%; border-radius: 8px; overflow: hidden;">
+      <el-form ref="fromDev" :model="fromDev" :rules="serviceDataRules" style="margin: 2% 3%;">
+        <div class="double">
+          <el-form-item label="标题" prop="name">
+            <el-input v-model="fromDev.name" style="width:50vw;" placeholder="报告标题(端-版本-需求提测报告)" />
           </el-form-item>
-        </el-col>
-        <el-col :span="2">
-          <el-form-item label="by" prop="submitter" style="margin-left:4vw;background: white">
-            <el-input v-model="fromCreateData.submitter" style="width:20vw; margin-left:30px; border:2px solid #ccc;border-radius: 4px;" placeholder="who" />
+          <el-form-item label="by" prop="submitter">
+            <el-input v-model="fromDev.submitter" style="width: 25vw;" placeholder="who" />
           </el-form-item>
-        </el-col>
-      </el-row>
-      <el-form-item label="一、提测详情" class="cententTit" />
-      <el-row :gutter="23">
-        <el-col :span="8">
-          <el-form-item label="开发时间" prop="devTimeStart">
-            <el-date-picker v-model="fromCreateData.devTimeStart" type="date" style="width:31vw;" placeholder="选择日期" /> ——————
-            <el-date-picker v-model="fromCreateData.devTimeEnd" type="date" style="width:35vw;" placeholder="选择日期" />
+        </div>
+
+        <div class="backStyle">一. 提测详情</div>
+
+        <div class="double" style="white-space: nowrap;">
+          <el-form-item label="* 是否延期">
+            <div style="margin-left: 15px;">
+              <el-button :type="lateStatusBtn" style="margin: 0 10px;" class="tag" @click="lateStatusChange(2)"> 是 </el-button>
+              <el-button :type="lateStatusBtn1" class="tag" @click="lateStatusChange(1)"> 否 </el-button>
+            </div>
           </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="20" type="flex">
-        <el-col :span="12">
-          <el-form-item label="是否延期" prop="lateStatus">
-            <el-radio-group v-model="fromCreateData.lateStatus">
-              <el-radio style="margin: 0 95px;" label="1" @change="lateStatusChange('1')">是</el-radio>
-              <el-radio style="padding-right: 185px;" label="2" @change="lateStatusChange('2')">否</el-radio>
-            </el-radio-group>
+          <el-form-item v-if="showDelay" label="延期原因" prop="lateReason"><el-input v-model="fromDev.lateReason" style="width: 50vw;" /></el-form-item>
+        </div>
+
+        <div class="double" style="white-space: nowrap;">
+          <el-form-item label="* 涉及安全项">
+            <el-button :type="getInfoBtn" style="margin: 0 10px;" class="tag" @click="showStatusData(2)"> 是 </el-button>
+            <el-button :type="getInfoBtn1" style="margin-left: 14px;" class="tag" @click="showStatusData(1)"> 否 </el-button>
           </el-form-item>
-          <el-form-item v-if="showDelay" label="延期原因" prop="lateReason" style="margin-left:75px;">
-            <el-input v-model="fromCreateData.lateReason" style="width:29.5vw;" />
+          <el-form-item v-if="showData" label="完成结果" prop="safeInfo"><el-input v-model="fromDev.safeInfo" style="width: 50vw;" /></el-form-item>
+        </div>
+
+        <el-form-item label="SDL链接 : "><el-link href="http://wiki.intra.xiaojukeji.com/pages/viewpage.action?pageId=237016271" type="primary" target="_blank"> 普惠SDL准入标准</el-link></el-form-item>
+
+        <div class="double">
+          <el-form-item label="是否跟版" prop="isEdition"><el-input v-model="fromDev.isEdition" style="width:30vw;" placeholder="请填写" /></el-form-item>
+          <el-form-item label="开发时间" prop="devTimeStart">
+            <el-date-picker v-model="fromDev.devTimeStart" type="date" style="width:20vw; margin-right:2%;" placeholder="选择日期" />
+            <el-date-picker v-model="fromDev.devTimeEnd" type="date" style="width:20vw;" placeholder="选择日期" />
           </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="23">
-        <el-col :span="12">
-          <el-form-item label="计划提测时间 " prop="planLaunchTime"><el-date-picker v-model="fromCreateData.planLaunchTime" type="date" style="width:29vw;" placeholder="选择日期" /></el-form-item>
-          <el-form-item label="实际提测时间" prop="launchTime" style="margin-left:75px;"><el-date-picker v-model="fromCreateData.launchTime" type="date" style="width:27.5vw;" placeholder="选择日期" /></el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="20">
-        <el-col :span="12">
-          <el-form-item label="优先级 " prop="priority">
-            <el-select v-model="fromCreateData.priority" style="width:32vw;" placeholder="请选择优先级">
+        </div>
+
+        <div class="double">
+          <el-form-item label=" 优 先 级" prop="priority">
+            <el-select v-model="fromDev.priority" style="width:30vw;" 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="isEdition" style="margin-left:75px;"><el-input v-model="fromCreateData.isEdition" style="width:29.3vw;" /></el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="20">
-        <el-col :span="12">
-          <el-form-item label="涉及安全项" prop="getInfo" style=" white-space:nowrap;">
-            <el-radio-group v-model="fromCreateData.getInfo">
-              <el-radio style="margin: 0 85px;" label="1" @change="showStatusData('1')">是</el-radio>
-              <el-radio style="margin-right: 50px;" label="2" @change="showStatusData('2')">否</el-radio>
-              <a href="http://wiki.intra.xiaojukeji.com/pages/viewpage.action?pageId=237016271" style="color:blue; font-size:13px;padding-right: 32px;">普惠SDL准入标准</a>
-            </el-radio-group>
+          <el-form-item label="计划提测时间" prop="planLaunchTime">
+            <el-date-picker v-model="fromDev.planLaunchTime" type="date" style="width:40vw;" placeholder="选择日期" />
           </el-form-item>
+        </div>
 
-          <el-form-item v-if="showData" label="完成结果" prop="safeInfo" style="margin-left:75px;">
-            <el-input v-model="fromCreateData.safeInfo" style="width:29.2vw;" />
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="23">
-        <el-col :span="23">
-          <el-form-item label="prd地址 " prop="prdUrl">
-            <el-input v-model="fromCreateData.prdUrl" style="width:72.5vw; padding-left:7px;" placeholder="请提供wiki链接" />
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="23">
-        <el-col :span="23">
-          <el-form-item label="设计方案" prop="devUrl"><el-input v-model="fromCreateData.devUrl" style="width:72vw;" placeholder="请提供wiki链接,包含接口定义,数据库改动,依赖关系" /></el-form-item>
-        </el-col>
-      </el-row>
-      <el-form-item label="二、提测详情" class="cententTit" />
-      <el-row>
-        <el-col style="width:78vw;">
-          <div id="DetailsOfProposal" class="toolbar" />
-          <div id="DetailsOfProposal1" class="text" style="text-align:left;cellspacing:0;cellpadding:0;" />
-        </el-col>
-      </el-row>
-      <el-row :gutter="23">
-        <el-col :span="23" style="padding-top:20px;">
-          <el-form-item label="自测结果" prop="selfTestInfo">
-            <el-input v-model="fromCreateData.selfTestInfo" style="width:72vw;" placeholder="请提供wiki链接(提测前QA需提供准人case)" />
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="23">
-        <el-col :span="23">
-          <el-form-item label="测试建议" prop="testSuggest" style="padding:2px;"><el-input v-model="fromCreateData.testSuggest" style="width:72vw;" type="textarea" :rows="5" placeholder="改动点影响分析:是否影响老功能,那些老功能需要回归接口是否影响上下游系统,有没有通知相关人性能,安全" /></el-form-item>
-        </el-col>
-      </el-row>
-      <el-form-item label="三、联调详情" class="cententTit" />
-      <el-row>
-        <el-col style="width:78vw;">
-          <div id="editorContent" class="toolbar" />
-          <div id="editorContent1" class="text" style="text-align:left;cellspacing:0;cellpadding:0;" />
-        </el-col>
-      </el-row>
-      <el-form-item label="四、其他" class="cententTit" style="margin-top:20px;" />
-      <el-row :gutter="23">
-        <el-col :span="23">
-          <el-form-item label="新增配置">
-            <el-input v-model="fromCreateData.configInfo" style="width:73vw;" type="textarea" :rows="2" placeholder="全局变量、kdiamond配置、降级点、新增topic等,disconf配置,apollo配置说明用途" />
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="23">
-        <el-col :span="23">
-          <el-form-item label="其他">
-            <el-input v-model="fromCreateData.others" style="padding-left:25px;width:75vw;" type="textarea" :rows="5" />
+        <div class="double">
+          <el-form-item label=" prd地址 " prop="prdUrl"><el-input v-model="fromDev.prdUrl" style="width:30vw;" placeholder="请提供wiki链接" /></el-form-item>
+          <el-form-item label="实际提测时间" prop="launchTime">
+            <el-date-picker v-model="fromDev.launchTime" type="date" style="width:40vw;" placeholder="选择日期" />
           </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="24" style="margin:70px 0 0 150px;" type="flex" justify="center">
-        <el-col :span="8"><el-button type="info" @click="clickPreview(fromCreateData)"> 预 览 </el-button></el-col>
-        <el-col v-show="showButton" :span="8"><el-button type="info" @click="getCreateData(fromCreateData)"> 保 存 </el-button></el-col>
-        <el-col v-show="showButton1" :span="8"><el-button type="info" @click="getQueryData(fromCreateData)"> 更 新 </el-button></el-col>
-        <el-col :span="8"><el-button type="info" @click="open(fromCreateData)"> 取 消 </el-button></el-col>
-      </el-row>
-    </el-form>
+        </div>
+        <div class="double">
+          <el-col :span="24">
+            <el-form-item label="设计方案" prop="devUrl"><el-input v-model="fromDev.devUrl" style="width:85vw;" placeholder="请提供wiki链接,包含接口定义,数据库改动,依赖关系" /></el-form-item>
+          </el-col>
+        </div>
+
+        <div class="double">
+          <el-col :span="24">
+            <el-form-item label="自测结果" prop="selfTestInfo"><el-input v-model="fromDev.selfTestInfo" style="width:85vw;" placeholder="请提供wiki链接(提测前QA需提供准人case)" /></el-form-item>
+          </el-col>
+        </div>
+        <div class="double">
+          <el-col :span="24">
+            <el-form-item label="测试建议" prop="testSuggest"><el-input v-model="fromDev.testSuggest" style="width:83.5vw;" type="textarea" :rows="5" placeholder="改动点影响分析:是否影响老功能,那些老功能需要回归接口是否影响上下游系统,有没有通知相关人性能,安全" /></el-form-item>
+          </el-col>
+        </div>
+        <el-form-item label="提测模块" style="margin: 2px 0;" />
+        <div id="DetailsOfProposal" class="toolbar" />
+        <div id="DetailsOfProposal1" class="text" />
+
+        <div class="backStyle">二. 联调详情</div>
+
+        <div id="editorContent" class="toolbar" />
+        <div id="editorContent1" class="text" />
+
+        <div class="backStyle">三. 其他</div>
+        <div class="double">
+          <el-col :span="24">
+            <el-form-item label="新增配置"><el-input v-model="fromDev.configInfo" style="width:85vw;" type="textarea" :rows="2" placeholder="全局变量、kdiamond配置、降级点、新增topic等,disconf配置,apollo配置说明用途" /></el-form-item>
+          </el-col>
+        </div>
+        <div class="double" align="right">
+          <el-col :span="24">
+            <el-form-item label="其他"><el-input v-model="fromDev.others" style="padding-left: 25px; text-align: right; width: 85vw;" type="textarea" :rows="5" placeholder="请输入其他内容…" /></el-form-item>
+          </el-col>
+        </div>
+
+        <div class="double" align="right" style="margin: 5vw 0 3vw 60vw;">
+          <div><el-button @click="clickPreview(fromDev)"> 预 览 </el-button></div>
+          <div v-show="showButton"><el-button type="primary" @click="getCreateData(fromDev)"> 保 存 </el-button></div>
+          <div v-show="showButton1"><el-button type="primary" @click="getQueryData(fromDev)"> 更 新 </el-button></div>
+          <div><el-button @click="open(fromDev)"> 取 消 </el-button></div>
+        </div>
+      </el-form>
+    </div>
   </div>
 </template>
 
@@ -145,8 +123,8 @@ export default {
         name: [{ required: true, message: '报告标题不能为空', trigger: 'change' }],
         submitter: [{ required: true, message: 'by不能为空', trigger: 'change' }],
         devTimeStart: [{ required: true, message: '开发时间不能为空', trigger: 'change' }],
-        safeInfo: [{ required: true, message: '涉及安全项不能为空', trigger: 'change' }],
-        lateStatus: [{ required: true, message: '是否延期不能为空', trigger: 'change' }],
+        safeInfo: [{ required: false, message: '涉及安全项不能为空', trigger: 'change' }],
+        lateStatus: [{ required: false, message: '是否延期不能为空', trigger: 'change' }],
         lateReason: [{ required: true, message: '延期原因不能为空', trigger: 'change' }],
         planLaunchTime: [{ required: true, message: '计划提测时间不能为空', trigger: 'change' }],
         launchTime: [{ required: true, message: '实际提测时间不能为空', trigger: 'change' }],
@@ -159,6 +137,10 @@ export default {
         getInfo: [{ required: true, message: '涉及安全项不能为空', trigger: 'change' }]
       },
       objData: '',
+      lateStatusBtn: 'info',
+      lateStatusBtn1: 'info',
+      getInfoBtn: 'info',
+      getInfoBtn1: 'info',
       showButton: true,
       showButton1: false,
       userData: '',
@@ -166,7 +148,7 @@ export default {
       labelWidth: '60px',
       lateStatus: '',
       getInfo: '',
-      fromCreateData: {},
+      fromDev: {},
       editorContent: '',
       showData: false,
       DetailsOfProposal: '',
@@ -208,37 +190,47 @@ export default {
       if (this.$route.query.data) {
         this.showButton1 = true
         this.showButton = false
-        this.fromCreateData = this.$route.query.data
-        if (this.fromCreateData.lateReason !== null) {
-          this.fromCreateData.lateStatus = '1'
+        this.fromDev = this.$route.query.data
+        if (this.fromDev.lateReason !== '') {
+          this.lateStatusBtn1 = 'info'
+          this.lateStatusBtn = 'danger'
+          this.lateStatus = 2
           this.showDelay = true
         } else {
-          this.fromCreateData.lateStatus = '2'
+          this.lateStatusBtn1 = 'success'
+          this.lateStatusBtn = 'info'
+          this.lateStatus = 1
           this.showDelay = false
         }
-        if (this.fromCreateData.safeInfo !== null) {
-          this.fromCreateData.getInfo = '1'
+        if (this.fromDev.safeInfo !== '') {
+          this.getInfoBtn1 = 'info'
+          this.getInfoBtn = 'danger'
+          this.lateStatus = 2
           this.showData = true
         } else {
-          this.fromCreateData.getInfo = '2'
+          this.getInfoBtn1 = 'success'
+          this.getInfoBtn = 'info'
+          this.lateStatus = 1
           this.showData = false
+          this.$set(this.fromDev, 'safeInfo', '')
         }
       }
     },
     getRouterData1() {
-      this.editorContent.txt.html(this.fromCreateData.joinTest)
-      this.DetailsOfProposal.txt.html(this.fromCreateData.moduleInfo)
+      this.editorContent.txt.html(this.fromDev.joinTest)
+      this.DetailsOfProposal.txt.html(this.fromDev.moduleInfo)
     },
     getQueryData(ele) {
-      this.fromCreateData = ele
-      typeof (this.editorContent) === 'string' ? this.fromCreateData.joinTest = this.editorContent : ''
-      typeof (this.DetailsOfProposal) === 'string' ? this.fromCreateData.moduleInfo = this.DetailsOfProposal : ''
-      this.fromCreateData.lateStatus = this.lateStatus
+      this.fromDev = ele
+      typeof (this.editorContent) === 'string' ? this.fromDev.joinTest = this.editorContent : ''
+      typeof (this.DetailsOfProposal) === 'string' ? this.fromDev.moduleInfo = this.DetailsOfProposal : ''
+      this.fromDev.lateStatus = this.lateStatus
       this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-      this.objData = { launchTestInfo: this.fromCreateData, user: this.userData }
+      this.objData = { launchTestInfo: this.fromDev, user: this.userData }
       launchTestUpdate(this.objData).then(res => {
         if (res.code === 200) {
           this.$message({ type: 'success', message: '更新成功' })
+          this.$router.go(-1)
         } else {
           this.$message.error('更新失败')
         }
@@ -251,24 +243,24 @@ export default {
         cancelButtonText: '放弃修改'
       })
         .then(() => { this.$message({ type: 'info', message: '继续修改' }) })
-        .catch(action => { action === 'cancel' ? this.$router.go(-1) : '' })
+        .catch(action => { action === 'cancel' ? this.$router.push({ path: '/Platform/presentation/Assumptions' }) : '' })
     },
     getCreateData(ele) {
-      this.$refs['fromCreateData'].validate((valid) => {
+      this.$refs['fromDev'].validate((valid) => {
         if (valid) {
-          this.fromCreateData = ele
-          typeof (this.editorContent) === 'string' ? this.fromCreateData.joinTest = this.editorContent : ''
-          typeof (this.DetailsOfProposal) === 'string' ? this.fromCreateData.moduleInfo = this.DetailsOfProposal : ''
-          this.fromCreateData.lateReason = ele.lateReason
-          this.fromCreateData.lateStatus = this.lateStatus
-
+          this.fromDev = ele
+          typeof (this.editorContent) === 'string' ? this.fromDev.joinTest = this.editorContent : ''
+          typeof (this.DetailsOfProposal) === 'string' ? this.fromDev.moduleInfo = this.DetailsOfProposal : ''
+          this.fromDev.lateReason = ele.lateReason
+          this.fromDev.lateStatus = this.lateStatus
+          this.fromDev.projectId = this.$route.query.task.projectId
           if (this.$route.query.task) { // 任务提测
-            this.fromCreateData.bizId = this.bizIdCode
-            this.fromCreateData.taskId = this.projectIdCode
+            this.fromDev.bizId = this.bizIdCode
+            this.fromDev.taskId = this.projectIdCode
           }
-          this.fromCreateData.type = 2
+          this.fromDev.type = 2
           this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-          this.objData = { launchTestInfo: this.fromCreateData, user: this.userData }
+          this.objData = { launchTestInfo: this.fromDev, user: this.userData }
           launchTestCreate(this.objData).then(res => {
             if (res.code === 200) {
               this.$message({ type: 'success', message: '保存成功' })
@@ -283,12 +275,32 @@ export default {
       })
     },
     lateStatusChange(e) {
-      this.lateStatus = e
-      e === '1' ? this.showDelay = true : this.showDelay = false
+      if (e === 1) {
+        this.lateStatusBtn1 = 'success'
+        this.lateStatusBtn = 'info'
+        this.lateStatus = 1
+        this.showDelay = false
+        this.$set(this.fromDev, 'lateReason', '')
+      } else {
+        this.lateStatusBtn1 = 'info'
+        this.lateStatusBtn = 'danger'
+        this.lateStatus = 2
+        this.showDelay = true
+      }
     },
     showStatusData(e) {
-      e === '1' ? this.showData = true : this.showData = false
+      if (e === 1) {
+        this.getInfoBtn1 = 'success'
+        this.getInfoBtn = 'info'
+        this.showData = false
+        this.$set(this.fromDev, 'safeInfo', '')
+      } else {
+        this.getInfoBtn1 = 'info'
+        this.getInfoBtn = 'danger'
+        this.showData = true
+      }
     },
+
     clickPreview(ele) {
       this.$router.push({ path: '/Platform/presentation/acceptTheReport', query: { data: ele }})
     }
@@ -297,24 +309,39 @@ export default {
 </script>
 
 <style scoped>
-  .el-col {
-    white-space:nowrap;
+.eleStyle {
+    width: 100%;
+    height:100%;
+    background:#F2F3F6;
+    display: inline-block;
   }
-  .el-form-item {
-    background: #ccc;
-    border-radius: 4px;
-    padding:2px;
+  .tag {
+     width:80px;
+     text-align: center;
+     cursor:pointer
   }
-  .cententTit {
-    padding-right:100px;
+  .backStyle {
+    font-size: 19px;
+    font-weight: bold;
+    border-radius: 4px;
+    margin: 1% 0;
   }
-
   .toolbar {
-    border: 2px solid #ccc;
+    border: 2px solid #DEE2E7;
   }
   .text {
-   font-size: 15px; color: #606266;
-    border: 2px solid #ccc;
-    height: aotu;
+   font-size: 15px;
+   color: #606266;
+   border: 2px solid #DEE2E7;
+   height: auto;
   }
 </style>
+<style lang="stylus" scoped>
+  .double
+    display flex
+    justify-content space-between
+  .double >>> .el-form-item__content
+    display flex
+  .double >>> .el-form-item__label
+    margin-right 14.19px
+</style>

+ 6 - 9
src/views/Platform/presentation/testPage.vue

@@ -38,22 +38,22 @@
             <el-table-column type="selection" width="55" align="center" @change="clickAllData(gridData)" />
             <el-table-column prop="id" label="ID" width="60px" align="center">
               <template slot-scope="scope">
-                <span>{{ scope.row.id }}</span>
+                {{ scope.row.id }}
               </template>
             </el-table-column>
             <el-table-column prop="caseName" label="用例名" width="150" align="center">
               <template slot-scope="scope">
-                <span>{{ scope.row.caseName }}</span>
+                {{ scope.row.caseName }}
               </template>
             </el-table-column>
             <el-table-column prop="expectedResult" label="期望结果" width="150" align="center">
               <template slot-scope="scope">
-                <span>{{ scope.row.expectedResult }}</span>
+                {{ scope.row.expectedResult }}
               </template>
             </el-table-column>
             <el-table-column prop="casePriorityName" label="优先级" width="80" align="center">
               <template slot-scope="scope">
-                <span>{{ scope.row.casePriorityName }}</span>
+                {{ scope.row.casePriorityName }}
               </template>
             </el-table-column>
             <el-table-column prop="creatorName" label="创建人" width="100" align="center">
@@ -63,12 +63,12 @@
             </el-table-column>
             <el-table-column prop="modifierName" label="修改人" width="100" align="center">
               <template slot-scope="scope">
-                <span>{{ scope.row.modifierName }}</span>
+                {{ scope.row.modifierName }}
               </template>
             </el-table-column>
             <el-table-column prop="createTime" label="创建时间" width="200" align="center">
               <template slot-scope="scope">
-                <span>{{ scope.row.createTime }}</span>
+                {{ scope.row.createTime }}
               </template>
             </el-table-column>
             <el-table-column label="操作" min-width="220px" align="center" fixed="right">
@@ -264,11 +264,8 @@ export default {
             num.id = b.id
             arr.push(num)
           }
-          console.log(arr)
           this.data1.push({ id: a.id, label: a.projectName, children: num })
         }
-
-        console.log(this.data1)
       })
     },
     moduleTypeArr() {

+ 7 - 6
src/views/Platform/presentation/testPresentation.vue

@@ -7,15 +7,15 @@
     </div>
     <template>
       <el-table :data="tableData" fit border style="width: 100%">
-        <el-table-column label="报告名称" width="280" align="center">
+        <el-table-column label="报告名称" min-width="280" align="center">
           <template slot-scope="scope">
             <a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView(scope.row)">{{ scope.row.reportName }}</a>
           </template>
         </el-table-column>
-        <el-table-column label="报告人" width="180" align="center">
+        <el-table-column label="报告人" min-width="180" align="center">
           <template slot-scope="scope">{{ scope.row.ownner }}</template>
         </el-table-column>
-        <el-table-column label="日期" width="280" align="center">
+        <el-table-column label="日期" min-width="280" align="center">
           <template slot-scope="scope">{{ scope.row.gmtCreate }}</template>
         </el-table-column>
         <el-table-column label="操作" align="center" fixed="right" min-width="230">
@@ -124,8 +124,9 @@ export default {
             var type = ele
           }
         }
+        console.log(type)
         this.queryData.state = ''
-        this.$router.push({ path: '/Platform/presentation/DailyNewsAdded', query: { state: type }})
+        this.$router.push({ path: '/Platform/presentation/DailyNewsAdded', query: { state1: type }})
       } else {
         this.$message({ type: 'error', message: '请选择任务' })
       }
@@ -152,7 +153,7 @@ export default {
         switch (e) {
           case 1:
             for (var ele of res.data.projectInfoList) {
-              arr.push({ value: ele.name, id: ele.id, type: ele.platForm, bizId: ele.bizId, typeString: 1 })
+              arr.push({ value: ele.name, projectId: ele.id, type: ele.platForm, bizId: ele.bizId })
             }
             this.restaurants = arr
             this.$refs['btn1'].$el.style.background = '#409EFF'
@@ -162,7 +163,7 @@ export default {
             break
           case 2:
             for (var vel of res.data.taskInfoList) {
-              arr.push({ value: vel.name, id: vel.id, type: vel.type, bizId: vel.bizId, typeString: 2 })
+              arr.push({ value: vel.name, taskId: vel.id, type: vel.type, bizId: vel.bizId })
             }
             this.restaurants = arr
             this.$refs['btn1'].$el.style.background = '#FFFFFF'

+ 5 - 5
src/views/Platform/presentation/testPresenyL.vue

@@ -2,16 +2,16 @@
   <!-- 日报预览 -->
   <div class="eleStyle">
     <div style="height:100%;width:94%; background:#ffffff; margin: 3% 3% 8% 3%; border-radius: 8px; overflow: hidden;">
-      <el-form :inline="true" :model="fromCreat" style="margin:2% 3%">
+      <el-form :inline="true" :model="fromCreat" style="margin:2% 9%">
         <div id="resumeId">
           <div style="display: flex; font-size: 19px;  white-space: nowrap; font-weight: bold;">
             <span style="flex:1;">标题 : {{ fromCreat.reportName }}</span>
             <span style="flex:1;">by : {{ fromCreat.ownner }}
-              <el-button type="primary" size="mini" style="margin:0 2% 0 40%;" @click="promptEmail(fromCreat)">发送报告</el-button>
+              <el-button type="primary" size="mini" style="margin:0 2% 0 30%;" @click="promptEmail(fromCreat)">发送报告</el-button>
               <el-button size="mini" @click="download()">下载测试报告</el-button>
             </span>
           </div>
-          <el-row>
+          <!-- <el-row>
             <el-col :span="24">
               <div style="margin: 1%;">1、项目节点</div>
               <div style="border: 1px solid #DEE2E7; padding: 100px 0;" class="time_line_box">
@@ -35,8 +35,8 @@
                   </ol>
                 </div>
               </div>
-            </el-col>
-          </el-row>
+            </el-col> -->
+          <!-- </el-row> -->
 
           <div class="titleStyle">一. 进度和风险</div>
 

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

@@ -389,7 +389,7 @@ export default {
           this.total = 0
         } else {
           this.list = res.data
-          this.total = this.list.length
+          this.total = res.total
         }
         this.platFormString = res.query.platformTypeEnumList
       })

+ 14 - 14
src/views/Platform/projectQuery/projectQuery.vue

@@ -304,7 +304,7 @@
           <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.name" />
+                <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">
@@ -314,14 +314,14 @@
             </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-option v-for="item in taskTypeStr" :key="item.name" :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-option v-for="item in businessTypeStr" :key="item.code" :label="item.name" :value="item.code" />
               </el-select>
             </el-form-item>
             <el-form-item label="是否免测" prop="notest" label-width="100px">
@@ -329,11 +329,11 @@
                 <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-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.name" />
               </el-select>
-            </el-form-item>
+            </el-form-item> -->
           </div>
         </div>
         <el-form-item label="需求文档" style="width:72vw;" label-width="100px">
@@ -438,7 +438,7 @@ export default {
         pm: [{ required: true, message: 'pm不能为空', trigger: 'change' }],
         taskType: [{ required: true, message: '任务类型不能为空', trigger: 'change' }],
         clientType: [{ required: true, message: '业务模块不能为空', trigger: 'change' }],
-        osType: [{ required: true, message: '端类型不能为空', trigger: 'change' }],
+        // osType: [{ required: true, message: '端类型不能为空', trigger: 'change' }],
         platForm: [{ required: true, message: '平台类型不能为空', trigger: 'change' }]
       },
       reasonStr: [],
@@ -469,7 +469,7 @@ export default {
       parameter: '', // projactId
       business: false, // 业务模块show
       osTypeEnum: [], // 端类型Data
-      osTypeShow: false, // 端类型show
+      // osTypeShow: false, // 端类型show
       codeTitle: '', // title 任务
       taskTypeStr: [], // 任务类型Data
       dialogFormVisible: false, // 项目弹窗
@@ -603,18 +603,18 @@ export default {
         }
       }
       this.business = false
-      this.osTypeShow = false
+      // this.osTypeShow = false
       this.$set(this.formTask, 'type', '')
     },
 
     // chnage 平台类型
     changeType(e) {
       for (var b of this.typeString) {
-        if (e === b.name) {
+        if (e === b.code) {
           this.businessTypeStr = b.child
           b.child !== null ? this.business = true : this.business = false
         }
-        this.osTypeShow = false
+        // this.osTypeShow = false
         this.$set(this.formTask, 'clientType', '')
       }
     },
@@ -622,9 +622,9 @@ export default {
     // 业务模块
     clientType(e) {
       for (var a of this.businessTypeStr) {
-        if (e === a.name) {
+        if (e === a.code) {
           this.osTypeEnum = a.child
-          a.child !== null ? this.osTypeShow = true : this.osTypeShow = false
+          // a.child !== null ? this.osTypeShow = true : this.osTypeShow = false
         }
         this.$set(this.formTask, 'osType', '')
       }
@@ -723,13 +723,13 @@ export default {
             this.codeTitle = '任务编辑'
             this.formTask = ele
             ele.clientType !== '' ? this.business = true : this.business = false
-            ele.osType !== '' ? this.osTypeShow = true : this.osTypeShow = false
+            // ele.osType !== '' ? this.osTypeShow = true : this.osTypeShow = false
             this.business === false ? 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 : ''
+              ele.type === s.code ? this.businessTypeStr = s.child : ''
             }
             for (var d of this.businessTypeStr) {
               ele.osType === d.name ? this.osTypeEnum = d.child : ''

+ 23 - 23
src/views/Platform/projectQuery/taskQuery.vue

@@ -35,10 +35,10 @@
               <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.typeString }}</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-item v-if="business" label="业务模块 : " :label-width="formLabelWidth1">{{ form.clientTypeString }}</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">
@@ -150,7 +150,7 @@
             <div style="flex:1;">
               <el-form-item label="平台类型" prop="type" label-width="100px">
                 <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.name" />
+                  <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">
@@ -160,14 +160,14 @@
               </el-form-item>
               <el-form-item label="任务类型" prop="taskType" label-width="100px">
                 <el-select v-model="fromCode.taskType" placeholder="任务类型">
-                  <el-option v-for="item in taskAndRoutineEnumList" :key="item.code" :label="item.name" :value="item.name" />
+                  <el-option v-for="item in taskAndRoutineEnumList" :key="item.name" :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="fromCode.clientType" placeholder="业务模块" @change="clientType(fromCode.clientType)">
-                  <el-option v-for="item in businessTypeStr" :key="item.code" :label="item.name" :value="item.name" />
+                  <el-option v-for="item in businessTypeStr" :key="item.code" :label="item.name" :value="item.code" />
                 </el-select>
               </el-form-item>
               <el-form-item label="是否免测" prop="notest" label-width="100px">
@@ -175,11 +175,11 @@
                   <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-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.name" />
                 </el-select>
-              </el-form-item>
+              </el-form-item> -->
             </div>
           </div>
           <el-form-item label="需求文档" style="width:72vw;" label-width="100px">
@@ -292,8 +292,8 @@ export default {
         stage: [{ required: true, message: '进展不能为空', trigger: 'change' }],
         pm: [{ required: true, message: 'pm不能为空', trigger: 'change' }],
         taskType: [{ required: true, message: '任务类型不能为空', trigger: 'change' }],
-        clientType: [{ required: true, message: '业务模块不能为空', trigger: 'change' }],
-        osType: [{ required: true, message: '端类型不能为空', trigger: 'change' }]
+        clientType: [{ required: true, message: '业务模块不能为空', trigger: 'change' }]
+        // osType: [{ required: true, message: '端类型不能为空', trigger: 'change' }]
       },
       processStatusEnumList: [],
       reasonStr: [],
@@ -326,7 +326,7 @@ export default {
       repairShow: false,
       queryLay: true,
       reatedLay: false,
-      osTypeShow: false,
+      // osTypeShow: false,
       business: false,
       formLabelWidth1: '160px',
       formLabelWidth: '160px',
@@ -366,7 +366,7 @@ export default {
         }
         this.fromCode.osType === '' ? this.osTypeShow = false : this.osTypeShow = true
         this.form.clientType !== '' ? this.business = true : this.business = false
-        this.business === false ? this.osTypeShow = false : ''
+        // this.business === false ? this.osTypeShow = false : this.osTypeShow = true
       })
     },
 
@@ -375,7 +375,7 @@ export default {
       this.$refs['fromCode'].validate((valid) => {
         if (valid) {
           this.fromCode = vel
-          this.osTypeShow === false ? this.$set(this.fromCode, 'osType', '') : ''
+          // 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.fromCode, user: this.userData }
@@ -400,30 +400,30 @@ export default {
         }
       }
       this.business = false
-      this.osTypeShow = false
+      // this.osTypeShow = false
       this.$set(this.fromCode, 'type', '')
     },
 
     // chnage 平台类型
     changeType(e) {
       for (var b of this.typeString) {
-        if (e === b.name) {
+        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
+        // this.$set(this.fromCode, 'osType', '')
+        // this.osTypeShow = false
       }
     },
 
     // 业务模块
     clientType(e) {
       for (var a of this.businessTypeStr) {
-        if (e === a.name) {
+        if (e === a.code) {
           this.osTypeEnum = a.child
-          a.child !== null ? this.osTypeShow = true : this.osTypeShow = false
+          // a.child !== null ? this.osTypeShow = true : this.osTypeShow = false
         }
         this.$set(this.fromCode, 'osType', '')
       }
@@ -435,13 +435,13 @@ export default {
       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
+        // 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 : ''
+          ele.type === s.code ? this.businessTypeStr = s.child : ''
         }
         for (var c of this.businessTypeStr) {
           ele.clientType === c.name ? this.osTypeEnum = c.child : ''
@@ -563,7 +563,7 @@ export default {
 
     // Dialog 关闭的回调
     Refresh() {
-      this.fromCode.osType === '' ? this.$set(this.fromCode, 'osType', '') : ''
+      // this.osTypeShow === false ? this.$set(this.fromCode, 'osType', '') : ''
       this.getList()
     },
 

+ 34 - 29
src/views/Platform/workbench.vue

@@ -7,9 +7,9 @@
         <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" :value="num1" class="item"><el-button type="primary" class="itemName" size="small" style="overflow: hidden; text-overflow:ellipsis;" 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" style="overflow: hidden; text-overflow:ellipsis;" 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" style="overflow: hidden; text-overflow:ellipsis;" 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;">
@@ -28,13 +28,13 @@
                 主题 <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.priorityName }}</template></el-table-column>
+                  <el-table-column label="状态" min-width="100" align="center"><template slot-scope="scope"><el-tag type="success">{{ scope.row.bugStatusName }}</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">
@@ -86,9 +86,9 @@
                 <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.stageName }}</template></el-table-column>
+                  <el-table-column label="优先级" min-width="100" align="center"><template slot-scope="scope">{{ scope.row.priorityName }}</template></el-table-column>
+                  <el-table-column label="状态" min-width="100" align="center"><template slot-scope="scope"><el-tag type="success">{{ scope.row.bugStatusName }}</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>
@@ -101,7 +101,6 @@
       <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>
@@ -114,9 +113,9 @@
       <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.typeString }}</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>
@@ -128,9 +127,9 @@
         <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.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.bugTypeName }}</template></el-table-column>
+          <el-table-column label="优先级" min-width="120" align="center"><template slot-scope="scope">{{ scope.row.priorityName }}</template></el-table-column>
+          <el-table-column label="状态" min-width="120" align="center"><template slot-scope="scope"><el-tag type="success">{{ scope.row.bugStatusName }}</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-dialog>
@@ -202,14 +201,14 @@ export default {
             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])
-          }
+        // }, {
+        //   text: '最近一个月',
+        //   onClick(picker) {
+        //     const end = new Date()
+        //     const start = new Date()
+        //     start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+        //     picker.$emit('pick', [start, end])
+        //   }
         }]
       }
     }
@@ -283,14 +282,19 @@ export default {
         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
+          if (e.isBugOrTask === 0) {
+            res.data.bugBaseInfoList.list === null ? this.total = 0 : this.total = res.data.bugBaseInfoList.list.length
+            res.data.bugBaseInfoList.list === null ? this.tableType = [] : this.tableType = res.data.bugBaseInfoList.list
+          }
+          if (e.isBugOrTask === 1) {
+            res.data.taskInfoList === null ? this.total = 0 : this.total = res.data.taskInfoList.length
+            res.data.taskInfoList === null ? this.tableType = [] : this.tableType = res.data.taskInfoList
+          }
           for (var a of this.tableType) {
-            this.isBugOrTask === 0 ? this.isBugOrTask = '缺陷' : this.isBugOrTask = '任务'
-            a.isBugOrTask = this.isBugOrTask
+            e.isBugOrTask === 1 ? a.isBugOrTask = '任务' : a.isBugOrTask = '缺陷'
           }
+          res.data.taskInfoList === null ? this.task = false : this.task = true
+          res.data.bugBaseInfoList === null ? this.bug = false : this.bug = true
         })
       } else {
         this.$message({ message: '请选择类型', type: 'success', center: true })
@@ -350,6 +354,7 @@ export default {
           break
         case 3:
           this.gridData2 = this.VectorArray
+          console.log(this.gridData2)
           this.dialogTableVisibleTow = true
           break
         case 4:
@@ -365,7 +370,7 @@ export default {
         if (e.value2 !== '') {
           var obj = {
             bizId: this.bizJson,
-            timeType: 2,
+            timeType: 0,
             // status: e.status,
             isBugOrTask: e.isBugOrTask,
             startTime: e.value2[0],

+ 1 - 1
src/views/mock/httpmock.vue

@@ -180,7 +180,7 @@ export default {
         redirect: ''
       },
       importanceOptions: [1, 2, 3],
-      envSelectDataType: '',
+      envSelectDataType: [],
       envSelections,
       methodProtocol: 'http',
       consumerSelections,

+ 5 - 468
src/views/quality/qualityMarket.vue

@@ -1,417 +1,18 @@
-
 <template>
   <div id="init-window" style="position:relative">
     <router-view />
     <div style="position: absolute;width: 100%;">
-      <el-container class="set-background">
-        <el-header class="header">
-          <el-menu :default-active="activeIndex" class="el-menu-demo" active-text-color="#409EFF" mode="horizontal" @select="handleSelect">
-            <el-menu-item index="0">业务线数据</el-menu-item>
-            <el-menu-item index="2">部门数据</el-menu-item>
-          </el-menu>
-          <el-date-picker
-            v-model="value1"
-            type="daterange"
-            range-separator="至"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-          />
-        </el-header>
-        <el-container>
-          <el-aside class="aside">
-            <el-tree :data="businessData" :props="defaultProps" icon-class="el-icon-watermelon" style="margin-top:20px" @node-click="handleNodeClick" />
-          </el-aside>
-          <el-main class="combine-table">
-            <el-menu :default-active="activeIndex1" class="el-menu-demo" active-text-color="#409EFF" mode="horizontal" @select="handleSelect">
-              <el-menu-item index="3">质量大盘</el-menu-item>
-            </el-menu>
-            <!-- 上线过程 -->
-            <h4>1.上线过程</h4>
-            <el-table
-              :data="tableData"
-              border
-              style="width: 100%"
-            >
-              <el-table-column
-                prop="date"
-                label="上线次数"
-                style="width:50%;"
-                align="center"
-              />
-              <el-table-column
-                prop="name"
-                label="免提测上线数"
-                style="width:50%;"
-                align="center"
-              />
-            </el-table>
-            <el-table
-              :data="tableData"
-              border
-              style="width: 100%"
-              class="move-border-top"
-            >
-              <el-table-column
-                prop="date"
-                label="回滚数据"
-                style="width:100%;"
-                align="center"
-              >
-                <el-table-column
-                  prop="date"
-                  label="回滚次数"
-                  style="width:20%;"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="免提测回滚数"
-                  style="width:20%;"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="预发回滚数"
-                  style="width:20%;"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="小流量回滚数"
-                  style="width:20%;"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="全量回滚数"
-                  style="width:20%;"
-                  align="center"
-                />
-              </el-table-column>
-            </el-table>
-            <el-table
-              :data="tableData"
-              border
-              style="width: 100%"
-              class="move-border-top"
-            >
-              <el-table-column
-                prop="date"
-                label="预发具备率"
-                align="center"
-                width="calc(10/9)%"
-              />
-              <el-table-column
-                prop="name"
-                label="有预发不走预发占比"
-                align="center"
-                width="calc(10/9)%"
-              />
-              <el-table-column
-                prop="name"
-                label="被动免提测率"
-                align="center"
-                width="calc(10/9)%"
-              />
-              <el-table-column
-                prop="name"
-                label="免提测上线占比"
-                align="center"
-                width="calc(10/9)%"
-              />
-              <el-table-column
-                prop="name"
-                label="回滚率"
-                align="center"
-                width="calc(10/9)%"
-              />
-              <el-table-column
-                prop="name"
-                label="免提测回滚占比"
-                align="center"
-                width="calc(10/9)%"
-              />
-              <el-table-column
-                prop="name"
-                label="预发回滚率"
-                align="center"
-                width="calc(10/9)%"
-              />
-              <el-table-column
-                prop="name"
-                label="小流量回滚率"
-                align="center"
-                width="calc(10/9)%"
-              />
-              <el-table-column
-                prop="name"
-                label="全量回滚数"
-                align="center"
-                width="calc(10/9)%"
-              />
-            </el-table>
-            <el-table
-              :data="tableData"
-              border
-              style="width: 100%"
-              class="move-border-top"
-            >
-              <el-table-column
-                prop="date"
-                label="预发停留<5min占比"
-                style="width:25%;"
-                align="center"
-              />
-              <el-table-column
-                prop="name"
-                label="小流量停留<5min占比"
-                style="width:25%;"
-                align="center"
-              />
-              <el-table-column
-                prop="name"
-                label="裸奔上线占比"
-                style="width:25%;"
-                align="center"
-              />
-              <el-table-column
-                prop="name"
-                label="紧急上线占比"
-                style="width:25%;"
-                align="center"
-              />
-            </el-table>
-            <!-- 线上问题 -->
-            <h4>2.线上问题</h4>
-            <el-table
-              :data="tableData"
-              border
-              style="width: 100%"
-            >
-              <el-table-column
-                prop="date"
-                label="上线次数"
-                width="170"
-                align="center"
-              />
-              <el-table-column
-                prop="name"
-                label="免提测上线数"
-                align="center"
-              >
-                <el-table-column
-                  prop="date"
-                  label="P0"
-                  width="calc(10/7)%"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="P1"
-                  width="calc(10/7)%"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="P2"
-                  width="calc(10/7)%"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="P3"
-                  width="calc(10/7)%"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="P4"
-                  width="calc(10/7)%"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="P5"
-                  width="calc(10/7)%"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="P6"
-                  width="calc(10/7)%"
-                  align="center"
-                />
-              </el-table-column>
-            </el-table>
-            <el-table
-              :data="tableData"
-              border
-              style="width: 100%"
-              class="move-border-top"
-            >
-              <el-table-column
-                prop="date"
-                label="未定责P5+问题"
-                style="width:25%;"
-                align="center"
-              />
-              <el-table-column
-                prop="date"
-                label="遗留P5+问题定责"
-                style="width:25%;"
-                align="center"
-              />
-              <el-table-column
-                prop="date"
-                label="线上问题处理完成率"
-                style="width:25%;"
-                align="center"
-              />
-              <el-table-column
-                prop="date"
-                label="线上问题平均处理时长(H)"
-                style="width:25%;"
-                align="center"
-              />
-            </el-table>
-            <!-- 线上缺陷 -->
-            <h4>3.线上缺陷</h4>
-            <el-table
-              :data="tableData"
-              border
-              style="width: 100%"
-            >
-              <el-table-column
-                prop="date"
-                label="提报bug数"
-                align="center"
-              />
-              <el-table-column
-                prop="name"
-                label="缺陷分级"
-                align="center"
-              >
-                <el-table-column
-                  prop="date"
-                  label="P0"
-                  width="40"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="P1"
-                  width="40"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="P2"
-                  width="40"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="P3"
-                  width="40"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="P4"
-                  width="40"
-                  align="center"
-                />
-              </el-table-column>
-              <el-table-column
-                prop="date"
-                label="缺陷阶段"
-                align="center"
-              >
-                <el-table-column
-                  prop="date"
-                  label="准入"
-                  width="49"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="测试"
-                  width="49"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="准出"
-                  width="49"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="预发"
-                  width="49"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="其他"
-                  width="49"
-                  align="center"
-                />
-                <el-table-column
-                  prop="date"
-                  label="众测"
-                  width="49"
-                  align="center"
-                />
-              </el-table-column>
-              <el-table-column
-                prop="date"
-                label="核心指标"
-                align="center"
-              >
-                <el-table-column
-                  prop="date"
-                  label="人均bug数"
-                  align="center"
-                />
-              </el-table-column>
-              <el-table-column
-                prop="date"
-                label="bug修复率"
-                align="center"
-              />
-            </el-table>
-          </el-main>
-        </el-container>
-      </el-container>
+      <QualityMeasurement />
     </div>
   </div>
 </template>
 
 <script>
-import { getBusiness, getDepartment, getOnlineAllCount } from '@/api/qualityCenter'
+import QualityMeasurement from '@/views/quality/qualityMeasurement'
 
 export default {
-  data() {
-    return {
-      tableData: [{
-        date: '20',
-        name: '王小虎',
-        address: '上海市普陀区金沙江路 1518 弄'
-      }
-      ],
-      businessData: [],
-      defaultProps: {
-        children: 'child',
-        label: 'name'
-      },
-      activeIndex: '0',
-      activeIndex1: '3',
-      value1: ''
-    }
-  },
-  created() {
-    this._initBusinessTreeAndBeginInfo()
+  components: {
+    QualityMeasurement
   },
   mounted() {
     this._initWindow()
@@ -419,78 +20,14 @@ export default {
   methods: {
     _initWindow() {
       if (!document.getElementById('window-judge')) {
-        document.getElementById('init-window').parentNode.style.overflow = ''
+        document.getElementById('init-window').parentNode.style.overflow = 'visible'
       } else {
         document.getElementById('init-window').parentNode.style.overflow = 'hidden'
       }
-    },
-    async _initBusinessTreeAndBeginInfo() {
-      await getBusiness().then(res => {
-        res.code === 0 ? this.businessData = res.data : ''
-      })
-      const pretermitSearch = { id: this.businessData[0].id, type: 0 }
-      console.log(pretermitSearch)
-      getOnlineAllCount(pretermitSearch).then(res => {
-        console.log(res.data)
-      })
-    },
-    initDepartmentTree() {
-      getDepartment().then(res => {
-        res.code === 0 ? this.businessData = res.data : ''
-      })
-    },
-    handleSelect(key) {
-      if (key === '0') {
-        this._initBusinessTree()
-      } else if (key === '2') {
-        this.initDepartmentTree()
-      } else {
-        this.errorFun()
-      }
-    },
-    handleNodeClick(data) {
-      console.log(data)
-    },
-    successFun() {
-      this.$notify({ title: 'Success', message: 'initialization Successfully', type: 'success', duration: 2000 })
-    },
-    errorFun() {
-      this.$notify({ title: 'Failed', message: 'initialization Failed', type: 'error', duration: 2000 })
     }
   }
 }
 </script>
 
 <style lang="stylus" scoped>
-  .set-background
-    background-color #F2F3F6
-    .header
-      width 90%
-      background-color white
-      border-radius 7px
-      margin 15px auto 25px auto
-      display flex
-      justify-content space-between
-      align-items center
-    .aside
-      width 170px !important
-      margin 0 0 2% 5%
-      background-color white
-      border-radius 7px
-    .combine-table
-      background-color white
-      border-radius 7px
-      width 72.7%
-      margin 0 0 2% 1.5%
-      flex 0 1 auto !important
-    .combine-table >>> .el-menu
-      border-bottom 0px
-      margin -20px 0 15px 0
-    .combine-table >>> .is-active
-      font-weight bold
-    .combine-table >>> th
-      background-color #F0F7FF !important
-      font-size 10px
-    .combine-table >>> .move-border-top
-      border-top 0px
 </style>

+ 543 - 452
src/views/quality/qualityMeasurement.vue

@@ -1,486 +1,577 @@
 
 <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> -->
-  <div>
-    <div class="combine-table">
-      <el-table
-        :data="tableData"
-        border
-        style="width: 80%"
-      >
-        <el-table-column
-          prop="date"
-          label="上线次数"
-          style="width:50%;"
-          align="center"
-        />
-        <el-table-column
-          prop="name"
-          label="免提测上线数"
-          style="width:50%;"
-          align="center"
-        />
-      </el-table>
-      <el-table
-        :data="tableData"
-        border
-        style="width: 80%"
-        class="move-border-top"
-      >
-        <el-table-column
-          prop="date"
-          label="回滚数据"
-          style="width:100%;"
-          align="center"
+  <el-container v-loading.fullscreen.lock="loadingOnlineProcess" element-loading-background="rgba(0, 0, 0, 0.7)" element-loading-text="拼命加载中" class="set-background">
+    <el-header class="header">
+      <el-menu :default-active="activeIndex" active-text-color="#409EFF" mode="horizontal" @select="handleSelect">
+        <el-menu-item index="0">业务线数据</el-menu-item>
+        <el-menu-item index="2">部门数据</el-menu-item>
+      </el-menu>
+      <el-date-picker
+        v-model="timeInterval"
+        type="daterange"
+        range-separator="至"
+        start-placeholder="开始日期"
+        end-placeholder="结束日期"
+        value-format="timestamp"
+      />
+    </el-header>
+    <el-container style="height:calc(100vh - 140px);">
+      <el-aside class="aside">
+        <el-tree ref="treeBox" :data="dealWithBusinessDate" :expand-on-click-node="false" node-key="id" highlight-current :props="defaultProps" style="margin-top:20px" @node-click="handleNodeClick" />
+      </el-aside>
+      <el-main class="combine-table">
+        <el-menu :default-active="activeIndexSecondary" active-text-color="#409EFF" mode="horizontal" @select="handleSelectSecondary">
+          <el-menu-item index="3">质量大盘</el-menu-item>
+        </el-menu>
+        <!-- 上线过程 -->
+        <h4>1.上线过程</h4>
+        <el-table
+          :data="[onlineProcess]"
+          border
+          style="width: 100%"
+          size="mini"
         >
           <el-table-column
-            prop="date"
-            label="回滚次数"
-            style="width:20%;"
+            prop="totalOnlineNum"
+            label="上线次数"
+            style="width:50%;"
+            align="center"
+          >
+            <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView(0)">{{ scope.row.totalOnlineNum }}</a></template>
+          </el-table-column>
+          <el-table-column
+            label="免提测上线数"
+            style="width:50%;"
+            align="center"
+          >
+            <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView(1)">{{ scope.row.noTestNum }}</a></template>
+          </el-table-column>
+        </el-table>
+        <el-table
+          :data="[onlineProcess]"
+          border
+          style="width: 100%"
+          class="move-border-top abviously"
+          size="mini"
+        >
+          <el-table-column
+            label="回滚数据"
+            style="width:100%;"
+            align="center"
+          >
+            <el-table-column
+              label="回滚次数"
+              style="width:20%;"
+              align="center"
+            >
+              <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView(2)">{{ scope.row.rollbackNum }}</a></template>
+            </el-table-column>
+            <el-table-column
+              prop="name"
+              label="免提测回滚数"
+              style="width:20%;"
+              align="center"
+            />
+            <el-table-column
+              label="预发回滚数"
+              style="width:20%;"
+              align="center"
+            >
+              <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView(3)">{{ scope.row.preRollbackNum }}</a></template>
+            </el-table-column>
+            <el-table-column
+              label="小流量回滚数"
+              style="width:20%;"
+              align="center"
+            >
+              <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView(4)">{{ scope.row.preLess5Min }}</a></template>
+            </el-table-column>
+            <el-table-column
+              label="全量回滚数"
+              style="width:20%;"
+              align="center"
+            >
+              <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="toReportView(5)">{{ scope.row.allRollbackNum }}</a></template>
+            </el-table-column>
+          </el-table-column>
+        </el-table>
+        <el-table
+          :data="[onlineProcess]"
+          border
+          style="width: 100%"
+          class="move-border-top fontScale"
+          size="mini"
+        >
+          <el-table-column
+            prop="name"
+            label="预发具备率"
             align="center"
+            width="calc(10/9)%"
           />
           <el-table-column
-            prop="date"
-            label="免提测回滚数"
-            style="width:20%;"
+            prop="name"
+            label="有预发不走预发占比"
             align="center"
+            width="110"
           />
           <el-table-column
-            prop="date"
-            label="预发回滚数"
-            style="width:20%;"
+            prop="name"
+            label="被动免提测率"
+            align="center"
+            width="calc(10/9)%"
+          />
+          <el-table-column
+            label="免提测上线占比"
+            align="center"
+            width="calc(10/9)%"
+          >
+            <template slot-scope="scope">{{ scope.row.noTestPercent | toPercent }}</template>
+          </el-table-column>
+          <el-table-column
+            label="回滚率"
+            align="center"
+            width="60"
+          >
+            <template slot-scope="scope">{{ scope.row.rollbackPercent | toPercent }}</template>
+          </el-table-column>
+          <el-table-column
+            prop="name"
+            label="免提测回滚占比"
             align="center"
+            width="calc(10/9)%"
           />
+          <el-table-column
+            label="预发回滚率"
+            align="center"
+            width="calc(10/9)%"
+          >
+            <template slot-scope="scope">{{ scope.row.preRollbackPercent | toPercent }}</template>
+          </el-table-column>
+          <el-table-column
+            label="小流量回滚率"
+            align="center"
+            width="75"
+          >
+            <template slot-scope="scope">{{ scope.row.preLess5MinPercent | toPercent }}</template>
+          </el-table-column>
+          <el-table-column
+            label="全量回滚率"
+            align="center"
+            width="75"
+          >
+            <template slot-scope="scope">{{ scope.row.allRollbackPercent | toPercent }}</template>
+          </el-table-column>
+        </el-table>
+        <el-table
+          :data="[onlineProcess]"
+          border
+          style="width: 100%"
+          class="move-border-top"
+          size="mini"
+        >
+          <el-table-column
+            prop="name"
+            label="预发停留<5min占比"
+            style="width:25%;"
+            align="center"
+          />
+          <el-table-column
+            prop="name"
+            label="小流量停留<5min占比"
+            style="width:25%;"
+            align="center"
+          />
+          <el-table-column
+            prop="name"
+            label="裸奔上线占比"
+            style="width:25%;"
+            align="center"
+          />
+          <el-table-column
+            prop="name"
+            label="紧急上线占比"
+            style="width:25%;"
+            align="center"
+          />
+        </el-table>
+        <!-- 线上问题 -->
+        <h4>2.线上问题</h4>
+        <el-table
+          :data="[problemData]"
+          border
+          style="width: 100%"
+          size="mini"
+        >
           <el-table-column
             prop="date"
-            label="小流量回滚数"
-            style="width:20%;"
+            label="上线次数"
+            width="170"
+            align="center"
+          />
+          <el-table-column
+            prop="name"
+            label="免提测上线数"
+            align="center"
+          >
+            <el-table-column
+              prop="totalP0"
+              label="P0"
+              width="calc(10/7)%"
+              align="center"
+            />
+            <el-table-column
+              prop="totalP1"
+              label="P1"
+              width="calc(10/7)%"
+              align="center"
+            />
+            <el-table-column
+              prop="totalP2"
+              label="P2"
+              width="calc(10/7)%"
+              align="center"
+            />
+            <el-table-column
+              prop="totalP3"
+              label="P3"
+              width="calc(10/7)%"
+              align="center"
+            />
+            <el-table-column
+              prop="totalP4"
+              label="P4"
+              width="calc(10/7)%"
+              align="center"
+            />
+            <el-table-column
+              prop="totalP5"
+              label="P5"
+              width="calc(10/7)%"
+              align="center"
+            />
+            <el-table-column
+              prop="totalP6"
+              label="P6"
+              width="calc(10/7)%"
+              align="center"
+            />
+          </el-table-column>
+        </el-table>
+        <el-table
+          :data="[problemData]"
+          border
+          style="width: 100%"
+          class="move-border-top"
+          size="mini"
+        >
+          <el-table-column
+            prop="unResponsibilityTimeCount"
+            label="未定责P5+问题"
+            style="width:25%;"
+            align="center"
+          />
+          <el-table-column
+            prop="historyResponsibilityCount"
+            label="遗留P5+问题定责"
+            style="width:25%;"
+            align="center"
+          />
+          <el-table-column
+            prop="handleDurationPercent"
+            label="线上问题处理完成率"
+            style="width:25%;"
             align="center"
           />
+          <el-table-column
+            prop="aveHandleDuration"
+            label="线上问题平均处理时长(H)"
+            style="width:25%;"
+            align="center"
+          />
+        </el-table>
+        <!-- 线上缺陷 -->
+        <h4>3.线上缺陷</h4>
+        <el-table
+          :data="[DefeatData]"
+          border
+          style="width: 100%"
+          size="mini"
+        >
+          <el-table-column
+            prop="totalBugNum"
+            label="提报bug数"
+            align="center"
+          />
+          <el-table-column
+            label="缺陷分级"
+            align="center"
+          >
+            <el-table-column
+              prop="totalP0"
+              label="P0"
+              width="40"
+              align="center"
+            />
+            <el-table-column
+              prop="totalP1"
+              label="P1"
+              width="40"
+              align="center"
+            />
+            <el-table-column
+              prop="totalP2"
+              label="P2"
+              width="40"
+              align="center"
+            />
+            <el-table-column
+              prop="stepSmall"
+              label="其他"
+              width="50"
+              align="center"
+            />
+          </el-table-column>
+          <el-table-column
+            label="缺陷阶段"
+            align="center"
+          >
+            <el-table-column
+              prop="stepIn"
+              label="准入"
+              width="49"
+              align="center"
+            />
+            <el-table-column
+              prop="stepTest"
+              label="测试"
+              width="49"
+              align="center"
+            />
+            <el-table-column
+              prop="stepOut"
+              label="准出"
+              width="49"
+              align="center"
+            />
+            <el-table-column
+              prop="stepPre"
+              label="预发"
+              width="49"
+              align="center"
+            />
+            <el-table-column
+              prop="stepSmall"
+              label="其他"
+              width="49"
+              align="center"
+            />
+            <el-table-column
+              prop="stepAllTest"
+              label="众测"
+              width="49"
+              align="center"
+            />
+          </el-table-column>
           <el-table-column
             prop="date"
-            label="全量回滚数"
-            style="width:20%;"
+            label="核心指标"
+            align="center"
+          >
+            <el-table-column
+              prop="avgBugs"
+              label="人均bug数"
+              align="center"
+              width="80"
+            />
+          </el-table-column>
+          <el-table-column
+            prop="offlineRepairPresent"
+            label="bug修复率"
             align="center"
           />
-        </el-table-column>
-      </el-table>
-      <el-table
-        :data="tableData"
-        border
-        style="width: 80%"
-        class="move-border-top"
-      >
-        <el-table-column
-          prop="date"
-          label="预发具备率"
-          align="center"
-        />
-        <el-table-column
-          prop="name"
-          label="有预发不走预发占比"
-          align="center"
-          width="150"
-        />
-        <el-table-column
-          prop="name"
-          label="被动免提测率"
-          align="center"
-        />
-        <el-table-column
-          prop="name"
-          label="免提测上线占比"
-          align="center"
-          width="120"
-        />
-        <el-table-column
-          prop="name"
-          label="回滚率"
-          align="center"
-        />
-        <el-table-column
-          prop="name"
-          label="免提测回滚占比"
-          align="center"
-          width="120"
-        />
-        <el-table-column
-          prop="name"
-          label="预发回滚率"
-          align="center"
-        />
-        <el-table-column
-          prop="name"
-          label="小流量回滚率"
-          align="center"
-        />
-        <el-table-column
-          prop="name"
-          label="全量回滚数"
-          align="center"
-        />
-      </el-table>
-      <el-table
-        :data="tableData"
-        border
-        style="width: 80%"
-        class="move-border-top"
-      >
-        <el-table-column
-          prop="date"
-          label="预发停留<5min占比"
-          style="width:25%;"
-          align="center"
-        />
-        <el-table-column
-          prop="name"
-          label="小流量停留<5min占比"
-          style="width:25%;"
-          align="center"
-        />
-        <el-table-column
-          prop="name"
-          label="裸奔上线占比"
-          style="width:25%;"
-          align="center"
-        />
-        <el-table-column
-          prop="name"
-          label="紧急上线占比"
-          style="width:25%;"
-          align="center"
-        />
-      </el-table>
-    </div>
-  </div>
+        </el-table>
+      </el-main>
+    </el-container>
+  </el-container>
 </template>
 
 <script>
-// import { apiBusinessLineAll } from '@/api/qualityMeasurement.js'
-// import Json from '@/api/home.json'
+import axios from 'axios'
+import { getBusiness, getDepartment, getOnlineProblem, getOnlineAllCount, getOnlineVitium } from '@/api/qualityCenter'
+
 export default {
+  filters: {
+    toPercent(value) {
+      if (value === 0) {
+        return 0
+      } else {
+        return Number(value * 100).toFixed(2) + '%'
+      }
+    }
+  },
   data() {
     return {
-      tableData: [{
-        date: '2016-05-02',
-        name: '王小虎',
-        address: '上海市普陀区金沙江路 1518 弄'
+      onlineProcess: '',
+      businessData: [],
+      DefeatData: [],
+      problemData: '',
+      defaultProps: {
+        children: 'child',
+        label: 'name'
+      },
+      loadingOnlineProcess: true,
+      activeIndex: '0',
+      activeIndexSecondary: '3',
+      timeInterval: '',
+      pauseTreeNode: {},
+      pauseKey: '',
+      dealWithBusinessDate: []
+      // timeInterval: [new Date().getTime() - 15 * 24 * 60 * 60 * 1000, new Date().getTime()]
+    }
+  },
+  created() {
+    this._initBusinessTreeAndBeginInfo()
+  },
+  methods: {
+    // 点击头部导航栏显示默认数据
+    async _initBusinessTreeAndBeginInfo() {
+      this.loadingOnlineProcess = true
+      await getBusiness().then(res => {
+        this.businessData = res.code === 0 ? res.data : ''
+        const processFunc = (arr) => { // models和child
+          arr.forEach((each) => {
+            if (each.models.length !== 0) {
+              each.child = each.models
+            } else {
+              each.child = processFunc(each.child)
+            }
+          })
+          return arr
+        }
+        this.dealWithBusinessDate = JSON.parse(JSON.stringify(this.businessData)) // 深拷贝
+        this.dealWithBusinessDate = processFunc(this.dealWithBusinessDate)
+        this.pauseTreeNode = this.businessData[0] ? this.businessData[0] : ''
+        this.pauseKey = 0
+      })
+      this.allCountAndProlemGet()
+    },
+    // 点击头部导航栏显示默认数据
+    async initDepartmentTree() {
+      this.loadingOnlineProcess = true
+      await getDepartment().then(res => {
+        this.dealWithBusinessDate = res.code === 0 ? res.data : ''
+        this.pauseTreeNode = this.dealWithBusinessDate[0] ? this.dealWithBusinessDate[0] : ''
+        this.pauseKey = 2
+      })
+      this.allCountAndProlemGet()
+    },
+    allCountAndProlemGet() {
+      const pretermitSearch = { id: this.pauseTreeNode.id, type: this.pauseKey, startTime: this.timeInterval[0], endTime: this.timeInterval[1] }
+      axios.all([getOnlineAllCount(pretermitSearch), getOnlineProblem({ id: this.pauseTreeNode.id }), getOnlineVitium(pretermitSearch)]).then(axios.spread((resAllCount, resProblem, resDefeat) => {
+        this.onlineProcess = resAllCount.code === 0 ? resAllCount.data : ''
+        this.problemData = resProblem.code === 0 ? resProblem.data : ''
+        this.DefeatData = resDefeat.code === 0 ? resDefeat.data : ''
+        // Object.assign(this.onlineProcess, this.toPercent([this.onlineProcess.allRollbackPercent, this.onlineProcess.preLess5MinPercent, this.onlineProcess.preRollbackPercent, this.onlineProcess.rollbackPercent, this.onlineProcess.noTestPercent]))
+        this.loadingOnlineProcess = false
+      }))
+    },
+    handleSelect(key) {
+      if (key === '0') {
+        this.pauseKey = key
+        this._initBusinessTreeAndBeginInfo()
+      } else if (key === '2') {
+        this.pauseKey = key
+        this.initDepartmentTree()
+      } else {
+        this.errorFun()
       }
-      ]
+    },
+    toReportView(e) {
+      this.$router.push({ name: '上线过程', query: { id: this.pauseTreeNode.id, type: this.pauseKey, dataType: e, startTime: this.timeInterval[0], endTime: this.timeInterval[1] }})
+    },
+    handleSelectSecondary(key) {
+      console.log(key)
+    },
+    handleNodeClick(data) {
+      this.loadingOnlineProcess = true
+      this.pauseTreeNode = data
+      if (!this.pauseTreeNode.child) {
+        this.pauseKey = 1
+      }
+      if (this.pauseTreeNode.models) {
+        this.pauseKey = 0
+      }
+      this.allCountAndProlemGet()
+    },
+    successFun() {
+      this.$notify({ title: 'Success', message: 'initialization Successfully', type: 'success', duration: 2000 })
+    },
+    errorFun() {
+      this.$notify({ title: 'Failed', message: 'initialization Failed', type: 'error', duration: 2000 })
     }
   }
-  // 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 lang="stylus" scoped>
-/* .selectWidth {
-  width: 59%;
- margin-left: -8%;
-} */
-  .combine-table
-    margin 20px
-  .combine-table >>> th
-    background-color #F0F7FF !important
-    font-size 10px
-  .combine-table >>> .move-border-top
-    border-top 0px
+  .set-background
+    background-color #F2F3F6
+    min-width 700px
+    .header
+      width 95%
+      background-color white
+      border-radius 7px
+      margin 15px auto
+      display flex
+      justify-content space-between
+      align-items center
+      overflow hidden
+    .header >>> .el-menu
+      border-bottom 0px
+    .header >>> .is-active
+      font-weight bold
+    .header >>> .el-menu-item:first-child
+      padding 15px 0 0 0
+      margin-bottom 25px
+      width 70px
+    .header >>> .el-menu-item:nth-child(2)
+      padding 15px 0 0 0
+      margin 0 0 30px 40px
+      width 55px
+    .aside
+      width 17.9% !important
+      margin 0 0 2% 2.5%
+      background-color white
+      border-radius 7px
+    .combine-table
+      background-color white
+      border-radius 7px
+      width 75.7%
+      margin 0 0 2% 1.5%
+      flex 0 1 auto !important
+    .combine-table >>> li
+      width 65px
+      font-size 16px
+      margin-left 5px
+      padding 10px 0px 0px 0px
+    .combine-table >>> .el-menu
+      border-bottom 0px
+      margin -20px 0 15px 0
+    .combine-table >>> .is-active
+      font-weight bold
+    .combine-table >>> th
+      background-color #F0F7FF !important
+      font-size 10px
+    .combine-table >>> .move-border-top
+      border-top 0px
+      justify-content space-between
+    .abviously >>> .is-leaf
+      background-color #FFFEF5 !important
+    .fontScale >>> .el-table__header-wrapper .cell
+      font-size 12px
+      padding 0
+    .aside >>> .el-tree-node__content .el-tree-node__label
+      font-size 13px
+    .aside >>> .el-tree-node__children .el-tree-node__label
+      font-size 12px
 </style>

+ 42 - 31
src/views/quality/qualityProcess.vue

@@ -17,82 +17,87 @@
         :data="tableData"
         border
         style="width: 100%"
+        size="mini"
       >
         <el-table-column
-          prop="date"
+          prop="model"
           label="模块"
           align="center"
-          width="50"
         />
         <el-table-column
-          prop="name"
+          prop="odinId"
           label="上线单号"
           align="center"
           width="70"
         />
         <el-table-column
-          prop="name"
+          prop="gitProject"
           label="项目名称"
           align="center"
-          width="70"
         />
         <el-table-column
-          prop="name"
+          prop="handler"
           label="上线人"
           align="center"
-          width="60"
+          width="80"
         />
         <el-table-column
           prop="name"
           label="是否免提测"
           align="center"
-        />
+          width="60"
+        >
+          <template slot-scope="scope">{{ scope.row.isNoTest === 1 ? '是':'否' }}</template>
+        </el-table-column>
         <el-table-column
-          prop="name"
-          label="有预发环境/走预发环境"
+          prop="isGoPre"
+          label="是否走预发"
           align="center"
+          width="60"
         />
         <el-table-column
-          prop="name"
+          prop="onlineDate"
           label="上线时间"
           align="center"
-          width="70"
+          width="140"
         />
         <el-table-column
-          prop="name"
+          prop="odinStatus"
           label="上线阶段"
           align="center"
           width="70"
         />
         <el-table-column
-          prop="name"
+          prop="preStayTime"
           label="预发停留时长"
           align="center"
           width="60"
         />
         <el-table-column
-          prop="name"
+          prop="smallStayTime"
           label="小流量停留时长"
           align="center"
           width="70"
         />
         <el-table-column
-          prop="name"
+          prop="status"
           label="状态"
           align="center"
           width="50"
-        />
+        >
+          <template slot-scope="scope">{{ scope.row.status === 1 ? '有效':'无效' }}</template>
+        </el-table-column>
         <el-table-column
-          prop="name"
+          prop="odinStatus"
           label="状态信息"
           align="center"
-          width="70"
+          width="45"
         />
         <el-table-column
-          prop="name"
+          prop="odinStatusMsg"
           label="标志信息"
           align="center"
-          width="70"
+          width="45"
         />
       </el-table>
       <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" />
@@ -101,31 +106,37 @@
 </template>
 
 <script>
+import { getOnlineInfo } from '@/api/qualityCenter'
 // import { apiBusinessLineAll } from '@/api/qualityMeasurement.js'
 // import Json from '@/api/home.json'
 export default {
   data() {
     return {
-      tableData: [{
-        date: '20',
-        name: '王小虎',
-        address: '上海市普陀区金沙江路 1518 弄'
-      }
-      ],
+      tableData: [],
       input: '',
-      curIndex: 0,
+      curIndex: 1,
       pageSize: 5,
       total: 0
     }
   },
+  created() {
+    this._initProcess()
+  },
   methods: {
+    _initProcess() {
+      const processSerach = { id: this.$route.query.id, type: this.$route.query.type, dataType: this.$route.query.dataType, page: this.curIndex, perPage: this.pageSize }
+      getOnlineInfo(processSerach).then(res => {
+        this.tableData = res.data.data
+        this.total = res.data.total
+      })
+    },
     handleSizeChange(size) {
       this.pageSize = size
-      // this.getList()
+      this._initProcess()
     },
     handleCurrentChange(curIndex) {
       this.curIndex = curIndex
-      // this.getList()
+      this._initProcess()
     }
   }
 }
@@ -156,7 +167,7 @@ export default {
     .block >>> th
       background-color #F0F7FF !important
       font-size 10px
-    .block >>> .cell
+    .block >>> .el-table__body-wrapper  .cell
       font-size 10px
       white-space nowrap
       text-overflow ellipsis