Commit b6dceeba authored by 盖献康's avatar 盖献康

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

parents b01ac001 ef1738fa
# 页面标题
VUE_APP_TITLE = 安全信息检测平台
VUE_APP_TITLE = 周期性检测平台
# 开发环境配置
ENV = 'development'
......
......@@ -4,10 +4,11 @@ VUE_APP_TITLE = 周期性检测平台
# 生产环境配置
ENV = 'production'
# 中汽研安全检测平台管理系统/生产环境
VUE_APP_BASE_API = '/prod-api'
# 图片服务器地址
VUE_APP_IMAGE_API ='/'
VUE_APP_IMAGE_API ='https://10.12.48.78'
VUE_APP_CLIENT_API = 'http://10.12.48.78:8090'
VUE_APP_CLIENT_API = 'https://10.12.48.78/vvmpapi'
# 页面标题
VUE_APP_TITLE = 安全信息检测平台
VUE_APP_TITLE = 周期性检测平台
# 开发环境配置
ENV = 'staging'
......@@ -9,4 +9,4 @@ VUE_APP_BASE_API = 'http://49.232.167.247:22032'
# 图片服务器地址
VUE_APP_IMAGE_API = 'http://49.232.167.247:22037'
VUE_APP_CLIENT_API = 'http://10.12.48.78:8090'
VUE_APP_CLIENT_API = 'https://10.12.48.78/vvmpapi'
......@@ -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]-->
......
......@@ -217,4 +217,16 @@ export function geTaskCase(data) {
data
})
}
/**
*提交确认表单
*/
export function taskImageSubmit(data) {
return request({
url: '/car/test/task/submit',
method: 'post',
data
})
}
......@@ -92,7 +92,7 @@
width: calc(100% - 100px);
}
.standard-title {
width: calc(100% - 10px);
width: calc(70% - 40px);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
......@@ -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 {
......
......@@ -19,7 +19,7 @@ export default {
// 3.配置数据
const option = {
title: {
text: '任务保密等级占比',
text: '用例风险程度概览',
left: 'left',
textStyle: {
color: '#606266',
......
......@@ -104,7 +104,7 @@
size="36"
></iconpark-icon>
</div>
<span>完成 :43个</span>
<span>完成 :43个</span>
<div>
<el-progress
:percentage="40"
......@@ -205,7 +205,7 @@
<el-row>
<el-col :span="24">
<div class="cardStyle" style="height: 500px">
<div class="cardTitle">任务完成情况占比</div>
<div class="cardTitle">参与任务情况</div>
<div
style="
display: flex;
......
......@@ -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">
{{
......@@ -230,7 +233,16 @@
<span class="title-content">确定车型试验范围</span>
</div>
<div class="img-item">
<div class="img-label" style="margin-top: 20px">选择测试场景</div>
<div class="img-label" style="margin-top: 20px">
选择测试场景
<footer-button
style="width: 80px; height: 25px"
type="primary"
@click="selectAll"
>
全部选择
</footer-button>
</div>
</div>
<!-- 测试场景 -->
<div class="test-scenario-container">
......@@ -456,6 +468,14 @@ export default {
},
closeAll() {
this.activeNames = []
}, // 全选
selectAll() {
this.model.testScenarioList.forEach(obj => {
obj.check = true
})
this.selectedScenario = this.model.testScenarioList.map(obj => {
return obj.value
})
}
}
}
......
......@@ -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.carReviewTask.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(() => {
......
......@@ -15,7 +15,7 @@
<div class="task-item">
<span class="task-label">任务编号:</span>
<span class="task-content">
{{ model.carReviewTask.taskNo }}
{{ task.taskNo }}
</span>
</div>
<div class="task-item">
......@@ -30,17 +30,12 @@
{{ 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 class="task-item">-->
<!-- <span class="task-label">任务状态:</span>-->
<!-- <span class="task-content">-->
<!-- {{ getDictData(dict.type.task_test_status, task.taskStatus) }}-->
<!-- </span>-->
<!-- </div>-->
</div>
<div class="task-body">
<!--card统计值-->
......@@ -131,46 +126,58 @@
<col style="width: 100px" />
<thead>
<tr>
<th>章节号</th>
<th style="width: 100px">章节号</th>
<th>标准技术要求</th>
<th>标准测试方法</th>
<th>测试场景</th>
<th>测试类型</th>
<th>用例编号</th>
<th>测试结果</th>
<!-- <th>用例名称</th>-->
<!-- <th>工具</th>-->
<!-- <th>对应输入</th>-->
<!-- <th style="width: 370px">测试用例</th>-->
</tr>
</thead>
<tbody>
<!-- 循环遍历 keyPointList -->
<template v-for="(i, PointIndex) in tableData.keyPointList">
<template v-for="(i, PointIndex) in tableData">
<tr :key="'PointIndex1' + PointIndex">
<td align="center" :rowspan="getRows(i)">
{{ '7.1.1' }}
<td align="center" :rowspan="getRows3(i)">
{{ i.chapter }}
</td>
<td align="center" :rowspan="getRows(i)">
<td align="center" :rowspan="getRows3(i)">
{{ i.text }}
</td>
<td align="center" :rowspan="getRows(i)">
{{ i.text }}
<td align="center" :rowspan="getRows3(i)">
{{ i.testMethod }}
</td>
</tr>
<!-- 循环遍历 reviewDetailsList -->
<template v-for="(v, reviewDetailIndex) in i.reviewDetailsList">
<tr
:key="'reviewDetailIndex' + PointIndex + reviewDetailIndex"
>
<td align="center">
{{ '测试场景' }}
<template v-for="(v, testCaseIndex) in i.testCaseList">
<tr :key="'testCaseIndex' + PointIndex + testCaseIndex">
<td align="center" rowspan="1">
{{ v.testScenario }}
</td>
<td align="center">
{{ '测试类型' }}
<td align="center" rowspan="1">
{{ v.testType }}
</td>
<td align="center">
{{ '用例编号' }}
<td align="center" rowspan="1">
{{ v.usecaseNo }}
</td>
<td align="center">
{{ '测试结果' }}
<td align="center" rowspan="1">
{{ '' }}
</td>
<!-- <td align="center" rowspan="1">-->
<!-- {{ v.name }}-->
<!-- </td>-->
<!-- <td align="center" rowspan="1">-->
<!-- {{ v.tools }}-->
<!-- </td>-->
<!-- <td align="center" rowspan="1">-->
<!-- {{ v.input }}-->
<!-- </td>-->
<!-- <td align="center" rowspan="1">-->
<!-- {{ v.description }}-->
<!-- </td>-->
</tr>
</template>
</template>
......@@ -209,6 +216,7 @@
返回
</footer-button>
<footer-button
v-if="this.isLeader !== false"
type="primary"
icon="hard-disk-one"
@click="goToProcessedReview"
......@@ -223,11 +231,12 @@
<!--js逻辑-->
<script>
import routerMixins from '@/mixins/router'
import { getRows, getRows2 } from '../../../../utils/reviewDetailsTable'
import { listInspection } from '../../../../api/setting/standardTerms'
import { getRows3 } from '../../../../utils/reviewDetailsTable'
import { testDetail } from '../../../../api/task/test'
import { getBySubtaskId, taskImageSubmit } from '../../../../api/task/task'
export default {
name: 'Index',
dicts: ['test_cartype_type'],
dicts: ['task_test_status'],
mixins: [routerMixins],
data() {
return {
......@@ -243,95 +252,56 @@ export default {
inspectionLeader: '',
result: []
},
rules: {
enterpriseLeader: [
{ required: true, message: '请输入车企负责人', trigger: 'blur' }
],
inspectionLeader: [
{ required: true, message: '请输入检验负责人', trigger: 'blur' }
]
},
taskId: '',
loading: false
loading: false,
isLeader: ''
}
},
// async mounted() {
// if (this.$route.query.id) {
// this.taskId = this.$route.query.id
// }
// await this.getTask()
// this.openAll()
// },
mounted() {
this.init()
this.getTest()
this.getTestDetail()
},
methods: {
getRows,
getRows2,
/** 获取体系审查、车型审查检验内容 */
init() {
getRows3,
/* 返回跳转*/
goToProcessedReview() {
// this.ruleForm.taskId = '1771093631118106626'
const formData = {
// imagesUrl: [
// this.ruleForm.enterpriseLeader,
// this.ruleForm.inspectionLeader
// ],
imagesUrl: [{}],
taskId: this.$route.query.id
}
console.log('formData', formData)
taskImageSubmit(formData).then(res => {
if (res.code === 200) {
this.$modal.msgSuccess('确认提交成功')
this.$router.push({
path: '/processing/unprocessed-review'
})
} else {
this.$modal.msgError(res.msg)
}
})
},
/** 获取任务详情 */
getTest() {
getBySubtaskId({ id: this.$route.query.id }).then(res => {
if (res.code === 200) {
this.task = res.data
const auditors = res.data.auditors
this.isLeader = auditors.some(item => item.isLeader === 1)
console.log('found', this.isLeader) // 输出: true 如果找到,否则输出: false
}
})
},
getTestDetail() {
this.loading = true
listInspection({ id: '1744181159757221888' }).then(res => {
testDetail({ taskId: this.$route.query.id }).then(res => {
this.tableData = res.data
this.loading = false
})
},
/**
* 获取任务详情
*/
// 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() {
// 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)
// }
// })
}
}
}
......
<!-- 测试用例详情 -->
<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>
......@@ -23,7 +23,7 @@ export default {
},
mounted() {
const id = this.$route.query.id
this.url = `http://10.12.48.80:1234/car/complianceTestingCenter/projectOverView/${id}`
this.url = `https://10.12.48.78:8090/car/complianceTestingCenter/projectOverView/${id}`
},
methods: {}
}
......
......@@ -139,7 +139,6 @@ export default {
detailsList: []
},
task: {},
taskId: '',
loading: false
}
},
......@@ -150,7 +149,7 @@ export default {
methods: {
getRows3,
getTest() {
getBySubtaskId({ id: '1768527384203460609' }).then(res => {
getBySubtaskId({ id: this.$route.query.id }).then(res => {
if (res.code === 200) {
this.task = res.data
}
......@@ -159,7 +158,7 @@ export default {
/** 获取任务详情 */
getTestDetail() {
this.loading = true
testDetail({ taskId: '1768527384203460609' }).then(res => {
testDetail({ taskId: this.$route.query.id }).then(res => {
this.tableData = res.data
this.loading = false
})
......
......@@ -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(() => {
......
......@@ -600,7 +600,7 @@ export default {
// 确认测试结果
case 'SIGNED':
this.$router.push({
ath: `/processing/carTest/confirmation-test??id=${id}`
path: `/processing/carTest/confirmation-test??id=${id}`
})
break
case 'FINISH':
......
......@@ -3,7 +3,7 @@
title="检验内容"
:visible.sync="dialogManger.dialogVisible"
direction="rtl"
size="40%"
size="80%"
:before-close="handleClose"
>
<template slot="title">
......
......@@ -2,7 +2,7 @@
<el-drawer
:visible.sync="dialogManger.dialogVisible"
direction="rtl"
size="40%"
size="80%"
:before-close="handleClose"
>
<template slot="title">
......
......@@ -18,12 +18,11 @@ export default {
return {
id: this.$route.query,
url: ''
// http://10.12.48.78:8090/car/caseManage/case/casePublishDetail/case_items;375
}
},
mounted() {
const id = this.$route.query.id
this.url = `http://10.12.48.78:8090/car/caseManage/case/casePublishDetail/${id}`
this.url = `https://10.12.48.78:8090/car/caseManage/case/casePublishDetail/${id}`
},
methods: {}
}
......
......@@ -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"
......
......@@ -42,7 +42,7 @@ module.exports = {
}
},
[process.env.VUE_APP_CLIENT_API]: {
target: `http://10.12.48.78:8090`,
target: `https://10.12.48.78/vvmpapi`,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_CLIENT_API]: ''
......@@ -116,7 +116,7 @@ module.exports = {
.use('graphql-tag/loader')
.loader('graphql-tag/loader')
.end();
config.when(process.env.NODE_ENV !== 'development', config => {
config.when(process.env.NODE_ENV === 'production', config => {
config
.plugin('ScriptExtHtmlWebpackPlugin')
.after('html')
......
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