Commit 6a130718 authored by mzx's avatar mzx

Merge branch 'mengzixuan' of http://gitlab.91isoft.com:90/car-test/web into develop

parents c98a7cad 1968a4cd
......@@ -42,7 +42,7 @@
<template v-if="fileSize"> 且不得超过{{ fileSize }}MB </template>
</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
:src="dialogImageUrl"
style="display: block; max-width: 100%; margin: 0 auto"
......@@ -248,14 +248,26 @@ export default {
::v-deep .el-dialog {
background: none;
width: 100%;
box-shadow: none;
}
::v-deep .el-dialog__headerbtn {
top: 8px !important;
background: url('../../assets/icons/svg/guanbi.png') left no-repeat;
background-size: cover;
}
//::v-deep .el-dialog__headerbtn {
// top: 8px !important;
// background: url('../../assets/icons/svg/guanbi.svg') left no-repeat;
// background-size: cover;
//}
::v-deep .el-dialog__headerbtn i {
font-size: 25px;
visibility: hidden;
font-size: 35px;
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>
<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>
<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>
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