Просмотр исходного кода

Merge branch 'master' into http_mock

qinzhipeng_v 5 лет назад
Родитель
Сommit
5dca98760e

+ 9 - 0
src/api/defectManage.js

@@ -75,3 +75,12 @@ export function bugGetEnum() {
     method: 'get'
   })
 }
+
+// 项目获取
+export function projectListOnlyInfo(data) {
+  return request({
+    url: mockUrl + '/project/listOnlyInfo',
+    method: 'post',
+    data
+  })
+}

+ 0 - 7
src/router/index.js

@@ -204,13 +204,6 @@ export const constantRoutes = [
             component: () => import('@/views/Platform/useCase/queryUse'),
             meta: { title: '用例查看' }
           },
-          {
-            path: 'updateUse',
-            name: '用例编辑',
-            hidden: true,
-            component: () => import('@/views/Platform/useCase/updateUse'),
-            meta: { title: '用例编辑' }
-          },
           {
             path: 'testPageData',
             name: '测试计划',

+ 22 - 7
src/views/Platform/bugManage/bugCreate.vue

@@ -121,7 +121,7 @@
           :file-list="fileList"
           list-type="picture-card"
         >
-          <el-button size="small" type="primary">上传附件</el-button>
+          <el-button size="small" type="primary" @click="dis = true">上传附件</el-button>
         </el-upload>
         <el-dialog :visible.sync="dialogVisible">
           <img width="100%" :src="dialogImageUrl" alt="">
@@ -212,12 +212,14 @@ export default {
     this.forkDown()
   },
   mounted() {
-    const editorDescribe = new E('#wangeditorDescribe')
-    editorDescribe.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table', 'foreColor']
-    editorDescribe.customConfig.onchange = (html) => {
-      this.form.bugDescribe = html
+    if (!this.$route.query.ids) {
+      const editorDescribe = new E('#wangeditorDescribe')
+      editorDescribe.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table', 'foreColor']
+      editorDescribe.customConfig.onchange = (html) => {
+        this.form.bugDescribe = html
+      }
+      editorDescribe.create()
     }
-    editorDescribe.create()
     const editorRemark = new E('#wangeditorRemark')
     editorRemark.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table', 'foreColor']
     editorRemark.customConfig.onchange = (html) => {
@@ -235,6 +237,7 @@ export default {
       this.fileDbList = []
       this.fileDbList.push({ 'name': file.name, 'url': 'http:' + file.response.url })
       this.accessory = JSON.stringify(this.fileDbList)
+      this.dis = false
       this.$message({ showClose: true, message: '文件上传成功', type: 'success' })
     },
     // 接口不接受空值处理
@@ -288,8 +291,20 @@ export default {
           })
           var title = res.data[0].caseInfo.title
           const arrString = e.reduce((sumString, item) => { return sumString + '测试步骤:' + item['测试步骤'] + '   ' + '预期结果:' + item['预期结果'] + '\n' }, '')
-          var case_caseCondition = '前置条件 : ' + caseInfo.caseCondition + ' \n ' + 'api : ' + caseInfo.api + ' \n ' + '问题描述 : ' + ' \n ' + arrString
+          var case_caseCondition
+          if (caseInfo.caseCondition) {
+            case_caseCondition = '前置条件 : ' + caseInfo.caseCondition + ' \n ' + 'api : ' + caseInfo.api + ' \n ' + '问题描述 : ' + ' \n ' + arrString
+          } else {
+            case_caseCondition = ''
+          }
           this.$set(this.form, 'bugName', title)
+          const editorDescribe = new E('#wangeditorDescribe')
+          editorDescribe.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table', 'foreColor']
+          editorDescribe.customConfig.onchange = (html) => {
+            this.form.bugDescribe = html
+          }
+          editorDescribe.create()
+          editorDescribe.txt.html(case_caseCondition)
           this.$set(this.form, 'bugDescribe', case_caseCondition)
           this.$set(this.form, 'taskId', caseInfo.taskId)
         })

+ 1 - 1
src/views/Platform/bugManage/bugQuery.vue

@@ -262,7 +262,7 @@ export default {
         this.form = res.data
         this.fileList = []
         var str = res.data.accessory
-        if (str !== '') {
+        if (str !== '' && str !== null) {
           var obj = JSON.parse(str.split('{}')[0])
           for (var a of obj) {
             this.fileList.push(a)

+ 2 - 1
src/views/Platform/bugManage/bugUpdate.vue

@@ -153,7 +153,7 @@
             action="http://star.xiaojukeji.com/upload/img.node"
             :on-success="handleChange"
           >
-            <el-button slot="trigger" size="small" type="primary">上传附件</el-button>
+            <el-button slot="trigger" size="small" type="primary" @click="dis = true">上传附件</el-button>
           </el-upload>
         </div>
         <el-dialog :visible.sync="dialogVisible" width="80%">
@@ -249,6 +249,7 @@ export default {
     handleChange(response, file, fileList) {
       this.fileDbList.push({ 'name': file.name, 'url': 'http:' + file.response.url })
       this.accessory = JSON.stringify(this.fileDbList)
+      this.dis = false
       this.$message({ showClose: true, message: '文件上传成功', type: 'success' })
     },
     async _initBegin() {

+ 40 - 6
src/views/Platform/defectManagement.vue

@@ -8,16 +8,19 @@
             <el-input v-model="queryCode.assigner" placeholder="责任人" autocomplete="off" clearable size="medium" style="width:13%;margin-right: 15px;" />
             <el-input v-model="queryCode.creator" placeholder="提交人" autocomplete="off" clearable size="medium" style="width:13%;margin-right: 15px;" />
             <el-input v-model="queryCode.bugName" placeholder="主题" autocomplete="off" clearable size="medium" style="width:13%;margin-right: 15px;" />
-            <el-select v-model="queryCode.taskId" size="medium" style="width:15%;margin-right: 15px;" clearable filterable placeholder="任务">
-              <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+            <el-select v-model="queryCode.projectId" size="medium" style="width:15%;margin-right: 15px;" clearable filterable placeholder="项目">
+              <el-option v-for="item in projectStr" :key="item.id" :label="item.name" :value="item.id" />
             </el-select>
+            <!-- <el-select v-model="queryCode.taskId" size="medium" style="width:15%;margin-right: 15px;" clearable filterable placeholder="任务">
+              <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+            </el-select> -->
             <el-select v-model="queryCode.statusList" size="medium" style="width:17.5%;margin-right: 15px;" multiple filterable clearable collapse-tags placeholder="bug状态">
               <el-option v-for="item in bugStatusStr" :key="item.code" :label="item.name" :value="item.code" />
             </el-select>
             <el-select v-model="queryCode.priorityList" size="medium" style="width:15%;margin-right: 15px;" multiple filterable clearable collapse-tags placeholder="级别">
               <el-option v-for="item in bugStatusPriority" :key="item.code" :label="item.name" :value="item.code" />
             </el-select>
-            <el-button type="primary" size="medium" style="margin-right:10px;" icon="el-icon-plus" circle @click="timeShow = !timeShow, groupShow = !groupShow, isPlatformShow = !isPlatformShow, queryCode.platformType = '', queryCode.repairResult = '', queryCode.teamId = '', isBusinessShow === true ? isBusinessShow = false : isBusinessShow = false" />
+            <el-button type="primary" size="medium" style="margin-right:10px;" icon="el-icon-plus" circle @click="showOrHide()" />
           </div>
           <div class="set-between">
             <el-button type="primary" size="medium" plain @click="dataQuery(queryCode)">查询</el-button>
@@ -35,6 +38,9 @@
           end-placeholder="创建结束时间"
           clearable
         />
+        <el-select v-show="groupShow" v-model="queryCode.taskId" size="medium" style="width:17.5%;margin-right: 15px;" clearable filterable placeholder="任务">
+          <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
+        </el-select>
         <el-select v-if="isPlatformShow" v-model="queryCode.platformType" size="medium" style="width:17.5%;margin-right: 15px;" clearable placeholder="平台类型" @change="clickChangeBusiness(queryCode.platformType)">
           <el-option v-for="item in platformTypeStr" :key="item.code" :label="item.name" :value="item.code" />
         </el-select>
@@ -456,7 +462,7 @@
   </div></template>
 
 <script>
-import { bugList, bugGet, bugDelete, bugUpdate, bugCreate, bugCopy, taskListCreate, bugGetEnum } from '@/api/defectManage'
+import { bugList, bugGet, bugDelete, bugUpdate, bugCreate, bugCopy, taskListCreate, bugGetEnum, projectListOnlyInfo } from '@/api/defectManage'
 import { projectGetTypeMap, groupDataGet, teamMembers } from '@/api/projectPage.js'
 import axios from 'axios'
 
@@ -467,6 +473,7 @@ export default {
       isPlatformShow: false,
       isBusinessShow: false,
       groupShow: false,
+      projectStr: [],
       bugTypeStr: [],
       groupTypeStr: [],
       bugStatusStr: [],
@@ -506,6 +513,7 @@ export default {
       curIndex: 1,
       total: 0,
       show2: '',
+      indexPage: {},
       form: {
         id: ''
       },
@@ -532,7 +540,19 @@ export default {
       formUpdateValue: {},
       optionsCurrentHandlerQA: [],
       optionsCurrentHandlerRD: [],
-      queryCode: {},
+      queryCode: {
+        repairResult: '',
+        teamId: '',
+        clientType: '',
+        platformType: '',
+        taskId: '',
+        priorityList: [],
+        statusList: [],
+        projectId: '',
+        bugName: '',
+        creator: '',
+        assigner: ''
+      },
       statusShow: false,
       repairShow: false,
       timeShow: false,
@@ -569,6 +589,9 @@ export default {
         pageSize: this.pageSize,
         curIndex: this.curIndex
       }
+      projectListOnlyInfo({ bizId: this.bizJson }).then(res => {
+        res.code === 200 ? this.projectStr = res.data : this.errorFun(res.msg)
+      })
       bugList(this.indexPage).then(res => {
         if (res.code === 200) {
           this.statistics = res.query
@@ -579,6 +602,16 @@ export default {
         }
       })
     },
+    showOrHide() {
+      this.timeShow = !this.timeShow
+      this.groupShow = !this.groupShow
+      this.isPlatformShow = !this.isPlatformShow
+      this.$set(this.queryCode, 'taskId', '')
+      this.$set(this.queryCode, 'platformType', '')
+      this.$set(this.queryCode, 'repairResult', '')
+      this.$set(this.queryCode, 'teamId', '')
+      this.isBusinessShow === true ? this.isBusinessShow = false : this.isBusinessShow = false
+    },
     bugListSelect() {
       bugGetEnum().then(res => {
         this.bugStatusStr = res.data.bugEnumList
@@ -826,12 +859,13 @@ export default {
         this.businessTypeStr = this.platformTypeStr.filter(value => value.code === e)[0].child
         this.$set(this.queryCode, 'clientType', '')
       } else {
+        this.queryCode.clientType = ''
         this.isBusinessShow = false
       }
     },
     clickChangeModule(e) {
       if (!e) {
-        this.isBusinessShow = false
+        this.queryCode.clientType = ''
       }
     },
     dataQueryInSearch(e) {

+ 17 - 7
src/views/Platform/testPage.vue

@@ -8,11 +8,9 @@
           <el-aside width="17%" style=" background: #FFF;margin: 1% 0 1% 1%; border-radius:8px;">
             <div class="nav_Input" style="min-height:90vh;">
               <br>
-              <el-tree :data="data1" :default-expanded-keys="key_arr" :expand-on-click-node="true" node-key="id" @node-click="clickFun">
+              <el-tree :data="data1" style="overflow-x:auto; min-width:100%;display:inline-block !important" :default-expanded-keys="key_arr" :expand-on-click-node="true" node-key="id" @node-click="clickFun">
                 <span slot-scope="{ node, data }" style="width:100%;" class="custom-tree-node" @mouseenter="mouseenter(data)" @mouseleave="mouseleave(data)">
-                  <!-- <el-tooltip class="item" effect="dark" :content="data.label" placement="right"> -->
-                  <span :title="data.label" class="span_el">{{ node.label }}</span>
-                  <!-- </el-tooltip> -->
+                  <span class="span-ellipsis" :title="data.label">{{ node.label }}</span>
                   <el-dropdown v-show="data.del" style="margin-left:10px" trigger="click">
                     <span v-show="data.codes === '1' ? false : true" class="el-dropdown-link">
                       ···<i class="el-icon--right" />
@@ -39,7 +37,6 @@
                   </el-select>
                   <el-button type="primary" @click="queryCaseData(test_plan)">查询</el-button>
                   <el-button type="primary" style="margin: 3% 2%" @click="createGetShow">新增</el-button>
-                  <!-- <el-button @click="implement">执行结果</el-button> -->
                 </el-col>
               </el-row>
             </el-header>
@@ -367,6 +364,7 @@ export default {
         cancelButtonText: '取消'
       })
         .then(() => {
+          this.key_arr = []
           var caseData = {
             projectId: data.projectId,
             modifier: this.userInformation,
@@ -379,6 +377,7 @@ export default {
               this.$message({ type: 'success', message: '已删除' })
               this.data1 = []
               this.AllQueryFolderData()
+              this.key_arr.push(this.startId)
             } else {
               this.$message({ type: 'error', message: res.msg, duration: 1000 })
             }
@@ -431,6 +430,7 @@ export default {
           this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
           this.dialogFormVisibleUpdate = false
           this.AllQueryFolderData()
+          this.key_arr.push(this.startId)
         })
       }
       if (e === '新增') {
@@ -451,6 +451,7 @@ export default {
                 this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
                 this.dialogFormVisibleUpdate = false
                 this.AllQueryFolderData()
+                this.key_arr.push(this.startId)
               } else {
                 this.$notify({ title: '提示', message: res.msg, duration: 2000 })
               }
@@ -477,6 +478,7 @@ export default {
             item.caseInfo.ids = item.id
             item.caseInfo.status_case = item.status
             item.caseInfo.keys = item.status
+            item.caseInfo.thrr = this.startId
             this.gridData.push(item.caseInfo)
           })
           this.total = res.data.length
@@ -654,6 +656,7 @@ export default {
       updateTestPlanCase({ creator: this.userInformation, modifier: this.userInformation, id: ele.ids, status: 3, testPlanId: ele.thrr }).then(res => { this.implement() })
     },
     Unclicked4(e, index, ele) {
+      console.log(ele)
       this.gridData[index].keys = 0
       updateTestPlanCase({ creator: this.userInformation, modifier: this.userInformation, id: ele.ids, status: 0, testPlanId: ele.thrr }).then(res => { this.implement() })
     },
@@ -717,6 +720,13 @@ export default {
 </script>
 
 <style>
+.span-ellipsis {
+ width: 100%;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  display: block;
+}
   .custom-tree-node {
     flex: 1;
     display: flex;
@@ -741,11 +751,11 @@ export default {
   .nav_Input .el-tree-node__children .custom-tree-node{
       color: #6F7C93;
   }
-  .span_el {
+  /* .span_el {
     display: block;
     overflow: hidden;
     text-overflow: ellipsis;
-  }
+  } */
   .btn_query .el-button--primary.is-plain {
     color: #000000 !important;
     background: #F9F9FA !important;

+ 7 - 13
src/views/Platform/useCase/createUse.vue

@@ -85,6 +85,7 @@
 import { createCaseData, queryCasesData, updateCaseData } from '@/api/caseProject.js'
 
 export default {
+  name: 'CreatedUse',
   data() {
     return {
       data: [{ description: '', expectedResult: '' }],
@@ -146,6 +147,7 @@ export default {
     // 图片上传成功的回调
     handleAvatarSuccess(response, file, fileList) {
       this.arr.push({ name: file.name, url: 'http:' + file.response.url })
+      this.uptataKey.push({ name: file.name, url: 'http:' + file.response.url })
       this.dis = false
     },
 
@@ -164,27 +166,19 @@ export default {
       this.data.splice(e, 1)
     },
 
-    // 图片上传成功的回调(编辑)
-    constractSuccUpload(response, file, fileList) {
-      this.dis = false
-      const fileUrl = { name: file.name, url: 'http:' + file.response.url }
-      this.uptataKey.push(fileUrl)
-    },
-
     // 删除附件(编辑)
     deleteURL(vel) {
-      for (var i = 0; i < this.uptataKey.length; i++) {
-        if (this.uptataKey[i].name === vel.name) {
-          this.uptataKey.splice(i, 1)
-        }
-      }
+      var arr = this.uptataKey.filter(item => {
+        return vel.url !== item.url
+      })
+      this.uptataKey = arr
     },
 
     // 编辑_数据
     caseQueryCase(vel) {
       this.caseData = vel
       this.caseData.description = JSON.stringify(this.data)
-      this.caseData.accessory = JSON.stringify(this.arr)
+      this.caseData.accessory = JSON.stringify(this.uptataKey)
       updateCaseData(this.caseData).then(res => {
         this.$message({ type: 'success', message: res.msg, duration: 1000 })
         this.$router.go('-1')

+ 0 - 196
src/views/Platform/useCase/updateUse.vue

@@ -1,196 +0,0 @@
-<template>
-  <div id="window-judge" style="background:#F2F3F6;min-height:95vh;">
-    <el-container>
-      <el-header style="background:#ffffff;height:auto; width:94%;margin:3%; font-size:14px;border-radius:8px;">
-        <el-form ref="caseData" :model="caseData" label-width="90pt" style="margin:1%;" :rules="createFormData">
-          <el-row>
-            <el-col :span="20">
-              <el-form-item label="前置条件" label-width="80pt" prop="caseCondition">
-                <el-input v-model="caseData.caseCondition" placeholder="请输入内容" style="margin-left:1.3%;" />
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="20">
-              <div style="white-space:nowrap; display:flex;">
-                <el-form-item label="用例优先级" prop="casePriority" style="flex:1">
-                  <el-select v-model="caseData.casePriority" clearable placeholder="用例优先级" style="width: 100%">
-                    <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.value" />
-                  </el-select>
-                </el-form-item>
-                <el-form-item label="API" prop="api" style="flex:1"><el-input v-model="caseData.api" clearable autocomplete="off" style="width: 100%; margin-left:3%;" /></el-form-item>
-              </div>
-            </el-col>
-          </el-row>
-        </el-form>
-      </el-header>
-      <el-main style="background:#ffffff;height:auto; width:94%;margin: 0 3% 3% 3%; font-size:14px;border-radius:8px;">
-        <!-- 编辑 -->
-        <el-form label-width="80px" :model="caseData" style="box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04); margin-bottom:2%;">
-          <el-row>
-            <el-col :span="20" style="margin:2% 0 0 0; white-space:nowrap;">
-              <el-form-item label="执行步骤">
-                <el-input v-model="caseData.description" type="textarea" :rows="4" placeholder="请输入内容" />
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="22">
-              <el-form-item label="预期结果">
-                <el-input v-model="caseData.expectedResult" placeholder="请输入内容" />
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <div style="display:flex;">
-            <el-row style="flex:1;">
-              <el-col :span="22">
-                <el-form-item label="附件">
-                  <el-upload class="upload-demo" drag action="http://star.xiaojukeji.com/upload/img.node" multiple :on-success="(response, file, fileList)=>{return constractSuccUpload(response, file, fileList )}" :on-progress="DisableButton">
-                    <i class="el-icon-plus avatar-uploader-icon"> 添加图片 </i>
-                  </el-upload>
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-row style="flex:1;">
-              <el-col :span="20">
-                <el-form-item label="备注">
-                  <el-input v-model="caseData.remark" type="textarea" :rows="8" placeholder="请输入内容" />
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-          <div v-show="btn_show" align="center" class="cla">
-            <el-table v-show="btn_show" :data="uptataKey" fit style="width: 90%;">
-              <el-table-column label="" min-width="150">
-                <template slot-scope="scope">{{ scope.row.name }}</template>
-              </el-table-column>
-              <el-table-column label="" min-width="300">
-                <template slot-scope="scope"><a target="_blank" :href="scope.row.url" style="color:blue;">{{ scope.row.url }}</a></template>
-              </el-table-column>
-              <el-table-column fixed="right" label="" width="50" align="center">
-                <template slot-scope="scope">
-                  <el-button class="deleteSty" @click="deleteURL(scope.row)"> x </el-button>
-                </template>
-              </el-table-column>
-            </el-table>
-          </div>
-        </el-form>
-        <el-row>
-          <el-col :span="22" style="text-align:right; ">
-            <el-button :disabled="dis" type="primary" @click="caseCreateCase(caseData)">保 存</el-button>
-            <el-button style="margin:9% 0 0 4%;" @click="$router.go(-1)">取 消</el-button>
-          </el-col>
-        </el-row>
-      </el-main>
-    </el-container>
-
-  </div>
-</template>
-
-<script>
-import { updateCaseData, queryCasesData } from '@/api/caseProject.js'
-
-export default {
-  data() {
-    return {
-      userNames: localStorage.getItem('username'),
-      bizJson: localStorage.getItem('key'),
-      startId: '',
-      caseData: {},
-      btn_show: false,
-      dis: false,
-      id: '',
-      arry: [],
-      arr: [],
-      uptataKey: [],
-      createFormData: {
-        caseCondition: [{ required: true, message: '前置条件不能为空', trigger: 'change' }],
-        api: [{ required: true, message: '对应接口不能为空', trigger: 'change' }],
-        casePriority: [{ required: true, message: '用例优先级不能为空', trigger: 'change' }]
-      },
-      priorityStrings: [{ name: 'p0', value: 0 }, { name: 'p1', value: 1 }, { name: 'p2', value: 2 }, { name: 'p3', value: 3 }]
-    }
-  },
-  created() {
-    this.initCode()
-  },
-  methods: {
-    // 初始化
-    initCode() {
-      if (this.$route.query.id) {
-        this.url = window.location.href // 获取url中"?"符后的字串
-        this.id = this.url.split('?id=')
-        this.startId = this.id[1]
-        queryCasesData({ caseFolderId: this.id[1] }).then(res => {
-          for (var el of res.data.list) {
-            el.caseFolderId === Number(this.id[1]) ? this.caseData = el : ''
-            if (this.caseData.accessory !== '') {
-              this.btn_show = true
-              var obj = JSON.parse(this.caseData.accessory.split('{}')[0])
-              for (var a of obj) {
-                this.uptataKey.push(a)
-              }
-              break
-            }
-          }
-        })
-      }
-    },
-
-    DisableButton() {
-      this.dis = true
-    },
-
-    // 图片上传成功的回调(编辑)
-    constractSuccUpload(response, file, fileList) {
-      this.dis = false
-      const fileUrl = { name: file.name, url: 'http:' + file.response.url }
-      this.uptataKey.push(fileUrl)
-    },
-
-    deleteURL(vel) {
-      var arr = this.uptataKey.filter(item => {
-        return vel.url !== item.url
-      })
-      this.uptataKey = arr
-    },
-
-    // 编辑_数据
-    caseCreateCase(vel) {
-      this.caseData = vel
-      this.caseData.accessory = JSON.stringify(this.uptataKey)
-      updateCaseData(this.caseData).then(res => {
-        this.$message({ type: 'success', message: res.msg })
-        this.$router.go(-1)
-      })
-    }
-  }
-}
-</script>
-
-<style>
-.cla .el-table td {
-  padding:0px;
-}
-.deleteSty {
-  cursor: pointer;
-  border: none;
-}
-.bgColorSz {
-    width: 100%;
-    height: 96vh;
-    background: #F2F3F6;
-    font-size: 0.9rem;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-  }
-  .avatar-uploader-icon {
-    font-size: 20px;
-    color: #8c939d;
-    width: 178px;
-    height: 178px;
-    line-height: 178px;
-    text-align: center;
-  }
-</style>

+ 21 - 12
src/views/Platform/useCasePage.vue

@@ -27,7 +27,7 @@
               >
 
                 <span slot-scope="{ node, data }" style="width:100%;" class="custom-tree-node" @mouseenter="mouseenter(data)" @mouseleave="mouseleave(data)">
-                  <span :title="data.label" class="span_el" @dblclick="dblclick(data)">{{ node.label }}</span>
+                  <span :title="data.label" class="span_el" @dblclick="dblclick(data)">{{ node.label | ellipsis }}</span>
                   <el-input v-if="data.que" ref="get_Input" v-model="node_Name.name" size="mini" @blur="queryNodeName(node_Name.name, data)">输入框</el-input>
                   <el-dropdown v-show="data.del" style="margin-left:10px" trigger="click">
                     <span class="el-dropdown-link">
@@ -151,6 +151,15 @@ import axios from 'axios'
 
 export default {
   name: 'UseCasePage',
+  filters: {
+    ellipsis(value) {
+      if (!value) return ''
+      if (value.length > 10) {
+        return value.slice(0, 10) + '...'
+      }
+      return value
+    }
+  },
   data() {
     return {
       key_arr: [],
@@ -291,8 +300,8 @@ export default {
         modifier: this.userInformation
       }
       createFolderData(this.formData).then(res => {
-        console.log(res.data)
         if (res.code === 200) {
+          this.key_arr = []
           const newChild = { id: res.data, label: '新建子节点', children: [] }
           if (!data.children) {
             this.$set(data, 'children', [])
@@ -312,6 +321,7 @@ export default {
 
     // 更新节点
     queryNodeName(val, data) {
+      this.key_arr = []
       if (val === '') { // 判断用户是否有输入
         val = this.label // 没有输入拿之前的label替代
         this.end_Data = { folderName: val, xmindUrl: '', id: data.id, bizId: localStorage.getItem('key'), modifier: this.userInformation, creator: this.userInformation }
@@ -325,6 +335,7 @@ export default {
           this.$message({ type: 'success', message: res.msg, duration: 1000 })
           this.data1 = []
           this.AllQueryFolderData(localStorage.getItem('key'))
+          this.key_arr.push(this.startId)
         } else {
           this.$message({ type: 'error', message: res.msg, duration: 1000 })
           this.data1 = []
@@ -505,6 +516,7 @@ export default {
         cancelButtonText: '取消'
       })
         .then(() => {
+          this.key_arr = []
           this.formData = {
             id: node.data.id,
             modifier: node.data.id
@@ -514,6 +526,7 @@ export default {
               this.$message({ type: 'success', message: '已删除' })
               this.data1 = []
               this.AllQueryFolderData(localStorage.getItem('key'))
+              this.key_arr.push(this.startId)
             } else {
               this.$message({ type: 'error', message: res.msg, duration: 1000 })
             }
@@ -532,7 +545,9 @@ export default {
       this.startId = e.id
       queryCasesData({ pageSize: 8, curIndex: 1, caseFolderId: e.id }).then(res => {
         this.gridData = res.data.list
-        this.grid_xmind = res.data.subList
+        if (res.data.subList) {
+          this.grid_xmind = res.data.subList
+        }
         this.total = res.data.total
       })
     },
@@ -597,17 +612,15 @@ export default {
 
     // 导入xmind
     import_File() {
+      debugger
       var obj = this.im_File
       if (!obj.files) { return }
       var f = obj.files[0]
-      console.log(f)
-      // var a_name = f.name.split('.')
-      // if (a_name[1] === 'xmind') {
       var formData_s = new FormData()
       formData_s.append('file', f)
       axios.post('http://star.xiaojukeji.com/upload/img.node', formData_s, { withCredentials: false, headers: { 'Content-Type': 'multipart/form-data' }}).then(res => {
         if (res) {
-          console.log(res)
+          console.log(typeof (this.grid_xmind))
           this.grid_xmind.push({ 'name': f.name, 'url': 'http:' + res.data.url })
           var xmind_code = {
             id: this.startId,
@@ -740,11 +753,7 @@ export default {
       if (this.startId === '') {
         this.$message({ message: '提示,👈请选择目录', type: 'success', duration: 1000, offset: 150 })
       } else {
-        if (this.grid_xmind.length > 2) {
-          this.$message({ message: '文件不能大于3条', type: 'success', duration: 1000, offset: 150 })
-        } else {
-          this.$refs.im_File.click()
-        }
+        this.$refs.im_File.click()
       }
     },
 

+ 14 - 12
src/views/data/index.vue

@@ -4,7 +4,7 @@
       <div slot="header">
         <span>{{ subMenu.subMenuName }}</span>
       </div>
-      <el-form label-width="100px" :rules="rules">
+      <el-form label-width="150px" :rules="rules">
         <el-form-item v-for="(item,index) in widgets" :key="index" :label="item.label" :prop="item.name">
           <el-input v-if="item.widgetType === 'INPUT'" v-model="data[item.name]" :placeholder="item.placeHolder" />
           <el-select v-if="item.widgetType === 'SELECT'" v-model="data[item.name]" :placeholder="item.placeHolder" @change="handleChange(item,data[item.name])">
@@ -48,7 +48,10 @@
   width: 50%;
 }
 .el-select {
-  width: 50%;
+  width: 70%;
+}
+.el-input {
+  width: 70%;
 }
 .result {
   padding: 2%;
@@ -89,16 +92,15 @@ export default {
       }
       this.data = {}
       this.result = ''
-      // this.rules = {}
-      // for (var i in newValue.widgets) {
-      //   console.log(i)
-      //   if (newValue.widgets[i].widgetType === 'INPUT') {
-      //     this.rules[newValue.widgets[i].name] = [{ required: true, message: '请输入' + newValue.widgets[i].label, trigger: 'blur' }]
-      //   } else if (newValue.widgets[i].widgetType === 'SELECT') {
-      //     this.rules[newValue.widgets[i].name] = [{ required: true, message: '请选择' + newValue.widgets[i].label, trigger: 'change' }]
-      //   }
-      // }
-      // console.log(this.rules)
+    }
+  },
+  created() {
+    for (const i in this.subMenu.widgets) {
+      if (this.subMenu.widgets[i].widgetId === 0) {
+        this.widgets.push(this.subMenu.widgets[i])
+      } else {
+        this.hidenWidgets.push(this.subMenu.widgets[i])
+      }
     }
   },
   methods: {

+ 1 - 1
src/views/online-quality/BlockServer/blockServer.vue

@@ -110,7 +110,7 @@ export default {
         lineName: 'prado',
         lineId: 5
       }, {
-        lineName: 'b2b',
+        lineName: '企业级',
         lineId: 7
       }
       ]

+ 1 - 1
src/views/online-quality/CheckConfig/index.vue

@@ -110,7 +110,7 @@ export default {
         lineName: 'prado',
         lineId: 5
       }, {
-        lineName: 'b2b',
+        lineName: '企业级',
         lineId: 7
       }
       ],

+ 1 - 1
src/views/online-quality/HistoryTask/taskDetails.vue

@@ -192,7 +192,7 @@ export default {
             if (this.task.jenkinsResultDO.cases) {
               this.task.jenkinsResultDO.cases = JSON.parse(this.task.jenkinsResultDO.cases)
             }
-            this.isJenkensResultShow = true
+            this.isJenkensResultShow = this.task.isBuild
           }
         })
     }

+ 159 - 129
src/views/quality/qualityMeasurement.vue

@@ -67,7 +67,7 @@
                 <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="免提测上线数"
+                label="免提测全量上线数"
                 style="width:50%;"
                 align="center"
               >
@@ -96,7 +96,7 @@
                 </el-table-column>
                 <el-table-column
                   prop="noTestRollback"
-                  label="免提测回滚数"
+                  label="免提测全量回滚数"
                   style="width:20%;"
                   align="center"
                 />
@@ -144,13 +144,13 @@
                 <template slot-scope="scope">{{ scope.row.skipPreIfHavaPercent | toPercent }}</template>
               </el-table-column>
               <el-table-column
-                label="免提测上线占比"
+                label="免提测全量上线占比"
                 align="center"
               >
                 <template slot-scope="scope">{{ scope.row.noTestPercent | toPercent }}</template>
               </el-table-column>
               <el-table-column
-                label="免提测回滚占比"
+                label="免提测全量回滚占比"
                 align="center"
               >
                 <template slot-scope="scope">{{ scope.row.noTestRollbackPercent | toPercent }}</template>
@@ -197,11 +197,12 @@
                 <template slot-scope="scope">{{ scope.row.smallLess5MinPercent | toPercent }}</template>
               </el-table-column>
               <el-table-column
-                prop="name"
                 label="裸奔上线占比"
                 style="width:25%;"
                 align="center"
-              />
+              >
+                <template slot-scope="scope">{{ scope.row.skipOnlinePercent | toPercent }}</template>
+              </el-table-column>
               <el-table-column
                 label="紧急上线占比"
                 style="width:25%;"
@@ -226,7 +227,7 @@
               />
               <el-table-column
                 prop="name"
-                label="免提测上线数"
+                label="免提测全量上线数"
                 align="center"
               >
                 <el-table-column
@@ -372,22 +373,22 @@
             </el-table>
           </el-tab-pane>
           <el-tab-pane v-if="pauseKey !== 5" label="数据视图" name="third">
-            <h4>1. 上线次数<span v-show="isTotalShowMountOrRateOrTotal" class="emptyEcharts">( 暂无数据~ )</span></h4>
-            <div v-show="!isTotalShowMountOrRateOrTotal" id="totalShow" style="width: 100%; height: 400px" />
-            <h4>2. 全量回滚数/裸奔上线数/小流量回滚数<span v-show="isTotalShowMountOrRateOrTotal" class="emptyEcharts">( 暂无数据~ )</span></h4>
-            <div v-show="!isTotalShowMountOrRateOrTotal" id="totalShowMount" style="width: 100%; height: 400px" />
-            <h4>3. 全量回滚率/裸奔上线率/小流量回滚率<span v-show="isTotalShowMountOrRateOrTotal" class="emptyEcharts">( 暂无数据~ )</span></h4>
-            <div v-show="!isTotalShowMountOrRateOrTotal" id="totalShowRate" style="width: 100%; height: 400px" />
+            <h4>1. 上线次数<span v-if="isTotalShowMountOrRateOrTotal" class="emptyEcharts">( 暂无数据~ )</span></h4>
+            <div v-if="!isTotalShowMountOrRateOrTotal" id="totalShow" style="width: 100%; height: 400px" />
+            <h4>2. 全量回滚数/裸奔上线数/小流量回滚数<span v-if="isTotalShowMountOrRateOrTotal" class="emptyEcharts">( 暂无数据~ )</span></h4>
+            <div v-if="!isTotalShowMountOrRateOrTotal" id="totalShowMount" style="width: 100%; height: 400px" />
+            <h4>3. 全量回滚率/裸奔上线率/小流量回滚率<span v-if="isTotalShowMountOrRateOrTotal" class="emptyEcharts">( 暂无数据~ )</span></h4>
+            <div v-if="!isTotalShowMountOrRateOrTotal" id="totalShowRate" style="width: 100%; height: 400px" />
             <h4>4. 线上问题数<span v-if="isTotalShowOnline" class="emptyEcharts">( 暂无数据~ )</span></h4>
             <div v-if="!isTotalShowOnline" id="totalShowOnline" style="width: 100%; height: 400px" />
           </el-tab-pane>
           <el-tab-pane v-if="pauseKey !== 5" label="数据比对" name="forth">
-            <h4>1. 上线次数<span v-show="isTotalShowMountOrRateOrTotal" class="emptyEcharts">( 暂无数据~ )</span></h4>
-            <div v-show="!isTotalShowMountOrRateOrTotal" id="comparatorBetween" style="width: 100%; height: 400px" />
-            <h4>2. 全量回滚数/裸奔上线数/小流量回滚数<span v-show="isTotalShowMountOrRateOrTotal" class="emptyEcharts">( 暂无数据~ )</span></h4>
-            <div v-show="!isTotalShowMountOrRateOrTotal" id="comparatorMountBetween" style="width: 100%; height: 400px" />
-            <h4>3. 全量回滚率/裸奔上线率/小流量回滚率<span v-show="isTotalShowMountOrRateOrTotal" class="emptyEcharts">( 暂无数据~ )</span></h4>
-            <div v-show="!isTotalShowMountOrRateOrTotal" id="comparatorRateBetween" style="width: 100%; height: 400px" />
+            <h4>1. 上线次数<span v-if="isTotalShowMountOrRateOrTotal" class="emptyEcharts">( 暂无数据~ )</span></h4>
+            <div v-if="!isTotalShowMountOrRateOrTotal" id="comparatorBetween" style="width: 100%; height: 400px" />
+            <h4>2. 全量回滚数/裸奔上线数/小流量回滚数<span v-if="isTotalShowMountOrRateOrTotal" class="emptyEcharts">( 暂无数据~ )</span></h4>
+            <div v-if="!isTotalShowMountOrRateOrTotal" id="comparatorMountBetween" style="width: 100%; height: 400px" />
+            <h4>3. 全量回滚率/裸奔上线率/小流量回滚率<span v-if="isTotalShowMountOrRateOrTotal" class="emptyEcharts">( 暂无数据~ )</span></h4>
+            <div v-if="!isTotalShowMountOrRateOrTotal" id="comparatorRateBetween" style="width: 100%; height: 400px" />
             <h4>4. 线上问题数<span v-if="isTotalShowOnline" class="emptyEcharts">( 暂无数据~ )</span></h4>
             <div v-if="!isTotalShowOnline" id="comparatorOnlineBetween" style="width: 100%; height: 400px" />
           </el-tab-pane>
@@ -434,7 +435,7 @@
                   label="上线次数"
                 />
                 <el-table-column
-                  label="免提测上线占比"
+                  label="免提测全量上线占比"
                   align="center"
                 >
                   <template slot-scope="scope">{{ scope.row.processVO.noTestPer | toPercent }}</template>
@@ -509,10 +510,36 @@ export default {
       curIndex: 1,
       pageSize: 10,
       total: 0,
+      totalOneEcharts: '',
+      totalOneEchartsMount: '',
+      totalOneEchartsRate: '',
+      totalOneEchartsOnline: '',
       dealWithBusinessDate: [],
       timeInterval: [new Date().getTime() - 7 * 24 * 60 * 60 * 1000, new Date().getTime()]
     }
   },
+  computed: {
+    isClosed() {
+      return this.$store.state.app.sidebar.opened
+    }
+  },
+  watch: {
+    isClosed(New, old) {
+      setTimeout(() => {
+        const myEvent = new Event('resize')
+        window.dispatchEvent(myEvent)
+      }, 230)
+      // // console.log(New)
+      // // console.log(this.totalOneEcharts, this.totalOneEchartsMount, this.totalOneEchartsRate, this.totalOneEchartsOnline)
+      // // window.addEventListener('resize', () => {
+      // this.totalOneEcharts.resize()
+      // this.totalOneEchartsMount.resize()
+      // console.log(1)
+      // this.totalOneEchartsRate.resize()
+      // this.totalOneEchartsOnline.resize()
+      // })
+    }
+  },
   created() {
     this._initBusinessTreeAndBeginInfo()
   },
@@ -523,6 +550,7 @@ export default {
     // 点击头部导航栏显示默认数据
     async _initBusinessTreeAndBeginInfo() {
       this.loadingOnlineProcess = true
+      // console.log(this.$store.state.app.sidebar.opened)
       await getBusiness().then(res => {
         res.code === 0 ? this.businessData = res.data : this.errorFun(res.msg)
         const processFunc = (arr) => { // modules和child
@@ -596,7 +624,7 @@ export default {
     // 部门table数据不需要缺陷数据
     deleteAfter() {
       this.guild = this.treeGuide(this.dealWithBusinessDate, this.pauseTreeNode.id, this.pauseTreeNode.type).join('/')
-      const pretermitSearch = { id: this.pauseTreeNode.id, type: this.pauseKey, startTime: this.timeInterval[0], endTime: this.timeInterval[1] }
+      const pretermitSearch = { id: this.pauseTreeNode.id, type: this.pauseTreeNode.type, startTime: this.timeInterval[0], endTime: this.timeInterval[1] }
       axios.all([getOnlineAllCount(pretermitSearch), getOnlineProblem(pretermitSearch)]).then(axios.spread((resAllCount, resProblem) => {
         this.onlineProcess = resAllCount.code === 0 ? resAllCount.data : ''
         this.problemData = resProblem.code === 0 ? resProblem.data : ''
@@ -637,68 +665,69 @@ export default {
               product: eachName,
               [pauseArr[0]]: this.visualizationData[index].totalOnlineNum
             }))
-            const totalOneEcharts = echarts.init(document.getElementById('comparatorBetween'))
-            const totalOneEchartsMount = echarts.init(document.getElementById('comparatorMountBetween'))
-            const totalOneEchartsRate = echarts.init(document.getElementById('comparatorRateBetween'))
-            // const totalOneEchartsOnline = echarts.init(document.getElementById('comparatorOnlineBetween'))
-            totalOneEcharts.setOption({
-              legend: {},
-              tooltip: {},
-              grid: { containLabel: true },
-              dataset: {
-                dimensions: ['product', ...pauseArr],
-                source: this.seriesDeal
-              },
-              xAxis: { type: 'category', 'axisLabel': { interval: 0 }},
-              yAxis: {},
-              // Declare several bar series, each will be mapped
-              // to a column of dataset.source by default.
-              series: [
-                { type: 'bar' }
-              ]
-            })
-            totalOneEchartsMount.setOption({
-              legend: {},
-              tooltip: {},
-              grid: { containLabel: true },
-              dataset: {
-                dimensions: ['product', ...pauseArrOthersMount],
-                source: this.seriesDealOthersMount
-              },
-              xAxis: { type: 'category', 'axisLabel': { interval: 0 }},
-              yAxis: {},
-              // Declare several bar series, each will be mapped
-              // to a column of dataset.source by default.
-              series: [
-                { type: 'bar' },
-                { type: 'bar' },
-                { type: 'bar' }
-              ]
-            })
-            totalOneEchartsRate.setOption({
-              legend: {},
-              tooltip: {},
-              grid: { containLabel: true },
-              dataset: {
-                dimensions: ['product', ...pauseArrOthersMountRate],
-                source: this.seriesDealOthersRate
-              },
-              xAxis: { type: 'category', 'axisLabel': { interval: 0 }},
-              yAxis: {},
-              // Declare several bar series, each will be mapped
-              // to a column of dataset.source by default.
-              series: [
-                { type: 'bar' },
-                { type: 'bar' },
-                { type: 'bar' }
-              ]
+            this.$nextTick(() => {
+              this.totalOneEcharts = echarts.init(document.getElementById('comparatorBetween'))
+              this.totalOneEchartsMount = echarts.init(document.getElementById('comparatorMountBetween'))
+              this.totalOneEchartsRate = echarts.init(document.getElementById('comparatorRateBetween'))
+              // const totalOneEchartsOnline = echarts.init(document.getElementById('comparatorOnlineBetween'))
+              this.totalOneEcharts.setOption({
+                legend: {},
+                tooltip: {},
+                grid: { containLabel: true },
+                dataset: {
+                  dimensions: ['product', ...pauseArr],
+                  source: this.seriesDeal
+                },
+                xAxis: { type: 'category', 'axisLabel': { interval: 0, rotate: 40 }},
+                yAxis: {},
+                // Declare several bar series, each will be mapped
+                // to a column of dataset.source by default.
+                series: [
+                  { type: 'bar' }
+                ]
+              })
+              this.totalOneEchartsMount.setOption({
+                legend: {},
+                tooltip: {},
+                grid: { containLabel: true },
+                dataset: {
+                  dimensions: ['product', ...pauseArrOthersMount],
+                  source: this.seriesDealOthersMount
+                },
+                xAxis: { type: 'category', 'axisLabel': { interval: 0, rotate: 40 }},
+                yAxis: {},
+                // Declare several bar series, each will be mapped
+                // to a column of dataset.source by default.
+                series: [
+                  { type: 'bar' },
+                  { type: 'bar' },
+                  { type: 'bar' }
+                ]
+              })
+              this.totalOneEchartsRate.setOption({
+                legend: {},
+                tooltip: {},
+                grid: { containLabel: true },
+                dataset: {
+                  dimensions: ['product', ...pauseArrOthersMountRate],
+                  source: this.seriesDealOthersRate
+                },
+                xAxis: { type: 'category', 'axisLabel': { interval: 0, rotate: 40 }},
+                yAxis: {},
+                // Declare several bar series, each will be mapped
+                // to a column of dataset.source by default.
+                series: [
+                  { type: 'bar' },
+                  { type: 'bar' },
+                  { type: 'bar' }
+                ]
+              })
+              window.addEventListener('resize', () => {
+                this.totalOneEcharts.resize()
+                this.totalOneEchartsMount.resize()
+                this.totalOneEchartsRate.resize()
+              })
             })
-            window.onresize = () => {
-              totalOneEcharts.resize()
-              totalOneEchartsMount.resize()
-              totalOneEchartsRate.resize()
-              // totalOneEchartsOnline.resize()
-            }
           }
           if (resProblem.data === null || resProblem.data.length === 0) {
             this.visualizationDataOnline = []
@@ -717,8 +746,8 @@ export default {
             // this.seriesDeal[0].type = 'line'
             // this.seriesDeal[0].data = pauseArr
             this.$nextTick(() => {
-              const totalOneEchartsOnline = echarts.init(document.getElementById('comparatorOnlineBetween'))
-              totalOneEchartsOnline.setOption({
+              this.totalOneEchartsOnline = echarts.init(document.getElementById('comparatorOnlineBetween'))
+              this.totalOneEchartsOnline.setOption({
                 legend: {},
                 tooltip: {},
                 grid: { containLabel: true },
@@ -726,7 +755,7 @@ export default {
                   dimensions: ['product', ...pauseArrOnline],
                   source: this.seriesDealOthersOnline
                 },
-                xAxis: { type: 'category', 'axisLabel': { interval: 0 }},
+                xAxis: { type: 'category', 'axisLabel': { interval: 0, rotate: 40 }},
                 yAxis: {},
                 // Declare several bar series, each will be mapped
                 // to a column of dataset.source by default.
@@ -734,9 +763,9 @@ export default {
                   { type: 'bar' }
                 ]
               })
-              window.onresize = () => {
-                totalOneEchartsOnline.resize()
-              }
+              window.addEventListener('resize', () => {
+                this.totalOneEchartsOnline.resize()
+              })
             })
           }
         } else {
@@ -777,40 +806,41 @@ export default {
               type: 'line',
               data: this.visualizationData.map(eachData => eachData.totalOnlineNum)
             }))
-            const totalOneEcharts = echarts.init(document.getElementById('totalShow'))
-            const totalOneEchartsMount = echarts.init(document.getElementById('totalShowMount'))
-            const totalOneEchartsRate = echarts.init(document.getElementById('totalShowRate'))
-            // const totalOneEchartsOnline = echarts.init(document.getElementById('totalShowOnline'))
-            totalOneEcharts.setOption({
-              tooltip: { trigger: 'axis' },
-              legend: { data: pauseArr },
-              grid: { containLabel: true },
-              xAxis: { type: 'category', boundaryGap: false, data: this.xAxisDeal, 'axisLabel': { interval: 0 }},
-              yAxis: { type: 'value' },
-              series: this.seriesDeal
-            })
-            totalOneEchartsMount.setOption({
-              tooltip: { trigger: 'axis' },
-              legend: { data: pauseArrOthersMount },
-              grid: { containLabel: true },
-              xAxis: { type: 'category', boundaryGap: false, data: this.xAxisDeal, 'axisLabel': { interval: 0 }},
-              yAxis: { type: 'value' },
-              series: this.seriesDealOthersMount
-            })
-            totalOneEchartsRate.setOption({
-              tooltip: { trigger: 'axis' },
-              legend: { data: pauseArrOthersMountRate },
-              grid: { containLabel: true },
-              xAxis: { type: 'category', boundaryGap: false, data: this.xAxisDeal, 'axisLabel': { interval: 0 }},
-              yAxis: { type: 'value' },
-              series: this.seriesDealOthersRate
+            this.$nextTick(() => {
+              this.totalOneEcharts = echarts.init(document.getElementById('totalShow'))
+              this.totalOneEchartsMount = echarts.init(document.getElementById('totalShowMount'))
+              this.totalOneEchartsRate = echarts.init(document.getElementById('totalShowRate'))
+              // const totalOneEchartsOnline = echarts.init(document.getElementById('totalShowOnline'))
+              this.totalOneEcharts.setOption({
+                tooltip: { trigger: 'axis' },
+                legend: { data: pauseArr },
+                grid: { containLabel: true },
+                xAxis: { type: 'category', boundaryGap: false, data: this.xAxisDeal, 'axisLabel': { interval: 0 }},
+                yAxis: { type: 'value' },
+                series: this.seriesDeal
+              })
+              this.totalOneEchartsMount.setOption({
+                tooltip: { trigger: 'axis' },
+                legend: { data: pauseArrOthersMount },
+                grid: { containLabel: true },
+                xAxis: { type: 'category', boundaryGap: false, data: this.xAxisDeal, 'axisLabel': { interval: 0 }},
+                yAxis: { type: 'value' },
+                series: this.seriesDealOthersMount
+              })
+              this.totalOneEchartsRate.setOption({
+                tooltip: { trigger: 'axis' },
+                legend: { data: pauseArrOthersMountRate },
+                grid: { containLabel: true },
+                xAxis: { type: 'category', boundaryGap: false, data: this.xAxisDeal, 'axisLabel': { interval: 0 }},
+                yAxis: { type: 'value' },
+                series: this.seriesDealOthersRate
+              })
+              window.addEventListener('resize', () => {
+                this.totalOneEcharts.resize()
+                this.totalOneEchartsMount.resize()
+                this.totalOneEchartsRate.resize()
+              })
             })
-            window.onresize = () => {
-              totalOneEcharts.resize()
-              totalOneEchartsMount.resize()
-              totalOneEchartsRate.resize()
-              // totalOneEchartsOnline.resize()
-            }
           }
           if (resProblem.data === null || resProblem.data.length === 0) {
             this.visualizationDataOnline = []
@@ -830,8 +860,8 @@ export default {
             // this.seriesDeal[0].type = 'line'
             // this.seriesDeal[0].data = pauseArr
             this.$nextTick(() => {
-              const totalOneEchartsOnline = echarts.init(document.getElementById('totalShowOnline'))
-              totalOneEchartsOnline.setOption({
+              this.totalOneEchartsOnline = echarts.init(document.getElementById('totalShowOnline'))
+              this.totalOneEchartsOnline.setOption({
                 tooltip: { trigger: 'axis' },
                 legend: { data: pauseArrOnline },
                 grid: { containLabel: true },
@@ -839,9 +869,9 @@ export default {
                 yAxis: { type: 'value' },
                 series: this.seriesDealOthersOnline
               })
-              window.onresize = () => {
-                totalOneEchartsOnline.resize()
-              }
+              window.addEventListener('resize', () => {
+                this.totalOneEchartsOnline.resize()
+              })
             })
           }
         } else {
@@ -853,7 +883,7 @@ export default {
     // 业务线table数据
     allCountAndProlemGet() {
       this.guild = this.treeGuide(this.dealWithBusinessDate, this.pauseTreeNode.id, this.pauseTreeNode.type).join('/')
-      const pretermitSearch = { id: this.pauseTreeNode.id, type: this.pauseKey, startTime: this.timeInterval[0], endTime: this.timeInterval[1] }
+      const pretermitSearch = { id: this.pauseTreeNode.id, type: this.pauseTreeNode.type, startTime: this.timeInterval[0], endTime: this.timeInterval[1] }
       axios.all([getOnlineAllCount(pretermitSearch), getOnlineProblem(pretermitSearch), getOnlineVitium(pretermitSearch)]).then(axios.spread((resAllCount, resProblem, resDefeat) => {
         this.onlineProcess = resAllCount.code === 0 ? resAllCount.data : ''
         this.problemData = resProblem.code === 0 ? resProblem.data : ''
@@ -922,7 +952,7 @@ export default {
       const { href } = this.$router.resolve({
         name: '上线过程',
         query: {
-          id: this.pauseTreeNode.id, type: this.pauseKey, dataType: e, startTime: this.timeInterval[0], endTime: this.timeInterval[1]
+          id: this.pauseTreeNode.id, type: this.pauseTreeNode.type, dataType: e, startTime: this.timeInterval[0], endTime: this.timeInterval[1]
         }
       })
       window.open(href, '_blank')
@@ -942,7 +972,7 @@ export default {
       const { href } = this.$router.resolve({
         name: '缺陷过程',
         query: {
-          id: this.pauseTreeNode.id, type: this.pauseKey, startTime: this.timeInterval[0], endTime: this.timeInterval[1]
+          id: this.pauseTreeNode.id, type: this.pauseTreeNode.type, startTime: this.timeInterval[0], endTime: this.timeInterval[1]
         }
       })
       window.open(href, '_blank')