Commit 56834dbc authored by mzx's avatar mzx

审查内容库管理页面完善,发起新任务页面websocket调试,测试矩阵页面开发

parent 4f03e36f
<template>
<el-dialog
:visible.sync="dialogManger.dialogVisible"
:title="modelTitle"
width="1200"
append-to-body
destroy-on-close
:before-close="handleClose"
>
<el-table
v-loading="loading"
style="width: 100%; min-height: 50vh"
border
:scroll-x="'1500px'"
:default-sort="{ prop: 'createTime', order: 'descending' }"
:data="tableData"
>
<el-table-column type="index" width="60" label="序号" align="center">
<template slot-scope="scope">
<span>{{ scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column
prop="section"
label="测试场景"
min-width="200"
align="center"
>
</el-table-column>
<el-table-column
prop="require"
label="测试类型"
min-width="200"
align="center"
>
</el-table-column>
<el-table-column
prop="test"
label="用例编号"
min-width="200"
align="center"
>
</el-table-column>
<el-table-column
prop="test"
label="用例名称"
min-width="200"
align="center"
>
</el-table-column>
</el-table>
</el-dialog>
</template>
<script>
import page from '@/mixins/page'
export default {
mixins: [page],
props: {
dialogManger: {
type: Object,
default: () => {
return {
dialogVisible: false,
source: {}
}
}
}
},
data() {
return {
tableData: []
}
},
computed: {
modelTitle: function () {
return '检验内容'
}
},
created() {},
methods: {
handleClose() {
this.dialogManger.dialogVisible = false
}
}
}
</script>
<style scoped></style>
...@@ -87,14 +87,8 @@ ...@@ -87,14 +87,8 @@
></right-toolbar> ></right-toolbar>
</el-row> </el-row>
<div v-if="refreshTable && Number(queryParams.type) === 1">
{{ '体系审查' }}
</div>
<div v-if="refreshTable && Number(queryParams.type) === 2">
{{ '车型审查' }}
</div>
<el-table <el-table
v-if="refreshTable && Number(queryParams.type) === 3" v-if="refreshTable && Number(queryParams.type) !== 3"
v-loading="loading" v-loading="loading"
style="width: 100%; min-height: 50vh" style="width: 100%; min-height: 50vh"
border border
...@@ -122,24 +116,74 @@ ...@@ -122,24 +116,74 @@
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="test" prop="resultNO"
label="检验结果描述(符合)" label="更新时间"
min-width="200" min-width="200"
align="center" align="center"
> >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="check" label="操作"
label="检验结果描述(不符合)"
min-width="200"
align="left" align="left"
min-width="160"
fixed="right"
class-name="fixed-width"
>
<template slot-scope="scope">
<el-button
v-hasPermi="['setting:standard:update']"
plain
size="mini"
type="text"
@click="handleUpdate(scope.row)"
>检验内容</el-button
>
</template>
</el-table-column>
</el-table>
<el-table
v-if="refreshTable && Number(queryParams.type) === 3"
v-loading="loading"
style="width: 100%; min-height: 50vh"
border
:scroll-x="'1500px'"
:default-sort="{ prop: 'createTime', order: 'descending' }"
:data="tableData"
>
<el-table-column type="index" width="60" label="序号" align="center">
<template slot-scope="scope">
<span>{{ scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column
prop="section"
label="标准章节"
min-width="200"
align="center"
>
</el-table-column>
<el-table-column
prop="require"
label="标准要求"
min-width="200"
align="center"
>
</el-table-column>
<el-table-column
prop="test"
label="标准测试方法"
min-width="200"
align="center"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="resultNO" prop="resultNO"
label="更新时间" label="更新时间"
min-width="200" min-width="200"
align="left" align="center"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
...@@ -158,15 +202,13 @@ ...@@ -158,15 +202,13 @@
plain plain
size="mini" size="mini"
type="text" type="text"
icon="el-icon-edit" @click="handleUpdate(3, scope.row)"
@click="handleUpdate(scope.row)" >检验内容</el-button
>修改</el-button
> >
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-if="queryParams.type > 1"
v-show="total > 0" v-show="total > 0"
:total="total" :total="total"
:page.sync="queryParams.page" :page.sync="queryParams.page"
...@@ -174,13 +216,21 @@ ...@@ -174,13 +216,21 @@
@pagination="loadData" @pagination="loadData"
> >
</pagination> </pagination>
<vehiclemodel-dialog
:dialog-manger="vehicleModelDialogManger"
@close="vehicleModelDialogManger.dialogVisible = false"
>
</vehiclemodel-dialog>
</page-standard-option> </page-standard-option>
</template> </template>
<script> <script>
import page from '@/mixins/page' import page from '@/mixins/page'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import vehicleModelDialog from './components/vehicleModelDialog'
export default { export default {
components: {}, components: {
'vehiclemodel-dialog': vehicleModelDialog
},
dicts: ['sys_scene_type'], dicts: ['sys_scene_type'],
mixins: [page], mixins: [page],
data() { data() {
...@@ -196,12 +246,17 @@ export default { ...@@ -196,12 +246,17 @@ export default {
ask: '2', ask: '2',
type: '3' type: '3'
}, },
vehicleModelDialogManger: {
dialogVisible: false,
refreshList: false,
source: {}
},
refreshList: false refreshList: false
} }
}, },
computed: { // computed: {
...mapGetters(['standard']) // ...mapGetters(['standard'])
}, // },
watch: { watch: {
refreshList(val) { refreshList(val) {
if (val) { if (val) {
...@@ -209,15 +264,27 @@ export default { ...@@ -209,15 +264,27 @@ export default {
this.refreshList = false this.refreshList = false
} }
}, },
standard(val) { 'vehicleModelDialogManger.refreshList'(val) {
if (val) { if (val) {
console.log(val) this.loadData()
this.vehicleModelDialogManger.refreshList = false
} }
} }
// standard(val) {
// if (val) {
// console.log(val)
// }
// }
}, },
methods: { methods: {
handlePointUpdate() {}, handleUpdate(id, row) {
handleUpdate() {} switch (id) {
case 3:
this.vehicleModelDialogManger.dialogVisible = true
this.vehicleModelDialogManger.dialogEditId = row
break
}
}
} }
} }
</script> </script>
......
<template>
<page-standard>
<el-table
:data="tableData"
style="width: 100%"
border
@cell-mouse-enter="cellMouseEnter"
@cell-mouse-leave="cellMouseLeave"
>
<el-table-column
prop="test"
width="240"
align="center"
label="测试场景\测试类型"
/>
<el-table-column prop="file" align="center" label="文件审核">
<template slot-scope="scope">
<div v-if="scope.row.file === '1'" class="table-span-style">
{{ '√' }}
</div>
</template>
</el-table-column>
<el-table-column prop="missedScan" align="center" label="系统服务漏扫" />
<el-table-column prop="portScanning" align="center" label="端口扫描" />
<el-table-column prop="tampering" align="center" label="篡改伪造" />
<el-table-column prop="fuzzing" align="center" label="模糊测试" />
<el-table-column prop="fuzzing" align="center" label="重放攻击" />
<el-table-column prop="fuzzing" align="center" label="非授权安装" />
<el-table-column prop="fuzzing" align="center" label="非授权访问" />
<el-table-column prop="fuzzing" align="center" label="非授权写入" />
<el-table-column prop="fuzzing" align="center" label="防病毒测试" />
<el-table-column prop="fuzzing" align="center" label="数据泄露" />
</el-table>
</page-standard>
</template>
<script>
export default {
name: 'Index',
data() {
return {
tableData: [
{
test: 'TBOX-蜂窝以太网接口',
file: '1',
missedScan: '',
portScanning: '',
tampering: '',
fuzzing: ''
},
{
test: 'WiFi AP接口',
file: '',
missedScan: '',
portScanning: '',
tampering: '',
fuzzing: ''
},
{
test: 'WiFi Client接口',
file: '1',
missedScan: '',
portScanning: '',
tampering: '',
fuzzing: ''
},
{
test: '充电以太网接口',
file: '',
missedScan: '',
portScanning: '',
tampering: '',
fuzzing: ''
},
{
test: 'CAN 诊断接口(OBD)',
file: '',
missedScan: '',
portScanning: '',
tampering: '',
fuzzing: ''
},
{
test: '以太网诊断接口(OBD)',
file: '',
missedScan: '',
portScanning: '',
tampering: '',
fuzzing: ''
},
{
test: '车载摄像头以太网接口(无线)',
file: '',
missedScan: '',
portScanning: '',
tampering: '',
fuzzing: ''
},
{
test: '第三方应用软件',
file: '',
missedScan: '',
portScanning: '',
tampering: '',
fuzzing: ''
}
],
formConfig: {
isNoHoverColor: ''
}
}
},
methods: {
/** 鼠标悬浮时的操作 */
cellMouseEnter(e, row, cell, column) {
var selrange = document.getElementsByClassName(row.id)
console.log('row', row)
console.log('cell', cell)
console.log('selrange', selrange)
if (this.formConfig.isNoHoverColor) {
cell.style.backgroundColor = ''
for (var i = 0; i < selrange.length; i++) {
selrange[i].style.backgroundColor = ''
}
} else {
cell.style.backgroundColor = 'pink'
for (var i = 0; i < selrange.length; i++) {
selrange[i].style.backgroundColor = '#fec171'
}
}
},
/** 鼠标离开时的操作 */
cellMouseLeave(e, row, cell) {
var selrange = document.getElementsByClassName(row.id)
for (var i = 0; i < selrange.length; i++) {
selrange[i].style.backgroundColor = ''
}
}
}
}
</script>
<style scoped>
::v-deep .el-table__body tr:hover > td {
background-color: #fec171 !important;
}
.table-span-style {
text-align: center;
color: #1890ff;
}
</style>
...@@ -50,8 +50,8 @@ ...@@ -50,8 +50,8 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label="任务状态" prop="taskStatus"> <el-form-item label="任务状态" prop="taskStatus">
<el-select <el-select
disabled
v-model="model.taskStatus" v-model="model.taskStatus"
disabled
style="width: 100%" style="width: 100%"
placeholder="请选择" placeholder="请选择"
clearable clearable
...@@ -421,6 +421,7 @@ export default { ...@@ -421,6 +421,7 @@ export default {
], ],
data() { data() {
return { return {
websock: null,
name: '', name: '',
formType: '1', formType: '1',
showTestScenario: false, showTestScenario: false,
...@@ -561,13 +562,47 @@ export default { ...@@ -561,13 +562,47 @@ export default {
} }
}, },
created() { created() {
this.initWebSocket()
this.getManufacturer() this.getManufacturer()
this.$nextTick(() => { this.$nextTick(() => {
this.leaderTop() this.leaderTop()
this.rowDrop() this.rowDrop()
}) })
}, },
destroyed() {
this.websock.close() // 离开路由之后断开websocket连接
},
methods: { methods: {
initWebSocket() {
// 初始化weosocket
const wsuri = 'ws://49.232.167.247:22032/websocket/1'
this.websock = new WebSocket(wsuri)
this.websock.onmessage = this.websocketonmessage
// this.websock.onopen = this.websocketonopen
this.websock.onerror = this.websocketonerror
this.websock.onclose = this.websocketclose
},
// websocketonopen() {
// // 连接建立之后执行send方法发送数据
// const actions = { test: '12345' }
// this.websocketsend(JSON.stringify(actions))
// },
websocketonerror() {
// 连接建立失败重连
this.initWebSocket()
},
websocketonmessage(e) {
// 数据接收
console.log('后端返回数据', e)
},
// websocketsend(Data) {
// // 数据发送
// this.websock.send(Data)
// },
websocketclose(e) {
// 关闭
console.log('断开连接', e)
},
/** 组长角色置顶逻辑 */ /** 组长角色置顶逻辑 */
leaderTop() { leaderTop() {
if (this.tableData.length !== 0) { if (this.tableData.length !== 0) {
......
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