Commit a615eba9 authored by 黎博's avatar 黎博

优化项目,修改样式

parent 7bcce04a
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>QA测试平台</title><link rel="shortcut icon" href=/QA.png><link href=/static/css/app.10791992cefb7bf2863b67d24ccf1a4d.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.2ae2e69a05c33dfc65f8.js></script><script type=text/javascript src=/static/js/vendor.090b07b418bb795587ca.js></script><script type=text/javascript src=/static/js/app.50a4bb0d4e2d2231ae21.js></script></body></html> <!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>QA测试平台</title><link rel="shortcut icon" href=/QA.png><link href=/static/css/app.74c8be6671bca43e39120523f0ffc259.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.2ae2e69a05c33dfc65f8.js></script><script type=text/javascript src=/static/js/vendor.090b07b418bb795587ca.js></script><script type=text/javascript src=/static/js/app.bb176e43be95acff4e90.js></script></body></html>
\ No newline at end of file \ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
{"version":3,"sources":["webpack:///webpack/bootstrap f1925b412978527e55f2"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,IAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.2ae2e69a05c33dfc65f8.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f1925b412978527e55f2"],"sourceRoot":""} {"version":3,"sources":["webpack:///webpack/bootstrap 34ee5da93d86e008236c"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,IAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.2ae2e69a05c33dfc65f8.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 34ee5da93d86e008236c"],"sourceRoot":""}
\ No newline at end of file \ No newline at end of file
...@@ -4,9 +4,6 @@ import Index from '../views/Index/Index' ...@@ -4,9 +4,6 @@ import Index from '../views/Index/Index'
import Login from '../views/Login/Login' import Login from '../views/Login/Login'
import Main from '../views/Main' import Main from '../views/Main'
import Home from '../views/Home' import Home from '../views/Home'
import Project from '../views/Automation/Project'
import Case from '../views/Automation/Case'
import Report from '../views/Automation/Report'
import XyqbGenLoanData from '../views/Xyqb/GenLoanData' import XyqbGenLoanData from '../views/Xyqb/GenLoanData'
import XyqbGetLoanData from '../views/Xyqb/GetLoanData' import XyqbGetLoanData from '../views/Xyqb/GetLoanData'
import VccGetData from '../views/Vcc/GetData' import VccGetData from '../views/Vcc/GetData'
...@@ -42,18 +39,6 @@ const router = new Router({ ...@@ -42,18 +39,6 @@ const router = new Router({
'path': '/main', 'path': '/main',
component: Main component: Main
}, },
{
'path': '/project',
component: Project
},
{
'path': '/case',
component: Case
},
{
'path': '/report',
component: Report
},
{ {
'path': '/xyqb/genLoanData', 'path': '/xyqb/genLoanData',
component: XyqbGenLoanData component: XyqbGenLoanData
......
<template>
<div>
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item>自动化测试</el-breadcrumb-item>
<el-breadcrumb-item>接口管理</el-breadcrumb-item>
</el-breadcrumb>
<el-card>接口管理</el-card>
</div>
</template>
<script>
export default {}
</script>
<style lang="less" scoped>
</style>
<template>
<div>
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item>自动化测试</el-breadcrumb-item>
<el-breadcrumb-item>项目管理</el-breadcrumb-item>
</el-breadcrumb>
<el-card>项目管理</el-card>
</div>
</template>
<script>
export default {}
</script>
<style lang="less" scoped>
</style>
<template>
<div class="report">
<div class="reportheader">
<h2>测试报告</h2>
</div>
<!-- 数据总计区 -->
<el-card>
<el-collapse v-model="activeNames" @change="handleCollapseChange">
<el-collapse-item title="报告汇总" name="1">
<div class="total">
<!-- 汇总区域 -->
<div class="panel">
<div class="data">
<p style="color: #1CB395; font-weight: bold; margin-bottom: 10px;">
用例名称:
<el-input
v-model="testcaseName"
:disable="true"
style="width: 200px;"
size="small"
></el-input>
</p>
<p style="color: #1CB395; font-weight: bold; margin-bottom: 10px;">
用例总数:
<el-input
v-model="totalCaseNum"
:disable="true"
style="width: 200px;"
size="small"
></el-input>
</p>
<p style="color: #1CB395; font-weight: bold; margin-bottom: 10px;">
用例通过:
<el-input
v-model="passedCaseNum"
:disable="true"
style="width: 200px;"
size="small"
></el-input>
</p>
<p style="color: #EE5968; font-weight: bold; margin-bottom: 10px;">
用例失败:
<el-input
v-model="failedCaseNum"
:disable="true"
style="width: 200px;"
size="small"
></el-input>
</p>
<p style="color: #F9B264; font-weight: bold; margin-bottom: 10px;">
用例跳过:
<el-input
v-model="jumpCaseNum"
:disable="true"
style="width: 200px;"
size="small"
></el-input>
</p>
<p style="color: #1CB395; font-weight: bold; margin-bottom: 10px;">
开始时间:
<el-input v-model="startTime" :disable="true" style="width: 200px;" size="small"></el-input>
</p>
<p style="color: #1CB395; font-weight: bold;">
运行时长:
<el-input
v-model="elapsedTime"
:disable="true"
style="width: 200px;"
size="small"
></el-input>
</p>
</div>
</div>
<div class="panel">
<div class="chart"></div>
</div>
</div>
</el-collapse-item>
<el-collapse-item title="详细数据" name="2">
<div class="body">
<!-- 头部过滤区 -->
<div class="detail">
<div class="filter">
<p>
接口地址:&nbsp;
<el-select
v-model="value"
clearable
placeholder="请选择"
style="width: 300px;"
size="medium"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</p>
<p>
结果:&nbsp;
<el-select v-model="value" clearable placeholder="请选择" size="medium">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</p>
</div>
<div class="num">
<p style="color: #1CB395;">用例数: 10000 |&nbsp;</p>
<p style="color: #1CB395;">成功: 0 |&nbsp;</p>
<p style="color: #1CB395;">失败: 0 |&nbsp;</p>
<p style="color: #1CB395;">跳过: 0 &nbsp;</p>
</div>
</div>
</div>
<!-- 表格区域 -->
<el-table :data="tableData" border style="width: 100%">
<el-table-column type="index" label="编号" width="100px"></el-table-column>
<el-table-column prop="date" label="请求地址" width="180"></el-table-column>
<el-table-column prop="name" label="响应结果" width="180"></el-table-column>
<el-table-column prop="address" label="用例描述"></el-table-column>
<el-table-column prop="address" label="耗时"></el-table-column>
<el-table-column prop="address" label="结果"></el-table-column>
<el-table-column prop="address" label="操作"></el-table-column>
</el-table>
<!-- 分页区域 -->
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage4"
:page-sizes="[100, 200, 300, 400]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="400"
></el-pagination>
</el-collapse-item>
</el-collapse>
</el-card>
</div>
</template>
<script>
export default {
data() {
return {
activeNames: ['1', '2'],
testcaseName: '123', // 用例名称
totalCaseNum: 100, // 总用例数
passedCaseNum: 50, // 成功用例数
failedCaseNum: 50, // 失败用例数
jumpCaseNum: 0, // 跳过用例数
startTime: 'xxx', // 开始时间
elapsedTime: 123, // 运行时间
// 测试结果饼图Option
resultOption: {
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c} ({d}%)'
},
legend: {
orient: 'vertical',
left: 'left',
data: ['成功', '失败', '跳过']
},
series: [
{
name: '用例数',
type: 'pie',
radius: '55%',
center: ['50%', '50%'],
data: [
{ value: 100, name: '成功' },
{ value: 20, name: '失败' },
{ value: 0, name: '跳过' }
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
},
itemStyle: {
normal: {
color: function(params) {
var colorList = ['#1CB395', '#EE5968', '#F9B264']
return colorList[params.dataIndex]
}
}
}
}
]
}
}
},
mounted() {
this.setResultChart()
},
methods: {
handleCollapseChange(val) {
console.log(val)
},
// 渲染结果饼图
setResultChart() {
var resultChart = this.$echarts.init(
document.querySelector('.panel .chart')
)
resultChart.setOption(this.resultOption)
}
}
}
</script>
<style lang="less" scoped>
* {
margin: 0;
padding: 0;
}
.reportheader {
height: 50px;
background-color: #fff;
margin-bottom: 10px;
padding: 0;
h2 {
text-align: center;
font-size: 22px;
color: #18b394;
padding-top: 10px;
}
}
.total {
position: relative;
display: flex;
height: 400px;
width: 100%;
.panel {
flex: 1;
margin: 0 10px;
.data {
margin-left: 30px;
}
.chart {
height: 100%;
width: 100%;
}
}
}
.total::before {
position: absolute;
top: 0;
width: 100%;
content: '';
border-top: 1px solid #eceef6;
}
.panel:nth-child(1) {
border-right: 1px solid #eceef6;
margin-top: 25px;
}
.body {
position: relative;
}
.detail::before {
position: absolute;
top: 0;
width: 100%;
content: '';
border-top: 1px solid #eceef6;
}
.detail {
display: flex;
.filter {
flex: 1;
display: flex;
p {
flex: 1;
}
}
.num {
display: flex;
width: 400px;
padding-top: 10px;
justify-content: flex-end;
.p {
flex: 1;
text-align: center;
}
}
}
</style>
<template> <template>
<el-container class="home"> <el-container class="home">
<el-header> <el-header>
<div> <div class="left">
<img src="../assets/image/logo.png" alt /> <img src="../assets/image/logo.png" alt @click="gotoMain()"/>
<span>QA测试平台</span> <span @click="gotoMain()">QA测试平台</span>
</div> </div>
<el-tag type="info" effect="dark">当前环境:{{ env }}</el-tag> <div class="right">
<el-button type="info" @click="logout">退出</el-button> <el-tag>当前环境:{{ env }}</el-tag>
<el-button type="primary" @click="logout">退出</el-button>>
</div>
<!-- <el-tag type="info" effect="dark">当前环境:{{ env }}</el-tag>
<el-button type="info" @click="logout">退出</el-button> -->
</el-header> </el-header>
<el-container> <el-container>
<el-aside width="200px"> <el-aside width="200px">
<el-menu <el-menu :default-active="activePath" background-color="#525E7D" text-color="#fff" active-text-color="#ffd04b" router>
:default-active="activePath" <el-submenu :index="1+''">
background-color="#525e70"
text-color="#fff"
active-text-color="#ffd04b"
router
>
<!-- <el-submenu :index="1">
<template slot="title">
<i class="el-icon-s-check"></i>
<span>自动化测试</span>
</template>
<el-menu-item index="/project" @click="saveNavState('/project')">
<template slot="title">
<span>项目管理</span>
</template>
</el-menu-item>
<el-menu-item index="/case" @click="saveNavState('/case')">
<template slot="title">
<span>接口管理</span>
</template>
</el-menu-item>
<el-menu-item index="/report" @click="saveNavState('/report')">
<template slot="title">
<span>测试报告</span>
</template>
</el-menu-item>
</el-submenu>-->
<el-submenu :index="2">
<template slot="title"> <template slot="title">
<i class="el-icon-money"></i> <i class="el-icon-money"></i>
<span>现金分期</span> <span>现金分期</span>
...@@ -56,7 +33,7 @@ ...@@ -56,7 +33,7 @@
</template> </template>
</el-menu-item> </el-menu-item>
</el-submenu> </el-submenu>
<el-submenu :index="3"> <el-submenu :index="2+''">
<template slot="title"> <template slot="title">
<i class="el-icon-s-shop"></i> <i class="el-icon-s-shop"></i>
<span>消费分期</span> <span>消费分期</span>
...@@ -80,7 +57,7 @@ ...@@ -80,7 +57,7 @@
</template> </template>
</el-menu-item> </el-menu-item>
</el-submenu> </el-submenu>
<el-submenu :index="4"> <el-submenu :index="3+''">
<template slot="title"> <template slot="title">
<i class="el-icon-s-shop"></i> <i class="el-icon-s-shop"></i>
<span>Mock</span> <span>Mock</span>
...@@ -92,7 +69,7 @@ ...@@ -92,7 +69,7 @@
</template> </template>
</el-menu-item> </el-menu-item>
</el-submenu> </el-submenu>
<el-submenu :index="5"> <el-submenu :index="4+''">
<template slot="title"> <template slot="title">
<i class="el-icon-s-shop"></i> <i class="el-icon-s-shop"></i>
<span>小工具</span> <span>小工具</span>
...@@ -142,6 +119,11 @@ export default { ...@@ -142,6 +119,11 @@ export default {
saveNavState(curPath) { saveNavState(curPath) {
this.activePath = curPath this.activePath = curPath
window.sessionStorage.setItem('activePath', curPath) window.sessionStorage.setItem('activePath', curPath)
},
gotoMain() {
if (this.$route.path !== '/main') {
this.$router.push('/main')
}
} }
}, },
created() { created() {
...@@ -158,30 +140,31 @@ export default { ...@@ -158,30 +140,31 @@ export default {
height: 100%; height: 100%;
} }
.el-header { .el-header {
background-color: #2a2961; // background-color: #2a2961;
background-color: #001528;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
color: #333; color: #333;
text-align: center; text-align: center;
align-items: center; align-items: center;
line-height: 60px; line-height: 60px;
> div { > .left {
display: flex; display: flex;
span { > span {
font-size: 22px; font-size: 22px;
color: #ffffff; color: #ffffff;
margin-left: 20px; margin-left: 20px;
} }
> img { > img {
height: 40px; height: 34px;
width: 70px; width: 70px;
margin-top: 12px; margin-top: 16px;
} }
} }
} }
.el-aside { .el-aside {
background-color: #525e70; background-color: #525E7D;
height: 100%; height: 100%;
.el-menu { .el-menu {
border-right: none; border-right: none;
...@@ -191,4 +174,16 @@ export default { ...@@ -191,4 +174,16 @@ export default {
.el-main { .el-main {
background-color: #e9eef3; background-color: #e9eef3;
} }
.right {
display: flex;
margin-top: 20px;
> .el-tag {
margin-top: 5px;
margin-right: 15px;
}
> .el-button {
height: 40px;
}
}
</style> </style>
<template> <template>
<div class="main"> <div class="main">
<div class="container"> <div class="container">
<h3 class="title">测试平台</h3> <h3 class="title">QA测试平台</h3>
<el-select v-model="namespace" placeholder="请选择环境" @change="handleSelectChange" style="width: 100%; margin-top: 20px"> <el-select v-model="namespace" placeholder="请选择环境" @change="handleSelectChange" style="width: 100%; margin-top: 20px">
<el-option v-for="item in nsOptions" :key="item.key" :label="item.desc" :value="item.key"></el-option> <el-option v-for="item in nsOptions" :key="item.key" :label="item.desc" :value="item.key"></el-option>
</el-select> </el-select>
...@@ -47,10 +47,12 @@ export default { ...@@ -47,10 +47,12 @@ export default {
position: fixed; position: fixed;
height: 100%; height: 100%;
width: 100%; width: 100%;
background-color: #2d3a4b; // background-color: #2d3a4b;
background-image: url('../../assets/image/quant.png');
background-size: contain;
.container { .container {
height: 300px; height: 300px;
width: 500px; width: 400px;
margin: 200px auto; margin: 200px auto;
padding: 20px; padding: 20px;
} }
......
<template> <template>
<div> <div>
<h2>欢迎来到测试平台!</h2> <h2>欢迎来到QA测试平台!</h2>
<p>本平台当前包含的功能有:</p>
<p>1. 现金分期
<ul>
<li>捞数据:可从数据库捞取现金贷特定状态的用户;</li>
<li>造数据:可一键制造一个特定现金贷状态用户(首先要确保对应服务存在);</li>
</ul>
</p>
<p>2. 消费分期(vcc)
<ul>
<li>查数据:可以查询一个手机号当前处于vcc的哪个状态;</li>
<li>捞数据:可从数据捞取特定vcc状态的用户;</li>
<li>造数据:可一键制造一个特定vcc状态用户;</li>
</ul>
</p>
<p>3. Mock
<ul>
<li>支持的Mock接口列表,当前只支持易宝v2相关接口;</li>
</ul>
</p>
<p>4. 小工具
<ul>
<li>kdsp解密:羊小咩商城提交订单相关接口的解密;</li>
<li>构建记录:可查询jenkins构建记录,服务、构建人以及构建时间;</li>
<li>登录白名单:可将设备/手机号加入羊小咩的登录白名单,解决羊小咩无法登录的问题;</li>
</ul>
</p>
</div> </div>
</template> </template>
...@@ -9,4 +35,7 @@ export default {} ...@@ -9,4 +35,7 @@ export default {}
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
h2 {
margin: 0 auto;
}
</style> </style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment