From 08bf6da5e3164a1b3ee5c79bb5d666e6385b4653 Mon Sep 17 00:00:00 2001
From: lyfO_o <764716047@qq.com>
Date: 星期一, 23 五月 2022 18:33:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 src/views/doublePreventAction/hiddenDanger/inspectionRecord/components/detail.vue |  240 ++++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 216 insertions(+), 24 deletions(-)

diff --git a/src/views/doublePreventAction/hiddenDanger/inspectionRecord/components/detail.vue b/src/views/doublePreventAction/hiddenDanger/inspectionRecord/components/detail.vue
index c3fc9e0..e3b1d0e 100644
--- a/src/views/doublePreventAction/hiddenDanger/inspectionRecord/components/detail.vue
+++ b/src/views/doublePreventAction/hiddenDanger/inspectionRecord/components/detail.vue
@@ -70,7 +70,7 @@
                 <el-row>
                     <el-col :span="24">
                         <el-form-item label="巡检结果" prop="result">
-                            <el-select v-model="inspectionRecordDetailForm.result" :disabled="ifShow" class="input" @change="ifNormal = !ifNormal">
+                            <el-select v-model="inspectionRecordDetailForm.result" :disabled="ifShow" class="input" @change="ifNormal = (inspectionRecordDetailForm.result === 2 ? true : false)">
                                 <el-option
                                 v-for="item in resultList"
                                 :key="item.id"
@@ -84,10 +84,24 @@
                 <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 userList"
+                                        v-for="item in noticeUserList"
                                         :key="item.id"
                                         :value="item.id"
                                         :label="item.realname"
@@ -103,12 +117,26 @@
                             </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 userList"
+                                        v-for="item in fixUserList"
                                         :key="item.id"
                                         :value="item.id"
                                         :label="item.realname"
@@ -127,7 +155,7 @@
                     </el-row>
                     <el-row>
                         <el-col :span="24">
-                            <el-form-item label="上报图片" prop="img">
+                            <el-form-item label="上报图片" prop="imgInfoList">
                                 <el-upload
                                     accept=".pdf,.jpg,.png"
                                     :action="fileRoad"
@@ -137,7 +165,7 @@
                                     :data="uploadForm"
                                     list-type="picture-card"
                                     :file-list="fileList"
-                                    v-model="inspectionRecordDetailForm.img"
+                                    v-model="inspectionRecordDetailForm.imgInfoList"
                                     :on-change="handleChangeFile"
                                     :on-success="onFileSuccess"
                                     :multiple="false"
@@ -169,7 +197,122 @@
                         </el-col>
                     </el-row>
                 </div>
-                <div  style="text-align: center">
+                <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>
@@ -212,12 +355,14 @@
                     execUid: null,
                     fixTime: null,
                     fixUid: null,
-                    img: null,
+                    imgInfoList: [],
                     info: null,
                     noticeUid: null,
-                    result: 1,
+                    result: null,
                     taskId: null,
-                    unitId: null
+                    unitId: null,
+                    fixDepId:null,
+                    noticeDepId:null,
                 },
                 inspectionRecordDetailFormRules:{
                     img: [{ required: true, validator: validateImg, trigger: 'blur' }],
@@ -226,13 +371,20 @@
                     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:1,name:'正常'},{id:2,name:'异常'}],
+                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:'已取消'}],
             }
@@ -245,47 +397,69 @@
                 this.inspectionRecordFormVisible = true
                 this.inspectionRecordForm = JSON.parse(JSON.stringify(value))
             },
-            showInspectionRecordDetailForm(value,type,userList) {
+            showInspectionRecordDetailForm(value,type,userList,departmentList) {
                 this.inspectionRecordDetailFormVisible = true
+                this.$nextTick(() =>{
+                    this.$refs["inspectionRecordDetailForm"].clearValidate()
+                })
                 this.userList = userList
+                this.departmentList = departmentList
                 if(type === '查看'){
-                    this.titleDetail = '巡检单元查看'
-                    this.ifShow = true
+                    this.titleDetail = '查看单元上报'
+                    this.ifNormal = false
+                    this.ifLook = true
+                    this.ifConfirm = false
                     this.inspectionRecordDetailForm = JSON.parse(JSON.stringify(value))
-                    if(value.result === 2){
-                        this.ifNormal = true
+                    if(this.inspectionRecordDetailForm.problem.imageInfoList === null){
                         this.fileList = []
-                        this.fileList.push({url:process.env.IMG_API + value.img})
+                    }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,
-                        img: null,
+                        imgInfoList: [],
                         info: null,
                         noticeUid: null,
-                        result: 1,
+                        result: null,
+                        fixDepId:null,
+                        noticeDepId:null,
                         taskId: value.taskId,
                         unitId: value.id
                     }
                 }
             },
             submitInspectionRecordDetail() {
-                if(this.ifNormal = false){
+                if(this.ifNormal === false){
                     this.inspectionRecordDetailForm.noticeUid = null
                     this.inspectionRecordDetailForm.fixTime = null
                     this.inspectionRecordDetailForm.fixUid = null
                     this.inspectionRecordDetailForm.info = null
-                    this.inspectionRecordDetailForm.img = 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:'上报成功',
@@ -308,13 +482,30 @@
                     }
                 })
             },
+            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.img = response.result.path
-                    this.fileList.push({url:process.env.IMG_API + response.result.path})
+                    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,
@@ -333,13 +524,14 @@
                 this.dialogVisible = true;
             },
             handleRemove(file){
+                debugger
                 return this.$confirm(`确定移除 ${ file.name }?`,'提示',{
                     confirmButtonText:'确定',
                     cancelButtonText:'取消',
                     type:'warning',
                 }).then(()=> {
-                    this.inspectionRecordDetailForm.img = null
-                    this.fileList = []
+                    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)
                 })
             },
         }

--
Gitblit v1.9.2