Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
web
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
中汽测评-信息安全测评系统
web
Commits
6a130718
Commit
6a130718
authored
Mar 13, 2024
by
mzx
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'mengzixuan' of
http://gitlab.91isoft.com:90/car-test/web
into develop
parents
c98a7cad
1968a4cd
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
666 additions
and
8 deletions
+666
-8
index.vue
src/components/ImageUpload/index.vue
+20
-8
index.vue
src/views/task/testReview/confirmation-test/index.vue
+431
-0
index.vue
src/views/task/testReview/review-form/index.vue
+215
-0
No files found.
src/components/ImageUpload/index.vue
View file @
6a130718
...
@@ -42,7 +42,7 @@
...
@@ -42,7 +42,7 @@
<
template
v-if=
"fileSize"
>
且不得超过
{{
fileSize
}}
MB
</
template
>
<
template
v-if=
"fileSize"
>
且不得超过
{{
fileSize
}}
MB
</
template
>
</div>
</div>
<el-dialog
:visible
.
sync=
"dialogVisible"
width=
"800"
append-to-body
>
<el-dialog
:visible
.
sync=
"dialogVisible"
width=
"800"
append-to-body
:close-on-click-modal=
"false"
>
<img
<img
:src=
"dialogImageUrl"
:src=
"dialogImageUrl"
style=
"display: block; max-width: 100%; margin: 0 auto"
style=
"display: block; max-width: 100%; margin: 0 auto"
...
@@ -248,14 +248,26 @@ export default {
...
@@ -248,14 +248,26 @@ export default {
::v-deep
.el-dialog
{
::v-deep
.el-dialog
{
background
:
none
;
background
:
none
;
width
:
100%
;
width
:
100%
;
box-shadow
:
none
;
}
}
::v-deep
.el-dialog__headerbtn
{
//
::v-deep .el-dialog__headerbtn {
top
:
8px
!
important
;
//
top: 8px !important;
background
:
url('../../assets/icons/svg/guanbi.pn
g')
left
no-repeat
;
// background: url('../../assets/icons/svg/guanbi.sv
g') left no-repeat;
background-size
:
cover
;
//
background-size: cover;
}
//
}
::v-deep
.el-dialog__headerbtn
i
{
::v-deep
.el-dialog__headerbtn
i
{
font-size
:
25px
;
font-size
:
35px
;
visibility
:
hidden
;
color
:
white
;
//visibility: hidden;
}
// Dialog悬停样式
::v-deep
.el-dialog__headerbtn
:focus
.el-dialog__close
,
::v-deep
.el-dialog__headerbtn
:hover
.el-dialog__close
{
color
:
white
!
important
;
}
// MessageBox悬停样式
::v-deep
.el-message-box__headerbtn
:focus
.el-message-box__close
,
::v-deep
.el-message-box__headerbtn
:hover
.el-message-box__close
{
color
:
white
!
important
;
}
}
</
style
>
</
style
>
src/views/task/testReview/confirmation-test/index.vue
0 → 100644
View file @
6a130718
<
template
>
<!--查看审查问卷页面-->
<task-standard
v-loading=
"loading"
>
<div
slot=
"header-right"
>
<header-button
icon=
"arrow-left"
type=
"no-line"
@
click=
"goBack"
>
返回
</header-button>
</div>
<!--2-统计值-->
<div
class=
"main-content-style"
>
<!--任务编号,名称,单位-->
<div
class=
"task-box"
>
<div
class=
"task-header"
>
<div
class=
"task-item"
>
<span
class=
"task-label"
>
任务编号:
</span>
<span
class=
"task-content"
>
{{
model
.
carReviewTask
.
taskNo
}}
</span>
</div>
<div
class=
"task-item"
>
<span
class=
"task-label"
>
任务名称:
</span>
<span
class=
"task-content"
>
{{
task
.
taskName
}}
</span>
</div>
<div
class=
"task-item"
>
<span
class=
"task-label"
>
委托单位:
</span>
<span
class=
"task-content"
>
{{
task
.
entrustedUnit
}}
</span>
</div>
<div
class=
"task-item"
>
<span
class=
"task-label"
>
任务状态:
</span>
<span
class=
"task-content"
>
{{
getDictData
(
dict
.
type
.
test_cartype_type
,
model
.
carReviewTask
.
taskStatus
)
}}
</span>
</div>
</div>
<div
class=
"task-body"
>
<!--card统计值-->
<div
class=
"message-list"
>
<div
class=
"message-box"
style=
"background-color: #2eba3c"
>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
审查细则(条)
</div>
<div
class=
"detail-num mt10"
>
{{
model
.
carReviewTask
.
details
}}
</div>
</div>
<svg-icon
class=
"message-icon"
width=
"64px"
height=
"64px"
icon-class=
"tag_shechaxize"
></svg-icon>
</div>
<div
class=
"message-box"
style=
"background-color: #477bba"
>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
审查细则符合率(%)
</div>
<div
class=
"detail-num mt10"
>
{{
model
.
carReviewTask
.
detailsPass
}}
%
</div>
</div>
<svg-icon
class=
"message-icon"
width=
"64px"
height=
"64px"
icon-class=
"tag_fuhelv"
></svg-icon>
</div>
<div
class=
"message-box"
style=
"background-color: #eca740"
>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
标准条款(条)
</div>
<div
class=
"detail-num mt10"
>
{{
model
.
carReviewTask
.
standards
}}
</div>
</div>
<svg-icon
class=
"message-icon"
width=
"64px"
height=
"64px"
icon-class=
"tag_biaozhuntiaokuan"
></svg-icon>
</div>
<div
class=
"message-box"
style=
"background-color: #47baba"
>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
标准条款通过率
</div>
<div
class=
"detail-num mt10"
>
{{
model
.
carReviewTask
.
standardsPass
}}
%
</div>
</div>
<svg-icon
class=
"message-icon"
width=
"64px"
height=
"64px"
icon-class=
"tag_biaozhuntiaokuan"
></svg-icon>
</div>
<div
class=
"message-box"
style=
"background-color: #6c47ba"
>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
参与审查人数(人)
</div>
<div
class=
"detail-num mt10"
>
{{
model
.
carReviewTask
.
person
}}
</div>
</div>
<svg-icon
class=
"message-icon"
icon-class=
"tag_shenehrenshu"
width=
"64px"
height=
"64px"
></svg-icon>
</div>
</div>
</div>
</div>
<!--审查表单概要-->
<div>
<div
class=
"form-review-questionnaire"
>
<div
class=
"title-display"
>
<span
class=
"title-i"
></span>
<span
class=
"title-content"
>
审查表单概要
</span>
<div
class=
"control-btns"
>
<div
class=
"control-btn"
@
click=
"openAll()"
>
<icon-park
type=
"down-c"
theme=
"outline"
size=
"16"
style=
"margin-right: 5px"
fill=
"#303133"
/>
全部展开
</div>
<div
class=
"control-btn"
@
click=
"closeAll()"
>
<icon-park
type=
"up-c"
theme=
"outline"
size=
"16"
style=
"margin-right: 5px"
fill=
"#303133"
/>
全部收起
</div>
</div>
</div>
<!--审查表单概要-->
<collapse
v-model=
"activeNames"
class=
"mt10"
>
<collapse-item
v-for=
"(item, key) in model.carReviewTask.standard"
:key=
"key"
:name=
"item.chapter"
>
<span
slot=
"title"
style=
"width: 100%"
>
<div
class=
"standard-box"
>
<div
class=
"standard-left"
>
<div
class=
"standard"
>
标准:
</div>
<div
class=
"standard-title"
>
{{
item
.
chapter
+
item
.
text
}}
</div>
</div>
<div
class=
"standard-result"
>
审查结果:
<span
v-if=
"item.passed == 1"
class=
"green"
>
符合
</span>
<span
v-else
class=
"orange"
>
不符合
</span>
</div>
</div>
</span>
<table
class=
"table"
>
<tr>
<th>
审查要点
</th>
<th>
审查细则
</th>
<th
class=
"investigate-result"
>
审查结果
</th>
<th
class=
"written-by"
>
填写人
</th>
</tr>
<template
v-for=
"(keyPoint, keyPointKey) in item.keyPointList"
>
<tr
:key=
"keyPointKey"
>
<td
:rowspan=
"keyPoint.reviewDetailsList.length + 1"
>
{{
keyPoint
.
text
}}
</td>
</tr>
<template
v-for=
"(
reviewDetail, reviewDetailKey
) in keyPoint.reviewDetailsList"
>
<tr
:key=
"reviewDetailKey"
>
<td
align=
"center"
>
{{
reviewDetail
.
text
}}
</td>
<td
align=
"center"
class=
"investigate-result"
>
<el-tag
v-if=
"reviewDetail.result.passed === 1"
size=
"medium"
type=
"success"
>
符合
</el-tag
>
<el-tag
v-if=
"reviewDetail.result.passed === 0"
size=
"medium"
type=
"danger"
>
不符合
</el-tag
>
</td>
<td
align=
"center"
class=
"written-by"
>
{{
reviewDetail
.
result
?
reviewDetail
.
result
.
userName
?
reviewDetail
.
result
.
userName
:
'__'
:
'__'
}}
</td>
</tr>
</
template
>
</template>
</table>
</collapse-item>
</collapse>
</div>
<!--签字确认-->
<div
class=
"form-signature-confirmation"
>
<div
class=
"title-display"
>
<span
class=
"title-i"
></span>
<span
class=
"title-content"
>
签字确认
</span>
</div>
<div
class=
"img-display"
>
<div
class=
"img-item"
>
<div
class=
"img-label label-required"
>
检验负责人
</div>
<img
v-if=
"ruleForm.inspectionLeader"
class=
"img"
:src=
"ruleForm.inspectionLeader"
/>
<div
v-else
class=
"img"
>
<iconpark-icon
name=
"wuqianzi"
size=
"120"
></iconpark-icon>
<div
class=
"img-text"
>
暂无签字
</div>
</div>
</div>
</div>
</div>
<!--返回按钮-->
<div
class=
"bottom-btn"
>
<footer-button
type=
"default"
icon=
"arrow-left"
@
click=
"$router.go(-1)"
>
返回
</footer-button>
<footer-button
type=
"primary"
icon=
"hard-disk-one"
@
click=
"goToProcessedReview"
>
确认提交
</footer-button>
</div>
</div>
</div>
</task-standard>
</template>
<!--js逻辑-->
<
script
>
import
{
checkTaskDetail
,
carTaskSubmit
,
getBySubtaskId
}
from
'@/api/task/task'
import
collapse
from
'@/components/Collapse/collapse'
import
collapseItem
from
'@/components/Collapse/collapse-item'
import
routerMixins
from
'@/mixins/router'
export
default
{
components
:
{
collapse
:
collapse
,
'collapse-item'
:
collapseItem
},
dicts
:
[
'test_cartype_type'
],
mixins
:
[
routerMixins
],
data
()
{
return
{
isShow
:
true
,
task
:
{},
auditRequirement
:
0
,
testScenarioList
:
[
{
value
:
0
,
label
:
'TBOX-蜂窝以太网接口'
,
check
:
false
},
{
value
:
1
,
label
:
'WiFi AP接口'
,
check
:
false
},
{
value
:
2
,
label
:
'WiFi Client接口'
,
check
:
false
},
{
value
:
3
,
label
:
'充电以太网接口'
,
check
:
false
},
{
value
:
4
,
label
:
'CAN 诊断接口(OBD)'
,
check
:
false
},
{
value
:
5
,
label
:
'以太网诊断接口(OBD)'
,
check
:
false
},
{
value
:
6
,
label
:
'车载摄像头以太网接口(无线)'
,
check
:
false
},
{
value
:
7
,
label
:
'第三方应用软件'
,
check
:
false
},
{
value
:
8
,
label
:
'远程控车应用'
,
check
:
false
},
{
value
:
9
,
label
:
'USB接口'
,
check
:
false
},
{
value
:
10
,
label
:
'XCB标定'
,
check
:
false
},
{
value
:
11
,
label
:
'CCP标定'
,
check
:
false
},
{
value
:
12
,
label
:
'安全启动'
,
check
:
false
},
{
value
:
13
,
label
:
'远程控车'
,
check
:
false
},
{
value
:
14
,
label
:
'V2X'
,
check
:
false
},
{
value
:
15
,
label
:
'BT'
,
check
:
false
},
{
value
:
16
,
label
:
'BLE'
,
check
:
false
},
{
value
:
17
,
label
:
'NFC'
,
check
:
false
},
{
value
:
18
,
label
:
'射频钥匙'
,
check
:
false
},
{
value
:
19
,
label
:
'软件升级'
,
check
:
false
},
{
value
:
20
,
label
:
'ECU固体'
,
check
:
false
}
],
checkTestScenarioList
:
[],
model
:
{
carReviewTask
:
{},
reviewSceneChangeTasks
:
{},
detailsList
:
[]
},
columns
:
[],
ruleForm
:
{
enterpriseLeader
:
''
,
inspectionLeader
:
''
,
result
:
[]
},
activeNames
:
[],
rules
:
{
enterpriseLeader
:
[
{
required
:
true
,
message
:
'请输入车企负责人'
,
trigger
:
'blur'
}
],
inspectionLeader
:
[
{
required
:
true
,
message
:
'请输入检验负责人'
,
trigger
:
'blur'
}
]
},
taskId
:
''
,
loading
:
false
}
},
// async mounted() {
// if (this.$route.query.id) {
// this.taskId = this.$route.query.id
// }
// await this.getTask()
// this.openAll()
// },
methods
:
{
/**
* 获取任务详情
*/
async
getTask
()
{
this
.
loading
=
true
const
res
=
await
checkTaskDetail
({
taskId
:
this
.
taskId
})
this
.
loading
=
false
if
(
res
.
code
===
200
)
{
this
.
model
=
res
.
data
await
this
.
getTaskDetail
()
if
(
this
.
model
.
carReviewTask
.
imagesUrl
)
{
const
imgs
=
this
.
model
.
carReviewTask
.
imagesUrl
.
split
(
','
)
this
.
ruleForm
.
enterpriseLeader
?
process
.
env
.
VUE_APP_IMAGE_API
+
imgs
[
0
]
:
''
this
.
ruleForm
.
inspectionLeader
?
process
.
env
.
VUE_APP_IMAGE_API
+
imgs
[
1
]
:
''
}
}
else
{
this
.
$modal
.
msgError
(
res
.
msg
)
}
},
/**
* 获取任务详情
*/
async
getTaskDetail
()
{
const
result
=
await
getBySubtaskId
({
id
:
this
.
taskId
})
if
(
result
.
code
===
200
)
{
this
.
task
=
result
.
data
}
},
/* 返回跳转*/
goToProcessedReview
()
{
// if (!this.ruleForm.enterpriseLeader) {
// this.$message.error('请车企负责人签字')
// return
// }
// if (!this.ruleForm.inspectionLeader) {
// this.$message.error('请检验负责人签字')
// return
// }
this
.
ruleForm
.
taskId
=
this
.
taskId
const
formData
=
{
imagesUrl
:
[
this
.
ruleForm
.
enterpriseLeader
,
this
.
ruleForm
.
inspectionLeader
],
taskId
:
this
.
taskId
}
carTaskSubmit
(
formData
).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
this
.
$modal
.
msgSuccess
(
'确认提交成功'
)
this
.
$router
.
push
({
path
:
'/processing/unprocessed-review'
})
}
else
{
this
.
$modal
.
msgError
(
res
.
msg
)
}
})
},
handleTestScenario
(
item
)
{
// 查看item.value在this.checkTestScenarioList里面存不存在
// 存在则删除
if
(
this
.
checkTestScenarioList
.
includes
(
item
.
value
))
{
this
.
checkTestScenarioList
.
splice
(
this
.
checkTestScenarioList
.
indexOf
(
item
.
label
),
1
)
item
.
check
=
false
}
else
{
item
.
check
=
true
this
.
checkTestScenarioList
.
push
(
item
.
value
)
}
console
.
log
(
'李斯特'
,
this
.
checkTestScenarioList
)
},
openAll
()
{
this
.
activeNames
=
this
.
model
.
carReviewTask
.
standard
.
map
(
i
=>
{
return
i
.
chapter
})
},
closeAll
()
{
this
.
activeNames
=
[]
}
}
}
</
script
>
src/views/task/testReview/review-form/index.vue
0 → 100644
View file @
6a130718
<
template
>
<!--查看试验方案页面-->
<task-standard
v-loading=
"loading"
>
<div
slot=
"header-right"
>
<header-button
icon=
"arrow-left"
class=
"back-btn"
type=
"no-line"
@
click=
"goBack"
>
返回
</header-button>
</div>
<!--2-统计值-->
<div
class=
"main-content-style"
>
<!--任务编号,名称,单位-->
<div
class=
"task"
>
<div
class=
"task-item"
>
<span
class=
"task-label"
>
任务编号:
</span>
<span
class=
"task-content"
>
{{
model
.
systemReviewTask
.
taskNo
}}
</span>
</div>
<div
class=
"task-item"
>
<span
class=
"task-label"
>
任务名称:
</span>
<span
class=
"task-content"
>
{{
task
.
taskName
}}
</span>
</div>
<div
class=
"task-item"
>
<span
class=
"task-label"
>
委托单位:
</span>
<span
class=
"task-content"
>
{{
task
.
entrustedUnit
}}
</span>
</div>
<div
class=
"task-item"
>
<span
class=
"task-label"
>
任务状态:
</span>
<span
class=
"task-content"
>
{{
getDictData
(
dict
.
type
.
task_test_status
,
model
.
systemReviewTask
.
taskStatus
)
}}
</span>
</div>
</div>
<!--查看试验方案列表-->
<div>
<div
class=
"form-review-questionnaire"
>
<!--查看试验方案列表-->
<table
class=
"table"
>
<col
style=
"width: 100px"
/>
<thead>
<tr>
<th>
章节号
</th>
<th>
标准技术要求
</th>
<th>
标准测试方法
</th>
<th>
测试场景
</th>
<th>
测试类型
</th>
<th>
用例编号
</th>
<th>
用例名称
</th>
<th>
工具
</th>
<th>
对应输入
</th>
<th>
测试用例
</th>
</tr>
</thead>
<tbody>
<!-- 循环遍历 keyPointList -->
<template
v-for=
"(i, PointIndex) in tableData.keyPointList"
>
<tr
:key=
"'PointIndex1' + PointIndex"
>
<td
align=
"center"
:rowspan=
"getRows(i)"
>
{{
'7.1.1'
}}
</td>
<td
align=
"center"
:rowspan=
"getRows(i)"
>
{{
i
.
text
}}
</td>
<td
align=
"center"
:rowspan=
"getRows(i)"
>
{{
i
.
text
}}
</td>
</tr>
<!-- 循环遍历 reviewDetailsList -->
<template
v-for=
"(v, reviewDetailIndex) in i.reviewDetailsList"
>
<tr
:key=
"'reviewDetailIndex' + PointIndex + reviewDetailIndex"
>
<td
align=
"center"
>
{{
'测试场景'
}}
</td>
<td
align=
"center"
>
{{
'测试类型'
}}
</td>
<td
align=
"center"
>
{{
'用例编号'
}}
</td>
<td
align=
"center"
>
{{
'用例名称'
}}
</td>
<td
align=
"center"
>
{{
'工具'
}}
</td>
<td
align=
"center"
>
{{
v
.
text
}}
</td>
<td
align=
"center"
>
<template
v-for=
"(a, reviewSceneIndex) in v.reviewSceneList"
>
<div
:key=
"
'reviewSceneIndex' +
PointIndex +
reviewDetailIndex +
reviewSceneIndex
"
>
<span>
{{
reviewSceneIndex
+
1
+
'、'
+
a
.
text
}}
</span>
<br
/>
</div>
</
template
>
</td>
</tr>
</template>
</template>
</tbody>
</table>
</div>
<!--返回按钮-->
<div
class=
"bottom-btn"
>
<footer-button
type=
"default"
icon=
"arrow-left"
@
click=
"$router.go(-1)"
>
返回
</footer-button>
<!-- <el-button type="primary" @click="goToProcessedReview">
确认提交
</el-button> -->
</div>
</div>
</div>
</task-standard>
</template>
<!--js逻辑-->
<
script
>
import
{
getRows
,
getRows2
}
from
'../../../../utils/reviewDetailsTable'
import
routerMixins
from
'@/mixins/router'
import
{
listInspection
}
from
'../../../../api/setting/standardTerms'
export
default
{
mixins
:
[
routerMixins
],
dicts
:
[
'task_test_status'
],
data
()
{
return
{
tableData
:
[],
model
:
{
systemReviewTask
:
{},
reviewSceneChangeTasks
:
{},
detailsList
:
[]
},
task
:
{},
taskId
:
''
,
loading
:
false
}
},
mounted
()
{
this
.
init
()
},
methods
:
{
/**
* 获取任务详情
*/
async
getTest
()
{
// this.loading = true
// const res = await reviewTaskDetail({
// taskId: '1767377960098127873'
// })
// this.loading = false
// if (res.code === 200) {
// await this.getTaskDetail()
// this.model = res.data
// } else {
// this.$modal.msgError(res.msg)
// }
},
// async getTaskDetail() {
// const result = await getBySubtaskId({
// id: '1767377960098127873'
// })
// if (result.code === 200) {
// this.task = result.data
// }
// }
getRows
,
getRows2
,
/** 获取体系审查、车型审查检验内容 */
init
()
{
this
.
loading
=
true
listInspection
({
id
:
'1744181159757221888'
}).
then
(
res
=>
{
this
.
tableData
=
res
.
data
this
.
loading
=
false
})
}
}
}
</
script
>
<
style
scoped
>
.table
th
{
background-color
:
#f2f2f2
!important
;
}
</
style
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment