From aa02c07d9b9b4eebb0771e5bdb97bc5d109c1ded Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: Thu, 23 Jun 2022 14:33:11 +0800
Subject: [PATCH] 'lct'
---
src/views/doublePreventAction/hiddenDanger/inspectionRecord/components/detail.vue | 536 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 463 insertions(+), 73 deletions(-)
diff --git a/src/views/doublePreventAction/hiddenDanger/inspectionRecord/components/detail.vue b/src/views/doublePreventAction/hiddenDanger/inspectionRecord/components/detail.vue
index 96ca670..0e35e0b 100644
--- a/src/views/doublePreventAction/hiddenDanger/inspectionRecord/components/detail.vue
+++ b/src/views/doublePreventAction/hiddenDanger/inspectionRecord/components/detail.vue
@@ -1,17 +1,17 @@
<template>
<div class="app-container">
<el-dialog title="巡检记录详情" :visible.sync="inspectionRecordFormVisible" append-to-body :close-on-click-modal="false" width="40%">
- <el-form ref="inspectionRecordForm" :model="inspectionRecordForm" label-position="right" label-width="120px">
+ <el-form ref="inspectionRecordForm" :model="inspectionRecordForm" label-position="right" label-width="120px" readonly>
<el-row>
<el-col :span="12">
<el-form-item label="任务名称" prop="title">
- <el-input v-model="inspectionRecordForm.title" class="analyseUnit_input" :disabled="ifShow">
+ <el-input v-model="inspectionRecordForm.title" class="analyseUnit_input" readonly>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检查类型" prop="type">
- <el-select v-model="inspectionRecordForm.type" class="analyseUnit_input" :disabled="ifShow">
+ <el-select v-model="inspectionRecordForm.type" class="analyseUnit_input" readonly>
<el-option
v-for="item in typeList"
:key=item.id
@@ -24,39 +24,14 @@
</el-row>
<el-row>
<el-col :span="12">
- <el-form-item label="任务名称" prop="noticeUname">
- <el-input v-model="inspectionRecordForm.noticeUname" class="analyseUnit_input" :disabled="ifShow">
+ <el-form-item label="巡检人" prop="execUname">
+ <el-input v-model="inspectionRecordForm.execUname" class="analyseUnit_input" readonly>
</el-input>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="检查类型" prop="execUname">
- <el-input v-model="inspectionRecordForm.execUname" class="analyseUnit_input" :disabled="ifShow">
- </el-input>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="12">
- <el-form-item label="巡检开始时间" prop="startTime">
- <el-date-picker v-model="inspectionRecordForm.execUname" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="周期开始时间" class="analyseUnit_input" :disabled="ifShow" ></el-date-picker>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="巡检结束时间" prop="startTime">
- <el-date-picker v-model="inspectionRecordForm.execUname" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="周期开始时间" class="analyseUnit_input" :disabled="ifShow"></el-date-picker>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="12">
- <el-form-item label="巡检提交时间" prop="execUname">
- <el-date-picker v-model="inspectionRecordForm.execUname" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="周期开始时间" class="analyseUnit_input" :disabled="ifShow"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="任务状态" prop="status">
- <el-select v-model="inspectionRecordForm.status" class="analyseUnit_input" :disabled="ifShow">
+ <el-select v-model="inspectionRecordForm.status" class="analyseUnit_input" readonly>
<el-option
v-for="item in statusList"
:key="item.id"
@@ -67,82 +42,497 @@
</el-select>
</el-form-item>
</el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="巡检开始时间" prop="expTime">
+ <el-date-picker v-model="inspectionRecordForm.expTime" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="巡检开始时间" class="analyseUnit_input" readonly></el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="巡检结束时间" prop="endTime">
+ <el-date-picker v-model="inspectionRecordForm.endTime" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="巡检结束时间" class="analyseUnit_input" readonly></el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="巡检提交时间" prop="execTime">
+ <el-date-picker v-model="inspectionRecordForm.execTime" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="巡检提交时间" class="analyseUnit_input" readonly></el-date-picker>
+ </el-form-item>
+ </el-col>
+
</el-row>
</el-form>
</el-dialog>
- <el-dialog title="巡检单元详情" :visible.sync="inspectionRecordDetailFormVisible" append-to-body :close-on-click-modal="false" width="30%">
- <el-form ref="inspectionRecordDetailForm" :model="inspectionRecordDetailForm" label-position="right" label-width="120px">
+ <el-dialog :title="titleDetail" :visible.sync="inspectionRecordDetailFormVisible" append-to-body :close-on-click-modal="false" width="500px">
+ <el-form ref="inspectionRecordDetailForm" :rules="inspectionRecordDetailFormRules" :model="inspectionRecordDetailForm" label-position="right" label-width="120px">
<el-row>
<el-col :span="24">
- <el-form-item label="隐患排查内容" prop="content">
- <el-input v-model="inspectionRecordDetailForm.content" class="input" :disabled="ifShow">
- </el-input>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="24">
- <el-form-item label="上报说明" prop="info">
- <el-input v-model="inspectionRecordDetailForm.info" class="input" :disabled="ifShow">
- </el-input>
- </el-form-item>
- </el-col>
-
- </el-row>
- <el-row>
- <el-col :span="24">
- <el-form-item label="上报照片" prop="img">
- <el-input v-model="inspectionRecordDetailForm.img" class="input" :disabled="ifShow">
- </el-input>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="24">
- <el-form-item label="状态" prop="status">
- <el-select v-model="inspectionRecordDetailForm.status" class="input" :disabled="ifShow">
+ <el-form-item label="巡检结果" prop="result">
+ <el-select v-model="inspectionRecordDetailForm.result" :disabled="ifShow" class="input" @change="ifNormal = (inspectionRecordDetailForm.result === 2 ? true : false)">
<el-option
- v-for="item in statusList"
- :key="item.id"
- :label="item.name"
- :value="item.id"
- >
- </el-option>
+ v-for="item in resultList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id"
+ ></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
+ <div v-if="ifNormal">
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="异常通知部门" prop="noticeDepId">
+ <el-select v-model="inspectionRecordDetailForm.noticeDepId" filterable clearable class="input" @change="changeDepartment('notice')" :disabled="ifShow">
+ <el-option
+ v-for="item in departmentList"
+ :key="item.id"
+ :value="item.id"
+ :label="item.department"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="异常通知人员" prop="noticeUid">
+ <el-select v-model="inspectionRecordDetailForm.noticeUid" clearable filterable :disabled="ifShow" class="input">
+ <el-option
+ v-for="item in noticeUserList"
+ :key="item.id"
+ :value="item.id"
+ :label="item.realname"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="整改时间" prop="fixTime">
+ <el-date-picker placeholder="选择时间" v-model="inspectionRecordDetailForm.fixTime" class="input" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" :disabled="ifShow"></el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="异常整改部门" prop="fixDepId">
+ <el-select v-model="inspectionRecordDetailForm.fixDepId" filterable clearable class="input" :disabled="ifShow" @change="changeDepartment('fix')">
+ <el-option
+ v-for="item in departmentList"
+ :key="item.id"
+ :value="item.id"
+ :label="item.department"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row >
+ <el-col :span="24">
+ <el-form-item label="整改人" prop="fixUid">
+ <el-select v-model="inspectionRecordDetailForm.fixUid" clearable filterable :disabled="ifShow" class="input">
+ <el-option
+ v-for="item in fixUserList"
+ :key="item.id"
+ :value="item.id"
+ :label="item.realname"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="巡检结果备注" prop="info">
+ <el-input type="textarea" :rows="3" v-model="inspectionRecordDetailForm.info" :disabled="ifShow" class="input">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="上报图片" prop="imgInfoList">
+ <el-upload
+ accept=".pdf,.jpg,.png"
+ :action="fileRoad"
+ class="upload-demo"
+ ref="upload"
+ :headers="header"
+ :data="uploadForm"
+ list-type="picture-card"
+ :file-list="fileList"
+ v-model="inspectionRecordDetailForm.imgInfoList"
+ :on-change="handleChangeFile"
+ :on-success="onFileSuccess"
+ :multiple="false"
+ :auto-upload="true">
+ <i slot="default" class="el-icon-plus"></i>
+ <div slot="file" slot-scope="{file}">
+ <img
+ class="el-upload-list__item-thumbnail"
+ :src="file.url" alt=""
+ >
+ <span class="el-upload-list__item-actions">
+ <span
+ class="el-upload-list__item-preview"
+ @click="handleFile(file)"
+ >
+ <i class="el-icon-zoom-in"></i>
+ </span>
+ <span
+ v-if="!disabled"
+ class="el-upload-list__item-delete"
+ @click="handleRemove(file,'one')"
+ >
+ <i class="el-icon-delete"></i>
+ </span>
+ </span>
+ </div>
+ </el-upload>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </div>
+ <div v-if="ifLook">
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="异常通知部门" prop="noticeDepId">
+ <el-select v-model="inspectionRecordDetailForm.problem.noticeDepId" filterable clearable class="input" @change="changeDepartment('notice')" readonly>
+ <el-option
+ v-for="item in departmentList"
+ :key="item.id"
+ :value="item.id"
+ :label="item.department"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="异常通知人员" prop="noticeUid">
+ <el-select v-model="inspectionRecordDetailForm.problem.noticeUid" clearable filterable readonly class="input">
+ <el-option
+ v-for="item in noticeUserList"
+ :key="item.id"
+ :value="item.id"
+ :label="item.realname"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="整改时间" prop="fixTime">
+ <el-date-picker placeholder="选择时间" v-model="inspectionRecordDetailForm.problem.fixTime" class="input" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" readonly></el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="异常整改部门" prop="fixDepId">
+ <el-select v-model="inspectionRecordDetailForm.problem.fixDepId" filterable clearable class="input" readonly>
+ <el-option
+ v-for="item in departmentList"
+ :key="item.id"
+ :value="item.id"
+ :label="item.department"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row >
+ <el-col :span="24">
+ <el-form-item label="整改人" prop="fixUid">
+ <el-select v-model="inspectionRecordDetailForm.problem.fixUid" clearable filterable readonly class="input">
+ <el-option
+ v-for="item in fixUserList"
+ :key="item.id"
+ :value="item.id"
+ :label="item.realname"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="巡检结果备注" prop="info" >
+ <el-input type="textarea" :rows="3" v-model="inspectionRecordDetailForm.problem.info" aria-readonly="true" class="input">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="上报图片" prop="imgInfoList">
+ <el-upload
+ accept=".pdf,.jpg,.png"
+ :action="fileRoad"
+ class="upload-demo"
+ ref="upload"
+ :headers="header"
+ :data="uploadForm"
+ list-type="picture-card"
+ :file-list="fileList"
+ v-model="inspectionRecordDetailForm.imgInfoList"
+ :on-change="handleChangeFile"
+ :on-success="onFileSuccess"
+ :auto-upload="true">
+ <i slot="default" class="el-icon-plus"></i>
+ <div slot="file" slot-scope="{file}">
+ <img
+ class="el-upload-list__item-thumbnail"
+ :src="file.url" alt=""
+ >
+ <span class="el-upload-list__item-actions">
+ <span
+ class="el-upload-list__item-preview"
+ @click="handleFile(file)"
+ >
+ <i class="el-icon-zoom-in"></i>
+ </span>
+ <span
+ v-if="!disabled"
+ class="el-upload-list__item-delete"
+ @click="handleRemove(file,'one')"
+ >
+ <i class="el-icon-delete"></i>
+ </span>
+ </span>
+ </div>
+ </el-upload>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </div>
+ <div style="text-align: center" v-show="ifConfirm">
+ <el-button @click="inspectionRecordDetailFormVisible = false">取消</el-button>
+ <el-button type="primary" @click="submitInspectionRecordDetail()">确认</el-button>
+ </div>
</el-form>
+ </el-dialog>
+ <el-dialog :visible.sync="dialogVisible" :append-to-body="true">
+ <img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
</div>
</template>
<script>
+ import Cookies from "js-cookie";
+ import {submitUnitOne} from "../../../../../api/inspectionTask";
+
export default {
name: "detail",
data(){
+ const validateImg = (rule, value, callback) => {
+ if (!this.inspectionRecordDetailForm.img) {
+ callback(new Error('请上传图片'))
+ } else {
+ callback()
+ }
+ }
return{
- inspectionRecordForm:{},
+ fileRoad:process.env.BASE_API + '/task/web/upload',
+ uploadForm:{
+ },
+ disabled:false,
+ header:{Authorization:''},
+ dialogImageUrl:false,
+ dialogVisible:false,
+ titleDetail:'',
+ inspectionRecordForm:{
+
+ },
inspectionRecordFormVisible:false,
- inspectionRecordDetailForm:{},
+ inspectionRecordDetailForm:{
+ execUid: null,
+ fixTime: null,
+ fixUid: null,
+ imgInfoList: [],
+ info: null,
+ noticeUid: null,
+ result: null,
+ taskId: null,
+ unitId: null,
+ fixDepId:null,
+ noticeDepId:null,
+ },
+ inspectionRecordDetailFormRules:{
+ img: [{ required: true, validator: validateImg, trigger: 'blur' }],
+ result: [{ required: true, message: '巡检结果不能为空', trigger: 'blur' }],
+ noticeUid: [{ required: true, message: '异常通知人员不能为空', trigger: 'change' }],
+ fixTime: [{ required: true, message: '整改时间不能为空', trigger: 'change' }],
+ fixUid: [{ required: true, message: '描整改人员不能为空', trigger: 'change' }],
+ info: [{ required: true, message: '巡检结果备注不能为空', trigger: 'blur' }],
+ fixDepId: [{ required: true, message: '异常整改部门不能为空', trigger: 'blur' }],
+ noticeDepId: [{ required: true, message: '异常通知部门不能为空', trigger: 'blur' }],
+ },
inspectionRecordDetailFormVisible:false,
ifShow:true,
+ ifNormal:false,
+ ifLook:false,
+ ifConfirm:false,
+ userList:[],
+ noticeUserList:[],
+ fixUserList:[],
+ departmentList:[],
+ fileList:[],
+ resultList:[{id:0,name:'未巡检'},{id:1,name:'正常'},{id:2,name:'异常'}],
typeList:[{id:1,name:'日常检查'},{id:2,name:'周期检查'}],
statusList:[{id:1,name:'待巡检'},{id:2,name:'巡检中'},{id:3,name:'已完成'},{id:4,name:'超时未巡检'},{id:5,name:'已取消'}],
}
},
components:{
-
+
},
methods:{
showInspectionRecordForm(value) {
this.inspectionRecordFormVisible = true
this.inspectionRecordForm = JSON.parse(JSON.stringify(value))
},
- showInspectionRecordDetailForm(value) {
+ showInspectionRecordDetailForm(value,type,userList,departmentList) {
this.inspectionRecordDetailFormVisible = true
- this.inspectionRecordDetailForm = value
- }
+ this.$nextTick(() =>{
+ this.$refs["inspectionRecordDetailForm"].clearValidate()
+ })
+ this.userList = userList
+ this.departmentList = departmentList
+ if(type === '查看'){
+ this.titleDetail = '查看单元上报'
+ this.ifNormal = false
+ this.ifLook = true
+ this.ifConfirm = false
+ this.inspectionRecordDetailForm = JSON.parse(JSON.stringify(value))
+ if(this.inspectionRecordDetailForm.problem.imageInfoList === null){
+ this.fileList = []
+ }else{
+ this.fileList = this.inspectionRecordDetailForm.problem.imageInfoList.map( item => { return { url : process.env.IMG_API + item.imgPath}})
+ }
+ }else{
+ this.titleDetail = '巡检单元上报'
+ this.ifShow = false
+ this.ifNormal = false
+ this.ifLook = false
+ this.ifConfirm = true
+ this.inspectionRecordDetailForm = {
+ execUid: Cookies.get('userId'),
+ fixTime: null,
+ fixUid: null,
+ imgInfoList: [],
+ info: null,
+ noticeUid: null,
+ result: null,
+ fixDepId:null,
+ noticeDepId:null,
+ taskId: value.taskId,
+ unitId: value.id
+ }
+ }
+ },
+ submitInspectionRecordDetail() {
+ if(this.ifNormal === false){
+ this.inspectionRecordDetailForm.noticeUid = null
+ this.inspectionRecordDetailForm.fixTime = null
+ this.inspectionRecordDetailForm.fixUid = null
+ this.inspectionRecordDetailForm.info = null
+ this.inspectionRecordDetailForm.imgInfoList = []
+ this.inspectionRecordDetailForm.noticeDepId = null
+ this.inspectionRecordDetailForm.fixDepId = null
+ }
+ this.$refs["inspectionRecordDetailForm"].validate((valid) =>{
+ if(valid){
+ if(this.inspectionRecordDetailForm.result === 0){
+ this.$message({
+ type:'warning',
+ message:'请选择正确的巡检结果'
+ })
+ return
+ }
+ this.inspectionRecordDetailForm.imgInfoList = this.inspectionRecordDetailForm.imgInfoList.map(item =>{ return { imagePath:item.imagePath}})
+ submitUnitOne(this.inspectionRecordDetailForm).then( res =>{
+ if(res.data.code === '200'){
+ this.inspectionRecordDetailFormVisible = false
+ this.$emit('getList')
+ this.$message({
+ type:'success',
+ message:'上报成功',
+ duration:2000,
+ title:'成功'
+ })
+
+ }else{
+ this.$message({
+ message:res.data.message,
+ type:'warning'
+ })
+ }
+ })
+ }else{
+ this.$message({
+ message:'请完善基本信息',
+ type:'warning'
+ })
+ }
+ })
+ },
+ changeDepartment(type){
+ if(type === 'notice'){
+ if(this.inspectionRecordDetailForm.noticeDepId === ''){
+ this.noticeUserList = []
+ }else{
+ let department = this.departmentList.find(item => item.id === this.inspectionRecordDetailForm.noticeDepId).department
+ this.noticeUserList = this.userList.filter ( item => item.department === department)
+ }
+ }else{
+ if(this.inspectionRecordDetailForm.fixDepId === ''){
+ this.fixUserList = []
+ }else{
+ let department = this.departmentList.find(item => item.id === this.inspectionRecordDetailForm.fixDepId).department
+ this.fixUserList = this.userList.filter ( item => item.department === department)
+ }
+ }
+ },
+ handleChangeFile(){
+ this.header.Authorization = Cookies.get('token')
+ },
+ onFileSuccess(response){
+ if(response.code === '200'){
+ this.inspectionRecordDetailForm.imgInfoList.push({imagePath:response.result.path,name:response.result.name,})
+ this.fileList.push({url:process.env.IMG_API + response.result.path,name:response.result.name,})
+ this.$notify({
+ type:'success',
+ duration:2000,
+ message:'上传成功',
+ title:'成功',
+ })
+ }else{
+ this.$message({
+ message:res.data.message,
+ type:'warning'
+ })
+ }
+ },
+ handleFile(file){
+ this.dialogImageUrl = file.url;
+ this.dialogVisible = true;
+ },
+ handleRemove(file){
+ return this.$confirm(`确定移除 ${ file.name }?`,'提示',{
+ confirmButtonText:'确定',
+ cancelButtonText:'取消',
+ type:'warning',
+ }).then(()=> {
+ this.inspectionRecordDetailForm.imgInfoList.splice(this.inspectionRecordDetailForm.imgInfoList.findIndex(item =>item.name === file.name),1)
+ this.fileList.splice(this.inspectionRecordDetailForm.imgInfoList.findIndex(item =>item.name === file.name),1)
+ })
+ },
}
}
</script>
@@ -155,6 +545,6 @@
width:200px;
}
.input{
- width:400px;
+ width:300px;
}
</style>
--
Gitblit v1.9.2