Commit e1afef6f authored by 王晓铜's avatar 王晓铜

merge master

parents 4d7e8596 8cf764fe
...@@ -5,7 +5,10 @@ const prodEnv = require('./prod.env') ...@@ -5,7 +5,10 @@ const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, { module.exports = merge(prodEnv, {
NODE_ENV: '"development"', NODE_ENV: '"development"',
ENV_CONFIG: '"dev"', ENV_CONFIG: '"dev"',
QA_PLATFORM: '"//localhost:8082"', // QA_PLATFORM: '"//localhost:8082"',
TESTDATA_API: '"//testdata.liangkebang.com"', TESTDATA_API: '"//testdata.liangkebang.com"',
HOLMES: '"//localhost:8084"', // HOLMES: '"//localhost:8084"',
QA_PLATFORM: '"//qa-platform-fe.liangkebang.net/"',
HOLMES: '"//holmes-fe.liangkebang.net/"',
// HOLMES: '"//192.168.29.143:8084/"'
}) })
...@@ -11,9 +11,9 @@ module.exports = { ...@@ -11,9 +11,9 @@ module.exports = {
assetsSubDirectory: 'static', assetsSubDirectory: 'static',
assetsPublicPath: '/', assetsPublicPath: '/',
proxyTable: {}, proxyTable: {},
// Various Dev Server settings // Various Dev Server settings localhost
host: 'localhost', // can be overwritten by process.env.HOST host: '0.0.0.0', // can be overwritten by process.env.HOST
port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false, autoOpenBrowser: false,
errorOverlay: true, errorOverlay: true,
......
...@@ -2771,6 +2771,16 @@ ...@@ -2771,6 +2771,16 @@
"integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
"dev": true "dev": true
}, },
"clipboard": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz",
"integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==",
"requires": {
"good-listener": "^1.2.2",
"select": "^1.1.2",
"tiny-emitter": "^2.0.0"
}
},
"cliui": { "cliui": {
"version": "4.1.0", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
...@@ -4508,6 +4518,11 @@ ...@@ -4508,6 +4518,11 @@
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
}, },
"delegate": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
},
"depd": { "depd": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
...@@ -6214,6 +6229,14 @@ ...@@ -6214,6 +6229,14 @@
"pinkie-promise": "^2.0.0" "pinkie-promise": "^2.0.0"
} }
}, },
"good-listener": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
"integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
"requires": {
"delegate": "^3.1.2"
}
},
"graceful-fs": { "graceful-fs": {
"version": "4.2.4", "version": "4.2.4",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
...@@ -13543,6 +13566,11 @@ ...@@ -13543,6 +13566,11 @@
} }
} }
}, },
"select": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
"integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0="
},
"select-hose": { "select-hose": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
...@@ -13978,6 +14006,11 @@ ...@@ -13978,6 +14006,11 @@
"is-plain-obj": "^1.0.0" "is-plain-obj": "^1.0.0"
} }
}, },
"sortablejs": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.13.0.tgz",
"integrity": "sha512-RBJirPY0spWCrU5yCmWM1eFs/XgX2J5c6b275/YyxFRgnzPhKl/TDeU2hNR8Dt7ITq66NRPM4UlOt+e5O4CFHg=="
},
"source-list-map": { "source-list-map": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
...@@ -14653,6 +14686,11 @@ ...@@ -14653,6 +14686,11 @@
"integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
"dev": true "dev": true
}, },
"tiny-emitter": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
},
"tmp": { "tmp": {
"version": "0.0.33", "version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
...@@ -15227,6 +15265,11 @@ ...@@ -15227,6 +15265,11 @@
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz", "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz",
"integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==" "integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ=="
}, },
"vue-bus": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/vue-bus/-/vue-bus-1.2.1.tgz",
"integrity": "sha512-uCSJEWFWoDZz+GV/Pj/wXAC7WVBLD18V62l+2ezd4UCsZWZB27Hz3K0M9WUcbNum/yKBoN+OkOCIrU6A9xqWhw=="
},
"vue-eslint-parser": { "vue-eslint-parser": {
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz",
...@@ -15258,6 +15301,11 @@ ...@@ -15258,6 +15301,11 @@
} }
} }
}, },
"vue-events": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/vue-events/-/vue-events-3.1.0.tgz",
"integrity": "sha512-JoE6ZlIEFdpj/vE7oW6T1T3Vz2h0Zxc4XEyz92L2tiRVc1TZ0u/nY1s6ZrnpHKoVxeEU0ouAp/FMxTKI3JBpvA=="
},
"vue-hot-reload-api": { "vue-hot-reload-api": {
"version": "2.3.4", "version": "2.3.4",
"resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz",
...@@ -15298,6 +15346,15 @@ ...@@ -15298,6 +15346,15 @@
"vue": "^2.2.6" "vue": "^2.2.6"
} }
}, },
"vue-json-viewer": {
"version": "2.2.18",
"resolved": "https://registry.npmjs.org/vue-json-viewer/-/vue-json-viewer-2.2.18.tgz",
"integrity": "sha512-OytvjRrnmH2cUfz8hbXM34GuYW08LFCQIr7tppQRJIaqGfVpn96F0cOuV+8ezwoEpeRT8xmldpeATBhiimNYDQ==",
"requires": {
"clipboard": "^2.0.4",
"vue": "^2.6.9"
}
},
"vue-loader": { "vue-loader": {
"version": "13.7.3", "version": "13.7.3",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-13.7.3.tgz", "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-13.7.3.tgz",
......
...@@ -18,8 +18,12 @@ ...@@ -18,8 +18,12 @@
"echarts": "^4.8.0", "echarts": "^4.8.0",
"element-ui": "^2.13.2", "element-ui": "^2.13.2",
"less": "^3.11.1", "less": "^3.11.1",
"sortablejs": "^1.13.0",
"vue": "^2.5.2", "vue": "^2.5.2",
"vue-bus": "^1.2.1",
"vue-events": "^3.1.0",
"vue-json-editor": "^1.4.3", "vue-json-editor": "^1.4.3",
"vue-json-viewer": "^2.2.18",
"vue-router": "^3.0.1", "vue-router": "^3.0.1",
"vuex": "^3.6.2" "vuex": "^3.6.2"
}, },
......
import request from '@/utils/holmesRequest'
// 项目模块相关接口
export function getProjectList(queryInfo) {
return request({
url: '/auto/project/list',
method: 'get',
params: queryInfo
})
}
export function addProject(data) {
return request({
url: '/auto/project/add',
method: 'post',
data
})
}
export function editProject(data) {
return request({
url: '/auto/project/modify',
method: 'post',
data
})
}
export function delProject(queryInfo) {
return request({
url: '/auto/project/delete',
method: 'get',
params: queryInfo
})
}
// 模块列表相关接口
export function getModulList(queryInfo) {
return request({
url: '/auto/module/list',
method: 'get',
params: queryInfo
})
}
// 添加模块接口
export function addModul(data) {
return request({
url: '/auto/module/add',
method: 'post',
data
})
}
// 编辑模块接口
export function editModel(data) {
return request({
url: '/auto/module/modify',
method: 'post',
data
})
}
// 删除模块
export function delModel(queryInfo) {
return request({
url: '/auto/module/delete',
method: 'get',
params: queryInfo
})
}
// 获取接口列表
export function interfaceDetailList(queryInfo) {
return request({
url: '/auto/interface/list',
method: 'get',
params: queryInfo
})
}
// 添加接的口接口
export function addInterface(data) {
return request({
url: '/auto/interface/add',
method: 'post',
data
})
}
// 编辑接口的接口
export function editInterface(data) {
return request({
url: '/auto/interface/modify',
method: 'post',
data
})
}
// 删除接口的接口
export function delInterface(queryInfo) {
return request({
url: '/auto/interface/delete',
method: 'get',
params: queryInfo
})
}
// 获取某个接口下的所有用例
export function getCaseByInterface(queryInfo) {
return request({
url: '/auto/testcase/byInterface',
method: 'get',
params: queryInfo
})
}
import request from '@/utils/holmesRequest'
// 获取case列表
export function singleCaseList(queryInfo) {
return request({
url: '/auto/testcase/list',
method: 'get',
params: queryInfo
})
}
// 获取接口详情
export function getInterfaceDetail(queryInfo) {
return request({
url: '/auto/interface/detail',
method: 'get',
params: queryInfo
})
}
// 添加用例接口
export function addCase(data) {
return request({
url: '/auto/testcase/add',
method: 'post',
data
})
}
// 删除case接口
export function delCase(queryInfo) {
return request({
url: '/auto/testcase/delete',
method: 'get',
params: queryInfo
})
}
// 执行单个case
export function executeCase(queryInfo) {
return request({
url: '/auto/execute/testcase',
method: 'get',
params: queryInfo
})
}
// 单个用例编辑接口
export function editCase(data) {
return request({
url: '/auto/testcase/modify',
method: 'post',
data
})
}
import request from '@/utils/holmesRequest'
export function getSceneList(queryInfo) {
return request({
url: '/auto/scene/list',
method: 'get',
params: queryInfo
})
}
// 添加场景接口
export function addSecene(data) {
return request({
url: '/auto/scene/add',
method: 'post',
data
})
}
// 删除场景
export function delSecne(queryInfo) {
return request({
url: '/auto/scene/delete',
method: 'get',
params: queryInfo
})
}
// 获取场景用例列表接口
export function getSceneCaseList(queryInfo) {
return request({
url: '/auto/sceneTestcase/list',
method: 'get',
params: queryInfo
})
}
// 添加场景用例接口
export function addSceneCase(data) {
return request({
url: '/auto/sceneTestcase/saveOrUpdate',
method: 'post',
data
})
}
// 执行场景用例接口
export function executeScene(queryInfo) {
return request({
url: '/auto/execute/scene',
method: 'get',
params: queryInfo
})
}
...@@ -16,4 +16,23 @@ html, body, #app { ...@@ -16,4 +16,23 @@ html, body, #app {
.jsoneditor-vue { .jsoneditor-vue {
height: 300px; height: 300px;
}
.el-collapse-item__header{
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
height: 48px;
line-height: 48px;
background-color: #FFF;
color: #303133;
cursor: pointer;
border-bottom: 1px solid #EBEEF5;
font-size: 15px !important;
font-weight: 550 !important;
-webkit-transition: border-bottom-color .3s;
transition: border-bottom-color .3s;
outline: 0;
} }
\ No newline at end of file
...@@ -8,6 +8,9 @@ import echarts from 'echarts' ...@@ -8,6 +8,9 @@ import echarts from 'echarts'
import 'element-ui/lib/theme-chalk/index.css' import 'element-ui/lib/theme-chalk/index.css'
import axios from 'axios' import axios from 'axios'
import store from './store/store' import store from './store/store'
import JsonViewer from 'vue-json-viewer'
import bus from '../src/utils/bus'
// import Sortable from 'sortablejs'
import { import {
Container, Container,
Header, Header,
...@@ -40,7 +43,9 @@ import { ...@@ -40,7 +43,9 @@ import {
Switch, Switch,
RadioGroup, RadioGroup,
Radio, Radio,
MessageBox MessageBox,
Row,
Col
} from 'element-ui' } from 'element-ui'
Vue.config.productionTip = false Vue.config.productionTip = false
...@@ -51,6 +56,7 @@ Vue.prototype.$echarts = echarts ...@@ -51,6 +56,7 @@ Vue.prototype.$echarts = echarts
Vue.prototype.$message = Message Vue.prototype.$message = Message
Vue.prototype.$loading = Loading Vue.prototype.$loading = Loading
Vue.prototype.$messageBox = MessageBox Vue.prototype.$messageBox = MessageBox
Vue.prototype.$bus = bus
// axios.defaults.baseURL = 'https://qa-platform-pre.liangkebang.net' // axios.defaults.baseURL = 'https://qa-platform-pre.liangkebang.net'
// axios.defaults.baseURL = 'http://localhost:8082' // axios.defaults.baseURL = 'http://localhost:8082'
...@@ -83,6 +89,10 @@ Vue.use(TabPane) ...@@ -83,6 +89,10 @@ Vue.use(TabPane)
Vue.use(Switch) Vue.use(Switch)
Vue.use(RadioGroup) Vue.use(RadioGroup)
Vue.use(Radio) Vue.use(Radio)
Vue.use(Row)
Vue.use(Col)
Vue.use(JsonViewer)
// Vue.use(Sortable)
/* eslint-disable no-new */ /* eslint-disable no-new */
new Vue({ new Vue({
el: '#app', el: '#app',
......
...@@ -14,22 +14,31 @@ import Mock from '../views/mock/Mock' ...@@ -14,22 +14,31 @@ import Mock from '../views/mock/Mock'
import kdspDecrypt from '../views/effect/KdspDecrypt' import kdspDecrypt from '../views/effect/KdspDecrypt'
import JenkinsBuildInfo from '../views/effect/JenkinsBuildInfo' import JenkinsBuildInfo from '../views/effect/JenkinsBuildInfo'
import LoginWhiteList from '../views/effect/LoginWhiteList' import LoginWhiteList from '../views/effect/LoginWhiteList'
// 2021-040-09新添加
import ProjectList from '../views/auto/Project'
import ModelList from '../views/auto/Model'
import InterfaceDetail from '../views/auto/InterfaceDetail'
import JiraNotify from '../views/jira/Notify' import JiraNotify from '../views/jira/Notify'
import RiskControl from '../views/vcc/RiskControl' import RiskControl from '../views/vcc/RiskControl'
import ClearCache from '../views/effect/ClearCache' import ClearCache from '../views/effect/ClearCache'
import ClearData from '../views/effect/ClearData' import ClearData from '../views/effect/ClearData'
import AddInterface from '../views/auto/AddInterface'
import CaseList from '../views/auto/CaseList'
import AddCase from '../views/auto/AddCase'
import SceneList from '../views/auto/SceneList'
import EditScene from '../views/auto/EditScene'
Vue.use(Router) Vue.use(Router)
const router = new Router({ const router = new Router({
mode: 'history', mode: 'history',
routes: [ routes: [
{ {
'path': '/', path: '/',
redirect: '/index' redirect: '/index'
}, },
{ {
'path': '/index', path: '/index',
name: '登录页',
component: Index component: Index
}, },
// { // {
...@@ -42,45 +51,97 @@ const router = new Router({ ...@@ -42,45 +51,97 @@ const router = new Router({
component: Home, component: Home,
children: [ children: [
{ {
'path': '/main', path: '/main',
name: '主页',
component: Main component: Main
}, },
{ {
'path': '/xyqb/genLoanData', path: '/xyqb/genLoanData',
name: '捞数据',
component: XyqbGenLoanData component: XyqbGenLoanData
}, },
{ {
'path': '/xyqb/getLoanData', path: '/xyqb/getLoanData',
name: '造数据',
component: XyqbGetLoanData component: XyqbGetLoanData
}, },
{ {
'path': '/vcc/getData', path: '/vcc/getData',
name: '查数据',
component: VccGetData component: VccGetData
}, },
{ {
'path': '/vcc/genData', path: '/vcc/genData',
name: 'VCC捞数据',
component: VccGenData component: VccGenData
}, },
{ {
'path': '/vcc/checkData', path: '/vcc/checkData',
name: '造数据',
component: VccCheckData component: VccCheckData
}, },
{ {
'path': '/mock/list', path: '/mock/list',
name: '工具',
component: Mock component: Mock
}, },
{ {
'path': '/effect/kdsp/decrypt', path: '/effect/kdsp/decrypt',
name: 'kdsp解密',
component: kdspDecrypt component: kdspDecrypt
}, },
{ {
'path': '/effect/jenkins/build', path: '/effect/jenkins/build',
name: '构建记录',
component: JenkinsBuildInfo component: JenkinsBuildInfo
}, },
{ {
'path': '/effect/whitelist', path: '/effect/whitelist',
name: '登录白名单',
component: LoginWhiteList component: LoginWhiteList
}, },
// 2021-4-08新添加项目管理页面
{
path: '/auto/Project',
name: ProjectList,
component: ProjectList
},
{
path: '/auto/Model',
name: ModelList,
component: ModelList
},
{
path: '/auto/InterfaceDetail',
name: InterfaceDetail,
component: InterfaceDetail
},
{
path: '/auto/AddInterface',
name: AddInterface,
component: AddInterface
},
{
path: '/auto/CaseList',
name: CaseList,
component: CaseList
},
{
path: '/auto/AddCase',
name: AddCase,
component: AddCase
},
{
path: '/auto/SceneList',
name: SceneList,
component: SceneList
},
// 编辑场景
{
path: '/auto/EditScene',
name: EditScene,
component: EditScene
},
{ {
'path': '/jira/notify', 'path': '/jira/notify',
component: JiraNotify component: JiraNotify
...@@ -99,7 +160,7 @@ const router = new Router({ ...@@ -99,7 +160,7 @@ const router = new Router({
} }
] ]
} }
] ]
}) })
export default router export default router
import Vue from 'vue'
const bus = new Vue()
export default bus
This diff is collapsed.
This diff is collapsed.
<template>
<div>
<el-card>
<div>
模块:
<el-select v-model="selectModelId" placeholder="请选择模块" @change="selectChangeModel" clearable>
<el-option v-for="item in modelList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
<el-input v-model="queryModuleInfo.testcaseName" clearable placeholder="请输入用例名称" style="width: 300px;"></el-input>
<el-button type="primary" style="margin-left:20px" @click="queryData">查询</el-button>
<el-button type="primary" style="margin-left:20px" @click="addPage">新增</el-button>
</div>
<el-table :data="singleCaseList" border style="width: 100%;margin-top:20px">
<el-table-column type='index' width="50px"></el-table-column>
<el-table-column prop="moduleName" label="模块名称" width="200px"></el-table-column>
<el-table-column prop="interfaceName" label="接口名称" width="200px"></el-table-column>
<el-table-column prop="name" label="用例名称" width="200px"></el-table-column>
<el-table-column prop="createTime" label="创建日期" width="200px"></el-table-column>
<el-table-column prop="updateTime" label="修改日期" width="200px"></el-table-column>
<el-table-column label="操作">
<slot slot-scope="scope">
<el-button type="warning" @click="executeCaseFrom(scope.row)">执行</el-button>
<el-button type="success" @click="editCaseFrom(scope.row)">编辑</el-button>
<el-button type="danger" @click="delCaseFrom(scope.row)">删除</el-button>
</slot>
</el-table-column>
</el-table>
<el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="queryModuleInfo.pageNum" :page-size="queryModuleInfo.pageSize" layout="total, prev, pager, next"
:total="totalNum"></el-pagination>
</el-card>
<!-- 接口返回数据 -->
<el-card v-if="isShow">
<div slot="header">
<el-row>
<el-col :span="3">
<div>响应结果 :</div>
</el-col>
</el-row>
<json-viewer :value="requestData"></json-viewer>
</div>
</el-card>
</div>
</template>
<script>
import { getModulList } from '@/api/getAotoInterface'
import { singleCaseList, delCase, executeCase } from '@/api/getAutoCase'
// import bus from '@/utils/bus'
export default {
data() {
return {
queryModuleInfo: {
pageNum: 1,
pageSize: 20,
moduleId: '',
testcaseName: ''
},
moduleInfo: {
pageNum: 1,
pageSize: 100
},
totalNum: 0,
modelList: [],
selectModelId: '',
singleCaseList: [],
delCase: {
testcaseId: ''
},
executeCaseParam: {
namespace: '',
testcaseId: ''
},
isShow: false,
requestData: ''
}
},
created() {
this.isShow = false
this.getModulList()
this.getCaseList()
this.$bus.$on('refresh', () => {
this.isShow = false
this.getCaseList()
})
},
methods: {
// 获取模块列表
getModulList() {
getModulList(this.moduleInfo).then((resp) => {
this.modelList = resp.data.data.list
})
},
// 下拉框改变事件
selectChangeModel() {
this.queryModuleInfo.moduleId = this.selectModelId
},
// 查询方法
queryData() {
this.getCaseList()
},
// 获取case列表
getCaseList() {
singleCaseList(this.queryModuleInfo).then((resp) => {
this.singleCaseList = resp.data.data.list
this.totalNum = resp.data.data.total
})
},
// 添加方法
addPage() {
this.$router.push('AddCase')
this.$nextTick(function () {
// DOM 现在更新了
var row = '新增'
this.$bus.$emit('casemsg', row)
})
},
// 执行用例
executeCaseFrom(row) {
this.isShow = true
// 获取用例id
this.executeCaseParam.testcaseId = row.id
this.executeCaseParam.namespace = window.sessionStorage.getItem('env')
// 获取当前场景
executeCase(this.executeCaseParam).then((resp) => {
this.requestData = resp.data.data
})
},
// 编辑用例
editCaseFrom(row) {
this.$router.push({ path: 'AddCase' })
// bus使用
this.$nextTick(function () {
// DOM 现在更新了
this.$bus.$emit('casemsg', row)
})
},
// 对话框方法
openMessage(message, confirmText, doit) {
this.$messageBox
.confirm(message, '确定', {
cancelButtonText: '取消',
confirmButtonText: confirmText,
type: 'warning'
})
.then(() => {
doit()
})
.catch(() => {})
},
// 删除用例
delCaseFrom(row) {
this.delCase.testcaseId = row.id
this.openMessage('您确定要删除吗?', '删除', () => {
delCase(this.delCase)
.then((resp) => {
if (resp.data.data === true) {
this.$message.success('删除成功!')
this.getCaseList()
} else if (resp.data.data === false) {
this.$message.error(resp.data.msg)
}
})
.catch((error) => {
this.$message({ type: 'error', message: error })
})
})
},
handleSizeChange(newSize) {
this.queryModuleInfo.pageSize = newSize
this.getCaseList()
},
handleCurrentChange(newPage) {
this.queryModuleInfo.pageNum = newPage
this.getCaseList()
}
}
}
</script>
This diff is collapsed.
<template>
<div>
<el-card>
<div>
项目:
<el-select v-model="selectProjectId" placeholder="请选择项目" @change="selectChange" clearable>
<el-option v-for="item in projectList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
模块:
<el-select v-model="selectModelId" placeholder="请选择模块" @change="selectChangeModel" clearable>
<el-option v-for="item in modelList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
<el-input v-model="queryModuleInfo.interfaceName" clearable placeholder="请输入接口名称" style="width: 300px;"></el-input>
<el-button type="primary" style="margin-left:20px" @click="queryData">查询</el-button>
<el-button type="primary" style="margin-left:20px" @click="addPage">新增</el-button>
</div>
<el-table :data="interfaceList" border style="width: 100%;margin-top:20px">
<el-table-column type='index' width="50px"></el-table-column>
<el-table-column prop="name" label="接口名称" width="150px"></el-table-column>
<el-table-column prop="projectName" label="所属项目" width="150px"></el-table-column>
<el-table-column prop="moduleName" label="所属模块" width="200px"></el-table-column>
<el-table-column prop="url" label="接口路径" width="300px"></el-table-column>
<el-table-column prop="method" label="请求方式" width="70px"></el-table-column>
<el-table-column prop="paramType" label="参数类型" width="80px"></el-table-column>
<el-table-column prop="createTime" label="创建时间" width="200px"></el-table-column>
<el-table-column prop="updateTime" label="修改时间" width="200px"></el-table-column>
<el-table-column label="操作">
<slot slot-scope="scope">
<el-button type="success" @click="editInterfaceFrom(scope.row)">编辑</el-button>
<el-button type="danger" @click="delInterfaceFrom(scope.row)">删除</el-button>
</slot>
</el-table-column>
</el-table>
<el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="queryModuleInfo.pageNum" :page-size="queryModuleInfo.pageSize" layout="total, prev, pager, next"
:total="totalNum"></el-pagination>
</el-card>
</div>
</template>
<script>
import {
getModulList,
getProjectList,
interfaceDetailList,
delInterface
} from '@/api/getAotoInterface'
// 引入组件
import bus from '@/utils/bus'
export default {
data() {
return {
queryModuleInfo: {
pageNum: 1,
pageSize: 20,
projectId: '',
moduleId: '',
interfaceName: ''
},
totalNum: 0,
projectList: [],
modelList: [],
// 下来项目id
selectProjectId: '',
// 下拉模块id
selectModelId: '',
interfaceName: '',
interfaceList: [],
interfaceDetailForm: {},
delInterfaceParam: {
interfaceId: ''
}
}
},
created() {
this.getProjectList()
this.getInterfaceDetailList()
bus.$on('refresh', () => {
this.getInterfaceDetailList()
})
},
methods: {
// 项目列表
getProjectList() {
getProjectList(this.queryModuleInfo).then((resp) => {
this.projectList = resp.data.data.list
})
},
// 下来框选中改变事件
selectChange() {
this.queryModuleInfo.projectId = this.selectProjectId
getModulList(this.queryModuleInfo).then((resp) => {
this.modelList = resp.data.data.list
})
},
// 模块下拉框改变事件
selectChangeModel() {
this.queryModuleInfo.moduleId = this.selectModelId
},
// 查询方法
queryData() {
this.getInterfaceDetailList()
// this.queryModuleInfo.projectId = ''
// this.queryModuleInfo.moduleId = ''
// this.queryModuleInfo.interfaceName = ''
},
// 添加跳转页面
addPage() {
this.$router.push('AddInterface')
this.$nextTick(function () {
// DOM 现在更新了
var row = '新增'
bus.$emit('msg', row)
})
},
// 获取接口列表
getInterfaceDetailList() {
interfaceDetailList(this.queryModuleInfo).then((resp) => {
this.interfaceList = resp.data.data.list
this.totalNum = resp.data.data.total
})
},
handleSizeChange(newSize) {
this.queryModuleInfo.pageSize = newSize
this.getInterfaceDetailList()
},
handleCurrentChange(newPage) {
this.queryModuleInfo.pageNum = newPage
this.getInterfaceDetailList()
},
// 编辑接口方法
editInterfaceFrom(row) {
this.$router.push({ path: 'AddInterface' })
// bus使用
this.$nextTick(function () {
// DOM 现在更新了
bus.$emit('msg', row)
})
},
// 对话框方法
openMessage(message, confirmText, doit) {
this.$messageBox
.confirm(message, '确定', {
cancelButtonText: '取消',
confirmButtonText: confirmText,
type: 'warning'
})
.then(() => {
doit()
})
.catch(() => {})
},
// 删除接口方法
delInterfaceFrom(row) {
this.delInterfaceParam.interfaceId = row.id
this.openMessage('您确定要删除吗?', '删除', () => {
delInterface(this.delInterfaceParam)
.then((resp) => {
if (resp.data.data === true) {
this.$message.success('删除成功!')
this.getInterfaceDetailList()
} else if (resp.data.data === false) {
this.$message.error(resp.data.msg)
}
})
.catch((error) => {
this.$message({ type: 'error', message: error })
})
})
}
}
}
</script>
<template>
<div>
<el-card>
<div class="filter">
<el-button type="primary" @click="DialogVisible = true">新增</el-button>
</div>
<el-table :data="modelList" border style="width: 100%;margin-top:20px">
<!-- <el-table-column prop="id" label="序号" width="80px"></el-table-column> -->
<el-table-column type='index' width="50px"></el-table-column>
<el-table-column prop="name" label="模块名称" width="200px"></el-table-column>
<el-table-column prop="projectName" label="所属项目" width="200px"></el-table-column>
<el-table-column prop="domain" label="域名" width="300px"></el-table-column>
<el-table-column prop="description" label="描述" width="210px"></el-table-column>
<el-table-column prop="createTime" label="创建时间" width="200px"></el-table-column>
<el-table-column prop="updateTime" label="修改时间" width="200px"></el-table-column>
<el-table-column label="操作">
<slot slot-scope="scope">
<el-button type="success" @click="openEditDialog(scope.row)">编辑</el-button>
<el-button type="danger" @click="delModelFrom(scope.row)">删除</el-button>
</slot>
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="queryModuleInfo.pageNum" :page-size="queryModuleInfo.pageSize" layout="total, prev, pager, next"
:total="totalNum"></el-pagination>
</el-card>
<!-- 新增模块 -->
<el-dialog title="新增模块" :visible.sync="DialogVisible" width="30%">
<el-form ref="modelForm" :rules="rules" :model="modelForm" label-width="90px">
<el-form-item label="模块名称:" prop="name" style="width:400px">
<el-input v-model="modelForm.name"></el-input>
</el-form-item>
<el-form-item label="所属项目:" prop="projectId">
<el-select v-model="modelForm.projectId" placeholder="请选择项目" clearable style="width:310px">
<el-option v-for="item in projectList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="模块描述:" prop="description" style="width:400px">
<el-input v-model="modelForm.description"></el-input>
</el-form-item>
<el-form-item label="域名:" prop="domain" style="width:400px">
<el-input v-model="modelForm.domain"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="DialogVisible = false">取 消</el-button>
<el-button type="primary" @click="addModelFrom">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {
getModulList,
getProjectList,
addModul,
editModel,
delModel
} from '@/api/getAotoInterface'
export default {
data() {
return {
queryModuleInfo: {
pageNum: 1,
pageSize: 10
},
totalNum: 0,
modelList: [],
projectList: [],
modelForm: {
name: '',
projectId: '',
description: '',
domain: ''
},
DialogVisible: false,
delModelParam: {
moduleId: ''
},
// 验证
rules: {
name: [
{
required: true,
message: '模块名称不能为空!',
trigger: 'blur'
}
],
projectId: [
{
required: true,
message: '模块名称不能为空!',
trigger: 'blur'
}
],
description: [
{
required: true,
message: '模块描述不能为空!',
trigger: 'blur'
}
],
domain: [
{
required: true,
message: '域名不能为空!',
trigger: 'blur'
}
]
}
}
},
created() {
this.getModelList()
this.getProjectList()
},
methods: {
// 获取模块列表
getModelList() {
getModulList(this.queryModuleInfo).then((resp) => {
this.modelList = resp.data.data.list
this.totalNum = resp.data.data.total
})
},
// 获取项目列表
getProjectList() {
getProjectList(this.queryModuleInfo).then((resp) => {
this.projectList = resp.data.data.list
})
},
// 分页展示
handleSizeChange(newSize) {
this.queryModuleInfo.pageSize = newSize
this.getModelList()
},
// 分页展示
handleCurrentChange(newPage) {
this.queryModuleInfo.pageNum = newPage
this.getModelList()
},
// 添加模块按钮
addModelFrom() {
if (this.modelForm.id) {
editModel(this.modelForm).then((resp) => {
if (resp.data.data === true) {
this.DialogVisible = false
this.$message.success('修改成功!')
this.getModelList()
} else {
this.$message.error(resp.data.msg)
}
})
} else {
// 添加模块
addModul(this.modelForm)
.then((resp) => {
console.log('保存信息', this.modelForm)
if (resp.data.data === true) {
this.DialogVisible = false
this.$message.success('新增成功!')
this.modelList.name = ''
this.modelList.projectName = ''
this.modelList.description = ''
this.modelList.domain = ''
this.getModelList()
} else {
this.$message.error(resp.data.msg)
}
})
.catch((error) => {
this.$message({ type: 'error', message: error })
})
}
},
// 编辑模块
openEditDialog(row) {
this.DialogVisible = true
this.modelForm = row
},
// 对话框方法
openMessage(message, confirmText, doit) {
this.$messageBox
.confirm(message, '确定', {
cancelButtonText: '取消',
confirmButtonText: confirmText,
type: 'warning'
})
.then(() => {
doit()
})
.catch(() => {})
},
// 删除模块
delModelFrom(row) {
this.delModelParam.moduleId = row.id
this.openMessage('您确定要删除吗?', '删除', () => {
delModel(this.delModelParam)
.then((resp) => {
if (resp.data.data === true) {
this.$message.success('删除成功!')
this.getModelList()
} else if (resp.data.data === false) {
this.$message.error(resp.data.msg)
}
})
.catch((error) => {
this.$message({ type: 'error', message: error })
})
})
}
}
}
</script>
<template>
<div>
<el-card>
<div class="filter">
<!-- <el-input placeholder="请输入项目名称" style="width:15%"></el-input>
<el-button type="primary" icon="el-icon-search" @click="searchMockList">查询</el-button> -->
<el-button type="primary" @click="DialogVisible = true">新增</el-button>
</div>
<el-table :data="projectList" border style="width: 100%;margin-top:20px">
<!-- <el-table-column prop="id" label="序号" width="80px"></el-table-column> -->
<el-table-column type='index' width="50px"></el-table-column>
<el-table-column prop="name" label="名称" width="200px"></el-table-column>
<el-table-column prop="description" label="描述" width="300px"></el-table-column>
<el-table-column prop="createTime" label="创建时间" width="200px"></el-table-column>
<el-table-column prop="updateTime" label="修改时间" width="200px"></el-table-column>
<el-table-column label="操作">
<slot slot-scope="scope">
<el-button type="success" @click="openEditDialog(scope.row)">编辑</el-button>
<el-button type="danger" @click="delProjectFrom(scope.row)">删除</el-button>
</slot>
</el-table-column>
</el-table>
<el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="queryModuleInfo.pageNum" :page-size="queryModuleInfo.pageSize" layout="total, prev, pager, next"
:total="totalNum">
</el-pagination>
</el-card>
<!-- 新增页面 /编辑页面-->
<el-dialog title="新增项目" :visible.sync="DialogVisible" width="30%">
<el-form ref="projectForm" :rules="rules" :model="projectForm" label-width="90px">
<el-form-item label="项目名称:" prop="name" style="width:400px">
<el-input v-model="projectForm.name"></el-input>
</el-form-item>
<el-form-item label="项目描述:" prop="description" style="width:400px">
<el-input v-model="projectForm.description"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="DialogVisible = false">取 消</el-button>
<el-button type="primary" @click="addPojectFrom">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {
getProjectList,
addProject,
editProject,
delProject
} from '@/api/getAotoInterface'
export default {
data() {
return {
queryModuleInfo: {
pageNum: 1,
pageSize: 10
},
projectList: [],
totalNum: 0,
DialogVisible: false,
projectForm: {
name: '',
description: ''
},
delProjectParam: {
projectId: ''
},
rules: {
name: [
{
required: true,
message: '项目名称不能为空!',
trigger: 'blur'
}
],
description: [
{
required: true,
message: '项目描述不能为空!',
trigger: 'blur'
}
]
}
}
},
created() {
this.getProjectList()
},
methods: {
// 获取项目列表
getProjectList() {
getProjectList(this.queryModuleInfo).then((resp) => {
this.projectList = resp.data.data.list
this.totalNum = resp.data.data.total
})
},
// 查询按钮
searchMockList() {},
// 新增确定按钮
addPojectFrom() {
if (this.projectForm.id) {
// 编辑接口
editProject(this.projectForm)
.then((resp) => {
if (resp.data.data === true) {
this.DialogVisible = false
this.$message.success('修改成功!')
this.getProjectList()
} else if (resp.data.data === false) {
this.$message.error(resp.data.msg)
}
})
.catch((error) => {
this.$message({ type: 'error', message: error })
})
} else {
// 添加接口
addProject(this.projectForm)
.then((resp) => {
if (resp.data.data === true) {
this.DialogVisible = false
this.$message.success('新增成功!')
this.projectForm.name = ''
this.projectForm.description = ''
this.getProjectList()
} else {
this.$message.error(resp.data.msg)
this.projectForm.name = ''
this.projectForm.description = ''
}
})
.catch((error) => {
this.$message({ type: 'error', message: error })
})
}
},
// 编辑信息回显
openEditDialog(row) {
this.DialogVisible = true
this.projectForm = row
},
// 对话框方法
openMessage(message, confirmText, doit) {
this.$messageBox
.confirm(message, '确定', {
cancelButtonText: '取消',
confirmButtonText: confirmText,
type: 'warning'
})
.then(() => {
doit()
})
.catch(() => {})
},
// 删除项目
delProjectFrom(row) {
this.delProjectParam.projectId = row.id
this.openMessage('您确定要删除吗?', '删除', () => {
delProject(this.delProjectParam)
.then((resp) => {
if (resp.data.data === true) {
this.$message.success('删除成功!')
this.getProjectList()
} else if (resp.data.data === false) {
this.$message.error(resp.data.msg)
}
})
.catch((error) => {
this.$message({ type: 'error', message: error })
})
})
},
// 分页展示
handleSizeChange(newSize) {
this.queryModuleInfo.pageSize = newSize
this.getProjectList()
},
// 分页展示
handleCurrentChange(newPage) {
this.queryModuleInfo.pageNum = newPage
this.getProjectList()
}
}
}
</script>
<style lang="less" scoped>
.el-table {
margin-top: 20px;
}
.el-select {
margin-right: 20px;
}
</style>
<template>
<div>
<div id="dialog" class="test test-1 drag" v-if="show_dialog">
<div class="header_title"> 添加场景用例</div>
<el-form :model="sceneCaseForm" style="margin-left:50px;margin-top:20px;">
<el-form-item label="模块名称:" style="width:300px">
<el-select v-model="moduleFrom" value-key="id" placeholder="请选择模块" @change="selectChangeModel" clearable>
<el-option v-for="item in modelList" :key="item.id" :label="item.name" :value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item label="接口名称:" style="width:500px">
<el-select v-model="interfaceFrom" value-key="id" placeholder="请选择接口" @change="selectChangeInterface" clearable>
<el-option v-for="item in interfaceList" :key="item.id" :label="item.name" :value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-table :data="caseList" border style="width: 70%;margin-left:1px" @selection-change="handleSelectionChange">
<el-table-column type="selection" style="width:10%">
</el-table-column>
<el-table-column type='index' style="width:15%"></el-table-column>
<el-table-column prop="name" label="用例名称" style="width:60%"></el-table-column>
</el-table>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer" style="margin-left:200px;margin-top:30px;">
<el-button @click="cancelForm">取 消</el-button>
<el-button type="primary" @click="addCaseDetailFrom">确 定</el-button>
</span>
</div>
</div>
</template>
<script>
import {
getCaseByInterface,
getModulList,
interfaceDetailList
} from '@/api/getAotoInterface'
export default {
props: {
msgchange: { type: Boolean }
},
data() {
return {
sceneCaseForm: {
// moduleFrom: '',
// interfaceFrom: '',
caseDetail: []
},
moduleFrom: {},
interfaceFrom: {},
newFrom: {
newModule: '',
newInterface: ''
},
moduleInfo: {
pageNum: 1,
pageSize: 100
},
modelList: [],
interfaceList: [],
interfaceInfo: {
pageNum: 1,
pageSize: 100,
moduleId: ''
},
caseInfo: {
interfaceId: ''
},
caseList: [],
show_dialog: false
}
},
created() {
this.getModelList()
},
methods: {
// 获取模块列表
getModelList() {
getModulList(this.moduleInfo).then((resp) => {
this.modelList = resp.data.data.list
console.log('列表信息', this.modelList)
})
},
// 模块下拉框改变事件
selectChangeModel() {
console.log('下拉款信息', this.sceneCaseForm.moduleFrom)
this.interfaceInfo.moduleId = this.moduleFrom.id
this.sceneCaseForm.moduleId = this.moduleFrom.id
interfaceDetailList(this.interfaceInfo).then((resp) => {
this.interfaceList = resp.data.data.list
})
},
// 接口下拉框改变事件
selectChangeInterface() {
this.caseInfo.interfaceId = this.interfaceFrom.id
getCaseByInterface(this.caseInfo).then((resp) => {
this.caseList = resp.data.data
})
},
// 复选框选中事件
handleSelectionChange(row) {
this.sceneCaseForm.caseDetail = row
},
// 保存事件
addCaseDetailFrom() {
// 子组件向父组件传递的信息
this.$emit('childFn', this.sceneCaseForm)
},
// 取消事件
cancelForm() {
this.show_dialog = false
},
// 父组件传递的事件
addSceneCase(param) {
if (param) {
this.show_dialog = true
}
}
}
}
</script>
<style lang="less" scoped>
#dialog {
width: 500px;
height: 500px;
margin: 0 auto;
background-color: #ffffff;
position: fixed;
top: 40%;
left: 60%;
margin: -120px 0 0 -150px;
z-index: 1000;
border: 2px solid #ccc;
border-radius: 10px;
-webkit-border-radius: 10px;
box-shadow: 3px 2px 4px #ccc;
-webkit-box-shadow: 3px 2px 4px #ccc;
box-sizing: border-box;
box-shadow: 0 1px 3px rgb(0 0 0 / 30%);
}
.header_title {
margin-left: 20px;
margin-top: 20px;
font-size: 18px;
color: #303133;
}
.test {
width: 50px;
height: 120px;
overflow: auto;
float: left;
margin: 5px;
border: none;
}
.scrollbar {
width: 30px;
height: 300px;
margin: 0 auto;
}
.test-1::-webkit-scrollbar {
/*滚动条整体样式*/
width: 10px; /*高宽分别对应横竖滚动条的尺寸*/
height: 1px;
}
.test-1::-webkit-scrollbar-thumb {
/*滚动条里面小方块*/
border-radius: 10px;
-webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
background: #535353;
}
.test-1::-webkit-scrollbar-track {
/*滚动条里面轨道*/
-webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
border-radius: 10px;
background: #ededed;
}
.drag {
width: 100px;
height: 100px;
position: absolute;
top: 0;
left: 0;
background-color: red;
}
</style>
<template>
<div>
<el-card>
<div>
场景名称:
<el-input v-model="queryModuleInfo.sceneName" clearable placeholder="请输入场景名称" style="width: 300px;"></el-input>
<el-button type="primary" style="margin-left:20px" @click="queryData">查询</el-button>
<el-button type="primary" style="margin-left:20px" @click="DialogVisible = true">新增</el-button>
</div>
<el-table :data="sceneList" border style="width: 100%;margin-top:20px">
<el-table-column type='index' width="50px"></el-table-column>
<el-table-column prop="name" label="场景名称" width="200px"></el-table-column>
<el-table-column prop="projectName" label="项目名称" width="200px"></el-table-column>
<el-table-column prop="createTime" label="创建时间" width="200px"></el-table-column>
<el-table-column prop="updateTime" label="修改时间" width="200px"></el-table-column>
<el-table-column label="操作">
<slot slot-scope="scope">
<el-button type="warning" @click="executeSceneFrom(scope.row)">执行</el-button>
<el-button type="success" @click="editeSceneFrom(scope.row)">编辑</el-button>
<el-button type="danger" @click="deleSceneFrom(scope.row)">删除</el-button>
</slot>
</el-table-column>
</el-table>
<el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="queryModuleInfo.pageNum" :page-size="queryModuleInfo.pageSize" layout="total, prev, pager, next"
:total="totalNum"></el-pagination>
</el-card>
<!-- 接口返回数据 -->
<el-card v-if="isShow">
<div slot="header">
<el-row>
<el-col :span="3">
<div>响应结果 :</div>
</el-col>
</el-row>
<json-viewer :value="requestData"></json-viewer>
</div>
</el-card>
<!-- 新增页面 /编辑页面-->
<el-dialog title="新增场景" :visible.sync="DialogVisible" width="30%">
<el-form ref="sceneForm" :rules="rules" :model="sceneForm" label-width="90px">
<el-form-item label="场景名称:" prop="name" style="width:300px">
<el-input v-model="sceneForm.name"></el-input>
</el-form-item>
<el-form-item label="项目名称:" prop="projectId" style="width:500px">
<el-select v-model="sceneForm.projectId" placeholder="请选择项目" clearable>
<el-option v-for="item in projectList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="DialogVisible = false">取 消</el-button>
<el-button type="primary" @click="addSceneFrom">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {
getSceneList,
addSecene,
delSecne,
executeScene
} from '@/api/getAutoScene'
import { getProjectList } from '@/api/getAotoInterface'
export default {
data() {
return {
queryModuleInfo: {
pageNum: 1,
pageSize: 20,
sceneName: ''
},
queryProjectList: {
pageNum: 1,
pageSize: 20
},
sceneList: [],
totalNum: 0,
sceneForm: {
name: '',
projectId: ''
},
projectList: [],
DialogVisible: false,
rules: {
name: [
{
required: true,
message: '场景名称不能为空!',
trigger: 'blur'
}
],
projectId: [
{
required: true,
message: '项目名称不能为空!',
trigger: 'blur'
}
]
},
delSceneForm: {
sceneId: ''
},
isShow: true,
requestData: '',
executeScene: {
sceneId: '',
namespace: ''
}
}
},
created() {
this.getSecneList()
this.getProjectList()
this.$bus.$on('refreshScene', () => {
this.getSecneList()
})
},
methods: {
// 获取场景列表
getSecneList() {
getSceneList(this.queryModuleInfo).then((resp) => {
this.sceneList = resp.data.data.list
this.totalNum = resp.data.data.total
})
},
// 获取项目列表
getProjectList() {
getProjectList(this.queryProjectList).then((resp) => {
this.projectList = resp.data.data.list
})
},
// 查询方法
queryData() {
this.getSecneList()
},
// 执行场景
executeSceneFrom(row) {
// 获取用例id
this.executeScene.sceneId = row.id
this.executeScene.namespace = window.sessionStorage.getItem('env')
// this.isShow = true
executeScene(this.executeScene).then((resp) => {
console.log('接口返回结果', resp)
this.requestData = resp.data.data
})
},
// 编辑场景
editeSceneFrom(row) {
window.sessionStorage.setItem('curScene', JSON.stringify(row))
this.$router.push({ path: 'EditScene' })
// this.$router.push({ path: 'tese' })
// bus使用
this.$nextTick(function () {
// DOM 现在更新了
this.$bus.$emit('scenemsg', row)
})
},
// 对话框方法
openMessage(message, confirmText, doit) {
this.$messageBox
.confirm(message, '确定', {
cancelButtonText: '取消',
confirmButtonText: confirmText,
type: 'warning'
})
.then(() => {
doit()
})
.catch(() => {})
},
// 删除场景
deleSceneFrom(row) {
this.delSceneForm.sceneId = row.id
this.openMessage('您确定要删除吗?', '删除', () => {
delSecne(this.delSceneForm)
.then((resp) => {
if (resp.data.data === true) {
this.$message.success('删除成功!')
this.getSecneList()
} else if (resp.data.data === false) {
this.$message.error(resp.data.msg)
}
})
.catch((error) => {
this.$message({ type: 'error', message: error })
})
})
},
handleSizeChange(newSize) {
this.queryModuleInfo.pageSize = newSize
this.getSecneList()
},
handleCurrentChange(newPage) {
this.queryModuleInfo.pageNum = newPage
this.getSecneList()
},
// 添加场景
addSceneFrom() {
addSecene(this.sceneForm).then((resp) => {
if (resp.data.data === true) {
this.DialogVisible = false
this.$message.success('新增成功!')
this.sceneForm.name = ''
this.sceneForm.projectId = ''
this.getSecneList()
} else {
this.$message.error(resp.data.msg)
}
})
}
}
}
</script>
...@@ -10,10 +10,7 @@ ...@@ -10,10 +10,7 @@
<el-main> <el-main>
<AsideTitle></AsideTitle> <AsideTitle></AsideTitle>
<!--页面的展示--> <!--页面的展示-->
<transition <transition name="compAnimate" appear>
name="compAnimate"
appear
>
<keep-alive> <keep-alive>
<router-view :style="{marginTop: '55px'}"></router-view> <router-view :style="{marginTop: '55px'}"></router-view>
</keep-alive> </keep-alive>
...@@ -22,7 +19,6 @@ ...@@ -22,7 +19,6 @@
</el-container> </el-container>
</el-container> </el-container>
</template> </template>
<script> <script>
import Aside from './leftAside/Aside' import Aside from './leftAside/Aside'
import Header from './rightMain/Header' import Header from './rightMain/Header'
......
...@@ -100,17 +100,54 @@ ...@@ -100,17 +100,54 @@
} }
] ]
}, },
{
"id": 5,
"title": "接口自动化",
"icon": "el-icon-s-opportunity",
"child": [
{
"id": 1,
"title": "项目管理",
"icon": "el-icon-bicycle",
"path": "/auto/Project"
},
{
"id": 2,
"title": "模块管理",
"icon": "el-icon-wallet",
"path": "/auto/Model"
},
{
"id": 3,
"title": "接口管理",
"icon": "el-icon-bank-card",
"path": "/auto/InterfaceDetail"
},
{
"id": 4,
"title": "用例管理",
"icon": "el-icon-postcard",
"path": "/auto/CaseList"
},
{
"id": 5,
"title": "场景管理",
"icon": "el-icon-thumb",
"path": "/auto/SceneList"
}
]
},
{ {
"id": 6, "id": 6,
"title": "Jira相关", "title": "Jira相关",
"icon": "el-icon-hot-water", "icon": "el-icon-hot-water",
"child": [ "child": [
{ {
"id": 1, "id": 1,
"title": "jira-钉钉通知", "title": "jira-钉钉通知",
"icon": "el-icon-ice-tea", "icon": "el-icon-ice-tea",
"path": "/jira/notify" "path": "/jira/notify"
} }
] ]
} }
] ]
......
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