ソースを参照

页面的适配,添加工程模块,完善任务传值,质量度量完成

panxiandiao_i 5 年 前
コミット
22bc6ef01f

+ 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'
   })
 }

+ 18 - 0
src/api/qualityCenter.js

@@ -36,3 +36,21 @@ export function getOnlineAllCount(params) {
     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
+  })
+}

+ 168 - 127
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="7.76vw">
-            <el-select v-model="form.taskId" filterable placeholder="任务" style="width: 19.085vw;margin-right: -3.8vw;" @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-show="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,6 +360,7 @@ 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)
@@ -345,6 +368,24 @@ export default {
       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)

+ 170 - 61
src/views/Platform/bugManage/bugQuery.vue

@@ -2,30 +2,31 @@
   <div id="window-judge" class="set-background">
     <el-form :model="form">
       <div class="block">
-        <el-form-item label="标题 :" label-width="5.4%">{{ 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="5.4%">{{ 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="19.2%" 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="19.2%" 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="30.4%" 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">
@@ -41,20 +42,22 @@
       </div>
       <div class="block-end">
         <div class="wrap">
-          <el-form-item label="机型 : " label-width="35.2%">{{ form.model }}</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() {

+ 170 - 133
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="7.76vw">
-            <el-select v-model="form.taskId" filterable placeholder="任务" style="width: 19.085vw;margin-right: -3.8vw;">
-              <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,6 +337,7 @@ 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)
@@ -326,6 +345,24 @@ export default {
       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)

+ 2 - 2
src/views/Platform/defectManagement.vue

@@ -37,10 +37,10 @@
           </template>
         </el-table-column>
         <el-table-column label="级别" width="150" align="center">
-          <template slot-scope="scope"><span>{{ scope.row.priority }}</span></template>
+          <template slot-scope="scope"><span>{{ scope.row.priorityName }}</span></template>
         </el-table-column>
         <el-table-column label="状态" width="150" align="center">
-          <template slot-scope="scope"><span>{{ scope.row.status }}</span></template>
+          <template slot-scope="scope"><span>{{ scope.row.bugStatusName }}</span></template>
         </el-table-column>
         <el-table-column fixed="right" label="操作" width="150" align="center">
           <template slot-scope="scope">

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

@@ -326,7 +326,7 @@
           <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">
@@ -334,11 +334,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.code" />
               </el-select>
-            </el-form-item>
+            </el-form-item> -->
           </div>
         </div>
         <el-form-item label="需求文档" style="width:72vw;" label-width="100px">
@@ -443,7 +443,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: [],
@@ -474,7 +474,7 @@ export default {
       parameter: '', // projactId
       business: false, // 业务模块show
       osTypeEnum: [], // 端类型Data
-      osTypeShow: false, // 端类型show
+      // osTypeShow: false, // 端类型show
       codeTitle: '', // title 任务
       taskTypeStr: [], // 任务类型Data
       dialogFormVisible: false, // 项目弹窗
@@ -606,7 +606,7 @@ export default {
         }
       }
       this.business = false
-      this.osTypeShow = false
+      // this.osTypeShow = false
       this.$set(this.formTask, 'type', '')
     },
 
@@ -617,7 +617,7 @@ export default {
           this.businessTypeStr = b.child
           b.child !== null ? this.business = true : this.business = false
         }
-        this.osTypeShow = false
+        // this.osTypeShow = false
         this.$set(this.formTask, 'clientType', '')
       }
     },
@@ -627,7 +627,7 @@ export default {
       for (var a of this.businessTypeStr) {
         if (e === a.name) {
           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', '')
       }
@@ -712,7 +712,7 @@ export default {
             this.codeTitle = '任务编辑'
             this.formTask = ele
             ele.clientType !== null ? this.business = true : this.business = false
-            ele.osType !== null ? this.osTypeShow = true : this.osTypeShow = false
+            // ele.osType !== null ? this.osTypeShow = true : this.osTypeShow = false
             for (var b of this.bizIdEnumList) {
               ele.bizId === b.code ? this.typeString = b.child : ''
             }

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

@@ -37,8 +37,8 @@
                 <el-form-item label="任务类型 : " :label-width="formLabelWidth1">{{ form.taskType }}</el-form-item>
                 <el-form-item label="平台类型 : " :label-width="formLabelWidth1">{{ form.type }}</el-form-item>
                 <el-form-item label="是否免测 : " :label-width="formLabelWidth1">{{ form.noTestString }}</el-form-item>
-                <el-form-item v-if="business" label="业务模块 : " :label-width="formLabelWidth1">{{ form.clientType }}</el-form-item>
-                <el-form-item v-if="osTypeShow" label="端类型 : " :label-width="formLabelWidth1">{{ form.osType }}</el-form-item>
+                <el-form-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">
@@ -167,7 +167,7 @@
             <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.code" />
                 </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',
@@ -375,7 +375,7 @@ export default {
           }
         }
         this.form.clientType !== '' ? this.business = true : this.business = false
-        this.business === false ? this.osTypeShow = false : this.osTypeShow = true
+        // this.business === false ? this.osTypeShow = false : this.osTypeShow = true
       })
     },
 
