Commit 4a0c90b9 authored by jiaxu.yan's avatar jiaxu.yan

feat(页面细节整理): 车型审查 体系审查模块

parent 1124e0f9
......@@ -19,3 +19,9 @@
margin-bottom: 0;
}
}
.bottom-btn {
text-align: center;
margin-top: 20px;
margin-bottom: 50px;
/* 调整按钮距离底部的距离 */
}
<template>
<!--查看审查问卷页面-->
<!--查看检查表单-->
<div>
<page-standard>
<div>
<!--1-抬头标题-->
<div class="title-style">
<div class="title-content-style">
查看审查记录(所属任务: 广汽丰田体系审查)
查看车型审查表单(所属任务:{{ model.carReviewTask.name }})
</div>
<div class="title-content-style">
<a href="/processing/processed-review">返回</a>
<a href="/processing/unprocessed-review">返回</a>
</div>
</div>
<!--2-统计值-->
......@@ -19,120 +19,94 @@
<el-row :gutter="60">
<el-col :span="8">
<el-form-item label="任务编号:">
<span>IATF17889</span>
<span>{{ model.carReviewTask.taskNo }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="任务名称:">
<span>iso三体系审核</span>
<span>{{ model.carReviewTask.name }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="委托单位:">
<span>广汽丰田有限公司</span>
<span>{{ model.carReviewTask.taskInitiatorDept }}</span>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="main-statistics">
<div class="statistics-card" style="background-color: #5ad8a6">
<div class="card-left">
<div>80%</div>
<div>审查通过率</div>
</div>
<div class="card-right">
<img
class="img"
src="@/assets/images/questionnaire/tongguolv.png"
/>
</div>
</div>
<div class="statistics-card" style="background-color: #ff99c3">
<div class="card-left">
<div>20%</div>
<div>审查失败率</div>
</div>
<div class="card-right">
<img
class="img"
src="@/assets/images/questionnaire/shibailv.png"
/>
</div>
</div>
<div class="statistics-card" style="background-color: #6dc8ec">
<div class="card-left">
<div>100条</div>
<div>审查细则数</div>
</div>
<div class="card-right">
<img
class="img"
src="@/assets/images/questionnaire/xizeshu.png"
/>
</div>
</div>
<div class="statistics-card" style="background-color: #5b8ff9">
<div class="card-left">
<div>5人</div>
<div>参与审查人数</div>
</div>
<div class="card-right">
<img
class="img"
src="@/assets/images/questionnaire/shencharenshu.png"
/>
</div>
</div>
</div>
<!--审查问卷概要-->
<div class="form-review-questionnaire">
<div class="title-display">
<span class="title-i"></span>
<span class="title-content">检查表单概要</span>
</div>
<table class="table" style="width: 100%">
<table class="table" style="width: 100%" border="1">
<thead>
<tr>
<th>标准章节</th>
<th>标准要求</th>
<th>审查要点</th>
<th>审查细则</th>
<th>符合场景</th>
<th>审查结果</th>
<th :colspan="2">记录</th>
<th colspan="2">记录</th>
<th>填写人</th>
</tr>
</thead>
<tbody>
<!-- 循环遍历 arr -->
<template v-for="(item, index) in questionnaireSummary">
<tr :key="index">
<td :rowspan="getRows2(item)">
<!-- 循环遍历 arr -->
<template v-for="(item, index) in model.carReviewTask.standard">
<tr :key="'standard-' + index">
<td
align="center"
style="text-align: center"
:rowspan="getRows2(item)"
>
{{ item.chapter }}
</td>
<td :rowspan="getRows2(item)">
<td align="center" :rowspan="getRows2(item)">
{{ item.text }}
</td>
</tr>
<!-- 循环遍历 keyPointList -->
<template v-for="(i, keyPointIndex) in item.keyPointList">
<tr :key="keyPointIndex">
<td :rowspan="getRows(i)">{{ i.text }}</td>
<template v-for="(i, PointIndex) in item.keyPointList">
<tr :key="'PointIndex-2' + PointIndex + index">
<td align="center" :rowspan="getRows(i)">
{{ i.text }}
</td>
</tr>
<!-- 循环遍历 reviewDetailsList -->
<template
v-for="(v, reviewDetailIndex) in i.reviewDetailsList"
>
<tr :key="reviewDetailIndex">
<td>
{{ v.reviewRules }}
<tr
:key="
'reviewDetailIndex-3' +
PointIndex +
reviewDetailIndex +
index
"
>
<td align="center">
{{ v.text }}
</td>
<td align="center" style="text-align: center">
{{
v.result
? v.result.passed === null
? '__'
: v.result.passed === 0
? '不通过'
: '通过'
: '__'
}}
</td>
<td align="center"></td>
<td align="center"></td>
<td align="center" style="text-align: center">
{{
v.result
? v.result.userName
? v.result.userName
: '__'
: '__'
}}
</td>
<td>{{ v.matchSscene }}</td>
<td>{{ v.reviewResults }}</td>
<td>{{ v.recordOne }}</td>
<td>{{ v.recordTwo }}</td>
<td>{{ v.filledBy }}</td>
</tr>
</template>
</template>
......@@ -141,47 +115,16 @@
</table>
</div>
<!--审查问卷概要-->
<div class="form-review-questionnaire">
<div class="title-display">
<span class="title-i"></span>
<span class="title-content">签字确认</span>
</div>
<div>
<el-form
label-width="9.25rem"
label-position="top"
class="form-custom"
>
<el-row :gutter="41">
<el-col :span="12">
<el-form-item label="车企负责人:">
<image-preview
width="400px"
height="300px"
></image-preview>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检验负责人:">
<image-preview
width="400px"
height="300px"
></image-preview>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
<!--返回按钮-->
<el-button
class="btn"
type="primary"
plain
@click="goToProcessedReview"
>返 回
</el-button>
<div class="bottom-btn">
<el-button
class="btn"
type="primary"
plain
@click="goToProcessedReview"
>返 回
</el-button>
</div>
</div>
</div>
</page-standard>
......@@ -189,156 +132,18 @@
</template>
<!--js逻辑-->
<script>
import { checkTaskDetail } from '@/api/task/task'
import { getRows, getRows2 } from '@/utils/reviewDetailsTable.js'
export default {
data() {
return {
questionnaireSummary: [
{
id: 1734848009319092224,
chapter: '5.1',
text: '车辆制造商应具备车辆全生命周期的汽车信息安全管理体系。注:车辆全生命周期包括车辆的开发阶段、生产阶段及后生产阶段。',
keyPointList: [
{
id: 1734848013714722816,
text: '车辆制造商是否建立汽车信息安全管理制度。',
reviewStandardId: 1734848011609182208,
reviewDetailsList: [
{
id: 1734848013714722817,
reviewRules:
'车辆制造商是否能够提供/展示汽车信息安全管理制度文件,制度文件应定义信息安全政策以及信息安全规则和流程,信息安全政策立致力于管理与车辆制造商活动相关的信息安全风险。',
matchSscene: 'XX',
reviewResults: '符合',
recordOne: '车辆制造商是否能够提供',
recordTwo: '2.7-4.6',
filledBy: '赵小刚'
},
{
id: 1734848013714722817,
reviewRules:
'车辆制造商是否能够提供/展示汽车信息安全管理制度正式发布的证明材料。',
matchSscene: 'XX',
reviewResults: '不符合',
recordOne: '车辆制造商是否能够提供',
recordTwo: '1.6-4.6',
filledBy: '赵小刚'
}
]
},
{
id: 1734848013714722816,
text: '车辆制造商汽车信息安全管理制度是否明确汽车信息安全管理制度适用于车辆全生命周期,包括开发阶段、生产阶段及后生产阶段。',
reviewStandardId: 1734848011609182208,
reviewDetailsList: [
{
id: 1734848013714722817,
reviewRules:
'车辆制造商汽车信息安全管理制度中明确覆盖了车辆全生命周期,包括开发阶段、生产阶段及后生产阶段,且能够提供每个阶段的流程文件。',
matchSscene: 'XX',
reviewResults: '不适用',
recordOne:
'车辆制造商汽车信息安全管理制度中明确覆盖了车辆全生命周期',
recordTwo: '2.1-6.4',
filledBy: '赵小刚'
}
]
},
{
id: 1734848013714722816,
text: '车辆全生命周期每个阶段的流程文件能够包含相应阶段的信息安全活动及要求。',
reviewStandardId: 1734848011609182208,
reviewDetailsList: [
{
id: 1734848013714722817,
reviewRules:
'开发阶段流程文件应包含概念设计、设计开发和测试验证阶段的信息安全活动及要求。',
matchSscene: 'XX',
reviewResults: '符合',
recordOne: '开发阶段流程文件应包含概念设计',
recordTwo: '1.0-4.3',
filledBy: '赵小刚'
},
{
id: 1734848013714722817,
reviewRules:
'生产阶段流程文件应包含生产控制计划制定,生产控制计划应包含生产阶段的信息安全需求,确保生产环节的信息安全需求能够顶利落地实施,且不引入新的信息安全漏洞。',
matchSscene: 'XX',
reviewResults: '符合',
recordOne: '生产阶段流程文件应包含生产控制计划制定',
recordTwo: '1.1-1.6',
filledBy: '赵小刚'
},
{
id: 1734848013714722817,
reviewRules:
'后生产阶段流程文件应考虑运维阶段、终止支持、退役阶段的信息安全需求,运维阶段。',
matchSscene: 'XX',
reviewResults: '不符合',
recordOne: '后生产阶段流程文件应考虑运维阶段',
recordTwo: '5.1-5.6',
filledBy: '赵小刚'
}
]
}
]
},
{
id: 1734848009319092224,
chapter: '5.2',
text: '汽车信息安全管理体系应包括以下内容。建立企业内部管理汽车信息安全的过程。',
keyPointList: [
{
id: 1734848013714722816,
text: '车辆制造商汽车信息安全管理制度是否建立并明确汽车信息安全管理制度的组织架构及权责。',
reviewStandardId: 1734848011609182208,
reviewDetailsList: [
{
id: 1734848013714722817,
reviewRules:
'车辆制造商应提供信息安全管理制度在建设实施中与企业其他管理流程相适配的证明材料。',
matchSscene: 'XX',
reviewResults: '不适用',
recordOne: '车辆制造商应提供信息安全管理制度',
recordTwo: 'X',
filledBy: '赵小刚'
},
{
id: 1734848013714722817,
reviewRules:
'车辆制造商应提供信息安全管理制度在建设实施中与企业其他管理流程相适配的证明材料。',
matchSscene: 'XX',
reviewResults: '不适用',
recordOne: '车辆制造商应提供信息安全管理制度',
recordTwo: '2.5-2.6',
filledBy: '李小红'
}
]
},
{
id: 1734848013714722816,
text: '车辆制造商汽车信息安全管理制度是否明确为保障汽车信息安全需求实现和维持所投入的资源。',
reviewStandardId: 1734848011609182208,
reviewDetailsList: [
{
id: 1734848013714722817,
reviewRules:
'车辆制造商应提供信息安全管理制度在建设实施中与企业其他管理流程相适配的证明材料。',
matchSscene: 'XX',
reviewResults: '符合',
recordOne: '车辆制造商应提供信息安全管理制度',
recordTwo: '2.5-2.6',
filledBy: '李小红'
}
]
}
]
}
],
ruleForm: {
enterpriseLeader: '',
inspectionLeader: ''
model: {
carReviewTask: {},
systemReviewTask: {},
reviewSceneChangeTasks: {},
detailsList: []
},
taskId: 1,
rules: {
enterpriseLeader: [
{ required: true, message: '请输入车企负责人', trigger: 'blur' }
......@@ -349,10 +154,29 @@ export default {
}
}
},
created() {
if (this.$route.query.id) {
this.taskId = this.$route.query.id
}
this.getTask()
},
methods: {
/**
* 获取任务详情
*/
async getTask() {
const res = await checkTaskDetail({
taskId: this.taskId
})
if (res.code === 200) {
this.model = res.data
} else {
this.$modal.msgError(res.msg)
}
},
/* 返回跳转*/
goToProcessedReview() {
this.$router.push('/processing/processed-review')
this.$router.push('/processing/unprocessed-review')
},
getRows,
getRows2
......@@ -380,6 +204,7 @@ export default {
font-weight: bold;
color: #666666;
}
::v-deep .el-card__body {
padding: unset !important;
}
......@@ -389,14 +214,17 @@ export default {
display: flex;
flex-direction: column;
width: 100%;
.btn {
margin: 0 8rem 8rem 4rem;
width: 5rem;
}
.main-statistics {
display: flex;
margin: 0 65px;
justify-content: space-between;
.statistics-card {
width: 320px;
height: 120px;
......@@ -405,37 +233,42 @@ export default {
display: flex;
justify-content: space-between;
padding: 30px;
.card-left {
color: #f3f3f3;
font-size: 20px;
font-weight: bold;
}
.card-right {
/*图片*/
.img {
width: 3rem;
height: 3.625rem;
::v-deep.iconfont {
font-size: 50px;
}
}
}
}
}
.form-custom {
margin-top: 3rem;
}
/* 任务编号,名称,单位样式 */
.task {
padding: 3rem 0 1rem 6rem;
::v-deep .el-form-item--medium .el-form-item__label {
font-size: 1.25rem;
font-weight: bold;
color: #999999;
}
::v-deep .el-form-item--medium .el-form-item__content {
font-size: 1.25rem;
color: #767676;
}
}
::v-deep .el-col-8 {
margin-right: 13rem;
margin-left: unset !important;
......@@ -448,26 +281,32 @@ export default {
padding: 2.5rem 4rem 1rem;
width: 100%;
height: max-content;
.title-display {
display: flex;
justify-content: flex-start;
align-items: center;
.title-i {
margin-right: 1rem;
width: 0.625rem;
height: 1.625rem;
background-color: #409eff;
}
.title-content {
font-size: 1rem;
font-weight: bold;
color: #409eff;
}
}
::v-deep .el-table--border {
width: unset !important;
}
.table {
border-collapse: collapse;
th {
text-align: center;
}
......
<template>
<!--查看审查问卷页面-->
<div>
<page-standard>
<div>
<!--1-抬头标题-->
<div class="title-style">
<div class="title-content-style">
查看车型审查原始记录(所属任务: {{ model.carReviewTask.name }})
</div>
<div class="title-content-style">
<el-button type="text" @click="goToProcessedReview">返回</el-button>
</div>
</div>
<!--2-统计值-->
<div class="main-content-style">
<!--任务编号,名称,单位-->
<el-form label-width="6.25rem" class="task">
<el-row :gutter="60">
<el-col :span="8">
<el-form-item label="任务编号:">
<span>{{ model.carReviewTask.taskNo }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="任务名称:">
<span>{{ model.carReviewTask.name }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="委托单位:">
<span>{{ model.carReviewTask.taskInitiatorDept }}</span>
</el-form-item>
</el-col>
</el-row>
</el-form>
<!--card统计值-->
<el-row
:gutter="60"
style="display: flex; margin-left: 2rem; margin-right: 2rem"
>
<el-col :span="6">
<div
class="card-statistical-style"
style="background-color: #5ad8a6"
>
<span class="content">
<span class="value">80%</span>
<span class="title">审查通过率</span>
</span>
<img
class="img"
src="@/assets/images/questionnaire/tongguolv.png"
/>
</div>
</el-col>
<el-col :span="6">
<div
class="card-statistical-style"
style="background-color: #ff99c3"
>
<span class="content">
<span class="value">20%</span>
<span class="title">审查失败率</span>
</span>
<img
class="img"
src="@/assets/images/questionnaire/shibailv.png"
/>
</div>
</el-col>
<el-col :span="6">
<div
class="card-statistical-style"
style="background-color: #6dc8ec"
>
<span class="content">
<span class="value">100条</span>
<span class="title">审查细则数</span>
</span>
<img
class="img"
src="@/assets/images/questionnaire/xizeshu.png"
/>
</div>
</el-col>
<el-col :span="6">
<div
class="card-statistical-style"
style="background-color: #5b8ff9"
>
<span class="content">
<span class="value">5人</span>
<span class="title">参与审查人数</span>
</span>
<img
class="img"
src="@/assets/images/questionnaire/shencharenshu.png"
/>
</div>
</el-col>
</el-row>
<!--检查表单概要-->
<div v-if="isShow">
<div class="form-review-questionnaire">
<div class="title-display">
<span class="title-i"></span>
<span class="title-content">检查表单概要</span>
</div>
<div>
<table class="table" style="width: 100%">
<thead>
<tr>
<th>标准章节</th>
<th>标准要求</th>
<th>审查要点</th>
<th>审查细则</th>
<th>审查结果</th>
<th colspan="2">记录</th>
<th>填写人</th>
</tr>
</thead>
<tbody>
<!-- 循环遍历 arr -->
<template
v-for="(item, index) in model.carReviewTask.standard"
>
<tr :key="'standard-' + index">
<td align="center" :rowspan="getRows2(item)">
{{ item.chapter }}
</td>
<td align="center" :rowspan="getRows2(item)">
{{ item.text }}
</td>
</tr>
<!-- 循环遍历 keyPointList -->
<template v-for="(i, PointIndex) in item.keyPointList">
<tr :key="'PointIndex-2' + PointIndex + index">
<td align="center" :rowspan="getRows(i)">
{{ i.text }}
</td>
</tr>
<!-- 循环遍历 reviewDetailsList -->
<template
v-for="(v, reviewDetailIndex) in i.reviewDetailsList"
>
<tr
:key="
'reviewDetailIndex-3' +
PointIndex +
reviewDetailIndex +
index
"
>
<td align="center">
{{ v.text }}
</td>
<td align="center">
{{
v.result
? v.result.passed === null
? '__'
: v.result.passed === 0
? '不通过'
: '通过'
: '__'
}}
</td>
<td align="center"></td>
<td align="center"></td>
<td align="center">
{{
v.result
? v.result.userName
? v.result.userName
: '__'
: '__'
}}
</td>
</tr>
</template>
</template>
</template>
</tbody>
</table>
</div>
</div>
<!--确定车型试验范围-->
<div v-if="type === '1'">
<div class="form-review-questionnaire">
<div class="title-display">
<span class="title-i"></span>
<span class="title-content">确定车型试验范围</span>
</div>
<el-form
ref="form"
:model="ruleForm"
:rules="rules"
class="img-display"
>
<el-form-item prop="enterpriseLeader" label="选择测试场景">
<br />
<el-checkbox-group
v-model="ruleForm.result"
class="result-select"
size="small"
>
<el-checkbox
v-for="city in cities"
:key="city"
:label="city"
border
>{{ city }}</el-checkbox
>
</el-checkbox-group>
</el-form-item>
</el-form>
</div>
</div>
<!--签字确认-->
<div class="form-signature-confirmation">
<div class="title-display">
<span class="title-i"></span>
<span class="title-content">签字确认</span>
</div>
<el-form
ref="form"
:model="ruleForm"
:rules="rules"
class="img-display"
>
<el-form-item prop="enterpriseLeader" label="车企负责人">
<img
class="img"
src="@/assets/images/questionnaire/sign1.png"
/>
</el-form-item>
<el-form-item prop="inspectionLeader" label="检验负责人">
<img
class="img"
src="@/assets/images/questionnaire/sign2.png"
/>
</el-form-item>
</el-form>
</div>
<!--返回按钮-->
<div class="bottom-btn">
<el-button type="primary" plain @click="$router.go(-1)">
返回
</el-button>
</div>
</div>
<div v-else class="form-review-questionnaire">
<div class="title-display">
<span class="title-i"></span>
<span class="title-content">审查问卷概要</span>
<!-- <span class="tips">
<i class="el-icon-warning"></i>
审查细则有新增、审查场景有变更,需要修改表格内容,
</span>
<span class="update-tip">去修改</span> -->
</div>
<div class="update-content">
<i class="el-icon-warning"></i>
<div>表单内容发生变更</div>
<div>审查场景有3条变更,需要修改表单填写内容</div>
<el-button type="primary" @click="goUpdate()"
>去修改表格</el-button
>
</div>
</div>
</div>
</div>
</page-standard>
</div>
</template>
<!--js逻辑-->
<script>
import { checkTaskDetail, taskSubmit } from '@/api/task/task'
import { getRows, getRows2 } from '@/utils/reviewDetailsTable.js'
export default {
data() {
return {
isShow: true,
auditRequirement: 0,
testScenarioList: [
{ value: 0, label: 'TBOX-蜂窝以太网接口', check: false },
{ value: 1, label: 'WiFi API接口', 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: ''
},
rules: {
enterpriseLeader: [
{ required: true, message: '请输入车企负责人', trigger: 'blur' }
],
inspectionLeader: [
{ required: true, message: '请输入检验负责人', trigger: 'blur' }
]
},
tableData: [
{
id: '12987122',
name: '王小虎',
amount1: '234',
amount2: '3.2',
amount3: 10
},
{
id: '12987123',
name: '王小虎',
amount1: '165',
amount2: '4.43',
amount3: 12
},
{
id: '12987124',
name: '王小虎',
amount1: '324',
amount2: '1.9',
amount3: 9
},
{
id: '12987125',
name: '王小虎',
amount1: '621',
amount2: '2.2',
amount3: 17
},
{
id: '12987126',
name: '王小虎',
amount1: '539',
amount2: '4.1',
amount3: 15
},
{
id: '12987123',
name: '王小虎',
amount1: '165',
amount2: '4.43',
amount3: 12
},
{
id: '12987124',
name: '王小虎',
amount1: '324',
amount2: '1.9',
amount3: 9
},
{
id: '12987125',
name: '王小虎',
amount1: '621',
amount2: '2.2',
amount3: 17
},
{
id: '12987126',
name: '王小虎',
amount1: '539',
amount2: '4.1',
amount3: 15
},
{
id: '12987123',
name: '王小虎',
amount1: '165',
amount2: '4.43',
amount3: 12
},
{
id: '12987124',
name: '王小虎',
amount1: '324',
amount2: '1.9',
amount3: 9
},
{
id: '12987125',
name: '王小虎',
amount1: '621',
amount2: '2.2',
amount3: 17
},
{
id: '12987126',
name: '王小虎',
amount1: '539',
amount2: '4.1',
amount3: 15
},
{
id: '12987123',
name: '王小虎',
amount1: '165',
amount2: '4.43',
amount3: 12
},
{
id: '12987124',
name: '王小虎',
amount1: '324',
amount2: '1.9',
amount3: 9
},
{
id: '12987125',
name: '王小虎',
amount1: '621',
amount2: '2.2',
amount3: 17
},
{
id: '12987126',
name: '王小虎',
amount1: '539',
amount2: '4.1',
amount3: 15
}
],
taskId: '',
type: ''
}
},
mounted() {
if (this.$route.query.id) {
this.taskId = this.$route.query.id
}
if (this.$route.query.type) {
this.type = this.$route.query.type
}
this.getTask()
},
methods: {
/**
* 获取任务详情
*/
async getTask() {
const res = await checkTaskDetail({
taskId: this.taskId
})
if (res.code === 200) {
this.model = res.data
} 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)
},
getRows,
getRows2
}
}
</script>
<!--样式-->
<style scoped lang="scss">
/*标题样式*/
.title-style {
background-color: #f9f9f9;
height: 3.5rem;
width: 100%;
display: flex;
padding-right: 2rem;
justify-content: space-between;
align-items: center;
}
/*标题文字样式*/
.title-content-style {
color: #666666;
font-size: 1rem;
font-weight: bold;
margin-left: 1.5rem;
}
::v-deep .el-card__body {
padding: unset !important;
}
/*主体内容布局*/
.main-content-style {
display: flex;
flex-direction: column;
width: 100%;
.btn {
margin: 0 8rem 8rem 4rem;
width: 5rem;
}
}
/*任务编号,名称,单位样式*/
.task {
padding: 3rem 0rem 1rem 6rem;
::v-deep .el-form-item--medium .el-form-item__label {
font-size: 1.25rem;
font-weight: bold;
color: #999999;
}
::v-deep .el-form-item--medium .el-form-item__content {
font-size: 1.25rem;
color: #767676;
}
}
::v-deep .el-col-8 {
width: unset !important;
margin-right: 13rem;
margin-left: unset !important;
padding-left: unset !important;
}
/*卡片统计值样式*/
.card-statistical-style {
//width: 18rem;
display: flex;
padding: 1.5rem 2rem 1.5rem 2rem;
justify-content: space-between;
border-radius: 0.5rem;
align-items: center;
height: 8rem;
/*图片*/
.img {
width: 3rem;
height: 3.625rem;
}
.content {
display: flex;
flex-direction: column;
}
.title {
color: #ffffff;
font-size: 1.75rem;
margin: 0 !important;
}
.value {
color: #ffffff;
font-size: 1.75rem;
}
}
/*审查文件表格样式(最外层)*/
.form-review-questionnaire {
height: max-content;
width: 100%;
padding: 2.5rem 4rem 1rem 4rem;
.title-display {
display: flex;
align-items: center;
justify-content: flex-start;
.title-i {
height: 1.625rem;
margin-right: 1rem;
background-color: #409eff;
width: 0.625rem;
}
.title-content {
color: #409eff;
font-size: 1rem;
font-weight: bold;
}
}
::v-deep .el-table--border {
width: unset !important;
}
}
/*签字确认样式(最外层)*/
.form-signature-confirmation {
height: max-content;
width: 100%;
padding: 2.5rem 4rem 0rem 4rem;
/*图片*/
.img-display {
display: flex;
margin-top: 1rem;
align-items: center;
justify-content: flex-start;
.img {
border: solid 1px #b6b6b6;
width: 30rem;
height: 20rem;
margin: 0.5rem 10rem 0rem 0rem;
}
}
.title-display {
display: flex;
align-items: center;
justify-content: flex-start;
.title-i {
height: 1.625rem;
margin-right: 1rem;
background-color: #409eff;
width: 0.625rem;
}
.title-content {
color: #409eff;
font-size: 1rem;
font-weight: bold;
}
}
}
table {
margin-top: 20px;
border-collapse: collapse;
width: 100%;
}
thead {
background-color: #e7e6e6;
}
th {
border: 1px solid black;
padding: 8px;
text-align: center;
width: 300px;
height: 100%;
}
td {
border: 1px solid black;
padding: 8px;
text-align: left;
width: 300px;
height: 100%;
}
.tips {
color: #f56c6c;
margin-left: 30px;
i {
color: #f56c6c;
}
}
.update-tip {
color: #409eff;
text-decoration: underline;
cursor: pointer;
}
.update-content {
margin-top: 50px;
padding: 20px;
border: 1px solid #e4e4e4;
text-align: center;
div {
margin-bottom: 10px;
}
i {
color: #ff9900;
font-size: 100px;
}
}
.experimental-range {
height: max-content;
width: 100%;
padding: 2.5rem 4rem 1rem 4rem;
.title-display {
display: flex;
align-items: center;
justify-content: flex-start;
.title-i {
height: 1.625rem;
margin-right: 1rem;
background-color: #409eff;
width: 0.625rem;
}
.title-content {
color: #409eff;
font-size: 1rem;
font-weight: bold;
}
}
}
.test-scenario-container {
display: flex;
flex-wrap: wrap;
.test-scenario {
width: 220px;
height: 40px;
border: 1px solid #dcdfe6;
background-color: #ffffff;
margin: 0 10px 10px 0;
border-radius: 30px;
div {
text-align: center;
position: relative;
top: 8px;
}
}
.check-test-scenario {
width: 220px;
height: 40px;
border: 1px solid #a1cfff;
background-color: #f0f7ff;
margin: 0 10px 10px 0;
border-radius: 30px;
div {
color: #68b6ff;
text-align: center;
position: relative;
top: 8px;
}
}
}
</style>
<template>
<!--查看审查问卷页面-->
<div>
<page-standard>
<div>
<!--1-抬头标题-->
<div class="title-style">
<div class="title-content-style">
确认车型审查结果(所属任务: {{ model.carReviewTask.name }})
</div>
<div class="title-content-style">
<el-button type="text" @click="goToProcessedReview">返回</el-button>
</div>
</div>
<!--2-统计值-->
<div class="main-content-style">
<!--任务编号,名称,单位-->
<el-form label-width="6.25rem" class="task">
<el-row :gutter="60">
<el-col :span="8">
<el-form-item label="任务编号:">
<span>{{ model.carReviewTask.taskNo }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="任务名称:">
<span>{{ model.carReviewTask.name }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="委托单位:">
<span>{{ model.carReviewTask.taskInitiatorDept }}</span>
</el-form-item>
</el-col>
</el-row>
</el-form>
<!--card统计值-->
<el-row
:gutter="60"
style="display: flex; margin-left: 2rem; margin-right: 2rem"
>
<el-col :span="6">
<div
class="card-statistical-style"
style="background-color: #5ad8a6"
>
<span class="content">
<span class="value">80%</span>
<span class="title">审查通过率</span>
</span>
<img
class="img"
src="@/assets/images/questionnaire/tongguolv.png"
/>
</div>
</el-col>
<el-col :span="6">
<div
class="card-statistical-style"
style="background-color: #ff99c3"
>
<span class="content">
<span class="value">20%</span>
<span class="title">审查失败率</span>
</span>
<img
class="img"
src="@/assets/images/questionnaire/shibailv.png"
/>
</div>
</el-col>
<el-col :span="6">
<div
class="card-statistical-style"
style="background-color: #6dc8ec"
>
<span class="content">
<span class="value">100条</span>
<span class="title">审查细则数</span>
</span>
<img
class="img"
src="@/assets/images/questionnaire/xizeshu.png"
/>
</div>
</el-col>
<el-col :span="6">
<div
class="card-statistical-style"
style="background-color: #5b8ff9"
>
<span class="content">
<span class="value">5人</span>
<span class="title">参与审查人数</span>
</span>
<img
class="img"
src="@/assets/images/questionnaire/shencharenshu.png"
/>
</div>
</el-col>
</el-row>
<!--检查表单概要-->
<div v-if="isShow">
<div class="form-review-questionnaire">
<div class="title-display">
<span class="title-i"></span>
<span class="title-content">检查表单概要</span>
</div>
<div>
<table class="table" style="width: 100%">
<thead>
<tr>
<th>标准章节</th>
<th>标准要求</th>
<th>审查要点</th>
<th>审查细则</th>
<th>审查结果</th>
<th colspan="2">记录</th>
<th>填写人</th>
</tr>
</thead>
<tbody>
<!-- 循环遍历 arr -->
<template
v-for="(item, index) in model.carReviewTask.standard"
>
<tr :key="'standard-' + index">
<td align="center" :rowspan="getRows2(item)">
{{ item.chapter }}
</td>
<td align="center" :rowspan="getRows2(item)">
{{ item.text }}
</td>
</tr>
<!-- 循环遍历 keyPointList -->
<template v-for="(i, PointIndex) in item.keyPointList">
<tr :key="'PointIndex-2' + PointIndex + index">
<td align="center" :rowspan="getRows(i)">
{{ i.text }}
</td>
</tr>
<!-- 循环遍历 reviewDetailsList -->
<template
v-for="(v, reviewDetailIndex) in i.reviewDetailsList"
>
<tr
:key="
'reviewDetailIndex-3' +
PointIndex +
reviewDetailIndex +
index
"
>
<td align="center">
{{ v.text }}
</td>
<td align="center">
{{
v.result
? v.result.passed === null
? '__'
: v.result.passed === 0
? '不通过'
: '通过'
: '__'
}}
</td>
<td align="center"></td>
<td align="center"></td>
<td align="center">
{{
v.result
? v.result.userName
? v.result.userName
: '__'
: '__'
}}
</td>
</tr>
</template>
</template>
</template>
</tbody>
</table>
</div>
</div>
<!--确定车型试验范围-->
<div>
<div class="form-review-questionnaire">
<div class="title-display">
<span class="title-i"></span>
<span class="title-content">确定车型试验范围</span>
</div>
<el-form
ref="form"
:model="ruleForm"
:rules="rules"
class="img-display"
>
<el-form-item prop="enterpriseLeader" label="选择测试场景">
<br />
<el-checkbox-group
v-model="ruleForm.result"
class="result-select"
size="small"
>
<el-checkbox
v-for="item in testScenarioList"
:key="item.value"
:label="item.value"
border
>{{ item.label }}</el-checkbox
>
</el-checkbox-group>
</el-form-item>
</el-form>
</div>
</div>
<!--签字确认-->
<div class="form-signature-confirmation">
<div class="title-display">
<span class="title-i"></span>
<span class="title-content">签字确认</span>
</div>
<el-form
ref="form"
:model="ruleForm"
:rules="rules"
class="img-display"
>
<el-form-item prop="enterpriseLeader" label="车企负责人">
<img
class="img"
src="@/assets/images/questionnaire/sign1.png"
/>
</el-form-item>
<el-form-item prop="inspectionLeader" label="检验负责人">
<img
class="img"
src="@/assets/images/questionnaire/sign2.png"
/>
</el-form-item>
</el-form>
</div>
<!--返回按钮-->
<div class="bottom-btn">
<el-button type="primary" plain @click="$router.go(-1)">
返回
</el-button>
<el-button type="primary" @click="goToProcessedReview">
确认提交
</el-button>
</div>
</div>
<div v-else class="form-review-questionnaire">
<div class="title-display">
<span class="title-i"></span>
<span class="title-content">审查问卷概要</span>
<!-- <span class="tips">
<i class="el-icon-warning"></i>
审查细则有新增、审查场景有变更,需要修改表格内容,
</span>
<span class="update-tip">去修改</span> -->
</div>
<div class="update-content">
<i class="el-icon-warning"></i>
<div>表单内容发生变更</div>
<div>审查场景有3条变更,需要修改表单填写内容</div>
<el-button type="primary" @click="goUpdate()"
>去修改表格</el-button
>
</div>
</div>
</div>
</div>
</page-standard>
</div>
</template>
<!--js逻辑-->
<script>
import { checkTaskDetail, taskSubmit } from '@/api/task/task'
import { getRows, getRows2 } from '@/utils/reviewDetailsTable.js'
export default {
data() {
return {
isShow: true,
auditRequirement: 0,
testScenarioList: [
{ value: 0, label: 'TBOX-蜂窝以太网接口', check: false },
{ value: 1, label: 'WiFi API接口', 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: []
},
rules: {
enterpriseLeader: [
{ required: true, message: '请输入车企负责人', trigger: 'blur' }
],
inspectionLeader: [
{ required: true, message: '请输入检验负责人', trigger: 'blur' }
]
},
tableData: [
{
id: '12987122',
name: '王小虎',
amount1: '234',
amount2: '3.2',
amount3: 10
},
{
id: '12987123',
name: '王小虎',
amount1: '165',
amount2: '4.43',
amount3: 12
},
{
id: '12987124',
name: '王小虎',
amount1: '324',
amount2: '1.9',
amount3: 9
},
{
id: '12987125',
name: '王小虎',
amount1: '621',
amount2: '2.2',
amount3: 17
},
{
id: '12987126',
name: '王小虎',
amount1: '539',
amount2: '4.1',
amount3: 15
},
{
id: '12987123',
name: '王小虎',
amount1: '165',
amount2: '4.43',
amount3: 12
},
{
id: '12987124',
name: '王小虎',
amount1: '324',
amount2: '1.9',
amount3: 9
},
{
id: '12987125',
name: '王小虎',
amount1: '621',
amount2: '2.2',
amount3: 17
},
{
id: '12987126',
name: '王小虎',
amount1: '539',
amount2: '4.1',
amount3: 15
},
{
id: '12987123',
name: '王小虎',
amount1: '165',
amount2: '4.43',
amount3: 12
},
{
id: '12987124',
name: '王小虎',
amount1: '324',
amount2: '1.9',
amount3: 9
},
{
id: '12987125',
name: '王小虎',
amount1: '621',
amount2: '2.2',
amount3: 17
},
{
id: '12987126',
name: '王小虎',
amount1: '539',
amount2: '4.1',
amount3: 15
},
{
id: '12987123',
name: '王小虎',
amount1: '165',
amount2: '4.43',
amount3: 12
},
{
id: '12987124',
name: '王小虎',
amount1: '324',
amount2: '1.9',
amount3: 9
},
{
id: '12987125',
name: '王小虎',
amount1: '621',
amount2: '2.2',
amount3: 17
},
{
id: '12987126',
name: '王小虎',
amount1: '539',
amount2: '4.1',
amount3: 15
}
],
taskId: ''
}
},
mounted() {
if (this.$route.query.id) {
this.taskId = this.$route.query.id
}
this.getTask()
},
methods: {
/**
* 获取任务详情
*/
async getTask() {
const res = await checkTaskDetail({
taskId: this.taskId
})
if (res.code === 200) {
this.model = res.data
} else {
this.$modal.msgError(res.msg)
}
},
/* 返回跳转*/
goToProcessedReview() {
this.$modal.msgSuccess('确认提交成功')
this.$router.back()
},
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)
},
getRows,
getRows2
}
}
</script>
<!--样式-->
<style scoped lang="scss">
/*标题样式*/
.title-style {
background-color: #f9f9f9;
height: 3.5rem;
width: 100%;
display: flex;
padding-right: 2rem;
justify-content: space-between;
align-items: center;
}
/*标题文字样式*/
.title-content-style {
color: #666666;
font-size: 1rem;
font-weight: bold;
margin-left: 1.5rem;
}
::v-deep .el-card__body {
padding: unset !important;
}
/*主体内容布局*/
.main-content-style {
display: flex;
flex-direction: column;
width: 100%;
.btn {
margin: 0 8rem 8rem 4rem;
width: 5rem;
}
}
/*任务编号,名称,单位样式*/
.task {
padding: 3rem 0rem 1rem 6rem;
::v-deep .el-form-item--medium .el-form-item__label {
font-size: 1.25rem;
font-weight: bold;
color: #999999;
}
::v-deep .el-form-item--medium .el-form-item__content {
font-size: 1.25rem;
color: #767676;
}
}
::v-deep .el-col-8 {
width: unset !important;
margin-right: 13rem;
margin-left: unset !important;
padding-left: unset !important;
}
/*卡片统计值样式*/
.card-statistical-style {
//width: 18rem;
display: flex;
padding: 1.5rem 2rem 1.5rem 2rem;
justify-content: space-between;
border-radius: 0.5rem;
align-items: center;
height: 8rem;
/*图片*/
.img {
width: 3rem;
height: 3.625rem;
}
.content {
display: flex;
flex-direction: column;
}
.title {
color: #ffffff;
font-size: 1.75rem;
margin: 0 !important;
}
.value {
color: #ffffff;
font-size: 1.75rem;
}
}
/*审查文件表格样式(最外层)*/
.form-review-questionnaire {
height: max-content;
width: 100%;
padding: 2.5rem 4rem 1rem 4rem;
.title-display {
display: flex;
align-items: center;
justify-content: flex-start;
.title-i {
height: 1.625rem;
margin-right: 1rem;
background-color: #409eff;
width: 0.625rem;
}
.title-content {
color: #409eff;
font-size: 1rem;
font-weight: bold;
}
}
::v-deep .el-table--border {
width: unset !important;
}
}
/*签字确认样式(最外层)*/
.form-signature-confirmation {
height: max-content;
width: 100%;
padding: 2.5rem 4rem 0rem 4rem;
/*图片*/
.img-display {
display: flex;
margin-top: 1rem;
align-items: center;
justify-content: flex-start;
.img {
border: solid 1px #b6b6b6;
width: 30rem;
height: 20rem;
margin: 0.5rem 10rem 0rem 0rem;
}
}
.title-display {
display: flex;
align-items: center;
justify-content: flex-start;
.title-i {
height: 1.625rem;
margin-right: 1rem;
background-color: #409eff;
width: 0.625rem;
}
.title-content {
color: #409eff;
font-size: 1rem;
font-weight: bold;
}
}
}
table {
margin-top: 20px;
border-collapse: collapse;
width: 100%;
}
thead {
background-color: #e7e6e6;
}
th {
border: 1px solid black;
padding: 8px;
text-align: center;
width: 300px;
height: 100%;
}
td {
border: 1px solid black;
padding: 8px;
text-align: left;
width: 300px;
height: 100%;
}
.bottom-btn {
text-align: center;
bottom: 10px;
margin-bottom: 50px;
/* 调整按钮距离底部的距离 */
}
.tips {
color: #f56c6c;
margin-left: 30px;
i {
color: #f56c6c;
}
}
.update-tip {
color: #409eff;
text-decoration: underline;
cursor: pointer;
}
.update-content {
margin-top: 50px;
padding: 20px;
border: 1px solid #e4e4e4;
text-align: center;
div {
margin-bottom: 10px;
}
i {
color: #ff9900;
font-size: 100px;
}
}
.experimental-range {
height: max-content;
width: 100%;
padding: 2.5rem 4rem 1rem 4rem;
.title-display {
display: flex;
align-items: center;
justify-content: flex-start;
.title-i {
height: 1.625rem;
margin-right: 1rem;
background-color: #409eff;
width: 0.625rem;
}
.title-content {
color: #409eff;
font-size: 1rem;
font-weight: bold;
}
}
}
.test-scenario-container {
display: flex;
flex-wrap: wrap;
.test-scenario {
width: 220px;
height: 40px;
border: 1px solid #dcdfe6;
background-color: #ffffff;
margin: 0 10px 10px 0;
border-radius: 30px;
div {
text-align: center;
position: relative;
top: 8px;
}
}
.check-test-scenario {
width: 220px;
height: 40px;
border: 1px solid #a1cfff;
background-color: #f0f7ff;
margin: 0 10px 10px 0;
border-radius: 30px;
div {
color: #68b6ff;
text-align: center;
position: relative;
top: 8px;
}
}
}
</style>
......@@ -6,10 +6,10 @@
<!--1-抬头标题-->
<div class="title-style">
<div class="title-content-style">
确认审查结果(所属任务:{{ model.systemReviewTask.name }})
确认体系审查结果(所属任务:{{ model.systemReviewTask.name }})
</div>
<div class="title-content-style">
<el-button type="text" @click="goToProcessedReview">返回</el-button>
<el-button type="text" @click="$router.back()">返回</el-button>
</div>
</div>
<!--2-统计值-->
......@@ -355,7 +355,7 @@ export default {
},
goUpdate() {
this.$router.push({
path: '/processing/write-check-form?id=' + this.taskId
path: '/processing/systemReview/write-check-form?id=' + this.taskId
})
},
getRows,
......
......@@ -5,11 +5,8 @@
<div>
<!--1-抬头标题-->
<div class="title-style">
<div v-if="type === '1'" class="title-content-style">
查看检查表单(所属任务:{{ model.systemReviewTask.name }})
</div>
<div v-if="type === '2'" class="title-content-style">
查看检查表单(所属任务:{{ model.carReviewTask.name }})
<div class="title-content-style">
查看体系审查表单(所属任务:{{ model.systemReviewTask.name }})
</div>
<div class="title-content-style">
<a href="/processing/unprocessed-review">返回</a>
......@@ -22,209 +19,113 @@
<el-row :gutter="60">
<el-col :span="8">
<el-form-item label="任务编号:">
<span>{{
type === '1'
? model.systemReviewTask.taskNo
: model.carReviewTask.taskNo
}}</span>
<span>{{ model.systemReviewTask.taskNo }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="任务名称:">
<span>{{
type === '1'
? model.systemReviewTask.name
: model.carReviewTask.name
}}</span>
<span>{{ model.systemReviewTask.name }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="委托单位:">
<span>{{
type === '1'
? model.systemReviewTask.taskInitiatorDept
: model.carReviewTask.taskInitiatorDept
}}</span>
<span>{{ model.systemReviewTask.taskInitiatorDep }}</span>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template v-if="type === '1'">
<!--审查问卷概要-->
<div class="form-review-questionnaire">
<table class="table" style="width: 100%" border="1">
<thead>
<tr>
<th>标准章节</th>
<th>标准要求</th>
<th>审查要点</th>
<th>审查细则</th>
<th>审查结果</th>
<th colspan="2">记录</th>
<th>填写人</th>
<!--审查问卷概要-->
<div class="form-review-questionnaire">
<table class="table" style="width: 100%" border="1">
<thead>
<tr>
<th>标准章节</th>
<th>标准要求</th>
<th>审查要点</th>
<th>审查细则</th>
<th>审查结果</th>
<th colspan="2">记录</th>
<th>填写人</th>
</tr>
</thead>
<tbody>
<!-- 循环遍历 arr -->
<template
v-for="(item, index) in model.systemReviewTask.standard"
>
<tr :key="'standard-' + index">
<td
align="center"
style="text-align: center"
:rowspan="getRows2(item)"
>
{{ item.chapter }}
</td>
<td align="center" :rowspan="getRows2(item)">
{{ item.text }}
</td>
</tr>
</thead>
<tbody>
<!-- 循环遍历 arr -->
<template
v-for="(item, index) in model.systemReviewTask.standard"
>
<tr :key="'standard-' + index">
<td
align="center"
style="text-align: center"
:rowspan="getRows2(item)"
>
{{ item.chapter }}
</td>
<td align="center" :rowspan="getRows2(item)">
{{ item.text }}
<!-- 循环遍历 keyPointList -->
<template v-for="(i, PointIndex) in item.keyPointList">
<tr :key="'PointIndex-2' + PointIndex + index">
<td align="center" :rowspan="getRows(i)">
{{ i.text }}
</td>
</tr>
<!-- 循环遍历 keyPointList -->
<template v-for="(i, PointIndex) in item.keyPointList">
<tr :key="'PointIndex-2' + PointIndex + index">
<td align="center" :rowspan="getRows(i)">
{{ i.text }}
</td>
</tr>
<!-- 循环遍历 reviewDetailsList -->
<template
v-for="(v, reviewDetailIndex) in i.reviewDetailsList"
<!-- 循环遍历 reviewDetailsList -->
<template
v-for="(v, reviewDetailIndex) in i.reviewDetailsList"
>
<tr
:key="
'reviewDetailIndex-3' +
PointIndex +
reviewDetailIndex +
index
"
>
<tr
:key="
'reviewDetailIndex-3' +
PointIndex +
reviewDetailIndex +
index
"
>
<td align="center">
{{ v.text }}
</td>
<td align="center" style="text-align: center">
{{
v.result
? v.result.passed === null
? '__'
: v.result.passed === 0
? '不通过'
: '通过'
: '__'
}}
</td>
<td align="center"></td>
<td align="center"></td>
<td align="center" style="text-align: center">
{{
v.result
<td align="center">
{{ v.text }}
</td>
<td align="center" style="text-align: center">
{{
v.result
? v.result.passed === null
? '__'
: v.result.passed === 0
? '不通过'
: '通过'
: '__'
}}
</td>
<td align="center"></td>
<td align="center"></td>
<td align="center" style="text-align: center">
{{
v.result
? v.result.userName
? v.result.userName
? v.result.userName
: '__'
: '__'
}}
</td>
</tr>
</template>
</template>
</template>
</tbody>
</table>
</div>
</template>
<template v-if="type === '2'">
<!--审查问卷概要-->
<div class="form-review-questionnaire">
<table class="table" style="width: 100%" border="1">
<thead>
<tr>
<th>标准章节</th>
<th>标准要求</th>
<th>审查要点</th>
<th>审查细则</th>
<th>审查结果</th>
<th colspan="2">记录</th>
<th>填写人</th>
</tr>
</thead>
<tbody>
<!-- 循环遍历 arr -->
<template
v-for="(item, index) in model.carReviewTask.standard"
>
<tr :key="'standard-' + index">
<td
align="center"
style="text-align: center"
:rowspan="getRows2(item)"
>
{{ item.chapter }}
</td>
<td align="center" :rowspan="getRows2(item)">
{{ item.text }}
</td>
</tr>
<!-- 循环遍历 keyPointList -->
<template v-for="(i, PointIndex) in item.keyPointList">
<tr :key="'PointIndex-2' + PointIndex + index">
<td align="center" :rowspan="getRows(i)">
{{ i.text }}
: '__'
}}
</td>
</tr>
<!-- 循环遍历 reviewDetailsList -->
<template
v-for="(v, reviewDetailIndex) in i.reviewDetailsList"
>
<tr
:key="
'reviewDetailIndex-3' +
PointIndex +
reviewDetailIndex +
index
"
>
<td align="center">
{{ v.text }}
</td>
<td align="center" style="text-align: center">
{{
v.result
? v.result.passed === null
? '__'
: v.result.passed === 0
? '不通过'
: '通过'
: '__'
}}
</td>
<td align="center"></td>
<td align="center"></td>
<td align="center" style="text-align: center">
{{
v.result
? v.result.userName
? v.result.userName
: '__'
: '__'
}}
</td>
</tr>
</template>
</template>
</template>
</tbody>
</table>
</div>
</template>
</template>
</tbody>
</table>
</div>
<!--返回按钮-->
<el-button
class="btn"
type="primary"
plain
@click="goToProcessedReview"
>返 回
</el-button>
<div class="bottom-btn">
<el-button
class="btn"
type="primary"
plain
@click="goToProcessedReview"
>返 回
</el-button>
</div>
</div>
</div>
</page-standard>
......@@ -232,7 +133,7 @@
</template>
<!--js逻辑-->
<script>
import { reviewTaskDetail, checkTaskDetail } from '@/api/task/task'
import { reviewTaskDetail } from '@/api/task/task'
import { getRows, getRows2 } from '@/utils/reviewDetailsTable.js'
export default {
data() {
......@@ -243,7 +144,6 @@ export default {
reviewSceneChangeTasks: {},
detailsList: []
},
type: 1,
taskId: 1,
rules: {
enterpriseLeader: [
......@@ -256,9 +156,6 @@ export default {
}
},
created() {
if (this.$route.query.type) {
this.type = this.$route.query.type
}
if (this.$route.query.id) {
this.taskId = this.$route.query.id
}
......@@ -269,16 +166,10 @@ export default {
* 获取任务详情
*/
async getTask() {
let res
if (this.type === '1') {
res = await reviewTaskDetail({
taskId: this.taskId
})
} else {
res = await checkTaskDetail({
taskId: this.taskId
})
}
const res = await reviewTaskDetail({
taskId: this.taskId
})
if (res.code === 200) {
this.model = res.data
} else {
......
......@@ -116,6 +116,7 @@
<th>审查要点</th>
<th>审查细则</th>
<th>审查结果</th>
<th colspan="2">记录</th>
<th>填写人</th>
</tr>
</thead>
......@@ -165,6 +166,8 @@
: '__'
}}
</td>
<td align="center"></td>
<td align="center"></td>
<td align="center">
{{
v.result
......@@ -674,7 +677,14 @@ thead {
background-color: #e7e6e6;
}
th,
th {
border: 1px solid black;
padding: 8px;
text-align: center;
width: 300px;
height: 100%;
}
td {
border: 1px solid black;
padding: 8px;
......
......@@ -417,6 +417,7 @@ export default {
.then(res => {
if (res.code === 200) {
console.log(res.rows)
res.rows[0].reviewStatus = 'SIGNED'
res.rows[0].carReviewStatus = 'FINISH'
this.tableData = res.rows
this.total = res.total
......@@ -569,24 +570,24 @@ export default {
// 查看体系审查检查表单
case 'NEW':
this.$router.push({
path: '/processing/review-form?type=1&id=' + id
path: '/processing/systemReview/review-form?id=' + id
})
break
// 体系审查填写审查问卷
case 'PENDING':
this.$router.push({
path: '/processing/write-check-form?id=' + id
path: '/processing/systemReview/write-check-form?id=' + id
})
break
// 确认体系审查检查表单
case 'CONFIRM':
case 'SIGNED':
this.$router.push({
path: '/processing/confirm-result?type=1&id=' + id
path: '/processing/systemReview/confirm-result?id=' + id
})
break
case 'FINISH':
this.$router.push({
path: '/processing/confirm-result?type=2&id=' + id
path: '/processing/systemReview/source-record?id=' + id
})
break
}
......@@ -607,7 +608,7 @@ export default {
})
break
// 确认测试结果
case 'CONFIRM':
case 'SIGNED':
this.$router.push({
path: '/processing/vehicle-type'
})
......@@ -620,25 +621,25 @@ export default {
// 查看车型检查表单
case 'NEW':
this.$router.push({
path: '/processing/review-form?type=2&id=' + id
path: '/processing/carReview/review-form?id=' + id
})
break
// 填写车型检查表单
case 'PENDING':
this.$router.push({
path: '/processing/type-check-form?id=' + id
path: '/processing/carReview/write-check-form?id=' + id
})
break
// 确认车型检验结果
case 'CONFIRM':
case 'SIGNED':
this.$router.push({
path: '/processing/vehicle-type?type=1&id=' + id
path: '/processing/carReview/vehicle-type?id=' + id
})
break
// 查看车型审查记录
case 'FINISH':
this.$router.push({
path: '/processing/vehicle-type?type=2&id=' + id
path: '/processing/carReview/source-record?id=' + id
})
}
},
......
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