Commit 2053f598 authored by mzx's avatar mzx

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

parents 1d77967d a74a5787
# 页面标题
VUE_APP_TITLE = 安全信息检测平台
VUE_APP_TITLE = 周期性检测平台
# 开发环境配置
ENV = 'development'
......
# 页面标题
VUE_APP_TITLE = 安全信息检测平台
VUE_APP_TITLE = 周期性检测平台
# 开发环境配置
ENV = 'staging'
......
......@@ -10,7 +10,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<!-- <link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet"> -->
<script src="https://lf1-cdn-tos.bytegoofy.com/obj/iconpark/icons_31435_85.f03f7ada23edcf4cd72e61338ed55693.js"></script>
<script src="https://lf1-cdn-tos.bytegoofy.com/obj/iconpark/icons_31435_86.9b2d26764ccec5f05296d7ffca18aa56.js"></script>
<title><%= webpackConfig.name %></title>
<!--[if lt IE 11]>
<script>window.location.href = '/html/ie.html';</script><![endif]-->
......
......@@ -709,15 +709,13 @@
width: 120px !important;
// text-align: center !important;
}
.passed{
.el-form-item__label{
margin-left: -10px;
}
}
.el-progress{
.el-progress {
display: flex;
}
.empty-message{
text-align: center;
.empty-message {
margin: 0 10px;
display: flex;
flex-flow: column;
align-items: center;
color: #ccc;
}
......@@ -36,11 +36,7 @@ export default {
},
methods: {
goBack() {
// 获取当前路由信息
const currentRoute = this.$router.currentRoute
// 获取来源页面的路由信息
const fromRoute = currentRoute.from
console.log(currentRoute)
this.$router.back()
}
}
}
......@@ -48,7 +44,7 @@ export default {
<style lang="scss" scoped>
.page-data {
padding: 0 24px;
padding-bottom: 24px;
padding-bottom: 24px;
}
.card-box {
......
......@@ -212,13 +212,15 @@
<div v-else>__</div>
</td>
<td align="center">
<div
v-if="
reviewDetail.result && reviewDetail.result.fileName
"
>
{{ reviewDetail.result.fileName }}
{{ reviewDetail.result.catalogue }}
<div v-if="reviewDetail.result">
<div v-if="reviewDetail.result.fileList">
<template v-for="i in reviewDetail.result.fileList">
{{ i.fileName }}{{ i.catalogue }}
</template>
</div>
<div v-if="reviewDetail.result.comment">
{{ reviewDetail.result.comment }}
</div>
</div>
<div v-else>__</div>
</td>
......
......@@ -191,18 +191,21 @@
<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
>
<div v-if="reviewDetail.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="warning"
>不符合</el-tag
>
</div>
<div v-else>__</div>
</td>
<td align="center" class="written-by">
{{
......@@ -231,6 +234,7 @@
</div>
<div class="img-item">
<div class="img-label" style="margin-top: 20px">选择测试场景</div>
<div class="img-label" style="margin-top: 20px">选择测试场景</div>
</div>
<!-- 测试场景 -->
<div class="test-scenario-container">
......
......@@ -129,9 +129,6 @@ export default {
],
identifyNumber: [
{ required: true, message: '请输入文件识别号', trigger: 'blur' }
],
photo: [
{ required: true, message: '请选择文件照片', trigger: 'change' }
]
},
model: this.$modelDataSource({
......
......@@ -99,11 +99,15 @@
<div v-else>__</div>
</td>
<td align="center">
<div
v-if="reviewDetail.result && reviewDetail.result.fileName"
>
{{ reviewDetail.result.fileName }}
{{ reviewDetail.result.catalogue }}
<div v-if="reviewDetail.result">
<div v-if="reviewDetail.result.fileList">
<template v-for="i in reviewDetail.result.fileList">
{{ i.fileName }}{{ i.catalogue }}
</template>
</div>
<div v-if="reviewDetail.result.comment">
{{ reviewDetail.result.comment }}
</div>
</div>
<div v-else>__</div>
</td>
......
......@@ -9,6 +9,13 @@
>
预览表单
</header-button>
<header-button
v-if="model.systemReviewTask.leaderId == userId"
type="default"
icon="check"
@click="submitFrom()"
>提交表单</header-button
>
<header-button icon="arrow-left" type="no-line" @click="goBack">
返回
</header-button>
......@@ -214,54 +221,107 @@
</el-radio-group>
</el-form-item>
<el-form-item class="right-content-item" label="相关记录">
<div style="display: flex; flex-flow: column">
<el-row v-for="(file, key) in form.fileList" :key="key">
<el-col :span="8">
<div>
<el-form-item
prop="fileName"
label-suffix=" "
label="文件名称"
>
<el-autocomplete
v-model="file.fileName"
style="width: 100%"
:fetch-suggestions="querySearch"
placeholder="请输入文件名称"
@select="
e => {
querySelect(file, e)
}
"
@input="
e => {
queryInput(file, e)
}
"
></el-autocomplete>
</el-form-item>
</div>
</el-col>
<el-col :span="8" :offset="1">
<div>
<el-form-item
prop="catalogue"
label-suffix=" "
label="章节条目或范围"
>
<el-input
v-model="file.catalogue"
placeholder="请输入具体章节条目或范围"
/>
</el-form-item>
</div>
</el-col>
<el-col :span="1" :offset="1">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
style="margin-top: 27px"
@click="form.fileList.splice(key, 1)"
></el-button>
</el-col>
<el-col :span="24">
<company-file
v-show="file.show"
:enterprise-name="model.carReviewTask.enterpriseName"
:file-name="file.fileName"
@fileNameUpdate="
name => {
file.fileName = name
}
"
@handleUpdate="
e => {
handleFileUpdate(file, e)
}
"
@handleSave="
e => {
handleFileSave(file, e)
}
"
></company-file>
</el-col>
</el-row>
<el-button
class="add-number"
icon="el-icon-circle-plus-outline"
@click="handleAddFile()"
>添加文件</el-button
>
</div>
<el-row>
<el-col :span="8">
<div>
<el-form-item
prop="fileName"
label-suffix=" "
label="文件名称"
>
<el-autocomplete
v-model="form.fileName"
style="width: 100%"
:fetch-suggestions="querySearch"
placeholder="请输入文件名称"
@select="querySelect"
></el-autocomplete>
</el-form-item>
</div>
</el-col>
<el-col :span="8" :offset="1">
<div>
<el-form-item
prop="catalogue"
label-suffix=" "
label="章节条目或范围"
>
<el-input
v-model="form.catalogue"
placeholder="请输入具体章节条目或范围"
/>
</el-form-item>
</div>
<el-col :span="24">
<el-form-item
prop="comment"
label-suffix=" "
label="备注信息"
>
<el-input
v-model="form.comment"
placeholder="请输入备注信息"
type="textarea"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
</el-col>
</el-row>
<!-- //车企文件信息 -->
</el-form-item>
<company-file
v-show="formManger.show"
style="margin-left: 125px"
:enterprise-name="model.carReviewTask.enterpriseName"
:file-name="form.fileName"
@fileNameUpdate="
name => {
form.fileName = name
}
"
@handleUpdate="handleFileUpdate"
@handleSave="handleFileSave"
></company-file>
</el-form>
</div>
</div>
......@@ -277,13 +337,6 @@
>
保存当前条目
</footer-button>
<footer-button
v-if="model.carReviewTask.leaderId == userId"
type="primary"
icon="check"
@click="submitFrom()"
>提交表单</footer-button
>
</div>
</div>
</task-standard>
......@@ -339,18 +392,16 @@ export default {
passed: '',
reviewDetailsId: '',
taskId: '',
fileName: '',
catalogue: '',
reviewEnterpriseArchiveId: ''
comment: '',
fileList: []
},
task: {},
oldForm: {
passed: '',
reviewDetailsId: '',
taskId: '',
fileName: '',
catalogue: '',
reviewEnterpriseArchiveId: ''
comment: '',
fileList: []
},
model: {
carReviewTask: {},
......@@ -361,34 +412,12 @@ export default {
activeModel: 0,
checked: false,
detailsList: [],
rules: {
passed: [
{ required: true, message: '请选择审查结果', trigger: 'blur' }
],
fileName: [
{
required: true,
message: '请输入文件名称',
trigger: ['change']
}
],
catalogue: [
{
required: true,
message: '请输入具体章节条目或范围',
trigger: 'blur'
}
]
},
rules: {},
changeTask: [],
changeTaskDetails: [],
value1: '',
taskId: '',
options: [],
formManger: {
show: false,
fileName: ''
},
fileModel: this.$modelDataSource({
url: '/review/enterprise/archive',
dataKey: 'model',
......@@ -396,7 +425,6 @@ export default {
id: 0
}
}),
isFileUpdate: false,
loading: false
}
},
......@@ -413,23 +441,6 @@ export default {
...mapGetters(['name', 'companyFiles', 'userId'])
},
watch: {
'form.fileName': function (newValue) {
if (newValue) {
const files = this.companyFiles
const query = files.filter(this.createFilter(newValue))
if (query.length === 0) {
this.formManger.show = true
this.isFileUpdate = true
this.formManger.fileName = newValue
} else {
this.isFileUpdate = false
this.formManger.show = false
}
} else {
this.isFileUpdate = false
this.formManger.show = false
}
},
checked(newV) {
if (newV) {
this.detailsList = this.model.detailsList.filter(item => {
......@@ -454,23 +465,46 @@ export default {
/**
* 企业文件保存回调
*/
handleFileSave(element) {
this.form.reviewEnterpriseArchiveId = String(element)
this.isFileUpdate = false
this.formManger.show = false
console.log('企业文件保存回调')
handleFileSave(file, element) {
file.id = element
file.isFileUpdate = false
file.show = false
this.$forceUpdate()
},
/**
* 企业文件表单内容修改回调
* @param {*} element 返回值
*/
handleFileUpdate(element) {
this.isFileUpdate = element
handleFileUpdate(file, element) {
file.isFileUpdate = element
console.log('企业文件表单内容修改回调')
},
querySelect(e) {
this.form.reviewEnterpriseArchiveId = e.id
console.log('企业文件筛选' + e.id)
handleAddFile() {
this.form.fileList.push({
fileName: '',
catalogue: '',
id: ''
})
},
querySelect(file, e) {
file.id = e.id
},
queryInput(file, newValue) {
if (newValue) {
const files = this.companyFiles
const query = files.filter(this.createFilter(newValue))
if (query.length === 0) {
file.show = true
file.isFileUpdate = true
file.fileName = newValue
} else {
file.isFileUpdate = false
file.show = false
}
} else {
file.isFileUpdate = false
file.show = false
}
},
querySearch(queryString, cb) {
const files = this.companyFiles
......@@ -583,16 +617,35 @@ export default {
* @param item 圆圈对象
*/
changeStep(index) {
if (this.isAllPropertiesEqual() && !this.isFileUpdate) {
if (
this.isAllPropertiesEqual() &&
!this.allPropertiesCheck(this.form.fileList, 'isFileUpdate')
) {
this.handleCircle(index)
} else {
this.$message.error('您有未保存内容,请点击保存按钮')
}
},
// 遍历数组中的对象判断某一属性的数值是否为true
allPropertiesCheck(obj, key) {
if (obj[key] !== '' && typeof obj[key] !== 'undefined' && obj[key]) {
return true
}
return false
},
/**
* 判断数组中对象的属性是否全部为空
* @param obj
* @returns {boolean}
*/
isAllPropertiesEqual() {
for (var key in this.form) {
if (this.form[key] !== this.oldForm[key]) {
return false
if (key !== 'isFileUpdate') {
if (
JSON.stringify(this.form[key]) !== JSON.stringify(this.oldForm[key])
) {
return false
}
}
}
return true
......@@ -610,36 +663,30 @@ export default {
passed: this.taskModel.result.passed,
reviewDetailsId: this.taskModel.id,
taskId: this.taskId,
fileName: this.taskModel.result.fileName,
catalogue: this.taskModel.result.catalogue,
reviewEnterpriseArchiveId:
this.taskModel.result.reviewEnterpriseArchiveId
comment: this.taskModel.result.comment,
fileList: this.taskModel.result.fileList
}
this.oldForm = {
passed: this.taskModel.result.passed,
reviewDetailsId: this.taskModel.id,
taskId: this.taskId,
fileName: this.taskModel.result.fileName,
catalogue: this.taskModel.result.catalogue,
reviewEnterpriseArchiveId:
this.taskModel.result.reviewEnterpriseArchiveId
comment: this.taskModel.result.comment,
fileList: this.taskModel.result.fileList
}
} else {
this.form = {
passed: '',
reviewDetailsId: this.taskModel.id,
taskId: this.taskId,
fileName: '',
catalogue: '',
reviewEnterpriseArchiveId: ''
comment: '',
fileList: []
}
this.oldForm = {
passed: '',
reviewDetailsId: this.taskModel.id,
taskId: this.taskId,
fileName: '',
catalogue: '',
reviewEnterpriseArchiveId: ''
comment: '',
fileList: []
}
}
this.$nextTick(() => {
......@@ -661,23 +708,28 @@ export default {
submitQuestionnaire(type) {
this.$refs.form.validate(valid => {
if (valid) {
if (!this.isFileUpdate) {
if (!this.allPropertiesCheck(this.form.fileList, 'isFileUpdate')) {
// 根据公司文件和文件名获取特定项目项,并据此更新表单中的审核企业档案ID
const files = this.companyFiles // 获取公司文件列表
const fileName = this.form.fileName // 获取表单中填写的文件名
// 根据文件名在公司文件列表中查找对应项目项
const item = this.getProjectByName(files, fileName)
if (item) {
this.form.reviewEnterpriseArchiveId = item.id // 找到项目项则更新表单的审核企业档案ID
} else {
this.form.reviewEnterpriseArchiveId = null // 未找到则将审核企业档案ID设为null
}
this.form.fileList.map(file => {
const fileName = file.fileName // 获取表单中填写的文件名
// 根据文件名在公司文件列表中查找对应项目项
const item = this.getProjectByName(files, fileName)
if (item) {
file.id = item.id // 找到项目项则更新表单的审核企业档案ID
} else {
file.id = null // 未找到则将审核企业档案ID设为null
}
})
reviewDetailsSubmit(this.form).then(async res => {
if (res.code === 200) {
await this.getTask()
if (this.checked) {
this.handleCircle(0)
}
this.form.fileList.map(i => {
i.isFileUpdate = false
})
this.oldForm = this.form
this.$modal.msgSuccess('保存当前条目成功')
this.$nextTick(() => {
......
<!-- 测试用例详情 -->
<template>
<page-standard>
<task-standard>
<div class="web-page">
<iframe
:src="url"
......@@ -8,7 +8,7 @@
style="width: 100%; height: 100%"
></iframe>
</div>
</page-standard>
</task-standard>
</template>
<script>
......
......@@ -135,9 +135,6 @@ export default {
],
identifyNumber: [
{ required: true, message: '请输入文件识别号', trigger: 'blur' }
],
photo: [
{ required: true, message: '请选择文件照片', trigger: 'change' }
]
}
}
......
......@@ -157,6 +157,7 @@
prop="createBy"
label="创建人员"
min-width="130"
show-overflow-tooltip
align="left"
>
</el-table-column>
......
......@@ -217,13 +217,15 @@
<div v-else>__</div>
</td>
<td align="center">
<div
v-if="
reviewDetail.result && reviewDetail.result.fileName
"
>
{{ reviewDetail.result.fileName }}
{{ reviewDetail.result.catalogue }}
<div v-if="reviewDetail.result">
<div v-if="reviewDetail.result.fileList">
<template v-for="i in reviewDetail.result.fileList">
{{ i.fileName }}{{ i.catalogue }}
</template>
</div>
<div v-if="reviewDetail.result.comment">
{{ reviewDetail.result.comment }}
</div>
</div>
<div v-else>__</div>
</td>
......
......@@ -129,9 +129,6 @@ export default {
],
identifyNumber: [
{ required: true, message: '请输入文件识别号', trigger: 'blur' }
],
photo: [
{ required: true, message: '请选择文件照片', trigger: 'change' }
]
},
model: this.$modelDataSource({
......
......@@ -99,11 +99,15 @@
<div v-else>__</div>
</td>
<td align="center">
<div
v-if="reviewDetail.result && reviewDetail.result.fileName"
>
{{ reviewDetail.result.fileName }}
{{ reviewDetail.result.catalogue }}
<div v-if="reviewDetail.result">
<div v-if="reviewDetail.result.fileList">
<template v-for="i in reviewDetail.result.fileList">
{{ i.fileName }}{{ i.catalogue }}
</template>
</div>
<div v-if="reviewDetail.result.comment">
{{ reviewDetail.result.comment }}
</div>
</div>
<div v-else>__</div>
</td>
......
<template>
<div>
<task-standard v-loading="loading">
<task-standard>
<div slot="header-right">
<header-button
icon="preview-open"
......@@ -9,6 +9,13 @@
>
预览表单
</header-button>
<header-button
v-if="model.systemReviewTask.leaderId == userId"
type="default"
icon="check"
@click="submitFrom()"
>提交表单</header-button
>
<header-button
icon="arrow-left"
class="back-btn"
......@@ -130,13 +137,15 @@
:rules="rules"
>
<el-form-item class="right-content-item" label="标准章节">
<span>{{ taskModel.chapter }}</span>
<div style="display: flex">{{ taskModel.chapter }}</div>
</el-form-item>
<el-form-item class="right-content-item" label="标准要求">
<span>{{ taskModel.standardText }}</span>
<div style="display: flex">{{ taskModel.standardText }}</div>
</el-form-item>
<el-form-item class="right-content-item" label="审查要点">
<span>{{ taskModel.reviewKeypointText }}</span>
<div style="display: flex">
{{ taskModel.reviewKeypointText }}
</div>
</el-form-item>
<el-form-item class="right-content-item" label="审查细则">
<div class="scene-content">
......@@ -224,58 +233,116 @@
</el-radio-group>
</el-form-item>
<el-form-item class="right-content-item" label="相关记录">
<div style="display: flex; flex-flow: column">
<el-row v-for="(file, key) in form.fileList" :key="key">
<el-col :span="8">
<div>
<el-form-item
prop="fileName"
label-suffix=" "
label="文件名称"
>
<el-autocomplete
v-model="file.fileName"
style="width: 100%"
:fetch-suggestions="querySearch"
placeholder="请输入文件名称"
@select="
e => {
querySelect(file, e)
}
"
@input="
e => {
queryInput(file, e)
}
"
></el-autocomplete>
</el-form-item>
</div>
</el-col>
<el-col :span="8" :offset="1">
<div>
<el-form-item
prop="catalogue"
label-suffix=" "
label="章节条目或范围"
>
<el-input
v-model="file.catalogue"
placeholder="请输入具体章节条目或范围"
/>
</el-form-item>
</div>
</el-col>
<el-col :span="1" :offset="1">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
style="margin-top: 27px"
@click="form.fileList.splice(key, 1)"
></el-button>
</el-col>
<el-col :span="24">
<company-file
v-show="file.show"
:enterprise-name="
model.systemReviewTask.enterpriseName
"
:file-name="file.fileName"
@fileNameUpdate="
name => {
file.fileName = name
}
"
@handleUpdate="
e => {
handleFileUpdate(file, e)
}
"
@handleSave="
e => {
handleFileSave(file, e)
}
"
></company-file>
</el-col>
</el-row>
<el-button
class="add-number"
icon="el-icon-circle-plus-outline"
@click="handleAddFile()"
>添加文件</el-button
>
</div>
<el-row>
<el-col :span="8">
<div>
<el-form-item
prop="fileName"
label-suffix=" "
label="文件名称"
>
<el-autocomplete
v-model="form.fileName"
style="width: 100%"
:fetch-suggestions="querySearch"
placeholder="请输入文件名称"
@select="querySelect"
></el-autocomplete>
</el-form-item>
</div>
</el-col>
<el-col :span="8" :offset="1">
<div>
<el-form-item
prop="catalogue"
label-suffix=" "
label="章节条目或范围"
>
<el-input
v-model="form.catalogue"
placeholder="请输入具体章节条目或范围"
/>
</el-form-item>
</div>
<el-col :span="24">
<el-form-item
prop="comment"
label-suffix=" "
label="备注信息"
>
<el-input
v-model="form.comment"
placeholder="请输入备注信息"
type="textarea"
:autosize="{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
</el-col>
</el-row>
<!-- //车企文件信息 -->
</el-form-item>
<company-file
v-show="formManger.show"
style="margin-left: 125px"
:enterprise-name="model.systemReviewTask.enterpriseName"
:file-name="form.fileName"
@fileNameUpdate="
name => {
form.fileName = name
}
"
@handleUpdate="handleFileUpdate"
@handleSave="handleFileSave"
></company-file>
</el-form>
</div>
</div>
<div v-else class="empty-message">-暂无未完成条目-</div>
<div v-else class="empty-message">
<iconpark-icon name="wutiaomu" size="120px"></iconpark-icon>
<span> 无未完成条目 </span>
</div>
</div>
<div class="bottom-btn">
<footer-button
......@@ -287,13 +354,6 @@
>
保存当前条目
</footer-button>
<footer-button
v-if="model.systemReviewTask.leaderId == userId"
type="primary"
icon="check"
@click="submitFrom()"
>提交表单</footer-button
>
</div>
</div>
</task-standard>
......@@ -349,18 +409,16 @@ export default {
passed: '',
reviewDetailsId: '',
taskId: '',
fileName: '',
catalogue: '',
reviewEnterpriseArchiveId: ''
comment: '',
fileList: []
},
task: {},
oldForm: {
passed: '',
reviewDetailsId: '',
taskId: '',
fileName: '',
catalogue: '',
reviewEnterpriseArchiveId: ''
comment: '',
fileList: []
},
model: {
systemReviewTask: {},
......@@ -371,33 +429,10 @@ export default {
activeModel: 0,
checked: false,
detailsList: [],
rules: {
passed: [
{ required: true, message: '请选择审查结果', trigger: 'blur' }
],
fileName: [
{
required: true,
message: '请输入文件名称',
trigger: ['change']
}
],
catalogue: [
{
required: true,
message: '请输入具体章节条目或范围',
trigger: 'blur'
}
]
},
rules: {},
// TODO 删除
checkedTwo: false,
checkedThree: false,
radio: 1,
addData: {
fileName: '',
chapterEntry: ''
},
changeTask: [],
changeTaskDetails: [],
value1: '',
......@@ -414,7 +449,6 @@ export default {
id: 0
}
}),
isFileUpdate: false,
loading: false
}
},
......@@ -432,23 +466,6 @@ export default {
...mapGetters(['name', 'companyFiles', 'userId'])
},
watch: {
'form.fileName': function (newValue) {
if (newValue) {
const files = this.companyFiles
const query = files.filter(this.createFilter(newValue))
if (query.length === 0) {
this.formManger.show = true
this.isFileUpdate = true
this.formManger.fileName = newValue
} else {
this.isFileUpdate = false
this.formManger.show = false
}
} else {
this.isFileUpdate = false
this.formManger.show = false
}
},
checked(newV) {
if (newV) {
this.detailsList = this.model.detailsList.filter(item => {
......@@ -472,20 +489,45 @@ export default {
/**
* 企业文件保存回调
*/
handleFileSave(element) {
this.form.reviewEnterpriseArchiveId = element
this.isFileUpdate = false
this.formManger.show = false
handleFileSave(file, element) {
file.id = element
file.isFileUpdate = false
file.show = false
this.$forceUpdate()
},
/**
* 企业文件表单内容修改回调
* @param {*} element 返回值
*/
handleFileUpdate(element) {
this.isFileUpdate = element
handleFileUpdate(file, element) {
file.isFileUpdate = element
},
handleAddFile() {
this.form.fileList.push({
fileName: '',
catalogue: '',
id: ''
})
},
querySelect(e) {
this.form.reviewEnterpriseArchiveId = e.id
querySelect(file, e) {
file.id = e.id
},
queryInput(file, newValue) {
if (newValue) {
const files = this.companyFiles
const query = files.filter(this.createFilter(newValue))
if (query.length === 0) {
file.show = true
file.isFileUpdate = true
file.fileName = newValue
} else {
file.isFileUpdate = false
file.show = false
}
} else {
file.isFileUpdate = false
file.show = false
}
},
querySearch(queryString, cb) {
const files = this.companyFiles
......@@ -593,12 +635,22 @@ export default {
this.sceneViewManger.dialogVisible = true
this.sceneViewManger.data = data
},
// 遍历数组中的对象判断某一属性的数值是否为true
allPropertiesCheck(obj, key) {
if (obj[key] !== '' && typeof obj[key] !== 'undefined' && obj[key]) {
return true
}
return false
},
/**
* 点击左侧圆圈触发的回调函数
* @param item 圆圈对象
*/
changeStep(index) {
if (this.isAllPropertiesEqual() && !this.isFileUpdate) {
if (
this.isAllPropertiesEqual() &&
!this.allPropertiesCheck(this.form.fileList, 'isFileUpdate')
) {
this.handleCircle(index)
} else {
this.$message.error('您有未保存内容,请点击保存按钮')
......@@ -606,7 +658,27 @@ export default {
},
isAllPropertiesEqual() {
for (var key in this.form) {
if (this.form[key] !== this.oldForm[key]) {
if (key !== 'isFileUpdate') {
if (
JSON.stringify(this.form[key]) !== JSON.stringify(this.oldForm[key])
) {
return false
}
}
}
return true
},
/**
*判断两个数组是否一样
* @param {*} item
* @param {*} oldItem
*/
isAllPropertiesEqualArray(item, oldItem) {
if (item.length !== oldItem.length) {
return false
}
for (var i = 0; i < item.length; i++) {
if (item[i].chapter !== oldItem[i].chapter) {
return false
}
}
......@@ -625,36 +697,30 @@ export default {
passed: this.taskModel.result.passed,
reviewDetailsId: this.taskModel.id,
taskId: this.taskId,
fileName: this.taskModel.result.fileName,
catalogue: this.taskModel.result.catalogue,
reviewEnterpriseArchiveId:
this.taskModel.result.reviewEnterpriseArchiveId
comment: this.taskModel.result.comment,
fileList: this.taskModel.result.fileList || []
}
this.oldForm = {
passed: this.taskModel.result.passed,
reviewDetailsId: this.taskModel.id,
taskId: this.taskId,
fileName: this.taskModel.result.fileName,
catalogue: this.taskModel.result.catalogue,
reviewEnterpriseArchiveId:
this.taskModel.result.reviewEnterpriseArchiveId
comment: this.taskModel.result.comment,
fileList: this.taskModel.result.fileList || []
}
} else {
this.form = {
passed: '',
reviewDetailsId: this.taskModel.id,
taskId: this.taskId,
fileName: '',
catalogue: '',
reviewEnterpriseArchiveId: ''
comment: '',
fileList: []
}
this.oldForm = {
passed: '',
reviewDetailsId: this.taskModel.id,
taskId: this.taskId,
fileName: '',
catalogue: '',
reviewEnterpriseArchiveId: ''
comment: '',
fileList: []
}
}
this.$nextTick(() => {
......@@ -676,23 +742,28 @@ export default {
submitQuestionnaire(type) {
this.$refs.form.validate(valid => {
if (valid) {
if (!this.isFileUpdate) {
if (!this.allPropertiesCheck(this.form.fileList, 'isFileUpdate')) {
// 根据公司文件和文件名获取特定项目项,并据此更新表单中的审核企业档案ID
const files = this.companyFiles // 获取公司文件列表
const fileName = this.form.fileName // 获取表单中填写的文件名
// 根据文件名在公司文件列表中查找对应项目项
const item = this.getProjectByName(files, fileName)
if (item) {
this.form.reviewEnterpriseArchiveId = item.id // 找到项目项则更新表单的审核企业档案ID
} else {
this.form.reviewEnterpriseArchiveId = null // 未找到则将审核企业档案ID设为null
}
this.form.fileList.map(file => {
const fileName = file.fileName // 获取表单中填写的文件名
// 根据文件名在公司文件列表中查找对应项目项
const item = this.getProjectByName(files, fileName)
if (item) {
file.id = item.id // 找到项目项则更新表单的审核企业档案ID
} else {
file.id = null // 未找到则将审核企业档案ID设为null
}
})
reviewDetailsSubmit(this.form).then(async res => {
if (res.code === 200) {
await this.getTask()
if (this.checked) {
this.handleCircle(0)
}
this.form.fileList.map(i => {
i.isFileUpdate = false
})
this.oldForm = this.form
this.$modal.msgSuccess('保存当前条目成功')
this.$nextTick(() => {
......
......@@ -360,7 +360,7 @@
height="150px"
></image-preview>
</div>
<div v-else>暂无数据</div>
<div v-else>--未上传--</div>
</el-form-item>
<el-form-item label="样品照片:" prop="samplePhotos">
<div v-if="clickNameForm.samplePhotos">
......@@ -373,7 +373,7 @@
:src="item"
></image-preview>
</div>
<div v-else>暂无数据</div>
<div v-else>--未上传--</div>
</el-form-item>
</el-form>
</el-dialog>
......@@ -646,8 +646,10 @@ export default {
clickSampleName(row) {
this.dialogFormVisible = true
this.clickNameForm = row
this.clickNameForm.samplePhotos =
this.clickNameForm.samplePhotos.split(',')
if (this.clickNameForm.samplePhotos) {
this.clickNameForm.samplePhotos =
this.clickNameForm.samplePhotos.split(',')
}
console.log(row)
},
closeSamplePhoto() {
......
......@@ -239,6 +239,8 @@ export default {
const roleId = this.queryParams.roleId
this.$modal
.confirm('确认要取消该用户"' + row.userName + '"角色吗?', {
type: 'warning',
title: '取消授权',
closeOnClickModal: false
})
.then(function () {
......@@ -256,6 +258,8 @@ export default {
const userIds = this.userIds.join(',')
this.$modal
.confirm('是否取消选中用户授权数据项?', {
type: 'warning',
title: '取消授权',
closeOnClickModal: false
})
.then(function () {
......
......@@ -196,12 +196,12 @@
>更多</el-button
>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item
<!-- <el-dropdown-item
v-hasPermi="['system:role:edit']"
command="handleDataScope"
icon="el-icon-circle-check"
>数据权限</el-dropdown-item
>
> -->
<el-dropdown-item
v-hasPermi="['system:role:edit']"
command="handleAuthUser"
......
......@@ -142,17 +142,17 @@
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
v-hasPermi="['system:user:import']"
type="info"
plain
icon="el-icon-upload2"
size="mini"
@click="handleImport"
>导入</el-button
>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- v-hasPermi="['system:user:import']"-->
<!-- type="info"-->
<!-- plain-->
<!-- icon="el-icon-upload2"-->
<!-- size="mini"-->
<!-- @click="handleImport"-->
<!-- >导入</el-button-->
<!-- >-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">
<el-button
v-hasPermi="['system:user:export']"
......@@ -245,7 +245,7 @@
<el-table-column
label="操作"
align="center"
width="160"
min-width="200"
class-name="small-padding fixed-width"
>
<template v-if="scope.row.userId !== 1" slot-scope="scope">
......@@ -779,8 +779,8 @@ export default {
confirmButtonText: '确定',
cancelButtonText: '取消',
closeOnClickModal: false,
inputPattern: /^.{5,20}$/,
inputErrorMessage: '用户密码长度必须介于 5 和 20 之间'
inputPattern: /^.{6,20}$/,
inputErrorMessage: '用户密码长度必须介于 6 和 20 之间'
})
.then(({ value }) => {
resetUserPwd(row.userId, value).then(response => {
......
......@@ -39,7 +39,11 @@
'test-scenario': item.check === false,
'check-test-scenario': item.check === true
}"
@click="handleInspectionItem(item)"
@click="
taskDetail.taskStatus === 'NEW'
? handleInspectionItem(item)
: ''
"
>
<div>{{ item.label }}</div>
</div>
......@@ -53,6 +57,13 @@
label="请选择测试场景(可多选)"
prop="testScenarioList"
>
<footer-button
style="width: 80px; height: 25px"
type="primary"
@click="selectAll"
>
全部选择
</footer-button>
<div class="test-scenario-container">
<div
v-for="(item, index) in testScenarioList"
......@@ -414,29 +425,6 @@ export default {
// 小组成员回显数据
tableData: [],
inspectionItemList: [],
// 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 }
// ],
rules: {
testScenarioList: [
{
......@@ -697,6 +685,14 @@ export default {
console.log('model', this.model)
})
},
selectAll() {
this.testScenarioList.forEach(obj => {
obj.check = true
})
this.model.testScenarioList = this.testScenarioList.map(obj => {
return obj.value
})
},
getInspectionItemDict() {
getDicts('inspection_item').then(response => {
this.inspectionItemList = response.data.map(
......
......@@ -19,6 +19,7 @@
<el-select
v-model="card.sampleNumber"
:disabled="!isEdit"
:placeholder="isDetail ? '--' : '请选择'"
@change="handleSampleNumberChange(card, $event)"
>
<el-option
......@@ -31,7 +32,11 @@
</el-select>
</el-form-item>
<el-form-item label="样品名称">
<el-input v-model="card.sampleName" disabled />
<el-input
v-model="card.sampleName"
disabled
:placeholder="isDetail ? '--' : ''"
/>
</el-form-item>
</el-form>
</el-card>
......@@ -61,6 +66,10 @@ export default {
isEdit: {
type: Boolean,
default: true
},
isDetail: {
type: Boolean,
default: false
}
},
watch: {
......
......@@ -49,6 +49,13 @@
label="请选择测试场景(可多选)"
prop="testScenarioList"
>
<footer-button
style="width: 80px; height: 25px"
type="primary"
@click="selectAll"
>
全部选择
</footer-button>
<div class="test-scenario-container">
<div
v-for="(item, index) in testScenarioList"
......@@ -677,6 +684,15 @@ export default {
console.log('model', this.model)
})
},
// 全选
selectAll() {
this.testScenarioList.forEach(obj => {
obj.check = true
})
this.model.testScenarioList = this.testScenarioList.map(obj => {
return obj.value
})
},
getInspectionItemDict() {
getDicts('inspection_item').then(response => {
this.inspectionItemList = response.data.map(
......@@ -1057,10 +1073,6 @@ export default {
this.$message.error('请填写整车样品信息')
return
}
// else if (this.currentPartSampleInformation.length === 0) {
// this.$message.error('请填写零部件样品信息')
// return
// }
this.$confirm('是否确认进行发布功能', '发布', {
confirmButtonText: '确定',
concelButtonText: '取消',
......
......@@ -245,6 +245,7 @@
v-model="partInfoArr"
class="global-left-margin"
:is-edit="false"
:is-detail="true"
:part-sample-information="partSampleInformationList"
@change="handleModChange"
/>
......
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