瀏覽代碼

Merge branch 'master' of git.xiaojukeji.com:jacklijiajia/thoth-frontend

qinzhipeng_v 5 年之前
父節點
當前提交
a2823fc7bb

+ 1 - 0
package.json

@@ -16,6 +16,7 @@
   },
   "dependencies": {
     "axios": "0.18.0",
+    "dayjs": "^1.8.17",
     "echarts": "^4.2.1",
     "element-ui": "^2.9.1",
     "file-saver": "^2.0.2",

+ 1 - 1
src/App.vue

@@ -12,7 +12,7 @@ export default {
   mounted() {
     getUserInfo()
       .then(res => {
-        localStorage.setItem('realname', res.data.realname)
+        localStorage.setItem('realname', res.data.chineseName)
         localStorage.setItem('username', res.data.username)
       })
   }

+ 0 - 12
src/api/env.js

@@ -1,12 +0,0 @@
-import request from '@/utils/request'
-
-const commonUrl = 'http://10.179.209.19:8899'
-
-export function getBusinessLine(data) {
-  return request({
-    url: commonUrl + '/api/business-lines',
-    method: 'get',
-    data
-  })
-}
-

+ 6 - 25
src/api/user.js

@@ -1,33 +1,14 @@
 import request from '@/utils/request'
 
-const envUrl = 'http://10.179.209.19:8899'
+export const requestIp = 'http://10.179.209.19:8762'
 
-export function getUserInfo() {
-  return request({
-    url: envUrl + '/user',
-    method: 'get'
-  })
-}
-
-export function login(data) {
-  return request({
-    url: '/user/login',
-    method: 'post',
-    data
-  })
-}
+export const loginUrl = requestIp + '/sso/login'
 
-export function getInfo(token) {
-  return request({
-    url: '/user/info',
-    method: 'get',
-    params: { token }
-  })
-}
+export const logoutUrl = requestIp + '/sso/logout'
 
-export function logout() {
+export function getUserInfo() {
   return request({
-    url: '/user/logout',
-    method: 'post'
+    url: requestIp + '/sso/user',
+    method: 'get'
   })
 }

+ 1 - 1
src/apiConfig/api.js

@@ -4,7 +4,7 @@ export const mockUrl = 'http://10.179.24.123:8980' // 线上
 
 // export const mockUrl = 'http://172.23.162.226:8980' // 舒宁本地
 
-export const qualityUrl = 'http://10.179.209.19:8898' // 质量度量
+export const qualityUrl = 'http://10.179.181.103:8898' // 质量度量
 
 // export const HMvehicleUrl = 'http://10.96.113.197:9999' // 电单车 线下
 export const HMvehicleUrl = 'http://10.179.91.236:9999' // 电单车 线上

+ 3 - 1
src/layout/components/Navbar.vue

@@ -42,6 +42,8 @@ import Hamburger from '@/components/Hamburger'
 import navbarLogo from '@/icons/rabbit-logo.gif'
 import { settingQueryBizTypeList } from '@/api/settingQueryBizTypeList.js'
 import Utils from '../../util.js'
+import { logoutUrl } from '@/api/user.js'
+
 export default {
   components: {
     Breadcrumb,
@@ -78,7 +80,7 @@ export default {
     logout() {
       // await this.$store.dispatch('user/logout')
       // this.$router.push(`/login?redirect=${this.$route.fullPath}`)
-      location.href = 'http://10.179.209.19:8899/logout'
+      location.href = logoutUrl
     },
     handleCommand(command) {
       switch (command) {

+ 1 - 1
src/layout/components/Sidebar/index.vue

@@ -67,7 +67,7 @@ export default {
     }
   },
   mounted() {
-    // this.getGlobalInterface()
+    this.getGlobalInterface()
   },
   methods: {
     handleSelect(key, keypath) {

+ 15 - 13
src/utils/request.js

@@ -1,13 +1,15 @@
 import axios from 'axios'
 import { Message } from 'element-ui'
-import store from '@/store'
-import { getToken } from '@/utils/auth'
+// import store from '@/store'
+// import { getToken } from '@/utils/auth'
+import { loginUrl } from '@/api/user.js'
 
 // create an axios instance
 const service = axios.create({
   baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
   // withCredentials: true, // send cookies when cross-domain requests
-  timeout: 5000 // request timeout
+  timeout: 5000, // request timeout
+  withCredentials: true
 })
 
 axios.defaults.withCredentials = true
@@ -17,12 +19,12 @@ service.interceptors.request.use(
   config => {
     // do something before request is sent
 
-    if (store.getters.token) {
-      // let each request carry token
-      // ['X-Token'] is a custom headers key
-      // please modify it according to the actual situation
-      config.headers['X-Token'] = getToken()
-    }
+    // if (store.getters.token) {
+    //   // let each request carry token
+    //   // ['X-Token'] is a custom headers key
+    //   // please modify it according to the actual situation
+    //   config.headers['X-Token'] = getToken()
+    // }
     return config
   },
   error => {
@@ -121,16 +123,16 @@ service.interceptors.response.use(
         type: 'warning',
         duration: 5 * 1000
       })
+      if (error.response.status === 401) {
+        location.href = loginUrl
+      }
     } else {
-      error.message = '登录中'
+      error.message = 'error'
       Message({
         message: error.message,
         type: 'warning',
         duration: 5 * 1000
       })
-      if (location.href.indexOf('localhost') < 0) {
-        location.href = 'http://10.179.209.19:8899/'
-      }
     }
     return Promise.reject(error)
   }

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

@@ -54,7 +54,7 @@
           </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-select ref="clearPlatform" v-model="form.moduleId" filterable 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>

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

@@ -212,7 +212,7 @@
               />
             </el-table>
             <el-tooltip effect="dark" placement="bottom">
-              <div slot="content"><div>总数: 搜索结果下的所有有效缺陷不包含无效bug和重复bug</div> <div style="margin:5px 0">已解决: 状态为已完成并且修复结果为已修复或不修复的bug</div><div style="margin:5px 0">遗留bug: 状态不是已完成状态的bug</div><div style="margin:5px 0">reopen率: reopen次数/bug总数</div><div style="margin:5px 0">过夜: 创建时间-修复时间 >24h/bug总数</div><div style="margin:5px 0">修复时长: 创建时间-修复时间,不包含节假日</div><div style="margin:5px 0">其他: 除p0,p1级之外的bug</div><div>无效bug: 修复结果为无效 或者重复的bug</div></div>
+              <div slot="content"><div>总数: 搜索结果下的所有有效缺陷不包含无效bug和重复bug</div> <div style="margin:5px 0">已解决: 状态为已完成并且修复结果为已修复或不修复的bug</div><div style="margin:5px 0">遗留bug: 有效bug - 已解决</div><div style="margin:5px 0">reopen率: reopen次数/bug总数</div><div style="margin:5px 0">过夜: 创建时间-修复时间 >24h/bug总数</div><div style="margin:5px 0">修复时长: 创建时间-修复时间,不包含节假日</div><div style="margin:5px 0">其他: 除p0,p1级之外的bug</div><div>无效bug: 修复结果为无效 或者重复的bug</div></div>
               <span class="titleDescription">统计规则说明<i class="el-icon-question" /> </span>
             </el-tooltip>
           </div>

+ 6 - 1
src/views/env/index.vue

@@ -9,10 +9,15 @@ export default {
   name: 'ENV',
   data() {
     return {
-      envUrl: 'http://10.179.181.222:8866/' + this.$route.name,
+      show: true,
       iframeHeight: '720px'
     }
   },
+  computed: {
+    envUrl() {
+      return 'http://10.179.181.222:8866/' + this.$route.name
+    }
+  },
   mounted() {
     var height = window.innerHeight > document.body.clientHeight ? window.innerHeight : document.body.clientHeight
     this.iframeHeight = height + 'px'

+ 7 - 6
src/views/home/index.vue

@@ -273,7 +273,8 @@ img.img-arrow {
 
 <script>
 import FloatMenu from './floatMenu'
-// import { getGlobalInterface } from '@/api/data.js'
+import { getGlobalInterface } from '@/api/data.js'
+import { logoutUrl } from '@/api/user.js'
 
 export default {
   components: {
@@ -304,10 +305,10 @@ export default {
         }
       })()
     }
-    // getGlobalInterface().then(res => {
-    //   this.$store.dispatch('data/setMenu', res.data)
-    //   this.$store.dispatch('data/setSubMenu', res.data[0].subMenus[0])
-    // })
+    getGlobalInterface().then(res => {
+      this.$store.dispatch('data/setMenu', res.data)
+      this.$store.dispatch('data/setSubMenu', res.data[0].subMenus[0])
+    })
   },
   methods: {
     handleSelect(key, keyPath) {
@@ -349,7 +350,7 @@ export default {
     handleCommand(command) {
       switch (command) {
         case 'a':
-          location.href = 'http://10.179.209.19:8899/logout'
+          location.href = logoutUrl
           break
       }
     }

+ 40 - 9
src/views/online-quality/BlockServer/blockServer.vue

@@ -1,7 +1,28 @@
 <template>
   <div>
     <el-header>
-      <el-button type="primary" icon="el-icon-circle-plus-outline" @click="addBlockServerDialogVisible = true">新增</el-button>
+      <el-header>
+        <el-form inline label-position="right" label-width="60px">
+          <el-form-item label="业务线:">
+            <el-select v-model="searchForm.lineId" filterable placeholder="请选择业务线">
+              <el-option
+                v-for="item in businessLines"
+                :key="item.lineId"
+                :label="item.lineName"
+                :value="item.lineId"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="服务名:">
+            <el-input v-model="searchForm.serverName" />
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" icon="el-icon-search" @click="getNsServerCheckClick">查询</el-button>
+            <el-button type="primary" icon="el-icon-refresh" @click="reset">重置</el-button>
+            <el-button type="primary" icon="el-icon-circle-plus-outline" @click="addBlockServerDialogVisible = true">新增</el-button>
+          </el-form-item>
+        </el-form>
+      </el-header>
     </el-header>
     <el-table
       :data="tableData"
@@ -65,8 +86,8 @@
     <el-pagination
       background
       layout="total, sizes, ->, prev, pager, next, jumper"
-      :current-page="currentPage"
-      :page-size="pageSize"
+      :current-page="searchForm.pageNum"
+      :page-size="searchForm.pageSize"
       :page-sizes="[10,30,50,total]"
       :total="total"
       @size-change="handleSizeChange"
@@ -92,8 +113,12 @@ export default {
       tableData: null,
       blockServer: null,
       total: 0,
-      pageSize: 10,
-      currentPage: 1,
+      searchForm: {
+        lineId: null,
+        serverName: null,
+        pageSize: 10,
+        pageNum: 1
+      },
       businessLines: [{
         lineName: '代驾',
         lineId: 1
@@ -125,7 +150,7 @@ export default {
       return date.substring(0, 10) + ' ' + date.substring(11, 19)
     },
     getNsServerCheckClick() {
-      getNsServerCheck({ 'pageNum': this.currentPage, 'pageSize': this.pageSize })
+      getNsServerCheck(this.searchForm)
         .then(res => {
           this.tableData = res.data.list
           this.total = res.data.number
@@ -153,11 +178,17 @@ export default {
       })
     },
     handleSizeChange: function(pageSize) {
-      this.pageSize = pageSize
+      this.searchForm.pageSize = pageSize
       this.getNsServerCheckClick()
     },
-    handleCurrentChange: function(currentPage) {
-      this.currentPage = currentPage
+    handleCurrentChange: function(pageNum) {
+      this.searchForm.pageNum = pageNum
+      this.getNsServerCheckClick()
+    },
+    reset() {
+      this.searchForm.lineId = null
+      this.searchForm.serverName = null
+      this.searchForm.pageNum = 1
       this.getNsServerCheckClick()
     }
   }

+ 59 - 8
src/views/online-quality/HistoryTask/index.vue

@@ -1,5 +1,26 @@
 <template>
   <div>
+    <el-header>
+      <el-form inline label-position="right" label-width="60px">
+        <el-form-item label="业务线:">
+          <el-select v-model="searchForm.lineId" filterable placeholder="请选择业务线">
+            <el-option
+              v-for="item in businessLines"
+              :key="item.lineId"
+              :label="item.lineName"
+              :value="item.lineId"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="服务名:">
+          <el-input v-model="searchForm.serverName" />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="el-icon-search" @click="getCheckResult">查询</el-button>
+          <el-button type="primary" icon="el-icon-refresh" @click="reset">重置</el-button>
+        </el-form-item>
+      </el-form>
+    </el-header>
     <el-main>
       <el-table
         :data="tableData"
@@ -38,8 +59,8 @@
       <el-pagination
         background
         layout="total, sizes, ->, prev, pager, next, jumper"
-        :current-page="currentPage"
-        :page-size="pageSize"
+        :current-page="searchForm.pageNum"
+        :page-size="searchForm.pageSize"
         :page-sizes="[10,30,50,total]"
         :total="total"
         @size-change="handleSizeChange"
@@ -56,8 +77,32 @@ export default {
     return {
       tableData: null,
       total: 0,
-      pageSize: 10,
-      currentPage: 1
+      searchForm: {
+        pageSize: 10,
+        pageNum: 1,
+        lineId: null,
+        serverName: null
+      },
+      businessLines: [{
+        lineName: '代驾',
+        lineId: 1
+      }, {
+        lineName: '黑马',
+        lineId: 2
+      }, {
+        lineName: '海棠',
+        lineId: 3
+      }, {
+        lineName: 'carbo',
+        lineId: 4
+      }, {
+        lineName: 'prado',
+        lineId: 5
+      }, {
+        lineName: '企业级',
+        lineId: 7
+      }
+      ]
     }
   },
   mounted() {
@@ -65,18 +110,18 @@ export default {
   },
   methods: {
     getCheckResult() {
-      getCheckResultList({ 'pageNum': this.currentPage, 'pageSize': this.pageSize })
+      getCheckResultList(this.searchForm)
         .then(res => {
           this.tableData = res.data.list
           this.total = res.data.number
         })
     },
     handleSizeChange: function(pageSize) {
-      this.pageSize = pageSize
+      this.searchForm.pageSize = pageSize
       this.getCheckResult()
     },
-    handleCurrentChange: function(currentPage) {
-      this.currentPage = currentPage
+    handleCurrentChange: function(pageNum) {
+      this.searchForm.pageNum = pageNum
       this.getCheckResult()
     },
     dateFomatter(date) {
@@ -84,6 +129,12 @@ export default {
     },
     viewDetails(taskId) {
       this.$router.push({ name: '历史任务详情', params: { taskId: taskId + '' }})
+    },
+    reset() {
+      this.searchForm.lineId = null
+      this.searchForm.serverName = null
+      this.searchForm.pageNum = 1
+      this.getCheckResult()
     }
   }
 }

+ 2 - 2
src/views/projectManage/taskList/taskCreate.vue

@@ -111,7 +111,7 @@
               </el-select>
             </el-form-item>
           </div>
-          <el-form-item label="描述" label-width="112px"><el-input v-model="form.description" type="textarea" placeholder="bug描述" rows="3" style="width:89.6%;" /></el-form-item>
+          <el-form-item label="描述" label-width="112px"><el-input v-model="form.description" type="textarea" placeholder="任务描述" rows="3" style="width:89.6%;" /></el-form-item>
         </div>
       </div>
       <div class="block">
@@ -137,7 +137,7 @@
               <el-date-picker v-model="form.onlinePlanTime" align="left" size="medium" type="datetime" style="width:76%;" placeholder="选择日期" />
             </el-form-item>
           </div>
-          <el-form-item label="备注" label-width="146px"><el-input v-model="form.remark" type="textarea" placeholder="bug描述" rows="3" style="width:90%;" /></el-form-item>
+          <el-form-item label="备注" label-width="146px"><el-input v-model="form.remark" type="textarea" placeholder="项目描述" rows="3" style="width:90%;" /></el-form-item>
           <el-form-item class="submit">
             <el-button type="danger" plain size="mini" @click="$router.go(-1)">取 消</el-button>
             <el-button class="move-button" size="mini" type="primary" @click="createFormData(form)">确 定</el-button>

+ 2 - 2
src/views/projectManage/taskList/taskUpdateCreate.vue

@@ -111,7 +111,7 @@
               </el-select>
             </el-form-item>
           </div>
-          <el-form-item label="描述" label-width="112px"><el-input v-model="form.description" type="textarea" placeholder="bug描述" rows="3" style="width:89.6%;" /></el-form-item>
+          <el-form-item label="描述" label-width="112px"><el-input v-model="form.description" type="textarea" placeholder="任务描述" rows="3" style="width:89.6%;" /></el-form-item>
         </div>
       </div>
       <div class="block">
@@ -137,7 +137,7 @@
               <el-date-picker v-model="form.onlinePlanTime" align="left" size="medium" type="datetime" style="width:76%;" placeholder="选择日期" />
             </el-form-item>
           </div>
-          <el-form-item label="备注" label-width="146px"><el-input v-model="form.remark" type="textarea" placeholder="bug描述" rows="3" style="width:90%;" /></el-form-item>
+          <el-form-item label="备注" label-width="146px"><el-input v-model="form.remark" type="textarea" placeholder="项目描述" rows="3" style="width:90%;" /></el-form-item>
           <el-form-item class="submit">
             <el-button type="danger" plain size="mini" @click="$router.go(-1)">取 消</el-button>
             <el-button class="move-button" size="mini" type="primary" @click="createFormData(form)">确 定</el-button>

+ 23 - 7
src/views/quality/qualityMeasurement.vue

@@ -282,17 +282,19 @@
               size="mini"
             >
               <el-table-column
-                prop="handleDurationPercent"
                 label="线上问题处理完成率"
                 style="width:25%;"
                 align="center"
-              />
+              >
+                <template slot-scope="scope">{{ scope.row.handleDurationPercent | toPercent }}</template>
+              </el-table-column>
               <el-table-column
-                prop="avgHandleDuration"
                 label="线上问题平均处理时长(H)"
                 style="width:25%;"
                 align="center"
-              />
+              >
+                <template slot-scope="scope">{{ scope.row.avgHandleDuration | toFix }}</template>
+              </el-table-column>
             </el-table>
             <!-- 线下缺陷 -->
             <h4>3. 线下缺陷</h4>
@@ -460,6 +462,7 @@
 import axios from 'axios'
 import { getBusiness, getDepartment, getOnlineProblem, getOnlineAllCount, getOnlineVitium, getHandlerCount, getClientInfo, getHotpatch, getCompareCount, getCompareCountOnline, getComparatorCount, getComparatorCountOnline } from '@/api/qualityCenter'
 import echarts from 'echarts'
+import dayjs from 'dayjs'
 
 export default {
   filters: {
@@ -471,6 +474,15 @@ export default {
       } else {
         return '-'
       }
+    },
+    toFix(value) {
+      if (value) {
+        return value.toFixed(2)
+      } else if (value === 0) {
+        return 0
+      } else {
+        return '-'
+      }
     }
   },
   data() {
@@ -515,7 +527,8 @@ export default {
       totalOneEchartsRate: '',
       totalOneEchartsOnline: '',
       dealWithBusinessDate: [],
-      timeInterval: [new Date().getTime() - 7 * 24 * 60 * 60 * 1000, new Date().getTime()]
+      // timeInterval: [new Date().getTime() - 7 * 24 * 60 * 60 * 1000, new Date().getTime()],
+      timeInterval: [dayjs(dayjs(new Date()).subtract(7, 'days').format('YYYY-MM-DD')).valueOf(), dayjs(dayjs(new Date()).add(1, 'days').format('YYYY-MM-DD')).valueOf() - 1]
     }
   },
   computed: {
@@ -671,6 +684,7 @@ export default {
               this.totalOneEchartsRate = echarts.init(document.getElementById('comparatorRateBetween'))
               // const totalOneEchartsOnline = echarts.init(document.getElementById('comparatorOnlineBetween'))
               this.totalOneEcharts.setOption({
+                color: ['#8dcaea'],
                 legend: {},
                 tooltip: {},
                 grid: { containLabel: true },
@@ -683,7 +697,7 @@ export default {
                 // Declare several bar series, each will be mapped
                 // to a column of dataset.source by default.
                 series: [
-                  { type: 'bar' }
+                  { type: 'bar', barMaxWidth: '70' }
                 ]
               })
               this.totalOneEchartsMount.setOption({
@@ -748,6 +762,7 @@ export default {
             this.$nextTick(() => {
               this.totalOneEchartsOnline = echarts.init(document.getElementById('comparatorOnlineBetween'))
               this.totalOneEchartsOnline.setOption({
+                color: ['#8dcaea'],
                 legend: {},
                 tooltip: {},
                 grid: { containLabel: true },
@@ -760,7 +775,7 @@ export default {
                 // Declare several bar series, each will be mapped
                 // to a column of dataset.source by default.
                 series: [
-                  { type: 'bar' }
+                  { type: 'bar', barMaxWidth: '70' }
                 ]
               })
               window.addEventListener('resize', () => {
@@ -921,6 +936,7 @@ export default {
     },
     // 时间变化刷新页面
     dataSearch() {
+      this.timeInterval[1] = dayjs(dayjs(new Date()).add(1, 'days').format('YYYY-MM-DD')).valueOf() - 1
       if (this.pauseKey === 0) {
         this._initBusinessTreeAndBeginInfo()
       } else if (this.pauseKey === 3) {