@@ -390,7 +390,7 @@ export default {
           for (var q of this.osTypeEnum) {
             this.fromCode.osType === q.name ? this.fromCode.osType = q.code : ''
           }
-          this.osTypeShow === false ? this.$set(this.fromCode, 'osType', '') : ''
+          // this.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 }
@@ -417,7 +417,7 @@ export default {
         }
       }
       this.business = false
-      this.osTypeShow = false
+      // this.osTypeShow = false
       this.$set(this.fromCode, 'type', '')
     },
 
@@ -431,7 +431,7 @@ export default {
 
         this.$set(this.fromCode, 'clientType', '')
         this.$set(this.fromCode, 'osType', '')
-        this.osTypeShow = false
+        // this.osTypeShow = false
       }
     },
 
@@ -440,7 +440,7 @@ export default {
       for (var a of this.businessTypeStr) {
         if (e === a.name) {
           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', '')
       }
@@ -452,8 +452,8 @@ 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 : ''
         }
@@ -570,7 +570,7 @@ export default {
 
     // Dialog 关闭的回调
     Refresh() {
-      this.osTypeShow === false ? this.$set(this.fromCode, 'osType', '') : ''
+      // this.osTypeShow === false ? this.$set(this.fromCode, 'osType', '') : ''
       this.getList()
     },
 

+ 4 - 493
src/views/quality/qualityMarket.vue

@@ -2,416 +2,17 @@
   <div id="init-window" style="position:relative">
     <router-view />
     <div style="position: absolute;width: 100%;">
-      <el-container v-loading="loadingOnlineProcess" 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="value1"
-            type="daterange"
-            range-separator="至"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-          />
-        </el-header>
-        <el-container>
-          <el-aside class="aside">
-            <el-tree :data="businessData" highlight-current :props="defaultProps" icon-class="el-icon-lollipop" 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%"
-            >
-              <el-table-column
-                prop="totalOnlineNum"
-                label="上线次数"
-                style="width:50%;"
-                align="center"
-              />
-              <el-table-column
-                prop="noTestNum"
-                label="免提测上线数"
-                style="width:50%;"
-                align="center"
-              />
-            </el-table>
-            <el-table
-              :data="[onlineProcess]"
-              border
-              style="width: 100%"
-              class="move-border-top"
-            >
-              <el-table-column
-                label="回滚数据"
-                style="width:100%;"
-                align="center"
-              >
-                <el-table-column
-                  prop="rollbackNum"
-                  label="回滚次数"
-                  style="width:20%;"
-                  align="center"
-                />
-                <el-table-column
-                  prop="name"
-                  label="免提测回滚数"
-                  style="width:20%;"
-                  align="center"
-                />
-                <el-table-column
-                  prop="preRollbackNum"
-                  label="预发回滚数"
-                  style="width:20%;"
-                  align="center"
-                />
-                <el-table-column
-                  prop="preLess5Min"
-                  label="小流量回滚数"
-                  style="width:20%;"
-                  align="center"
-                />
-                <el-table-column
-                  prop="allRollbackNum"
-                  label="全量回滚数"
-                  style="width:20%;"
-                  align="center"
-                />
-              </el-table-column>
-            </el-table>
-            <el-table
-              :data="[onlineProcess]"
-              border
-              style="width: 100%"
-              class="move-border-top"
-            >
-              <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="noTestPercent"
-                label="免提测上线占比"
-                align="center"
-                width="calc(10/9)%"
-              />
-              <el-table-column
-                prop="rollbackPercent"
-                label="回滚率"
-                align="center"
-                width="calc(10/9)%"
-              />
-              <el-table-column
-                prop="name"
-                label="免提测回滚占比"
-                align="center"
-                width="calc(10/9)%"
-              />
-              <el-table-column
-                prop="preRollbackPercent"
-                label="预发回滚率"
-                align="center"
-                width="calc(10/9)%"
-              />
-              <el-table-column
-                prop="preLess5MinPercent"
-                label="小流量回滚率"
-                align="center"
-                width="calc(10/9)%"
-              />
-              <el-table-column
-                prop="allRollbackPercent"
-                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="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="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, getOnlineInfo, getOnlineAllCount } from '@/api/qualityCenter'
+import QualityMeasurement from '@/views/quality/qualityMeasurement'
 
 export default {
-  data() {
-    return {
-      tableData: [{
-        date: '20',
-        name: '王小虎',
-        address: '上海市普陀区金沙江路 1518 弄'
-      }
-      ],
-      onlineProcess: [],
-      businessData: [],
-      defaultProps: {
-        children: 'child',
-        label: 'name'
-      },
-      loadingOnlineProcess: true,
-      activeIndex: '0',
-      activeIndexSecondary: '3',
-      value1: ''
-    }
-  },
-  created() {
-    this._initBusinessTreeAndBeginInfo()
+  components: {
+    QualityMeasurement
   },
   mounted() {
     this._initWindow()
@@ -423,100 +24,10 @@ export default {
       } else {
         document.getElementById('init-window').parentNode.style.overflow = 'hidden'
       }
-    },
-    // 点击头部导航栏显示默认数据
-    async _initBusinessTreeAndBeginInfo() {
-      this.loadingOnlineProcess = true
-      await getBusiness().then(res => {
-        this.businessData = res.code === 0 ? res.data : ''
-      })
-      const pretermitSearch = this.businessData[0] ? { id: this.businessData[0].id, type: 0 } : { id: '', type: 0 }
-      getOnlineAllCount(pretermitSearch).then(res => {
-        this.onlineProcess = res.code === 0 ? res.data : ''
-        Object.assign(this.onlineProcess,)
-        this.loadingOnlineProcess = false
-      })
-    },
-    // 点击头部导航栏显示默认数据
-    async initDepartmentTree() {
-      this.loadingOnlineProcess = true
-      await getDepartment().then(res => {
-        this.businessData = res.code === 0 ? res.data : ''
-      })
-      const pretermitSearch = this.businessData[0] ? { id: this.businessData[0].id, type: 2 } : { id: '', type: 2 }
-      getOnlineAllCount(pretermitSearch).then(res => {
-        if (this.onlineProcess.length === 0) {
-          this.onlineProcess.push(res.code === 0 ? res.data : '')
-        } else {
-          this.onlineProcess.shift()
-          this.onlineProcess.push(res.code === 0 ? res.data : '')
-        }
-        this.loadingOnlineProcess = false
-      })
-    },
-    handleSelect(key) {
-      if (key === '0') {
-        this._initBusinessTreeAndBeginInfo()
-      } else if (key === '2') {
-        this.initDepartmentTree()
-      } else {
-        this.errorFun()
-      }
-    },
-    toPercent(point) {
-      for (let a = 0; a < point.length; a++) {
-        point[a] = Number(point[a] * 100).toFixed(2) + '%'
-      }
-    },
-    handleSelectSecondary(key) {
-      console.log(key)
-    },
-    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 95%
-      background-color white
-      border-radius 7px
-      margin 15px auto
-      display flex
-      justify-content space-between
-      align-items center
-    .header >>> .el-menu
-      border-bottom 0px
-    .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 >>> .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
 </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>

+ 41 - 30
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()
     }
   }
 }