Commit 51bfceb0 authored by jiaxu.yan's avatar jiaxu.yan

feat(接口对接): 查看体系审查表单 查看车型审查表单 填写车型审查表单 确认体系审查结果 确认车型审查结果

parent e29e0d9b
import request from '@/utils/request'
/**
* 获取任务下企业文件
*/
export function getCompanyFile(data){
}
\ No newline at end of file
......@@ -2,64 +2,114 @@ import request from '@/utils/request'
//获取任务详情
export function taskDetail(data) {
return request({
url: '/task/getInfo',
method: 'post',
data
})
return request({
url: '/task/getInfo',
method: 'post',
data
})
}
//体系审查获取任务详情
export function reviewTaskDetail(data) {
return request({
url: '/system/review/task/view',
method: 'post',
data
})
return request({
url: '/system/review/task/view',
method: 'post',
data
})
}
/**
* 细则提交
* @param {*} data
* @returns
* @param {*} data
* @returns
*/
export function reviewDetailsSubmit(data) {
return request({
url: '/review/details/result/save',
method: 'post',
data
})
return request({
url: '/review/details/result/save',
method: 'post',
data
})
}
// 提交体系审查问卷
export function taskSubmit(data) {
return request({
url: '/system/review/task/submit',
method: 'post',
data
})
return request({
url: '/system/review/task/submit',
method: 'post',
data
})
}
// 启动车辆问卷审查任务
export function startReview(data) {
return request({
url: '/car/review/task/startReview',
method: 'post',
data
})
return request({
url: '/car/review/task/startReview',
method: 'post',
data
})
}
// 提交车辆问卷审查任务
export function submitReview(data) {
return request({
url: '/car/review/task/submitReview',
method: 'post',
data
})
return request({
url: '/car/review/task/submitReview',
method: 'post',
data
})
}
// 查看车辆问卷审查任务详情
export function checkTaskDetail(data) {
return request({
url: '/car/review/task/view',
method: 'post',
data
})
}
\ No newline at end of file
return request({
url: '/car/review/task/view',
method: 'post',
data
})
}
/**
* 确认体系审查
* @param {*} data
* @returns
*/
export function reviewTaskConfirm(data) {
return request({
url: '/system/review/task/confirm',
method: 'post',
data
})
}
/**
*  开始体系审查
* @param {*} data
* @returns
*/
export function reviewTaskStart(data) {
return request({
url: '/system/review/task/start',
method: 'post',
data
})
}
/**
*  开始车辆审查
* @param {*} data
* @returns
*/
export function reviewCarTaskStart(data) {
return request({
url: '/car/review/task/startReview',
method: 'post',
data
})
}
/**
* 确认车辆审查
* @param {*} data
* @returns
*/
export function carReviewTaskConfirm(data) {
return request({
url: '/car/review/task/confirmReview',
method: 'post',
data
})
}
......@@ -15,6 +15,7 @@ const getters = {
permission_routes: state => state.permission.routes,
topbarRouters: state => state.permission.topbarRouters,
defaultRoutes: state => state.permission.defaultRoutes,
sidebarRouters: state => state.permission.sidebarRouters
sidebarRouters: state => state.permission.sidebarRouters,
companyFiles: state => state.processing.companyFiles
}
export default getters
......@@ -6,6 +6,7 @@ import user from './modules/user'
import tagsView from './modules/tagsView'
import permission from './modules/permission'
import settings from './modules/settings'
import processing from './modules/processing'
import getters from './getters'
Vue.use(Vuex)
......@@ -17,6 +18,7 @@ const store = new Vuex.Store({
user,
tagsView,
permission,
processing,
settings
},
getters
......
import {getCompanyFile} from '@/api/task/files.js'
const state = {
companyFiles:[
]
}
const mutations = {
SET_FILES: (state, files) => {
state.companyFiles = files
}
}
const actions = {
getCompanyFiles({ commit }, data) {
getCompanyFile(data).then(res=>{
commit('SET_FILES', res.data)
})
}
}
export default {
namespaced: true,
state,
mutations,
actions
}
/**
* 根据要点合并单元格
* @param {*} i 细则项目
*/
export function getRows(i) {
let n = 0
if (i.reviewDetailsList) {
n = i.reviewDetailsList.length
}
return n + 1
}
/**
* 根据要求合并单元格
* @param {*} i 标准要求
*/
export function getRows2(item) {
let n = 0
if (item.keyPointList) {
n = item.keyPointList.length
}
item.keyPointList.map(i => {
// i.reviewDetailsList.map(s => {
// n *= s.reviewSceneList.length
// })
n *= i.reviewDetailsList.length
})
return n + 2
}
// getRows(i) {
// let n = 0
// if (i.reviewDetailsList) {
// n = i.reviewDetailsList.length
// }
// i.reviewDetailsList.map(s => {
// n = n * s.reviewSceneList.length
// })
// return n + 2
// },
// getRows2(item) {
// let n = 0
// if (item.keyPointList) {
// n = item.keyPointList.length
// }
// item.keyPointList.map(i => {
// i.reviewDetailsList.map(s => {
// n *= s.reviewSceneList.length
// })
// n *= i.reviewDetailsList.length
// })
// return n + 3
// },
\ No newline at end of file
......@@ -115,7 +115,6 @@
<th>标准要求</th>
<th>审查要点</th>
<th>审查细则</th>
<th>符合场景</th>
<th>审查结果</th>
<th>填写人</th>
</tr>
......@@ -152,49 +151,30 @@
index
"
>
<td
align="center"
:rowspan="v.reviewSceneList.length + 1"
>
<td align="center">
{{ v.text }}
</td>
</tr>
<!-- 循环遍历 reviewSceneList -->
<template
v-for="(s, reviewSceneIndex) in v.reviewSceneList"
>
<tr
:key="
'reviewSceneIndex-4' +
PointIndex +
reviewDetailIndex +
index +
reviewSceneIndex
"
>
<td align="center">{{ s.text }}</td>
<td align="center">
{{
v.result
? v.result.passed === null
? '__'
: v.result.passed === 0
? '不通过'
: '通过'
: '__'
}}
</td>
<td align="center">
{{
v.result
<td align="center">
{{
v.result
? v.result.passed === null
? '__'
: v.result.passed === 0
? '不通过'
: '通过'
: '__'
}}
</td>
<td align="center">
{{
v.result
? v.result.userName
? v.result.userName
? v.result.userName
: '__'
: '__'
}}
</td>
</tr>
</template>
: '__'
}}
</td>
</tr>
</template>
</template>
</template>
......@@ -296,11 +276,12 @@
</template>
<!--js逻辑-->
<script>
import { taskDetail, taskSubmit, checkTaskDetail } from '@/api/task/task'
import { reviewTaskDetail, taskSubmit } from '@/api/task/task'
import { getRows, getRows2 } from '@/utils/reviewDetailsTable.js'
export default {
data() {
return {
isShow: false,
isShow: 1,
model: {
systemReviewTask: {},
reviewSceneChangeTasks: {},
......@@ -334,14 +315,10 @@ export default {
{ required: true, message: '请输入检验负责人', trigger: 'blur' }
]
},
taskId: '',
type: ''
taskId: ''
}
},
mounted() {
if (this.$route.query.type) {
this.type = this.$route.query.type
}
if (this.$route.query.id) {
this.taskId = this.$route.query.id
}
......@@ -352,16 +329,9 @@ export default {
* 获取任务详情
*/
async getTask() {
let res
if (this.type === '1') {
res = await taskDetail({
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 {
......@@ -383,29 +353,6 @@ export default {
}
})
},
getRows(i) {
let n = 0
if (i.reviewDetailsList) {
n = i.reviewDetailsList.length
}
i.reviewDetailsList.map(s => {
n = n * s.reviewSceneList.length
})
return n + 2
},
getRows2(item) {
let n = 0
if (item.keyPointList) {
n = item.keyPointList.length
}
item.keyPointList.map(i => {
i.reviewDetailsList.map(s => {
n *= s.reviewSceneList.length
})
n *= i.reviewDetailsList.length
})
return n + 3
},
goUpdate() {
if (this.type === '1') {
this.$router.push({
......@@ -416,7 +363,9 @@ export default {
path: '/processing/type-check-form?id=' + this.taskId
})
}
}
},
getRows,
getRows2
}
}
</script>
......
This diff is collapsed.
......@@ -189,6 +189,7 @@
</template>
<!--js逻辑-->
<script>
import { getRows, getRows2 } from '@/utils/reviewDetailsTable.js'
export default {
data() {
return {
......@@ -349,27 +350,12 @@ export default {
}
},
methods: {
getRows(i) {
let n = 0
if (i.reviewDetailsList) {
n = i.reviewDetailsList.length
}
return n + 1
},
getRows2(item) {
let n = 0
if (item.keyPointList) {
n = item.keyPointList.length
}
item.keyPointList.map(i => {
n += i.reviewDetailsList.length
})
return n + 1
},
/* 返回跳转*/
goToProcessedReview() {
this.$router.push('/processing/processed-review')
}
},
getRows,
getRows2
}
}
</script>
......
......@@ -184,6 +184,10 @@ export default {
// vue表单校验
this.$refs.fileRef.validate(valid => {
if (valid) {
this.$store.dispatch('processing/getCompanyFiles', {
company: '',
taskId: ''
})
this.$emit('handleSave', false)
}
})
......
<!-- 预览审查表单 -->
<template>
<el-dialog
title="预览表单"
title="预览审查表单"
:visible.sync="dialogManger.dialogVisible"
width="75%"
append-to-body
:close-on-click-modal="false"
:close-on-press-escape="false"
:before-close="handleSceneClose"
:before-close="handleClose"
>
<div class="file-prompt">
<div>
<i
class="el-icon-info"
/>新增场景,需要组织评审,评审通过后新增场景自动进入场景库。
</div>
<!--审查问卷概要-->
<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 dialogManger.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>
<el-form
ref="sceneForm"
:model="sceneForm"
:rules="sceneRules"
label-width="80px"
class="scene-form"
>
<el-form-item label="评审类型" prop="reviewType">
<!-- 下拉框 -->
<el-select
v-model="sceneForm.reviewType"
placeholder="请选择评审类型"
style="width: 100%"
>
<el-option
v-for="item in reviewTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="场景分类" prop="sceneClassification">
<el-select
v-model="sceneForm.sceneClassification"
placeholder="请选择评审类型"
style="width: 100%"
>
<el-option
v-for="item in reviewTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="场景内容" prop="sceneContent">
<el-input
v-model="sceneForm.sceneContent"
maxlength="100"
show-word-limit
type="textarea"
/>
</el-form-item>
<el-form-item label="评审人员" prop="assessor">
<div>组长-xxx</div>
<div>组员-xxx、xxx、xxx</div>
</el-form-item>
<el-form-item label="备注信息" prop="remark">
<el-input
v-model="sceneForm.remark"
maxlength="100"
show-word-limit
type="textarea"
/>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="handleSceneClose()">取 消</el-button>
<el-button type="primary" @click="handleSaveNewScene()">
确 定
</el-button>
<el-button type="primary" @click="handleClose()"> 关 闭 </el-button>
</span>
</el-dialog>
</template>
<script>
import { getRows, getRows2 } from '@/utils/reviewDetailsTable.js'
export default {
dicts: ['file_status'],
props: {
dialogManger: {
type: Object,
default() {
return {
dialogVisible: false
dialogVisible: false,
model: {
carReviewTask: {
standard: []
}
}
}
}
}
},
data() {
return {
sceneForm: {},
sceneRules: {
reviewType: [
{ required: true, message: '请选择评审类型', trigger: 'change' }
],
sceneClassification: [
{ required: true, message: '请选择场景分类', trigger: 'change' }
],
sceneContent: [
{ required: true, message: '请输入场景内容', trigger: 'blur' }
]
},
reviewTypeOptions: []
}
},
// data() {
// return {
// }
// },
methods: {
// 新增场景对话框关闭时触发的回调函数
handleSceneClose() {
// 关闭预览
handleClose() {
this.dialogManger.dialogVisible = false
this.$refs.sceneForm.resetFields()
},
/**
* 保存新场景
*/
handleSaveNewScene() {
// vue表单校验vue表单校验
this.$refs.sceneForm.validate(valid => {
if (valid) {
this.handleSceneClose()
}
})
}
getRows,
getRows2
}
}
</script>
<!--样式-->
<style scoped lang="scss">
/* 审查文件表格样式(最外层) */
.form-review-questionnaire {
padding: 2.5rem 4rem 1rem;
width: 100%;
height: max-content;
.table {
border-collapse: collapse;
th {
text-align: center;
}
td {
min-width: 100px;
height: 100%;
text-align: left;
}
}
}
</style>
......@@ -2,7 +2,7 @@
<div class="app-container">
<el-card class="custom-card">
<div slot="header" class="clearfix">
<span>填写检查表单(所属任务:{{ model.systemReviewTask.name }})</span>
<span>填写检查表单(所属任务:{{ model.carReviewTask.name }})</span>
<div class="back-btn">
<el-button type="primary" plain @click="handlePreview">
预览表单
......@@ -24,39 +24,37 @@
<!-- <span class="center-text">有 3 条场景变更待处理</span>-->
<el-checkbox v-model="checked">仅显示未完成页面</el-checkbox>
</div>
<el-row>
<!-- 步骤条 -->
<el-col :span="2">
<div class="left-content" style="height: 300px; width: 110px">
<div v-for="(item, index) in detailsList" :key="index">
<div
:class="{
'exclamation-point': item.warn,
'no-exclamation-point': !item.warn
}"
>
<div v-show="item.warn" class="exclamation">!</div>
</div>
<div
class="no-select-circle"
:class="{
'select-circle': index === activeModel
}"
@click="changeStep(index)"
>
<span class="inner-text">{{ index + 1 }}</span>
</div>
<span
v-show="item.result && item.result.passed !== null"
class="tick-class"
>
<i class="el-icon-check" />
</span>
</div>
<!-- 步骤条 -->
<div class="top-content">
<div v-for="(item, index) in detailsList" :key="index">
<div
:class="{
'exclamation-point': item.warn,
'no-exclamation-point': !item.warn
}"
>
<div v-show="item.warn" class="exclamation">!</div>
</div>
</el-col>
<div
class="no-select-circle"
:class="{
'select-circle': index === activeModel
}"
@click="changeStep(index)"
>
<span class="inner-text">{{ index + 1 }}</span>
</div>
<span
v-show="item.result && item.result.passed !== null"
class="tick-class"
>
<i class="el-icon-check" />
</span>
</div>
</div>
<el-row>
<!-- 内容 -->
<el-col :span="22">
<el-col :span="24">
<el-form
ref="form"
class="right-content"
......@@ -167,17 +165,17 @@
<span>{{ name }}</span>
</el-form-item>
</el-form>
<div class="bottom-btn">
<el-button type="primary" plain @click="submitQuestionnaire()">
保存当前条目
</el-button>
<el-button type="primary" @click="submitFrom()"
>提交表格</el-button
>
</div>
</el-col>
</el-row>
</div>
<div class="bottom-btn">
<el-button type="primary" plain @click="submitQuestionnaire(1)">
保存当前条目
</el-button>
<el-button type="primary" @click="submitQuestionnaire(2)"
>提交表格</el-button
>
</div>
</el-card>
<!-- 场景查看对话框 -->
<scene-view :dialog-manger="sceneViewManger"></scene-view>
......@@ -188,13 +186,16 @@
</template>
<script>
import { checkTaskDetail, reviewDetailsSubmit } from '@/api/task/task'
import {
checkTaskDetail,
reviewDetailsSubmit,
carReviewTaskConfirm
} from '@/api/task/task'
import sceneView from './components/sceneView.vue'
import companyFile from './components/companyFile.vue'
import { mapGetters } from 'vuex'
import sceneDialog from './components/sceneDialog.vue'
import previewView from './components/previewView.vue'
previewView
export default {
components: {
'scene-dialog': sceneDialog,
......@@ -213,7 +214,11 @@ export default {
},
previewManger: {
dialogVisible: false,
data: {}
model: {
carReviewTask: {
standard: []
}
}
},
form: {
passed: '',
......@@ -230,7 +235,7 @@ export default {
fileName: ''
},
model: {
systemReviewTask: {},
carReviewTask: {},
reviewSceneChangeTasks: {},
detailsList: []
},
......@@ -258,21 +263,9 @@ export default {
show: false,
fileName: ''
},
files: [
{ value: '三全鲜食(北新泾店)', address: '长宁区新渔路144号' },
{
value: 'Hot honey 首尔炸鸡(仙霞路)',
address: '上海市长宁区淞虹路661号'
},
{
value: '新旺角茶餐厅',
address: '上海市普陀区真北路988号创邑金沙谷6号楼113'
}
],
isFileUpdate: false
}
},
computed: {
readNumber() {
let num = 0
......@@ -283,12 +276,12 @@ export default {
})
return num
},
...mapGetters(['name'])
...mapGetters(['name', 'companyFiles'])
},
watch: {
'form.fileName': function (newValue) {
if (newValue) {
const files = this.files
const files = this.companyFiles
const query = files.filter(this.createFilter(newValue))
if (query.length === 0) {
this.formManger.show = true
......@@ -313,24 +306,32 @@ export default {
this.handleCircle(0)
}
},
mounted() {
async mounted() {
this.taskId = this.$route.query.id
this.getTask()
// this.$store.dispatch('processing/getCompanyFiles', {
// company: '',
// taskId: ''
// })
await this.getTask()
this.handleCircle(0)
},
methods: {
/**
* 企业文件保存回调
*/
handleFileSave(element) {
this.isFileUpdate = false
this.formManger.show = false
},
/**
* 企业文件修改回调
* 企业文件表单内容修改回调
* @param {*} element 返回值
*/
handleFileUpdate(element) {
this.isFileUpdate = element
},
querySearch(queryString, cb) {
const files = this.files
const files = this.companyFiles
const results = queryString
? files.filter(this.createFilter(queryString))
: files
......@@ -349,28 +350,28 @@ export default {
*/
handlePreview() {
this.previewManger.dialogVisible = true
this.previewManger.model = this.model
},
/**
* 获取任务详情
*/
getTask() {
checkTaskDetail({
async getTask() {
const res = await checkTaskDetail({
taskId: this.taskId
}).then(res => {
if (res.code === 200) {
this.model = res.data
if (
this.model.reviewSceneChangeTasks &&
this.model.reviewSceneChangeTasks.length
) {
this.sceneChange(this.model.reviewSceneChangeTasks)
}
this.detailsList = this.model.detailsList
this.handleCircle(0)
} else {
this.$modal.msgError(res.msg)
}
})
if (res.code === 200) {
this.model = res.data
if (
this.model.reviewSceneChangeTasks &&
this.model.reviewSceneChangeTasks.length
) {
this.sceneChange(this.model.reviewSceneChangeTasks)
}
this.detailsList = this.model.detailsList
} else {
this.$modal.msgError(res.msg)
}
return true
},
/**
* 场景变更任务处理
......@@ -486,11 +487,7 @@ export default {
if (valid) {
reviewDetailsSubmit(this.form).then(res => {
if (res.code === 200) {
if (!this.model.detailsList[this.activeModel].result) {
this.model.detailsList[this.activeModel].result = { passed: 0 }
}
this.model.detailsList[this.activeModel].result.passed =
this.form.passed
this.getTask()
this.oldForm = this.form
this.$modal.msgSuccess('提交表格成功')
} else {
......@@ -499,6 +496,18 @@ export default {
})
}
})
},
/**
*确认体系审查
*/
submitFrom() {
carReviewTaskConfirm({
taskId: this.taskId
}).then(res => {
this.$router.push({
path: 'processing/unprocessed-review'
})
})
}
}
}
......@@ -536,7 +545,13 @@ export default {
}
}
.left-content {
.top-content {
display: flex;
flex-direction: row;
/* 设置为纵向排列 */
flex-wrap: wrap;
/* 当容器不足时自动换行 */
.tick-class {
float: right;
position: relative;
......
......@@ -138,7 +138,7 @@
>
{{
getDictData(
dict.type.test_cartype_task_btn,
dict.type.test_cartype_type_btn,
item.carReviewStatus
)
}}
......@@ -150,7 +150,7 @@
@click="handleCarTypeTestTaskContent(item.carTestStatus, item.id)"
>
{{
getDictData(dict.type.test_cartype_type_btn, item.carTestStatus)
getDictData(dict.type.test_cartype_task_btn, item.carTestStatus)
}}
</el-link>
</div>
......@@ -298,22 +298,22 @@
title="移交任务"
@click="openTaskDialog"
></el-button>
<el-button
<!-- <el-button
type="success"
icon="el-icon-s-management"
size="mini"
circle
title="预览报告"
@click="previewReport"
></el-button>
<!-- <el-button
></el-button> -->
<el-button
type="success"
icon="el-icon-document"
size="mini"
circle
title="预览企业留档文件"
@click="handleRetentionFile(item)"
></el-button> -->
></el-button>
<el-button
type="success"
icon="el-icon-folder"
......@@ -371,9 +371,9 @@
<script>
import page from '@/mixins/page'
import taskDialog from './components/dialog'
import request from '@/utils/request'
import { getHourDiff } from '@/utils/diff'
import { mapGetters } from 'vuex'
import { reviewTaskStart, reviewCarTaskStart } from '@/api/task/task'
export default {
dicts: [
'sys_job_status',
......@@ -390,7 +390,6 @@ export default {
return {
// 子任务内容跳转文字map
dialogVisible: false,
pageType: '1', // 代办任务类型 1-体系审查 其他-车型测评
listUrl: '/task/findPending',
queryParams: {
taskStatus: '',
......@@ -406,17 +405,30 @@ export default {
computed: {
...mapGetters(['userId'])
},
watch: {
pageType(newValue) {
this.listUrl =
newValue === '1'
? '/system/review/task/findInProces'
: '/car/review/task/findPending'
this.resetQuery()
this.handleQuery()
}
},
methods: {
// loadData() {
// this.loading = true
// request({
// url: this.listUrl,
// method: 'post',
// data: this.queryParams
// })
// .then(res => {
// if (res.code === 200) {
// console.log(res.rows)
// res.rows[0].carReviewStatus = 'CONFIRM'
// this.tableData = res.rows
// this.total = res.total
// }
// this.loading = false
// })
// .catch(error => {
// if (error.msg) {
// this.$message.error(error.msg)
// }
// this.loading = false
// })
// },
/**
* 企业留档文件
* @param item 对象
......@@ -431,6 +443,9 @@ export default {
* 耗时计算
*/
getHourDiff,
/**
* 企业文件库
*/
handleFileLibrary(item) {
console.log(item)
this.$router.push({
......@@ -508,19 +523,26 @@ export default {
/**
* 开始任务
* @param {} item 单项数据
* @param {} type 单项数据
*/
startTask(item) {
request({
url: '/system/review/task/start',
method: 'post',
data: {
taskId: item.id
}
}).then(res => {
console.log(res)
async startTask(item, type) {
let res
if (type === 1) {
res = await reviewTaskStart({
taskId: item.systemReviewTaskId
})
} else {
res = await reviewCarTaskStart({
taskId: item.carReviewTaskId
})
}
if (res.code === 200) {
this.loadData()
})
} else {
if (res.msg) {
this.$message.error(res.msg)
}
}
},
goDetail(id) {
this.$router.push({
......@@ -540,17 +562,6 @@ export default {
path: '/processing/reviewReport'
})
},
handleReviewForm() {
this.$router.push({
path: '/processing/review-form',
query: { flag: '检查表单' }
})
},
handleConfirmFindings(id) {
this.$router.push({
path: '/processing/confirm-result?id=' + id
})
},
// 体系审查
handleSystemReviewTestContent(status, id) {
switch (status) {
......@@ -615,7 +626,7 @@ export default {
// 确认车型检验结果
case 'CONFIRM':
this.$router.push({
path: '/processing/confirm-result?type=2&id=' + id
path: '/processing/vehicle-type?id=' + id
})
break
// 查看车型审查记录
......
......@@ -184,6 +184,10 @@ export default {
// vue表单校验
this.$refs.fileRef.validate(valid => {
if (valid) {
this.$store.dispatch('processing/getCompanyFiles', {
company: '',
taskId: ''
})
this.$emit('handleSave', false)
}
})
......
<!-- 预览审查表单 -->
<template>
<el-dialog
title="预览表单"
title="预览审查表单"
:visible.sync="dialogManger.dialogVisible"
width="75%"
append-to-body
:close-on-click-modal="false"
:close-on-press-escape="false"
:before-close="handleSceneClose"
:before-close="handleClose"
>
<div class="file-prompt">
<div>
<i
class="el-icon-info"
/>新增场景,需要组织评审,评审通过后新增场景自动进入场景库。
</div>
<!--审查问卷概要-->
<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 dialogManger.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>
<!-- 循环遍历 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>
<el-form
ref="sceneForm"
:model="sceneForm"
:rules="sceneRules"
label-width="80px"
class="scene-form"
>
<el-form-item label="评审类型" prop="reviewType">
<!-- 下拉框 -->
<el-select
v-model="sceneForm.reviewType"
placeholder="请选择评审类型"
style="width: 100%"
>
<el-option
v-for="item in reviewTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="场景分类" prop="sceneClassification">
<el-select
v-model="sceneForm.sceneClassification"
placeholder="请选择评审类型"
style="width: 100%"
>
<el-option
v-for="item in reviewTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="场景内容" prop="sceneContent">
<el-input
v-model="sceneForm.sceneContent"
maxlength="100"
show-word-limit
type="textarea"
/>
</el-form-item>
<el-form-item label="评审人员" prop="assessor">
<div>组长-xxx</div>
<div>组员-xxx、xxx、xxx</div>
</el-form-item>
<el-form-item label="备注信息" prop="remark">
<el-input
v-model="sceneForm.remark"
maxlength="100"
show-word-limit
type="textarea"
/>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="handleSceneClose()">取 消</el-button>
<el-button type="primary" @click="handleSaveNewScene()">
确 定
</el-button>
<el-button type="primary" @click="handleClose()"> 关 闭 </el-button>
</span>
</el-dialog>
</template>
<script>
import { getRows, getRows2 } from '@/utils/reviewDetailsTable.js'
export default {
dicts: ['file_status'],
props: {
dialogManger: {
type: Object,
default() {
return {
dialogVisible: false
dialogVisible: false,
model: {
systemReviewTask: {
standard: []
}
}
}
}
}
},
data() {
return {
sceneForm: {},
sceneRules: {
reviewType: [
{ required: true, message: '请选择评审类型', trigger: 'change' }
],
sceneClassification: [
{ required: true, message: '请选择场景分类', trigger: 'change' }
],
sceneContent: [
{ required: true, message: '请输入场景内容', trigger: 'blur' }
]
},
reviewTypeOptions: []
}
},
// data() {
// return {
// }
// },
methods: {
// 新增场景对话框关闭时触发的回调函数
handleSceneClose() {
// 关闭预览
handleClose() {
this.dialogManger.dialogVisible = false
this.$refs.sceneForm.resetFields()
},
/**
* 保存新场景
*/
handleSaveNewScene() {
// vue表单校验vue表单校验
this.$refs.sceneForm.validate(valid => {
if (valid) {
this.handleSceneClose()
}
})
}
getRows,
getRows2
}
}
</script>
<!--样式-->
<style scoped lang="scss">
/* 审查文件表格样式(最外层) */
.form-review-questionnaire {
padding: 2.5rem 4rem 1rem;
width: 100%;
height: max-content;
.table {
border-collapse: collapse;
th {
text-align: center;
}
td {
min-width: 100px;
height: 100%;
text-align: left;
}
}
}
</style>
......@@ -171,12 +171,10 @@
</el-row>
</div>
<div class="bottom-btn">
<el-button type="primary" plain @click="submitQuestionnaire(1)">
<el-button type="primary" plain @click="submitQuestionnaire()">
保存当前条目
</el-button>
<el-button type="primary" @click="submitQuestionnaire(2)"
>提交表格</el-button
>
<el-button type="primary" @click="submitFrom()">提交表格</el-button>
</div>
</el-card>
<!-- 场景查看对话框 -->
......@@ -188,7 +186,11 @@
</template>
<script>
import { reviewTaskDetail, reviewDetailsSubmit } from '@/api/task/task'
import {
reviewTaskDetail,
reviewDetailsSubmit,
reviewTaskConfirm
} from '@/api/task/task'
import sceneView from './components/sceneView.vue'
import companyFile from './components/companyFile.vue'
import { mapGetters } from 'vuex'
......@@ -213,7 +215,11 @@ export default {
},
previewManger: {
dialogVisible: false,
data: {}
model: {
systemReviewTask: {
standard: []
}
}
},
form: {
passed: '',
......@@ -258,21 +264,9 @@ export default {
show: false,
fileName: ''
},
files: [
{ value: '三全鲜食(北新泾店)', address: '长宁区新渔路144号' },
{
value: 'Hot honey 首尔炸鸡(仙霞路)',
address: '上海市长宁区淞虹路661号'
},
{
value: '新旺角茶餐厅',
address: '上海市普陀区真北路988号创邑金沙谷6号楼113'
}
],
isFileUpdate: false
}
},
computed: {
readNumber() {
let num = 0
......@@ -283,12 +277,12 @@ export default {
})
return num
},
...mapGetters(['name'])
...mapGetters(['name', 'companyFiles'])
},
watch: {
'form.fileName': function (newValue) {
if (newValue) {
const files = this.files
const files = this.companyFiles
const query = files.filter(this.createFilter(newValue))
if (query.length === 0) {
this.formManger.show = true
......@@ -313,24 +307,32 @@ export default {
this.handleCircle(0)
}
},
mounted() {
async mounted() {
this.taskId = this.$route.query.id
this.getTask()
// this.$store.dispatch('processing/getCompanyFiles', {
// company: '',
// taskId: ''
// })
await this.getTask()
this.handleCircle(0)
},
methods: {
/**
* 企业文件保存回调
*/
handleFileSave(element) {
this.isFileUpdate = false
this.formManger.show = false
},
/**
* 企业文件修改回调
* 企业文件表单内容修改回调
* @param {*} element 返回值
*/
handleFileUpdate(element) {
this.isFileUpdate = element
},
querySearch(queryString, cb) {
const files = this.files
const files = this.companyFiles
const results = queryString
? files.filter(this.createFilter(queryString))
: files
......@@ -349,28 +351,28 @@ export default {
*/
handlePreview() {
this.previewManger.dialogVisible = true
this.previewManger.model = this.model
},
/**
* 获取任务详情
*/
getTask() {
reviewTaskDetail({
async getTask() {
const res = await reviewTaskDetail({
taskId: this.taskId
}).then(res => {
if (res.code === 200) {
this.model = res.data
if (
this.model.reviewSceneChangeTasks &&
this.model.reviewSceneChangeTasks.length
) {
this.sceneChange(this.model.reviewSceneChangeTasks)
}
this.detailsList = this.model.detailsList
this.handleCircle(0)
} else {
this.$modal.msgError(res.msg)
}
})
if (res.code === 200) {
this.model = res.data
if (
this.model.reviewSceneChangeTasks &&
this.model.reviewSceneChangeTasks.length
) {
this.sceneChange(this.model.reviewSceneChangeTasks)
}
this.detailsList = this.model.detailsList
} else {
this.$modal.msgError(res.msg)
}
return true
},
/**
* 场景变更任务处理
......@@ -486,11 +488,7 @@ export default {
if (valid) {
reviewDetailsSubmit(this.form).then(res => {
if (res.code === 200) {
if (!this.model.detailsList[this.activeModel].result) {
this.model.detailsList[this.activeModel].result = { passed: 0 }
}
this.model.detailsList[this.activeModel].result.passed =
this.form.passed
this.getTask()
this.oldForm = this.form
this.$modal.msgSuccess('提交表格成功')
} else {
......@@ -499,6 +497,18 @@ export default {
})
}
})
},
/**
*确认体系审查
*/
submitFrom() {
reviewTaskConfirm({
taskId: this.taskId
}).then(res => {
this.$router.push({
path: 'processing/unprocessed-review'
})
})
}
}
}
......
This diff is collapsed.
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