ui自动化编辑回到列表不刷新列表

This commit is contained in:
2025-05-28 18:02:10 +08:00
parent 080a80d53d
commit e5dc3bab05
3 changed files with 284 additions and 152 deletions

View File

@@ -223,11 +223,23 @@ export const constantRoutes = [
path: '', path: '',
component: () => import('@/views/test/uiTest/editScene'), component: () => import('@/views/test/uiTest/editScene'),
name: 'EditScene', name: 'EditScene',
noCache: true,
meta: { title: '编辑场景', activeMenu: '/ui-test' } meta: { title: '编辑场景', activeMenu: '/ui-test' }
} }
] ]
}, },
{
path: '/ui-test/automation-test',
component: Layout,
hidden: true,
children: [
{
path: '',
component: () => import('@/views/test/uiTest/automationTest'),
name: 'AutomationTestView',
meta: { title: 'UI自动化测试', activeMenu: '/ui-test' }
}
]
},
{ {
path: '/testplan/overview', path: '/testplan/overview',
component: Layout, component: Layout,

View File

@@ -79,7 +79,7 @@
</div> </div>
<!-- 数据提取 --> <!-- 数据提取 -->
<div v-if="item.operateType === '3'"> <div v-if="item.operateType === '3'">
<el-collapse v-model="index" accordion> <el-collapse v-model="item.activeCollapse" accordion>
<el-collapse-item name="1"> <el-collapse-item name="1">
<template slot="title"> <template slot="title">
<div class="time"> <div class="time">
@@ -234,7 +234,7 @@
</div> </div>
<!-- 数据提取 --> <!-- 数据提取 -->
<div v-if="item.operateType === '3'"> <div v-if="item.operateType === '3'">
<el-collapse v-model="index" accordion> <el-collapse v-model="item.activeCollapse" accordion>
<el-collapse-item name="1"> <el-collapse-item name="1">
<template slot="title"> <template slot="title">
<div class="time"> <div class="time">
@@ -365,7 +365,7 @@
</div> </div>
<!-- 断言 --> <!-- 断言 -->
<div v-if="item.operateType === '2'"> <div v-if="item.operateType === '2'">
<el-collapse v-model="index" accordion> <el-collapse v-model="item.activeCollapse" accordion>
<el-collapse-item name="1"> <el-collapse-item name="1">
<template slot="title"> <template slot="title">
<div class="time"> <div class="time">
@@ -399,7 +399,7 @@
<el-option key="1" label="是" value="1"></el-option> <el-option key="1" label="是" value="1"></el-option>
<el-option key="2" label="否" value="2"></el-option> <el-option key="2" label="否" value="2"></el-option>
</el-select> </el-select>
<el-input v-model="content.expectations" placeholder="请输入期望弹窗文本"></el-input> <el-input v-model="content.expectations" placeholder="请输入期望弹窗文本" style="width: 300px;"></el-input>
</div> </div>
<div class="time-right"> <div class="time-right">
<el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch> <el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch>
@@ -410,47 +410,51 @@
<!-- 元素断言 --> <!-- 元素断言 -->
<div v-if="item.assertionQOList && item.assertionQOList.elementAssertions && item.assertionQOList.elementAssertions.length > 0" class="information"> <div v-if="item.assertionQOList && item.assertionQOList.elementAssertions && item.assertionQOList.elementAssertions.length > 0" class="information">
<div>元素断言</div> <div>元素断言</div>
<div v-for="(content, index2) in item.assertionQOList.elementAssertions" class="time"> <div v-for="(content, index2) in item.assertionQOList.elementAssertions" class="assertion-block">
<div class="time-left"> <!-- 元素选择部分 -->
<div class="operateObject-wrap"> <div class="time">
<el-select v-model="content.operateObject" class="select" @change="() => handleOperateObjectChange(content)"> <div class="time-left">
<el-option key="1" label="元素对象" value="1"></el-option> <div class="operateObject-wrap">
<el-option key="2" label="元素定位" value="2"></el-option> <el-select v-model="content.operateObject" class="select" @change="() => handleOperateObjectChange(content)">
</el-select> <el-option key="1" label="元素对象" value="1"></el-option>
<!-- 元素对象 --> <el-option key="2" label="元素定位" value="2"></el-option>
<div v-show="content.operateObject === '1'" class="operateObject-wrap">
<el-select v-model="content.operateGroupId" class="select" @change="handleElementAssertionGroupChange(content)" placeholder="请选择元素组">
<el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
<el-select v-model="content.operateElementId" class="select" placeholder="请选择元素"> <!-- 元素对象 -->
<el-option v-for="item in elementList" :key="item.id" :label="item.name" :value="item.id"></el-option> <div v-show="content.operateObject === '1'" class="operateObject-wrap">
</el-select> <el-select v-model="content.operateGroupId" class="select" @change="handleElementAssertionGroupChange(content)" placeholder="请选择元素组">
</div> <el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
<!-- 元素定位 --> </el-select>
<div v-show="content.operateObject === '2'" class="operateObject-wrap"> <el-select v-model="content.operateElementId" class="select" placeholder="请选择元素">
<el-select v-model="content.operateLocType" class="select"> <el-option v-for="item in elementList" :key="item.id" :label="item.name" :value="item.id"></el-option>
<el-option label="id" value="id"></el-option> </el-select>
<el-option label="name" value="name"></el-option> </div>
<el-option label="className" value="className"></el-option> <!-- 元素定位 -->
<el-option label="tagName" value="tagName"></el-option> <div v-show="content.operateObject === '2'" class="operateObject-wrap">
<el-option label="linkText" value="linkText"></el-option> <el-select v-model="content.operateLocType" class="select">
<el-option label="partialLinkText" value="partialLinkText"></el-option> <el-option label="id" value="id"></el-option>
<el-option label="css" value="css"></el-option> <el-option label="name" value="name"></el-option>
<el-option label="xpath" value="xpath"></el-option> <el-option label="className" value="className"></el-option>
<el-option label="table" value="table"></el-option> <el-option label="tagName" value="tagName"></el-option>
<el-option label="value" value="value"></el-option> <el-option label="linkText" value="linkText"></el-option>
<el-option label="index" value="index"></el-option> <el-option label="partialLinkText" value="partialLinkText"></el-option>
</el-select> <el-option label="css" value="css"></el-option>
<el-input v-model="content.operateLocValue" placeholder="请输入元素名称" class="select"></el-input> <el-option label="xpath" value="xpath"></el-option>
<el-option label="table" value="table"></el-option>
<el-option label="value" value="value"></el-option>
<el-option label="index" value="index"></el-option>
</el-select>
<el-input v-model="content.operateLocValue" placeholder="请输入元素名称" class="select"></el-input>
</div>
</div> </div>
</div> </div>
<div class="time-right">
<el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch>
<el-button type="text" icon="el-icon-delete" style="color: red;" @click="deleteAssertion('2', index, index2)"></el-button>
</div>
</div> </div>
<div class="time-right"> <!-- 断言方式和期望值部分 -->
<el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch> <div class="assertion-content">
<el-button type="text" icon="el-icon-delete" style="color: red;" @click="deleteAssertion('2', index, index2)"></el-button> <el-select v-model="content.assertionMode" class="select" style="width: 100%; margin-bottom: 10px;">
</div>
<div class="time-left">
<el-select v-model="content.assertionMode">
<el-option key="1" label="元素被选中(Checked)" value="1"></el-option> <el-option key="1" label="元素被选中(Checked)" value="1"></el-option>
<el-option key="2" label="元素可编辑(Editable)" value="2"></el-option> <el-option key="2" label="元素可编辑(Editable)" value="2"></el-option>
<el-option key="3" label="元素存在(ElementPresent)" value="3"></el-option> <el-option key="3" label="元素存在(ElementPresent)" value="3"></el-option>
@@ -463,59 +467,69 @@
<el-option key="10" label="元素文本包含期望(InText)" value="10"></el-option> <el-option key="10" label="元素文本包含期望(InText)" value="10"></el-option>
<el-option key="11" label="元素文本不包含期望(NotInText)" value="11"></el-option> <el-option key="11" label="元素文本不包含期望(NotInText)" value="11"></el-option>
</el-select> </el-select>
<el-input v-model="content.expectations" placeholder="请输入期望值"></el-input> <el-input
v-model="content.expectations"
placeholder="请输入期望值"
class="select"
:disabled="['1','2','3','4','5','6'].includes(content.assertionMode)"
style="width: 100%;">
</el-input>
</div> </div>
</div> </div>
</div> </div>
<!-- 下拉框 --> <!-- 下拉框 -->
<div v-if="item.assertionQOList && item.assertionQOList.dropdownBoxes && item.assertionQOList.dropdownBoxes.length > 0" class="information"> <div v-if="item.assertionQOList && item.assertionQOList.dropdownBoxes && item.assertionQOList.dropdownBoxes.length > 0" class="information">
<div>下拉框</div> <div>下拉框</div>
<div v-for="(content, index2) in item.assertionQOList.dropdownBoxes" class="time"> <div v-for="(content, index2) in item.assertionQOList.dropdownBoxes" class="assertion-block">
<div class="time-left"> <!-- 元素选择部分 -->
<div class="operateObject-wrap"> <div class="time">
<el-select v-model="content.operateObject" class="select" @change="() => handleOperateObjectChange(content)"> <div class="time-left">
<el-option key="1" label="元素对象" value="1"></el-option> <div class="operateObject-wrap">
<el-option key="2" label="元素定位" value="2"></el-option> <el-select v-model="content.operateObject" class="select" @change="() => handleOperateObjectChange(content)">
</el-select> <el-option key="1" label="元素对象" value="1"></el-option>
<!-- 元素对象 --> <el-option key="2" label="元素定位" value="2"></el-option>
<div v-show="content.operateObject === '1'" class="operateObject-wrap">
<el-select v-model="content.operateGroupId" class="select" @change="handleDropdownBoxGroupChange(content)" placeholder="请选择元素组">
<el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
<el-select v-model="content.operateElementId" class="select" placeholder="请选择元素"> <!-- 元素对象 -->
<el-option v-for="item in elementList" :key="item.id" :label="item.name" :value="item.id"></el-option> <div v-show="content.operateObject === '1'" class="operateObject-wrap">
</el-select> <el-select v-model="content.operateGroupId" class="select" @change="handleDropdownBoxGroupChange(content)" placeholder="请选择元素组">
</div> <el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id"></el-option>
<!-- 元素定位 --> </el-select>
<div v-show="content.operateObject === '2'" class="operateObject-wrap"> <el-select v-model="content.operateElementId" class="select" placeholder="请选择元素">
<el-select v-model="content.operateLocType" class="select"> <el-option v-for="item in elementList" :key="item.id" :label="item.name" :value="item.id"></el-option>
<el-option label="id" value="id"></el-option> </el-select>
<el-option label="name" value="name"></el-option> </div>
<el-option label="className" value="className"></el-option> <!-- 元素定位 -->
<el-option label="tagName" value="tagName"></el-option> <div v-show="content.operateObject === '2'" class="operateObject-wrap">
<el-option label="linkText" value="linkText"></el-option> <el-select v-model="content.operateLocType" class="select">
<el-option label="partialLinkText" value="partialLinkText"></el-option> <el-option label="id" value="id"></el-option>
<el-option label="css" value="css"></el-option> <el-option label="name" value="name"></el-option>
<el-option label="xpath" value="xpath"></el-option> <el-option label="className" value="className"></el-option>
<el-option label="table" value="table"></el-option> <el-option label="tagName" value="tagName"></el-option>
<el-option label="value" value="value"></el-option> <el-option label="linkText" value="linkText"></el-option>
<el-option label="index" value="index"></el-option> <el-option label="partialLinkText" value="partialLinkText"></el-option>
</el-select> <el-option label="css" value="css"></el-option>
<el-input v-model="content.operateLocValue" placeholder="请输入元素名称" class="select"></el-input> <el-option label="xpath" value="xpath"></el-option>
<el-option label="table" value="table"></el-option>
<el-option label="value" value="value"></el-option>
<el-option label="index" value="index"></el-option>
</el-select>
<el-input v-model="content.operateLocValue" placeholder="请输入元素名称" class="select"></el-input>
</div>
</div> </div>
</div> </div>
<div class="time-right">
<el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch>
<el-button type="text" icon="el-icon-delete" style="color: red;" @click="deleteAssertion('3', index, index2)"></el-button>
</div>
</div> </div>
<div class="time-right"> <!-- 断言方式和期望值部分 -->
<el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch> <div class="assertion-content">
<el-button type="text" icon="el-icon-delete" style="color: red;" @click="deleteAssertion('3', index, index2)"></el-button> <el-select v-model="content.assertionMode" class="select" style="width: 100%; margin-bottom: 10px;">
</div>
<div class="time-left">
<el-select v-model="content.assertionMode">
<el-option key="1" label="所选元素的值等于期望(SelectedValue)" value="1"></el-option> <el-option key="1" label="所选元素的值等于期望(SelectedValue)" value="1"></el-option>
<el-option key="2" label="下拉框选项显示的文本等于期望(SelectedLabel) " value="2"></el-option> <el-option key="2" label="下拉框选项显示的文本等于期望(SelectedLabel) " value="2"></el-option>
<el-option key="3" label="所选元素的值不等于期望(NotSelectedValue) " value="3"></el-option> <el-option key="3" label="所选元素的值不等于期望(NotSelectedValue) " value="3"></el-option>
</el-select> </el-select>
<el-input v-model="content.expectations" placeholder="请输入期望值"></el-input> <el-input v-model="content.expectations" placeholder="请输入期望值" class="select" style="width: 100%;"></el-input>
</div> </div>
</div> </div>
</div> </div>
@@ -524,7 +538,7 @@
<div>网页标题</div> <div>网页标题</div>
<div v-for="(content, index2) in item.assertionQOList.webTitles" class="time"> <div v-for="(content, index2) in item.assertionQOList.webTitles" class="time">
<div class="time-left"> <div class="time-left">
<el-input v-model="content.expectations" placeholder="请输入期望的网页标题"></el-input> <el-input v-model="content.expectations" placeholder="请输入期望的网页标题" style="width: 300px;"></el-input>
</div> </div>
<div class="time-right"> <div class="time-right">
<el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch> <el-switch v-model="content.isDisabled" :active-value="1" :inactive-value="0"></el-switch>
@@ -709,6 +723,7 @@ export default {
}, },
isDisabled: '1', isDisabled: '1',
name: '数据提取', name: '数据提取',
activeCollapse: '', // 初始化折叠面板状态
} }
this.saveForm.beforeList.push(param) this.saveForm.beforeList.push(param)
} }
@@ -736,6 +751,7 @@ export default {
}, },
isDisabled: '1', isDisabled: '1',
name: '数据提取', name: '数据提取',
activeCollapse: '', // 初始化折叠面板状态
} }
this.saveForm.afterList.push(param) this.saveForm.afterList.push(param)
} else { } else {
@@ -745,6 +761,7 @@ export default {
operateType: '2', // 断言 operateType: '2', // 断言
isDisabled: '1', isDisabled: '1',
name: '断言', name: '断言',
activeCollapse: '', // 初始化折叠面板状态
assertionQOList: { assertionQOList: {
popupTexts: [], // 弹窗文本 popupTexts: [], // 弹窗文本
elementAssertions: [], // 元素断言 elementAssertions: [], // 元素断言
@@ -892,15 +909,15 @@ export default {
break break
case '2': case '2':
// 元素断言 // 元素断言
this.saveForm.afterList[val].assertionQOList.popupTexts = this.saveForm.afterList[val].assertionQOList.elementAssertions.filter((item, index) => index !== val2) this.saveForm.afterList[val].assertionQOList.elementAssertions = this.saveForm.afterList[val].assertionQOList.elementAssertions.filter((item, index) => index !== val2)
break break
case '3': case '3':
// 下拉框 // 下拉框
this.saveForm.afterList[val].assertionQOList.popupTexts = this.saveForm.afterList[val].assertionQOList.dropdownBoxes.filter((item, index) => index !== val2) this.saveForm.afterList[val].assertionQOList.dropdownBoxes = this.saveForm.afterList[val].assertionQOList.dropdownBoxes.filter((item, index) => index !== val2)
break break
case '4': case '4':
// 网页标题 // 网页标题
this.saveForm.afterList[val].assertionQOList.popupTexts = this.saveForm.afterList[val].assertionQOList.webTitles.filter((item, index) => index !== val2) this.saveForm.afterList[val].assertionQOList.webTitles = this.saveForm.afterList[val].assertionQOList.webTitles.filter((item, index) => index !== val2)
break break
} }
}, },
@@ -1058,7 +1075,7 @@ export default {
} }
</script> </script>
<style scoped lang="scss"> <style lang="scss" scoped>
.advanced-setting { .advanced-setting {
padding: 20px; padding: 20px;
@@ -1107,45 +1124,73 @@ export default {
width: 200px; width: 200px;
} }
.list { .list {
padding: 20px 0px; padding: 20px 0px;
.el-collapse {
margin: 15px 0;
border-top: 1px solid #EBEEF5;
border-bottom: 1px solid #EBEEF5;
::v-deep .el-collapse-item__header {
padding: 15px 0;
font-size: 14px;
}
::v-deep .el-collapse-item__wrap {
padding: 10px 0;
}
}
.number { .number {
height: 24px; height: 28px;
width: 24px; width: 28px;
border-radius: 12px; border-radius: 50%;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
border: solid 1px black; background-color: #409EFF;
color: white;
font-size: 14px;
font-weight: 500;
box-shadow: 0 2px 4px rgba(64, 158, 255, 0.2);
margin-right: 10px;
transition: transform 0.3s ease;
} }
.time { .time {
display: flex; display: flex;
align-items: center; align-items: center;
padding: 10px; padding: 15px;
justify-content: space-between; justify-content: space-between;
width: 100%; width: 100%;
&:hover .number {
transform: scale(1.05);
}
.time-right { .time-right {
gap: 10px; gap: 10px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: flex-end; justify-content: flex-end;
} }
}
.time-left { .time-left {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 10px; gap: 10px;
> div:nth-child(2) { // 针对操作名称文字(等待时间、断言等)
font-size: 15px;
font-weight: 500;
}
}
} }
.collapse-content { .collapse-content {
padding: 15px; padding: 15px;
} }
} }
.operateObject-wrap { .operateObject-wrap {
@@ -1156,5 +1201,67 @@ export default {
.information { .information {
padding: 10px; padding: 10px;
} }
.assertion-block {
margin-bottom: 20px;
padding: 10px;
border: 1px solid #EBEEF5;
border-radius: 4px;
.assertion-content {
margin-top: 10px;
padding: 10px;
background-color: #f5f7fa;
border-radius: 4px;
.select, .el-input {
width: 300px !important;
margin-bottom: 10px;
}
}
}
.operateObject-wrap {
display: flex;
flex-wrap: wrap;
gap: 10px;
.select {
min-width: 200px;
}
}
}
.time {
display: flex;
align-items: flex-start;
justify-content: space-between;
margin-bottom: 10px;
.time-left {
flex: 1;
display: flex;
align-items: center;
gap: 10px;
}
.time-right {
display: flex;
align-items: center;
gap: 10px;
}
}
.select {
margin-right: 10px;
}
.information {
margin-top: 20px;
> div:first-child {
font-weight: bold;
margin-bottom: 10px;
}
} }
</style> </style>

View File

@@ -1,57 +1,60 @@
<template> <template>
<folder-page type="automation" @click="folderHandleSelected" ref="folder"> <folder-page type="automation" @click="folderHandleSelected" ref="folder">
<div class="header"> <div v-if="searchForm.groupId">
<el-dropdown @command="handleCommand"> <div class="header">
<span class="el-dropdown-link"> <el-dropdown @command="handleCommand">
<i style="border: 1px solid #DCDFE6; padding: 5px 15px; border-radius: 4px;" class="el-icon-plus"></i> <span class="el-dropdown-link">
</span> <i style="border: 1px solid #DCDFE6; padding: 5px 15px; border-radius: 4px;" class="el-icon-plus"></i>
<el-dropdown-menu slot="dropdown"> </span>
<el-dropdown-item command="1">创建场景</el-dropdown-item> <el-dropdown-menu slot="dropdown">
</el-dropdown-menu> <el-dropdown-item command="1">创建场景</el-dropdown-item>
</el-dropdown> </el-dropdown-menu>
<div class="searchInput"> </el-dropdown>
<i class="el-icon-search"></i> <div class="searchInput">
<el-input class="input" v-model="searchForm.keyword" placeholder="根据名称搜索" @blur="searchList"></el-input> <i class="el-icon-search"></i>
<el-input class="input" v-model="searchForm.keyword" placeholder="根据名称搜索" @blur="searchList"></el-input>
</div>
</div>
<div class="list">
<el-table :data="automationList">
<el-table-column type="selection" width="55" />
<el-table-column prop="id" label="ID" width="50" align="center" />
<el-table-column prop="name" label="场景名称" min-width="150" align="center" sortable />
<el-table-column prop="caseLevel" label="用例等级" min-width="150" align="center" sortable>
<template slot-scope="scope">
<el-tag v-if="scope.row.caseLevel" :type="priorityColor[scope.row.caseLevel]">{{ scope.row.caseLevel
}}</el-tag>
</template>
</el-table-column>
<el-table-column prop="status" label="状态" min-width="150" align="center" sortable>
<template slot-scope="scope">
<div v-if="scope.row.status === '1'">未开始</div>
<div v-if="scope.row.status === '2'">进行中</div>
<div v-if="scope.row.status === '3'">已完成</div>
</template>
</el-table-column>
<el-table-column prop="label" label="标签" min-width="150" align="center" />
<el-table-column prop="createBy" label="创建人" min-width="150" align="center" sortable />
<el-table-column prop="dutyBy" label="责任人" min-width="150" align="center" sortable />
<el-table-column prop="updateTime" label="最后更新时间" min-width="180" align="center" sortable />
<el-table-column prop="stepsNumber" label="步骤数" min-width="80" align="center" />
<el-table-column prop="executionResult" label="执行结果" min-width="150" align="center" sortable />
<el-table-column prop="passRate" label="通过率" min-width="150" align="center" sortable />
<el-table-column prop="action" label="操作" align="center" fixed="right" width="200px">
<template slot-scope="scope">
<el-button type="text" icon="el-icon-edit-outline" @click="hadleClickEdit(scope.row)">编辑</el-button>
<el-button type="text" icon="el-icon-view" @click="handleClickDetail(scope.row)"
style="color: green;">执行</el-button>
<el-button type="text" icon="el-icon-delete" style="color: red;"
@click="hadleClickDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
:page-size="searchForm.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total" />
</div> </div>
</div> </div>
<div class="list"> <el-empty v-else/>
<el-table :data="automationList">
<el-table-column type="selection" width="55" />
<el-table-column prop="id" label="ID" width="50" align="center" />
<el-table-column prop="name" label="场景名称" min-width="150" align="center" sortable />
<el-table-column prop="caseLevel" label="用例等级" min-width="150" align="center" sortable>
<template slot-scope="scope">
<el-tag v-if="scope.row.caseLevel" :type="priorityColor[scope.row.caseLevel]">{{ scope.row.caseLevel
}}</el-tag>
</template>
</el-table-column>
<el-table-column prop="status" label="状态" min-width="150" align="center" sortable>
<template slot-scope="scope">
<div v-if="scope.row.status === '1'">未开始</div>
<div v-if="scope.row.status === '2'">进行中</div>
<div v-if="scope.row.status === '3'">已完成</div>
</template>
</el-table-column>
<el-table-column prop="label" label="标签" min-width="150" align="center" />
<el-table-column prop="createBy" label="创建人" min-width="150" align="center" sortable />
<el-table-column prop="dutyBy" label="责任人" min-width="150" align="center" sortable />
<el-table-column prop="updateTime" label="最后更新时间" min-width="180" align="center" sortable />
<el-table-column prop="stepsNumber" label="步骤数" min-width="80" align="center" />
<el-table-column prop="executionResult" label="执行结果" min-width="150" align="center" sortable />
<el-table-column prop="passRate" label="通过率" min-width="150" align="center" sortable />
<el-table-column prop="action" label="操作" align="center" fixed="right" width="200px">
<template slot-scope="scope">
<el-button type="text" icon="el-icon-edit-outline" @click="hadleClickEdit(scope.row)">编辑</el-button>
<el-button type="text" icon="el-icon-view" @click="handleClickDetail(scope.row)"
style="color: green;">执行</el-button>
<el-button type="text" icon="el-icon-delete" style="color: red;"
@click="hadleClickDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
:page-size="searchForm.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total" />
</div>
</folder-page> </folder-page>
</template> </template>
@@ -60,7 +63,7 @@ import FolderPage from "@/components/FolderPage/index.vue"
import { getAutomationList, deleteAutomation, executeAutomationData } from "../../../api/uiTest/automationTest"; import { getAutomationList, deleteAutomation, executeAutomationData } from "../../../api/uiTest/automationTest";
export default { export default {
name: "AutomationTest", name: "AutomationTestView",
components: { FolderPage }, components: { FolderPage },
data() { data() {
return { return {
@@ -79,18 +82,27 @@ export default {
groupId: null, groupId: null,
}, },
total: 0, total: 0,
isFromEdit: false, // 添加标记,用于判断是否从编辑页面返回
} }
}, },
mounted() { activated() {
// 当从编辑页面返回时,不刷新列表
if (this.isFromEdit) {
this.isFromEdit = false;
return;
}
}, },
methods: { methods: {
folderHandleSelected(id) { folderHandleSelected(id) {
if (id) { if (id) {
// 获取列表
this.searchForm.groupId = id; this.searchForm.groupId = id;
this.getAutomationListData(); // 只有不是从编辑页面返回时才刷新列表
if (!this.isFromEdit) {
this.getAutomationListData();
}
} else { } else {
this.automationList = []; this.automationList = [];
this.searchForm.groupId = null;
} }
}, },
// 获取列表 // 获取列表
@@ -112,6 +124,7 @@ export default {
}, },
// 编辑 // 编辑
hadleClickEdit(val) { hadleClickEdit(val) {
this.isFromEdit = true; // 标记即将进入编辑页面
this.$tab.openPage("编辑场景", "/ui-test/automation/edit", { id: val.id }); this.$tab.openPage("编辑场景", "/ui-test/automation/edit", { id: val.id });
}, },
// 删除 // 删除