|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <GlobalWindow | 
|---|
|  |  |  | :title="title" | 
|---|
|  |  |  | :visible.sync="visible" | 
|---|
|  |  |  | @confirm="confirm" | 
|---|
|  |  |  | @close="reject" | 
|---|
|  |  |  | :title="title" | 
|---|
|  |  |  | :visible.sync="visible" | 
|---|
|  |  |  | @confirm="confirm" | 
|---|
|  |  |  | @close="reject" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <div class="modal_wrap"> | 
|---|
|  |  |  | <div class="modal_content"> | 
|---|
|  |  |  | 
|---|
|  |  |  | <div class="time">提报时间:{{model.createDate}}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="right" v-if="model.status==0">待处理</div> | 
|---|
|  |  |  | <div class="right" v-if="model.status==1">已处理</div> | 
|---|
|  |  |  | <div class="right" v-if="model.status==2">已撤销</div> | 
|---|
|  |  |  | <div class="right"  style="background:#53b76f " v-if="model.status==1">已处理</div> | 
|---|
|  |  |  | <div class="right" style="background:#dc362e "  v-if="model.status==2">已退回</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="info"> | 
|---|
|  |  |  | <div class="title">隐患提报详情</div> | 
|---|
|  |  |  | 
|---|
|  |  |  | <div class="label">隐患描述</div> | 
|---|
|  |  |  | <div class="value">{{model.content || ''}}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="item" style="width: 100%"> | 
|---|
|  |  |  | <div class="label">现场情况</div> | 
|---|
|  |  |  | <div class="value" v-if="model.submitFileList ==null || !model.submitFileList.length">无</div> | 
|---|
|  |  |  | <div class="value" v-if="model.submitFileList !=null && model.submitFileList.length"> | 
|---|
|  |  |  | <span v-for="item in model.submitFileList" :key="item.id">{{item.fileurlFull}}</span> | 
|---|
|  |  |  | <div v-for="item in model.submitFileList" :key="item.id" style="display: inline;margin-right: 20px"> | 
|---|
|  |  |  | <video | 
|---|
|  |  |  | v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')" | 
|---|
|  |  |  | ref="videoRef" | 
|---|
|  |  |  | controls | 
|---|
|  |  |  | preload="auto" | 
|---|
|  |  |  | style="width: 80px;height: 80px;object-fit: contain;" | 
|---|
|  |  |  | :src="item.fileurlFull" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <el-image | 
|---|
|  |  |  | v-else-if="item.fileurlFull" | 
|---|
|  |  |  | style="width:80px; height: 80px" | 
|---|
|  |  |  | :src="item.fileurlFull" | 
|---|
|  |  |  | :preview-src-list="[item.fileurlFull]"> | 
|---|
|  |  |  | </el-image> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item" v-if="model.status==1"> | 
|---|
|  |  |  | <div class="item" v-if="model.status==1||model.status==2" style="width: 100%"> | 
|---|
|  |  |  | <div class="label">处理前</div> | 
|---|
|  |  |  | <div class="value"></div> | 
|---|
|  |  |  | <div class="value" v-if="model.dealBeforeFileList !=null && model.dealBeforeFileList.length"> | 
|---|
|  |  |  | <div v-for="item in model.dealBeforeFileList" :key="item.id" style="display: inline;margin-right: 20px"> | 
|---|
|  |  |  | <video | 
|---|
|  |  |  | v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')" | 
|---|
|  |  |  | ref="videoRef" | 
|---|
|  |  |  | autoplay | 
|---|
|  |  |  | controls | 
|---|
|  |  |  | preload="auto" | 
|---|
|  |  |  | style="width: 80px;height: 80px;object-fit: contain;" | 
|---|
|  |  |  | :src="item.fileurlFull" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <el-image | 
|---|
|  |  |  | v-else-if="item.fileurlFull" | 
|---|
|  |  |  | style="width:80px; height: 80px" | 
|---|
|  |  |  | :src="item.fileurlFull" | 
|---|
|  |  |  | :preview-src-list="[item.fileurlFull]"> | 
|---|
|  |  |  | </el-image> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item" v-if="model.status==1"> | 
|---|
|  |  |  | <div class="item" v-if="model.status==1" style="width: 100%"> | 
|---|
|  |  |  | <div class="label">处理后</div> | 
|---|
|  |  |  | <div class="value"></div> | 
|---|
|  |  |  | <div class="value" v-if="model.dealAfterFileList !=null && model.dealAfterFileList.length"> | 
|---|
|  |  |  | <div v-for="item in model.dealAfterFileList" :key="item.id" style="display: inline;margin-right: 20px"> | 
|---|
|  |  |  | <video | 
|---|
|  |  |  | v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')" | 
|---|
|  |  |  | ref="videoRef" | 
|---|
|  |  |  | autoplay | 
|---|
|  |  |  | controls | 
|---|
|  |  |  | preload="auto" | 
|---|
|  |  |  | style="width: 80px;height: 80px;object-fit: contain;" | 
|---|
|  |  |  | :src="item.fileurlFull" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <el-image | 
|---|
|  |  |  | v-else-if="item.fileurlFull" | 
|---|
|  |  |  | style="width:80px; height: 80px" | 
|---|
|  |  |  | :src="item.fileurlFull" | 
|---|
|  |  |  | :preview-src-list="[item.fileurlFull]"> | 
|---|
|  |  |  | </el-image> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item" v-if="model.status==1 || model.status==2"> | 
|---|
|  |  |  | <div class="label">处理说明</div> | 
|---|
|  |  |  | <div class="label" v-if="model.status==1">处理说明</div> | 
|---|
|  |  |  | <div class="label" v-if="model.status==2">退回说明</div> | 
|---|
|  |  |  | <div class="value">{{model.checkInfo}}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | 
|---|
|  |  |  | <div class="side"> | 
|---|
|  |  |  | <div class="side_title">审批流程</div> | 
|---|
|  |  |  | <div class="list"> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="separate"></div> | 
|---|
|  |  |  | <div class="item" v-for="(item,index) in logList" :key="item.id"> | 
|---|
|  |  |  | <div class="separate" v-if="index < logList.length-1"></div> | 
|---|
|  |  |  | <div class="info"> | 
|---|
|  |  |  | <i class="el-icon-success icon"></i> | 
|---|
|  |  |  | <img src="" class="avatar" alt="" /> | 
|---|
|  |  |  | <img src="@/assets/icons/ic_tongguo.png"   class="iconnew" v-if="(model.status ==1) || index < logList.length-1"/> | 
|---|
|  |  |  | <img src="@/assets/icons/ic_dangqian.png"   class="iconnew"   v-if="(model.status==0)  && index == logList.length-1"/> | 
|---|
|  |  |  | <img src="@/assets/icons/ic_jujue.png"  class="iconnew"   v-if="(model.status==2)  && index == logList.length-1"/> | 
|---|
|  |  |  | <img v-if="item.avatar!=null && item.avatar !=''" :src="item.avatar" class="avatar" alt="" /> | 
|---|
|  |  |  | <img v-if="item.avatar ==null ||item.avatar ==''"  src="@/assets/avatar/man.png" class="avatar" alt="" /> | 
|---|
|  |  |  | <div class="content"> | 
|---|
|  |  |  | <div class="line"> | 
|---|
|  |  |  | <div class="name">刘某刘某</div> | 
|---|
|  |  |  | <div class="time">2020-02-02 12:20</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="line"> | 
|---|
|  |  |  | <div class="company">中国移动有限公司</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <!-- <div v-if="" class="separate"></div> --> | 
|---|
|  |  |  | <div class="info"> | 
|---|
|  |  |  | <i class="el-icon-success icon"></i> | 
|---|
|  |  |  | <img src="" class="avatar" alt="" /> | 
|---|
|  |  |  | <div class="content"> | 
|---|
|  |  |  | <div class="line"> | 
|---|
|  |  |  | <div class="name">刘某刘某</div> | 
|---|
|  |  |  | <div class="time">2020-02-02 12:20</div> | 
|---|
|  |  |  | <div class="name">{{ item.title}}</div> | 
|---|
|  |  |  | <div class="time">{{ item.createDate }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="line"> | 
|---|
|  |  |  | <div class="company"> | 
|---|
|  |  |  | 中国移动有限公司( <span class="status">已同意</span> ) | 
|---|
|  |  |  | {{ item.createUserName }} {{ item.companyName }} | 
|---|
|  |  |  | <div style="display: inline" v-if="index == logList.length-1"> | 
|---|
|  |  |  | (<span class="status-green" v-if="model.status==1">已处理</span> | 
|---|
|  |  |  | <span class="status-blue" v-if="model.status==0">待处理</span> | 
|---|
|  |  |  | <span class="status-red" v-if="model.status==2">已退回</span>) | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="remark">提交约好的</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!--  --> | 
|---|
|  |  |  | <template   v-slot:footer> | 
|---|
|  |  |  | <el-button @click="dealDo"  type="primary"  v-if="model.status==0"  class="status-red">处理</el-button> | 
|---|
|  |  |  | <el-button type="primary" plain v-if="model.status==0" @click="handleTransfer">转交</el-button> | 
|---|
|  |  |  | <el-button @click="backDo"  v-if="model.status==0" type="danger"  >退回</el-button> | 
|---|
|  |  |  | <el-button @click="openHandModal"  type="primary"  v-if="model.status==0&& model.checkUserId == userInfo.memberId"  class="status-red">处理</el-button> | 
|---|
|  |  |  | <el-button type="primary" plain v-if="model.status==0 && model.checkUserId == userInfo.memberId" @click="handleTransfer">转交</el-button> | 
|---|
|  |  |  | <el-button @click="openBackModal"  v-if="model.status==0&& model.checkUserId == userInfo.memberId" type="danger"  >退回</el-button> | 
|---|
|  |  |  | <el-button @click="visible=false">返回</el-button> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | <!--  同意/拒绝 --> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <el-dialog | 
|---|
|  |  |  | append-to-body | 
|---|
|  |  |  | :title="apprTitle" | 
|---|
|  |  |  | :visible.sync="isShowAppr" | 
|---|
|  |  |  | width="480px" | 
|---|
|  |  |  | append-to-body | 
|---|
|  |  |  | title="转交" | 
|---|
|  |  |  | class="dialogCl" | 
|---|
|  |  |  | :visible.sync="isShowTransfer" | 
|---|
|  |  |  | width="480px" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | type="textarea" | 
|---|
|  |  |  | :placeholder="apprTitle + '说明,非必填'" | 
|---|
|  |  |  | :rows="4" | 
|---|
|  |  |  | v-model="param.explain" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <el-form :model="transForm" ref="transForm" :rules="rulesTrans"> | 
|---|
|  |  |  | <el-form-item label="隐患转交人" prop="memberId"> | 
|---|
|  |  |  | <el-select v-model="transForm.memberId" style="width: 300px"  filterable clearable placeholder="请选择转交安全员"> | 
|---|
|  |  |  | <el-option | 
|---|
|  |  |  | v-for="item in memberList" | 
|---|
|  |  |  | :key="item.id" | 
|---|
|  |  |  | :label="item.name" | 
|---|
|  |  |  | :value="item.id"> | 
|---|
|  |  |  | </el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-form> | 
|---|
|  |  |  | <span slot="footer" class="dialog-footer"> | 
|---|
|  |  |  | <el-button @click="isShowAppr = false">取消</el-button> | 
|---|
|  |  |  | <el-button type="primary" @click="isShowAppr = false">确定</el-button> | 
|---|
|  |  |  | <el-button @click="isShowTransfer = false">取消</el-button> | 
|---|
|  |  |  | <el-button type="primary" :loading="transfering" @click="transferSubmit">确定</el-button> | 
|---|
|  |  |  | </span> | 
|---|
|  |  |  | </el-dialog> | 
|---|
|  |  |  | <!-- 隐患 --> | 
|---|
|  |  |  | <el-dialog | 
|---|
|  |  |  | append-to-body | 
|---|
|  |  |  | title="隐患" | 
|---|
|  |  |  | :visible.sync="isShowProblem" | 
|---|
|  |  |  | width="480px" | 
|---|
|  |  |  | append-to-body | 
|---|
|  |  |  | title="隐患处理" | 
|---|
|  |  |  | class="dialogCl" | 
|---|
|  |  |  | :visible.sync="isShowProblem" | 
|---|
|  |  |  | width="600px" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px"> | 
|---|
|  |  |  | <el-form-item label="退回时间"> | 
|---|
|  |  |  | <el-form :model="dealForm" :rules="rulesDeal" ref="dealForm" label-width="100px"> | 
|---|
|  |  |  | <el-form-item label="整改时间" prop="checkDate"> | 
|---|
|  |  |  | <el-date-picker | 
|---|
|  |  |  | class="w300" | 
|---|
|  |  |  | value-format="yyyy-MM-dd" | 
|---|
|  |  |  | type="date" | 
|---|
|  |  |  | placeholder="选择日期" | 
|---|
|  |  |  | v-model="param.date" | 
|---|
|  |  |  | class="w300" | 
|---|
|  |  |  | type="datetime" | 
|---|
|  |  |  | value-format="yyyy-MM-dd HH:mm:ss" | 
|---|
|  |  |  | placeholder="选择整改时间" | 
|---|
|  |  |  | v-model="dealForm.checkDate" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="整改前"> | 
|---|
|  |  |  | <el-form-item label="整改前" prop="dealBeforeFileList"> | 
|---|
|  |  |  | <div class="df_ac"> | 
|---|
|  |  |  | <img src="@/assets/avatar/man.png" /> | 
|---|
|  |  |  | <el-upload | 
|---|
|  |  |  | class="avatar-uploader" | 
|---|
|  |  |  | action="https://jsonplaceholder.typicode.com/posts/" | 
|---|
|  |  |  | :show-file-list="false" | 
|---|
|  |  |  | :on-success="handleAvatarSuccess" | 
|---|
|  |  |  | :before-upload="beforeAvatarUpload" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <img v-if="param.url" :src="param.url" class="avatar" /> | 
|---|
|  |  |  | <div v-else class="upload_box"> | 
|---|
|  |  |  | <el-icon class="el-icon-plus icon" /> | 
|---|
|  |  |  | <div class="text">图片/视频</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-upload> | 
|---|
|  |  |  | <upload  width="80px" height="80px" :list="dealForm.dealBeforeFileList" :tips="'图片/视频'"  accept=".png,.jpg,.jpeg,.mp4" folder="hiddendanger" @loading="uploading = true" @dele="dele($event,0)" @success="uploadFileList($event, 0)" /> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="退回说明"> | 
|---|
|  |  |  | <el-form-item label="整改后" prop="dealAfterFileList"> | 
|---|
|  |  |  | <div class="df_ac"> | 
|---|
|  |  |  | <upload   width="80px" height="80px" :list="dealForm.dealAfterFileList"  :tips="'图片/视频'"   accept=".png,.jpg,.jpeg,.mp4" folder="hiddendanger" @loading="uploading = true"  @dele="dele($event,1)" @success="uploadFileList($event, 1)" /> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="处理说明"> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | type="textarea" | 
|---|
|  |  |  | placeholder="请填写说明" | 
|---|
|  |  |  | :rows="4" | 
|---|
|  |  |  | v-model="param.explain" | 
|---|
|  |  |  | type="textarea" | 
|---|
|  |  |  | placeholder="请填写说明" | 
|---|
|  |  |  | :rows="4" | 
|---|
|  |  |  | v-model="dealForm.checkInfo" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-form> | 
|---|
|  |  |  | <span slot="footer" class="dialog-footer"> | 
|---|
|  |  |  | <el-button @click="isShowProblem = false">取消</el-button> | 
|---|
|  |  |  | <el-button type="primary" @click="isShowProblem = false" | 
|---|
|  |  |  | >确定</el-button | 
|---|
|  |  |  | <el-button type="primary" :loading="dealing" @click="dealDo" | 
|---|
|  |  |  | >确定</el-button | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </span> | 
|---|
|  |  |  | </el-dialog> | 
|---|
|  |  |  | <el-dialog | 
|---|
|  |  |  | append-to-body | 
|---|
|  |  |  | title="隐患退回" | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class="dialogCl" | 
|---|
|  |  |  | :visible.sync="isBackProblem" | 
|---|
|  |  |  | width="600px" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-form :model="backForm" :rules="rulesBack" ref="backForm" label-width="100px"> | 
|---|
|  |  |  | <el-form-item label="退回时间" prop="checkDate"> | 
|---|
|  |  |  | <el-date-picker | 
|---|
|  |  |  | class="w300" | 
|---|
|  |  |  | value-format="yyyy-MM-dd HH:mm:ss" | 
|---|
|  |  |  | type="datetime" | 
|---|
|  |  |  | placeholder="选择退回时间" | 
|---|
|  |  |  | v-model="backForm.checkDate" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="图片/视频" prop="dealBeforeFileList"> | 
|---|
|  |  |  | <div class="df_ac"> | 
|---|
|  |  |  | <upload  width="80px" height="80px" :list="backForm.dealBeforeFileList" :tips="'图片/视频'"    accept=".png,.jpg,.jpeg,.mp4" folder="hiddendanger" @loading="uploading = true" @dele="dele($event,2)" @success="uploadFileList($event, 2)" /> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="退回说明"> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | type="textarea" | 
|---|
|  |  |  | placeholder="请填写说明" | 
|---|
|  |  |  | :rows="4" | 
|---|
|  |  |  | v-model="backForm.checkInfo" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-form> | 
|---|
|  |  |  | <span slot="footer" class="dialog-footer"> | 
|---|
|  |  |  | <el-button @click="isBackProblem= false">取消</el-button> | 
|---|
|  |  |  | <el-button type="primary" :loading="transfering" @click="backDo" | 
|---|
|  |  |  | >确定</el-button | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </span> | 
|---|
|  |  |  | </el-dialog> | 
|---|
|  |  |  | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | import BaseOpera from '@/components/base/BaseOpera' | 
|---|
|  |  |  | import GlobalWindow from '@/components/common/GlobalWindow' | 
|---|
|  |  |  | import upload from '@/components/common/upload' | 
|---|
|  |  |  | import dayjs from 'dayjs' | 
|---|
|  |  |  | import { memberList } from '@/api/business/hiddenDangerParam' | 
|---|
|  |  |  | import { mapState } from 'vuex' | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | components: { GlobalWindow }, | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | components: { GlobalWindow, upload }, | 
|---|
|  |  |  | extends: BaseOpera, | 
|---|
|  |  |  | data () { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | title: '访客预约详情', | 
|---|
|  |  |  | visible: false, | 
|---|
|  |  |  | transfering: false, | 
|---|
|  |  |  | dataId: null, | 
|---|
|  |  |  | model: { }, | 
|---|
|  |  |  | logList: [], | 
|---|
|  |  |  | isShowAppr: false, | 
|---|
|  |  |  | apprTitle: '同意', | 
|---|
|  |  |  | param: {}, | 
|---|
|  |  |  | uploading: false, | 
|---|
|  |  |  | dealing: false, | 
|---|
|  |  |  | isShowProblem: false, | 
|---|
|  |  |  | rules: {} | 
|---|
|  |  |  | isBackProblem: false, | 
|---|
|  |  |  | isShowTransfer: false, | 
|---|
|  |  |  | rules: {}, | 
|---|
|  |  |  | rulesTrans: { | 
|---|
|  |  |  | memberId: [ | 
|---|
|  |  |  | { required: true, message: '请选择' } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | rulesDeal: { | 
|---|
|  |  |  | checkDate: [ | 
|---|
|  |  |  | { required: true, message: '请选择整改时间' } | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | dealBeforeFileList: [ | 
|---|
|  |  |  | { required: true, message: '请上传整改前情况' } | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | dealAfterFileList: [ | 
|---|
|  |  |  | { required: true, message: '请上传整改后情况' } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | rulesBack: { | 
|---|
|  |  |  | checkDate: [ | 
|---|
|  |  |  | { required: true, message: '请选择退回时间' } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | /*, | 
|---|
|  |  |  | dealBeforeFileList: [ | 
|---|
|  |  |  | { required: true, message: '请上传整改前情况' } | 
|---|
|  |  |  | ] */ | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | memberList: [], | 
|---|
|  |  |  | transForm: { | 
|---|
|  |  |  | memberId: null | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | dealForm: { | 
|---|
|  |  |  | checkDate: null, | 
|---|
|  |  |  | checkInfo: null, | 
|---|
|  |  |  | dealBeforeFileList: [], | 
|---|
|  |  |  | dealAfterFileList: [] | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | backForm: { | 
|---|
|  |  |  | checkDate: null, | 
|---|
|  |  |  | checkInfo: null, | 
|---|
|  |  |  | dealBeforeFileList: [] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | computed: { | 
|---|
|  |  |  | ...mapState(['userInfo']) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | created () { | 
|---|
|  |  |  | this.config({ | 
|---|
|  |  |  | api: '/business/hiddenDanger', | 
|---|
|  |  |  | 'field.id': 'id' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | open(title,target){ | 
|---|
|  |  |  | this.title =title | 
|---|
|  |  |  | this.visible=true | 
|---|
|  |  |  | this.model = target | 
|---|
|  |  |  | openHandModal () { | 
|---|
|  |  |  | const { model } = this | 
|---|
|  |  |  | this.isShowProblem = true | 
|---|
|  |  |  | this.$set(this.dealForm, 'checkDate', dayjs().format('YYYY-MM-DD HH:mm:ss')) | 
|---|
|  |  |  | if (model.submitFileList && model.submitFileList.length > 0) { | 
|---|
|  |  |  | this.$set(this.dealForm, 'dealBeforeFileList', model.submitFileList.map(item => { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | fileurl: item.fileurl, | 
|---|
|  |  |  | name: item.name, | 
|---|
|  |  |  | url: item.fileurlFull | 
|---|
|  |  |  | } | 
|---|
|  |  |  | })) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | confirm() { | 
|---|
|  |  |  | openBackModal () { | 
|---|
|  |  |  | this.isBackProblem = true | 
|---|
|  |  |  | this.$set(this.backForm, 'checkDate', dayjs().format('YYYY-MM-DD HH:mm:ss')) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | dele (index, type) { | 
|---|
|  |  |  | if (type == 0) { | 
|---|
|  |  |  | if (this.dealForm.dealBeforeFileList != null && this.dealForm.dealBeforeFileList.length > index) { | 
|---|
|  |  |  | this.dealForm.dealBeforeFileList.splice(index, 1) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (type == 1) { | 
|---|
|  |  |  | if (this.dealForm.dealAfterFileList != null && this.dealForm.dealAfterFileList.length > index) { | 
|---|
|  |  |  | this.dealForm.dealAfterFileList.splice(index, 1) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (type == 2) { | 
|---|
|  |  |  | if (this.backForm.dealBeforeFileList != null && this.backForm.dealBeforeFileList.length > index) { | 
|---|
|  |  |  | this.backForm.dealBeforeFileList.splice(index, 1) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | uploadFileList (e, objType) { | 
|---|
|  |  |  | if (objType === 0) { | 
|---|
|  |  |  | if (this.dealForm.dealBeforeFileList == null) { | 
|---|
|  |  |  | this.dealForm.dealBeforeFileList = [] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.dealForm.dealBeforeFileList.push({ | 
|---|
|  |  |  | fileurl: e.imgaddr, | 
|---|
|  |  |  | url: e.url, | 
|---|
|  |  |  | name: e.originname, | 
|---|
|  |  |  | fileType: e.type | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } else if (objType === 1) { | 
|---|
|  |  |  | if (this.dealForm.dealAfterFileList == null) { | 
|---|
|  |  |  | this.dealForm.dealAfterFileList = [] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.dealForm.dealAfterFileList.push({ | 
|---|
|  |  |  | fileurl: e.imgaddr, | 
|---|
|  |  |  | url: e.url, | 
|---|
|  |  |  | name: e.originname, | 
|---|
|  |  |  | fileType: e.type | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } else if (objType === 2) { | 
|---|
|  |  |  | if (this.backForm.dealBeforeFileList == null) { | 
|---|
|  |  |  | this.backForm.dealBeforeFileList = [] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.backForm.dealBeforeFileList.push({ | 
|---|
|  |  |  | fileurl: e.imgaddr, | 
|---|
|  |  |  | url: e.url, | 
|---|
|  |  |  | name: e.originname, | 
|---|
|  |  |  | fileType: e.type | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | dealDo () { | 
|---|
|  |  |  | this.$refs.dealForm.validate((valid) => { | 
|---|
|  |  |  | // debugger | 
|---|
|  |  |  | if (!valid) { | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.$dialog.actionConfirm('操作确认', '您确认提交该隐患处理情况吗?') | 
|---|
|  |  |  | .then(() => { | 
|---|
|  |  |  | this.dealing = true | 
|---|
|  |  |  | this.api.dealHiddenDanger({ | 
|---|
|  |  |  | id: this.dataId, | 
|---|
|  |  |  | status: 1, | 
|---|
|  |  |  | dealTime: this.dealForm.checkDate, | 
|---|
|  |  |  | checkInfo: this.dealForm.checkInfo, | 
|---|
|  |  |  | dealBeforeFileList: this.dealForm.dealBeforeFileList, | 
|---|
|  |  |  | dealAfterFileList: this.dealForm.dealAfterFileList | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .then(res => { | 
|---|
|  |  |  | this.$tip.apiSuccess('处理成功') | 
|---|
|  |  |  | this.getDetail() | 
|---|
|  |  |  | this.getLogList() | 
|---|
|  |  |  | this.$emit('success') | 
|---|
|  |  |  | this.isShowProblem = false | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(e => { | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .finally(() => { | 
|---|
|  |  |  | this.dealing = false | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | backDo () { | 
|---|
|  |  |  | this.$refs.backForm.validate((valid) => { | 
|---|
|  |  |  | if (!valid) { | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.$dialog.actionConfirm('操作确认', '您确认退回该隐患处理情况吗?') | 
|---|
|  |  |  | .then(() => { | 
|---|
|  |  |  | this.dealing = true | 
|---|
|  |  |  | this.api.dealHiddenDanger({ | 
|---|
|  |  |  | id: this.dataId, | 
|---|
|  |  |  | status: 2, | 
|---|
|  |  |  | dealTime: this.backForm.checkDate, | 
|---|
|  |  |  | checkInfo: this.backForm.checkInfo, | 
|---|
|  |  |  | dealBeforeFileList: this.backForm.dealBeforeFileList | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .then(res => { | 
|---|
|  |  |  | this.$tip.apiSuccess('退回成功') | 
|---|
|  |  |  | this.getDetail() | 
|---|
|  |  |  | this.getLogList() | 
|---|
|  |  |  | this.$emit('success') | 
|---|
|  |  |  | this.isBackProblem = false | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(e => { | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .finally(() => { | 
|---|
|  |  |  | this.dealing = false | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | open (title, target) { | 
|---|
|  |  |  | this.title = title | 
|---|
|  |  |  | this.visible = true | 
|---|
|  |  |  | this.model = {} | 
|---|
|  |  |  | this.dataId = target.id | 
|---|
|  |  |  | this.$nextTick(() => { | 
|---|
|  |  |  | this.memberList = [] | 
|---|
|  |  |  | this.transForm = { | 
|---|
|  |  |  | memberId: null | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.dealForm = { | 
|---|
|  |  |  | checkDate: null, | 
|---|
|  |  |  | checkInfo: null, | 
|---|
|  |  |  | dealBeforeFileList: [], | 
|---|
|  |  |  | dealAfterFileList: [] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.backForm = { | 
|---|
|  |  |  | checkDate: null, | 
|---|
|  |  |  | checkInfo: null, | 
|---|
|  |  |  | dealBeforeFileList: [] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.getDetail() | 
|---|
|  |  |  | this.getLogList() | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | transferSubmit () { | 
|---|
|  |  |  | this.$refs.transForm.validate((valid) => { | 
|---|
|  |  |  | // debugger | 
|---|
|  |  |  | if (!valid) { | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.$dialog.actionConfirm('操作确认', '您确认转交该隐患提报吗?') | 
|---|
|  |  |  | .then(() => { | 
|---|
|  |  |  | this.transfering = true | 
|---|
|  |  |  | this.api.transferHiddenDanger({ | 
|---|
|  |  |  | id: this.dataId, | 
|---|
|  |  |  | checkUserId: this.transForm.memberId | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .then(res => { | 
|---|
|  |  |  | this.$tip.apiSuccess('转交成功') | 
|---|
|  |  |  | this.getDetail() | 
|---|
|  |  |  | this.getLogList() | 
|---|
|  |  |  | this.$emit('success') | 
|---|
|  |  |  | this.isShowTransfer = false | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(e => { | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .finally(() => { | 
|---|
|  |  |  | this.transfering = false | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | getLogList () { | 
|---|
|  |  |  | this.api.findLogList({ hiddenDangerId: this.dataId }) | 
|---|
|  |  |  | .then(res => { | 
|---|
|  |  |  | this.logList = res | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | getDetail () { | 
|---|
|  |  |  | this.api.detail(this.dataId) | 
|---|
|  |  |  | .then(res => { | 
|---|
|  |  |  | this.model = res | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | confirm () { | 
|---|
|  |  |  | console.log('--') | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | handleTransfer() { | 
|---|
|  |  |  | this.isShowProblem = true | 
|---|
|  |  |  | handleTransfer () { | 
|---|
|  |  |  | this.isShowTransfer = true | 
|---|
|  |  |  | this.loadMemberList() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | reject() { }, | 
|---|
|  |  |  | handleAvatarSuccess() { }, | 
|---|
|  |  |  | beforeAvatarUpload() { } | 
|---|
|  |  |  | loadMemberList () { | 
|---|
|  |  |  | memberList({}).then(res => { | 
|---|
|  |  |  | this.memberList = res | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | reject () { }, | 
|---|
|  |  |  | handleAvatarSuccess () { }, | 
|---|
|  |  |  | beforeAvatarUpload () { } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <style lang="scss" scoped> | 
|---|
|  |  |  | .side_title{ | 
|---|
|  |  |  | font-weight: 600; | 
|---|
|  |  |  | font-size: 18px; | 
|---|
|  |  |  | color: #111111; | 
|---|
|  |  |  | margin-bottom: 20px; | 
|---|
|  |  |  | margin-left: 20px; | 
|---|
|  |  |  | margin-top: 20px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .upload_box { | 
|---|
|  |  |  | width: 84px; | 
|---|
|  |  |  | height: 84px; | 
|---|
|  |  |  | 
|---|
|  |  |  | font-size: 12px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .modal_wrap { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | height: 100%; | 
|---|
|  |  |  | 
|---|
|  |  |  | margin-bottom: 20px; | 
|---|
|  |  |  | margin-top: 30px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .info { | 
|---|
|  |  |  | .list { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .value { | 
|---|
|  |  |  | color: #111111; | 
|---|
|  |  |  | flex: 1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | .separate { | 
|---|
|  |  |  | position: absolute; | 
|---|
|  |  |  | border-left: 2px dashed #cccccc; | 
|---|
|  |  |  | left: 51px; | 
|---|
|  |  |  | left: 31px; | 
|---|
|  |  |  | height: calc(100% - 24px); | 
|---|
|  |  |  | top: 46px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .info { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | margin-left: 40px; | 
|---|
|  |  |  | margin-left: 20px; | 
|---|
|  |  |  | .icon { | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | z-index: 11; | 
|---|
|  |  |  | color: #53b76f; | 
|---|
|  |  |  | font-size: 24px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .iconnew{ | 
|---|
|  |  |  | width: 24px; | 
|---|
|  |  |  | height: 24px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .icon1 { | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | z-index: 11; | 
|---|
|  |  |  | color: deepskyblue; | 
|---|
|  |  |  | font-size: 24px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .icon2 { | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | z-index: 11; | 
|---|
|  |  |  | color: #dc362e; | 
|---|
|  |  |  | font-size: 24px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .avatar { | 
|---|
|  |  |  | 
|---|
|  |  |  | height: 40px; | 
|---|
|  |  |  | border-radius: 50%; | 
|---|
|  |  |  | margin: 0 12px 0 16px; | 
|---|
|  |  |  | border: 1px solid; | 
|---|
|  |  |  | //border: 1px solid; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .content { | 
|---|
|  |  |  | flex: 1; | 
|---|