Commit 0429003f authored by 耿迪迪's avatar 耿迪迪

隐患待审核页面及隐患审核

parent 3b4880a4
......@@ -68,7 +68,7 @@ public class TDangerController extends BaseController
tDanger.setIsVisitor("1");
}
List<TDanger> list = tDangerService.selectTDangerList(tDanger);
setApprovalPermission(list);
//setApprovalPermission(list);
return getDataTable(list);
}
......@@ -119,6 +119,18 @@ public class TDangerController extends BaseController
}
}
/**
* 获取待审核隐患
* @param tDanger 隐患
* @return
*/
@GetMapping("/dangerPendingApprovalList")
public TableDataInfo dangerPendingApprovalList(TDanger tDanger){
List<TDanger> list = tDangerService.dangerPendingApprovalList(tDanger);
return getDataTable(list);
}
@GetMapping("/dangerInfoList")
public TableDataInfo dangerInfoList(TDanger tDanger){
startPage();
......
......@@ -111,7 +111,7 @@ public class TRectifyGroupMemberInfoController extends BaseController
* @return
*/
@GetMapping("/selectMemberByUserPost")
public AjaxResult selectMemberByUserPost(){
return AjaxResult.success(tRectifyGroupMemberInfoService.selectMemberByUserPost());
public AjaxResult selectMemberByUserPost(String dealMethod){
return AjaxResult.success(tRectifyGroupMemberInfoService.selectMemberByUserPost(dealMethod));
}
}
......@@ -113,7 +113,7 @@ public class TDanger extends BaseEntity
private Date endTime;
/** 整改方式 */
@Excel(name = "整改方式",readConverterExp = "1=用户自行整改,2=用户出资公司整改,3=通知厂家上门维修检查,4=公司出资整改")
@Excel(name = "整改方式",readConverterExp = "1=用户自行整改,2=用户出资燃气公司整改,3=燃气公司整改")
private String dealMethod;
/** 隐患状态,0待处理,1待复核,2已处理 */
......
......@@ -82,4 +82,11 @@ public interface ITDangerService
* @return
*/
int dangerApproval(List<DangerApprovalVo> approvalVo);
/**
* 获取待审核隐患
* @param tDanger 隐患
* @return
*/
List<TDanger> dangerPendingApprovalList(TDanger tDanger);
}
......@@ -71,5 +71,5 @@ public interface ITRectifyGroupMemberInfoService
* 根据登录人职位获取可选成员
* @return
*/
List<TRectifyGroupMemberInfo> selectMemberByUserPost();
List<TRectifyGroupMemberInfo> selectMemberByUserPost(String dealMethod);
}
package com.zehong.system.service.impl;
import com.github.pagehelper.PageHelper;
import com.zehong.common.core.domain.entity.SysUser;
import com.zehong.common.core.page.PageDomain;
import com.zehong.common.core.page.TableSupport;
import com.zehong.common.exception.CustomException;
import com.zehong.common.utils.DateUtils;
import com.zehong.common.utils.SecurityUtils;
import com.zehong.common.utils.StringUtils;
import com.zehong.common.utils.sql.SqlUtil;
import com.zehong.system.domain.*;
import com.zehong.system.domain.vo.DangerApprovalVo;
import com.zehong.system.mapper.*;
import com.zehong.system.service.ISysUserService;
import com.zehong.system.service.ITDangerApprovalRecordService;
import com.zehong.system.service.ITDangerService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -15,8 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -52,6 +57,23 @@ public class TDangerServiceImpl implements ITDangerService
@Autowired
private ITDangerApprovalRecordService tDangerApprovalRecordService;
@Resource
private TRectifyGroupMemberInfoMapper tRectifyGroupMemberInfoMapper;
@Autowired
private ISysUserService sysUserService;
/**
* 审核权限映射关系
* 1.班长审核 2.部门经理审核 3.安全部审核 4.安全总监审核 5.常务副总审核 6.总经理审核结束
*/
private final Map<String,String> approvalPermission = new HashMap<String,String>(){{
put("minister","2");
put("se","4");
put("fuzong","5");
put("manager","6");
}};
/**
* 查询安检隐患整改
......@@ -264,4 +286,98 @@ public class TDangerServiceImpl implements ITDangerService
}
return 1;
}
/**
* 获取待审核隐患
* @param tDanger 隐患
* @return
*/
public List<TDanger> dangerPendingApprovalList(TDanger tDanger){
/**
* 隐患是待审核状态的
* 1.审核状态是1 登录人是班长只查并且上报人在该组
* 2.审核状态是3 判断登录人是否为安全管理部
* 3.审核状态是2 4 5 6 判断登录人岗位
*/
//查询权限
String sqlCondition = buildSqlCondition();
if(StringUtils.isEmpty(sqlCondition)){
return new ArrayList<>();
}
//设置审核状态为待审核
tDanger.setStatus(3);
tDanger.getParams().put("approvalCondition",sqlCondition);
//构建分页参数
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize))
{
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
PageHelper.startPage(pageNum, pageSize, orderBy);
}
return tDangerMapper.selectTDangerList(tDanger);
}
private String buildSqlCondition() {
SysUser userInfo = SecurityUtils.getLoginUser().getUser();
List<String> conditions = new ArrayList<>();
// 1. 管理员条件
TRectifyGroupMemberInfo queryParam = new TRectifyGroupMemberInfo();
queryParam.setUserId(Long.valueOf(userInfo.getUserId()));
List<TRectifyGroupMemberInfo> memberInfoList = tRectifyGroupMemberInfoMapper.selectTRectifyGroupMemberInfoList(queryParam);
if (!CollectionUtils.isEmpty(memberInfoList)) {
boolean isAdmin = memberInfoList.stream().anyMatch(item -> "1".equals(item.getPost()));
if (isAdmin) {
List<Long> userIdList = memberInfoList.stream()
.map(TRectifyGroupMemberInfo::getUserId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(userIdList)) {
String userIds = userIdList.stream()
.map(String::valueOf)
.collect(Collectors.joining(","));
conditions.add("(danger.admin_id IN (" + userIds + ") AND danger.approval_status = '1')");
}
}
}
// 2. 部门条件
if (userInfo != null && userInfo.getDept() != null && "安全管理部".equals(userInfo.getDept().getDeptName())) {
conditions.add("danger.approval_status = '3'");
}
// 3. 岗位条件
if (userInfo != null && StringUtils.isNotBlank(userInfo.getUserName())) {
List<SysPost> userPostList = sysUserService.selectPostsByUserName(userInfo.getUserName());
if (!CollectionUtils.isEmpty(userPostList)) {
Set<String> statusSet = userPostList.stream()
.map(SysPost::getPostCode)
.map(approvalPermission::get)
.filter(StringUtils::isNotBlank)
.collect(Collectors.toSet());
if (!CollectionUtils.isEmpty(statusSet)) {
String statuses = statusSet.stream()
.map(status -> "'" + status + "'")
.collect(Collectors.joining(","));
conditions.add("danger.approval_status IN (" + statuses + ")");
}
}
}
// 4. 组合所有条件
if (conditions.isEmpty()) {
return "";
}
return " AND (" + String.join(" OR ", conditions) + ")";
}
}
......@@ -117,7 +117,7 @@ public class TRectifyGroupMemberInfoServiceImpl implements ITRectifyGroupMemberI
* @return
*/
@Override
public List<TRectifyGroupMemberInfo> selectMemberByUserPost(){
public List<TRectifyGroupMemberInfo> selectMemberByUserPost(String dealMethod){
//登录人信息
Long userId = SecurityUtils.getLoginUser().getUser().getUserId();
//获取登录人职务
......@@ -135,7 +135,7 @@ public class TRectifyGroupMemberInfoServiceImpl implements ITRectifyGroupMemberI
*/
if("1".equals(memberInfo.getPost())){
//长登录
//长登录
if("2".equals(memberInfo.getType())){
//维修班班长登录
//维修班组员信息
......@@ -157,13 +157,22 @@ public class TRectifyGroupMemberInfoServiceImpl implements ITRectifyGroupMemberI
result.addAll(leaderInfo);
}else{
//其他班班长
//维修班组长信息
if("1".equals(dealMethod)){
//自行整改只能看到自己的组员
TRectifyGroupMemberInfo InspectTeam = new TRectifyGroupMemberInfo();
InspectTeam.setGroupId(memberInfo.getGroupId());
InspectTeam.setPost("2");
List<TRectifyGroupMemberInfo> teamInfo = tRectifyGroupMemberInfoMapper.selectTRectifyGroupMemberInfoList(InspectTeam);
result.addAll(teamInfo);
}else{
//非自行整改只能看到维修班组长信息
TRectifyGroupMemberInfo leader = new TRectifyGroupMemberInfo();
leader.setPost("1");
leader.setType("2");
List<TRectifyGroupMemberInfo> leaderInfo = tRectifyGroupMemberInfoMapper.selectTRectifyGroupMemberInfoList(leader);
result.addAll(leaderInfo);
}
}
}else{
//组员登录
......
......@@ -150,6 +150,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="reportName != null and reportName != ''"> and us.nick_name like concat('%',#{reportName},'%')</if>
<if test="beginDate != null and endDate != null"> and danger.create_time BETWEEN #{beginDate} and #{endDate}</if>
<if test="branch != null "> and danger.branch = #{branch}</if>
<if test="params != null and params.approvalCondition != null and params.approvalCondition != ''">${params.approvalCondition}</if>
</where>
ORDER BY create_time DESC
</select>
......
......@@ -69,3 +69,12 @@ export function dangerApproval(data) {
data: data
})
}
//查询当前登录人待审核隐患
export function dangerPendingApprovalList(query) {
return request({
url: '/checkTask/danger/dangerPendingApprovalList',
method: 'get',
params: query
})
}
......@@ -115,7 +115,7 @@
>导出</el-button>
</el-col>
<el-col :span="1.5">
<!--<el-col :span="1.5">
<el-button
type="primary"
plain
......@@ -123,7 +123,7 @@
@click="handleApproval"
v-hasPermi="['checkTask:danger:approval']"
>审核</el-button>
</el-col>
</el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
......@@ -192,13 +192,13 @@
@click="handleDelete(scope.row)"
v-hasPermi="['checkTask:danger:remove']"
>删除</el-button>
<el-button
<!--<el-button
size="mini"
type="text"
@click="handleApproval(scope.row)"
v-if="scope.row.hasApprovalPermission"
v-hasPermi="['checkTask:danger:approval']"
>审核</el-button>
>审核</el-button>-->
</template>
</el-table-column>
</el-table>
......
<template>
<el-dialog :title="title" :visible.sync="approvalOpen" width="800px" append-to-body destroy-on-close :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="审核状态" prop="state">
<el-radio-group v-model="form.state">
<el-radio :label="0">通过</el-radio>
<el-radio :label="1">不通过</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="审核意见" prop="suggestion">
<el-input type="textarea" v-model="form.suggestion" placeholder="请输入审核意见"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import { dangerApproval } from "@/api/checktask/danger";
export default {
name: "approval",
data(){
return{
title: "审核",
approvalOpen: false,
ids: [],
form: {},
rules: {
state: [
{ required: true, message: "请选择审核状态", trigger: "change" }
],
}
}
},
methods:{
open(ids){
this.reset();
this.ids = ids;
this.approvalOpen = true;
},
submitForm(){
this.$refs["form"].validate(valid => {
if (valid) {
let data = [];
this.ids.forEach(item =>{
data.push({
id: item,
...this.form
})
})
dangerApproval(data).then(res =>{
this.$message.success("审核成功");
this.approvalOpen = false;
this.$parent.getList();
})
}
})
},
cancel(){
this.approvalOpen = false;
},
reset(){
this.form = {
state: null,
suggestion: null
}
this.resetForm("form");
}
}
}
</script>
<style scoped>
</style>
<template>
<div>
<el-dialog
title="隐患记录"
:visible.sync="dangerDetailOpen"
width="1400px"
append-to-body
destroy-on-close
:close-on-click-modal="false"
>
<div class="dlg-wrapper">
<div class="steps">
<MySteps
:stepsData="stepsArr"
:active="stepsNumData[dangerDetailInfo.status] || 0"
/>
</div>
<el-row>
<div class="t">隐患信息</div>
<el-row class="container flex bb">
<el-col :span="16">
<el-form label-width="140px" class="el-table">
<el-col :span="12">
<el-form-item label="隐患标题">
<span>{{ dangerDetailInfo.title }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="隐患状态">
<span v-if="dangerDetailInfo.status == 0">待处理</span>
<span v-if="dangerDetailInfo.status == 1">拒绝整改</span>
<span v-if="dangerDetailInfo.status == 2">待复查</span>
<span v-if="dangerDetailInfo.status == 3">待审核</span>
<span v-if="dangerDetailInfo.status == 4">已归档</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="隐患来源">
<span>{{ $parent.typeFormatter(dangerDetailInfo) }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="场站名称" v-if="dangerDetailInfo.type == '5'">
<span v-if="dangerDetailInfo.receiveName">{{
dangerDetailInfo.receiveName
}}</span>
<span v-else>-</span>
</el-form-item>
<el-form-item label="设备名称" v-else-if="dangerDetailInfo.type == '6'">
<span v-if="dangerDetailInfo.receiveName">{{
dangerDetailInfo.receiveName
}}</span>
<span v-else>-</span>
</el-form-item>
<el-form-item label="用户" v-else>
<span v-if="dangerDetailInfo.receiveName">{{
dangerDetailInfo.receiveName
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="隐患级别">
<span v-if="dangerDetailInfo.level == 1">重大</span>
<span v-if="dangerDetailInfo.level == 2">一般</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上报时间">
{{
parseTime(
dangerDetailInfo.createTime,
"{y}-{m}-{d} {h}:{i}:{s}"
)
}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="隐患内容">
<span v-if="dangerDetailInfo.beforeContent">{{
dangerDetailInfo.beforeContent
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上报人">
{{ dangerDetailInfo.reportName }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系电话">
<span v-if="dangerDetailInfo.phone">{{
dangerDetailInfo.phone
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="隐患地址">
<span v-if="dangerDetailInfo.address">{{
dangerDetailInfo.address
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="责任归属">
<span v-if="dangerDetailInfo.flag == 1">安全管理部</span>
<span v-else-if="dangerDetailInfo.flag == 2">客服运营部</span>
<span v-else-if="dangerDetailInfo.flag == 3">生产运营部</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="整改前图片" prop="beforeImg">
<div>
<MyImage
v-if="dangerDetailInfo.beforeImg"
:src="dangerDetailInfo.beforeImg.split(',')[0]"
:previewSrcList="dangerDetailInfo.beforeImg.split(',')"
/>
<div class="error" v-else>暂无图片</div>
</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="整改前视频" prop="beforeVideo">
<span v-if="dangerDetailInfo.beforeVideo">
<video
v-for="videoInfo in dangerDetailInfo.beforeVideo.split(
','
)"
:key="videoInfo"
type="video/mp4"
controls="controls"
:src="videoInfo"
class="upload-video"
/>
</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="整改期限">
<span v-if="dangerDetailInfo.endTime">{{
dangerDetailInfo.endTime
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="整改方式">
<span v-if="dangerDetailInfo.dealMethod == '1'">用户自行整改</span>
<span v-else-if="dangerDetailInfo.dealMethod == '2'">用户出资公司整改</span>
<span v-else-if="dangerDetailInfo.dealMethod == '3'">通知厂家上门维修检查</span>
<span v-else-if="dangerDetailInfo.dealMethod == '4'">公司出资整改</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="营业网点">
<span>{{ $parent.branchFormat(dangerDetailInfo,null) }}</span>
</el-form-item>
</el-col>
<!--<el-col :span="12">
<el-form-item label="归档人">
<span v-if="dangerDetailInfo.fileName">{{
dangerDetailInfo.fileName
}}</span>6
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="归档时间">
<span v-if="dangerDetailInfo.fileTime">{{
dangerDetailInfo.fileTime
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>-->
<el-col :span="12" v-if="dangerDetailInfo.type == '8'">
<el-form-item label="治理的标准要求">
<span v-if="dangerDetailInfo.governanceStandards">
{{ dangerDetailInfo.governanceStandards}}
</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="12" v-if="dangerDetailInfo.type == '8'">
<el-form-item label="治理方法和措施">
<span v-if="dangerDetailInfo.governanceMethod">
{{ dangerDetailInfo.governanceMethod}}
</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="12" v-if="dangerDetailInfo.type == '8'">
<el-form-item label="经费和物资的落实">
<span v-if="dangerDetailInfo.fundsMaterials">
{{ dangerDetailInfo.fundsMaterials}}
</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="12" v-if="dangerDetailInfo.type == '8'">
<el-form-item label="安全措施和应急预案">
<span v-if="dangerDetailInfo.safetyEmergencyPlan">
{{ dangerDetailInfo.safetyEmergencyPlan}}
</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注">
<span v-if="dangerDetailInfo.remark">{{
dangerDetailInfo.remark
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
</el-form>
</el-col>
<el-col :span="8">
<div id="dangerMap"></div>
<div class="map-bottom">隐患上报位置</div>
</el-col>
</el-row>
<div class="t" v-if="dangerDetailInfo.tTaskInspect">安检信息</div>
<el-row class="container flex bb" v-if="dangerDetailInfo.tTaskInspect">
<el-form label-width="110px" class="el-table">
<el-col style="height: auto" :span="8">
<el-col :span="24">
<el-form-item label="安检时间">
<span v-if="dangerDetailInfo.tTaskInspect.createTime">{{ dangerDetailInfo.tTaskInspect.createTime}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="安检人">
<span v-if="dangerDetailInfo.tTaskInspect.username">{{
dangerDetailInfo.tTaskInspect.username
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
</el-col>
<el-col :span="16">
<el-col :span="24">
<el-form-item label="签字状态">
<span v-if="dangerDetailInfo.tTaskInspect.sign == 0">未签字</span>
<span v-else-if="dangerDetailInfo.tTaskInspect.sign == 1">已签字</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="操作">
<el-button
type="text"
@click="handleInspect(dangerDetailInfo.tTaskInspect)"
>安检单</el-button>
<el-button
type="text"
@click="handleCover(dangerDetailInfo.tTaskInspect)"
>图片</el-button>
</el-form-item>
</el-col>
</el-col>
</el-form>
</el-row>
<div class="t">整改信息</div>
<el-row class="container flex bb">
<el-form label-width="110px" class="el-table">
<el-col style="height: auto" :span="8">
<el-col :span="24">
<el-form-item label="整改内容">
<span v-if="dangerDetailInfo.afterContent">{{
dangerDetailInfo.afterContent
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="整改人">
<span v-if="dangerDetailInfo.reformName">{{
dangerDetailInfo.reformName
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<!--<el-col :span="24">
<el-form-item label="整改期限">
<span v-if="dangerDetailInfo.endTime">{{
dangerDetailInfo.endTime
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>-->
<el-col :span="24">
<el-form-item label="整改时间">
<span v-if="dangerDetailInfo.reformTime">{{
dangerDetailInfo.reformTime
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
</el-col>
<el-col :span="16">
<el-col :span="24">
<el-form-item label="整改后图片">
<div>
<MyImage
v-if="dangerDetailInfo.afterImg"
:src="dangerDetailInfo.afterImg.split(',')[0]"
:previewSrcList="dangerDetailInfo.afterImg.split(',')"
/>
<div class="error" v-else>暂无图片</div>
</div>
</el-form-item>
</el-col>
</el-col>
</el-form>
</el-row>
<div class="t">复查信息</div>
<el-row class="container flex bb">
<el-form label-width="110px" class="el-table">
<el-col style="height: auto" :span="8">
<el-col :span="24">
<el-form-item label="复查人">
<span v-if="dangerDetailInfo.checkName">{{
dangerDetailInfo.checkName
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="复查时间">
<span v-if="dangerDetailInfo.checkTime">{{
dangerDetailInfo.checkTime
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="复查备注">
<span v-if="dangerDetailInfo.checkRemark">{{
dangerDetailInfo.checkRemark
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
</el-col>
<el-col :span="16">
<el-col :span="24">
<el-form-item label="复查图片" prop="checkImg">
<div>
<MyImage
v-if="dangerDetailInfo.checkImg"
:src="dangerDetailInfo.checkImg.split(',')[0]"
:previewSrcList="dangerDetailInfo.checkImg.split(',')"
/>
<div class="error" v-else>暂无图片</div>
</div>
</el-form-item>
</el-col>
</el-col>
</el-form>
</el-row>
<div class="t">审核信息</div>
<div class="container bb">
<el-form label-width="110px" class="el-table scroll" v-if="dangerApprovalList.length > 0">
<el-timeline >
<el-timeline-item
placement="top"
type="primary"
v-for="(activity, index) in dangerApprovalList"
:key="index"
:timestamp="activity.createTime">
<el-card>
<el-form-item label="审核人">{{activity.nickName}}</el-form-item>
<el-form-item label="审状态">
<span v-if="activity.approvalStatus == '0'">通过</span>
<span v-else>不通过</span>
</el-form-item>
<el-form-item label="审核意见">{{ activity.suggestion }}</el-form-item>
</el-card>
</el-timeline-item>
</el-timeline>
</el-form>
</div>
<div class="t">归档信息</div>
<el-row class="container flex bb">
<el-form label-width="110px" class="el-table">
<el-col :span="24">
<el-col :span="4">
<el-form-item label="归档人">
<span v-if="dangerDetailInfo.fileName">{{
dangerDetailInfo.fileName
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="归档时间">
<span v-if="dangerDetailInfo.fileTime">{{
dangerDetailInfo.fileTime
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<!--<el-col :span="14">
<el-form-item label="复查备注">
<span v-if="dangerDetailInfo.checkRemark">{{
dangerDetailInfo.checkRemark
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>-->
</el-col>
</el-form>
</el-row>
</el-row>
<!-- <el-row>
<el-col :span="14">
<el-form label-width="110px" class="dangerDetailInfo">
<div style="font-size: 20px; margin: 7px 0px 7px 0px">隐患信息</div>
<el-row>
<el-col :span="12">
<el-form-item label="隐患标题">
<span>{{ dangerDetailInfo.title }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="隐患状态">
<span v-if="dangerDetailInfo.status == 0">待处理</span>
<span v-if="dangerDetailInfo.status == 1">拒绝整改</span>
<span v-if="dangerDetailInfo.status == 2">待复查</span>
<span v-if="dangerDetailInfo.status == 3">待审核</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="隐患来源">
<span>{{ $parent.typeFormatter(dangerDetailInfo) }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用户">
<span v-if="dangerDetailInfo.receiveName">{{
dangerDetailInfo.receiveName
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="隐患级别">
<span v-if="dangerDetailInfo.level == 1">一级</span>
<span v-if="dangerDetailInfo.level == 2">二级</span>
<span v-if="dangerDetailInfo.level == 3">三级</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="隐患责任人">
<span v-if="dangerDetailInfo.flag == 1">用户自己</span>
<span v-else-if="dangerDetailInfo.flag == 2">公司客服部</span>
<span v-else>-</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="上报人">
{{ dangerDetailInfo.reportName }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上报时间">
{{
parseTime(
dangerDetailInfo.createTime,
"{y}-{m}-{d} {h}:{i}:{s}"
)
}}
</el-form-item>
</el-col>
</el-row>
<el-col :span="24">
<el-form-item label="隐患地址">
<span v-if="dangerDetailInfo.address">{{
dangerDetailInfo.address
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="隐患内容">
<span v-if="dangerDetailInfo.beforeContent">{{
dangerDetailInfo.beforeContent
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="隐患备注">
<span v-if="dangerDetailInfo.remark">{{
dangerDetailInfo.remark
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="隐患整改前图片" prop="beforeImg">
<span v-if="dangerDetailInfo.beforeImg">
<el-image
v-for="imageInfo in dangerDetailInfo.beforeImg.split(',')"
:src="imageInfo"
:preview-src-list="[imageInfo]"
:z-index="9999"
style="width: 99px; height: 100px; margin-right: 10px"
/>
</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="隐患整改前视频" prop="beforeVideo">
<span v-if="dangerDetailInfo.beforeVideo">
<video
v-for="videoInfo in dangerDetailInfo.beforeVideo.split(',')"
type="video/mp4"
controls="controls"
:src="videoInfo"
class="upload-video"
/>
</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<div style="font-size: 20px; margin: 7px 0px 7px 0px">整改信息</div>
<el-col :span="12">
<el-form-item label="整改人">
<span v-if="dangerDetailInfo.reformName">{{
dangerDetailInfo.reformName
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="整改期限">
<span v-if="dangerDetailInfo.endTime">{{
dangerDetailInfo.endTime
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="整改时间">
<span v-if="dangerDetailInfo.reformTime">{{
dangerDetailInfo.reformTime
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="整改内容">
<span v-if="dangerDetailInfo.afterContent">{{
dangerDetailInfo.afterContent
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-row>
<el-col :span="24">
<el-form-item label="隐患整改后图片">
<span v-if="dangerDetailInfo.afterImg">
<el-image
v-for="afterImageInfo in dangerDetailInfo.afterImg.split(
','
)"
:src="afterImageInfo"
:preview-src-list="[afterImageInfo]"
:z-index="9999"
style="width: 99px; height: 100px; margin-right: 10px"
/>
</span>
<span v-else>-</span>
</el-form-item>
</el-col>
</el-row>
<div style="font-size: 20px; margin: 7px 0px 7px 0px">复查信息</div>
<el-row>
<el-col :span="12">
<el-form-item label="复查人">
<span v-if="dangerDetailInfo.checkName">{{
dangerDetailInfo.checkName
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="复查时间">
<span v-if="dangerDetailInfo.checkTime">{{
dangerDetailInfo.checkTime
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="复查备注">
<span v-if="dangerDetailInfo.checkRemark">{{
dangerDetailInfo.checkRemark
}}</span>
<span v-else>-</span>
</el-form-item>
</el-col>
</el-row>
<div style="font-size: 20px; margin: 7px 0px 7px 0px">变更信息</div>
<el-table :data="dangerStatusChangeList">
<el-table-column
label="时间"
align="center"
prop="optime"
:show-overflow-tooltip="true"
/>
<el-table-column
label="状态"
align="center"
prop="status"
:show-overflow-tooltip="true"
>
<template slot-scope="scope">
<span v-if="scope.row.status == 0">待处理</span>
<span v-if="scope.row.status == 1">拒绝整改</span>
<span v-if="scope.row.status == 2">待复查</span>
<span v-if="scope.row.status == 3">待审核</span>
</template>
</el-table-column>
<el-table-column
label="操作人"
align="center"
prop="operator"
:show-overflow-tooltip="true"
/>
</el-table>
</el-form>
</el-col>
<el-col :span="10">
<div
id="dangerMap"
style="width: 100%; height: 500px; border: 1px solid"
></div>
</el-col>
</el-row> -->
</div>
</el-dialog>
<!-- 表封照片 -->
<CoverPhotoView ref="cover" />
<!-- 安检表 -->
<component ref="inspectDetail" :is="inspectDetailInfo"/>
</div>
</template>
<script>
import { getDanger } from "@/api/checktask/danger";
import { EditorMap } from "@/utils/mapClass/map";
import { mapGetters } from "vuex";
import { dangerStatusList } from "@/api/checktask/dangerStatus";
import MySteps from "@/components/MySteps";
import MyImage from "@/components/MyImage/index.vue";
import CoverPhotoView from "@/views/checktask/task/components/CoverPhotoView";
import { getUser } from "@/api/baseinfo/user";
import { getBusiness } from "@/api/baseinfo/businessInfo";
import CanyinRecordDetail from "@/views/checktask/inspect/jumInspect/cyRecordDetail";
import IndustryRecordDetail from "@/views/checktask/task/components/IndustryRecordDetail";
import { getTask } from "@/api/checktask/task";
import { dangerApprovalListInfo } from "@/api/checktask/dangerApprovalRecord";
export default {
name: "danger-detail",
components: {
MySteps,
MyImage,
CoverPhotoView,
CanyinRecordDetail,
IndustryRecordDetail
},
data() {
return {
dangerDetailOpen: false,
dangerDetailInfo: {
beforeImg: "",
beforeVideo: "",
afterImg: "",
},
stepsArr: [
{
title: "发现隐患",
a: ["安检员", "-"],
b: ["上报时间", "-"],
},
{
title: "已整改待复查",
a: ["整改人", "-"],
b: ["整改时间", "-"],
},
{
title: "已复查审核中",
a: ["复查人", "-"],
b: ["复查时间", "-"],
},
{
title: "已归档",
a: ["归档人", "-"],
b: ["归档时间", "-"],
}
],
stepsNumData: {
0: 1,
2: 2,
3: 3,
4: 4
},
dangerStatusChangeList: [],
inspectDetailInfo: null,
dangerApprovalList: []
};
},
methods: {
//隐患详情
handleDangerDetail(dangerId) {
getDanger(dangerId).then((response) => {
this.dangerDetailInfo = response.data;
this.dangerDetailOpen = true;
this.$set(this.stepsArr[0].a, 1, this.dangerDetailInfo.reportName);
this.$set(this.stepsArr[0].b, 1, this.dangerDetailInfo.createTime);
this.$set(this.stepsArr[1].a, 1, this.dangerDetailInfo.reformName);
this.$set(this.stepsArr[1].b, 1, this.dangerDetailInfo.reformTime);
this.$set(this.stepsArr[2].a, 1, this.dangerDetailInfo.checkName);
this.$set(this.stepsArr[2].b, 1, this.dangerDetailInfo.checkTime);
this.$set(this.stepsArr[3].a, 1, this.dangerDetailInfo.fileName);
this.$set(this.stepsArr[3].b, 1, this.dangerDetailInfo.fileTime);
this.initMap();
this.statusChangeInfo(dangerId);
});
//获取审核记录
this.getDangerApprovalList(dangerId);
},
//地图初始化
initMap() {
this.$nextTick(() => {
const path = eval(this.systemSetting.map_center);
this.detailGaoMap = new EditorMap(
"dangerMap",
{
center: path,
zoom: 12,
},
this
);
if (this.dangerDetailInfo.longitude) {
this.addLocation({
longitude: this.dangerDetailInfo.longitude,
latitude: this.dangerDetailInfo.latitude,
nickName: this.dangerDetailInfo.title,
iconType: "dangerDetail",
});
}
});
},
//位置上图
addLocation(data) {
this.detailGaoMap.allDevice["dangerDetail"]?.forEach((item) => {
this.detailGaoMap.map.remove(item);
});
this.detailGaoMap.control = 2;
this.detailGaoMap.addDevice(data, null);
this.detailGaoMap.map.panTo([data.longitude, data.latitude]);
},
statusChangeInfo(dangerId) {
dangerStatusList({ dangerId: dangerId }).then((res) => {
if (res.code == 200 && res.data) {
this.dangerStatusChangeList = res.data;
}
});
},
//表封照片
handleCover(row) {
if (!row.meterImg) return this.$message.error("未查询到图片");
this.$refs.cover.viewCoverPhoto(row.meterImg);
},
handleInspect(row){
if (!row.content) return this.$message.error("未查到安检信息!");
//居民和商户
if(row.type == 1 || row.type == 2){
this.inspectDetailInfo = CanyinRecordDetail;
this.$nextTick(() =>{
if (row.type == 1) {
this.getUserInfo(row.receiveId);
}else{
this.getBusinessInfo(row.receiveId);
}
this.$refs.inspectDetail.open = true;
this.$refs.inspectDetail.checkType = row.type;
this.$refs.inspectDetail.map = row;
this.$refs.inspectDetail.jsondata = JSON.parse(row.content);
})
}
if(row.type == 3){
this.inspectDetailInfo = IndustryRecordDetail;
this.$nextTick(() =>{
getTask(row.taskId).then(res =>{
this.$refs.inspectDetail.checkType = res.data.checkType;
this.$refs.inspectDetail.inspectInfo = row;
this.$refs.inspectDetail.open = true;
})
})
}
},
getUserInfo(userId) {
getUser(userId).then((res) => {
this.$refs.inspectDetail.detailInfo = res.data;
});
},
getBusinessInfo(businessId) {
getBusiness(businessId).then((res) => {
this.$refs.inspectDetail.device = JSON.parse(res.data.device);
this.$refs.inspectDetail.detailInfo = res.data;
});
},
//获取审核记录
getDangerApprovalList(dangerId){
dangerApprovalListInfo({dangerId:dangerId}).then(res =>{
if(res.code == 200){
this.dangerApprovalList = res.data;
}
})
}
},
computed: {
...mapGetters(["systemSetting"]),
},
};
</script>
<style scoped lang="scss">
.dangerDetailInfo {
height: 500px;
overflow-y: auto;
padding-right: 10px;
&::-webkit-scrollbar {
width: 3px;
background: #dfe4ed;
position: absolute;
top: 0;
}
&::-webkit-scrollbar-thumb {
/*滚动条里面小方块*/
// border-radius: 10px;
// box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
background: #cccccc;
border-radius: 5px;
}
}
.upload-video {
object-fit: fill;
height: 180px;
width: 208px;
margin-right: 10px;
}
.dlg-wrapper {
height: 700px;
overflow: auto;
padding-right: 10px;
}
.steps {
padding: 15px 0;
}
.top-title {
text-align: center;
font-size: 20px;
}
.container {
background: #f9f9f9;
margin-bottom: 32px;
padding: 10px 10px;
.el-form-item {
margin-bottom: 12px;
}
}
.t {
font-size: 14px;
margin: 7px 0px 7px 0px;
}
#dangerMap {
width: 340px;
height: 305px;
margin-bottom: 5px;
}
.map-bottom {
width: 340px;
text-align: center;
font-size: 14px;
color: #606266;
}
.error {
width: 130px;
height: 130px;
text-align: center;
line-height: 139px;
// background: #f5f7fa;
background: #ffffff;
}
.el-table {
width: 100%;
background-color: #f9f9f9;
}
.scroll{
height: 350px;
overflow-y: auto;
}
</style>
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px">
<el-form-item label="隐患标题" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入隐患标题"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="隐患来源" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择隐患来源" clearable size="small">
<el-option
v-for="item in dangerSource"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="隐患级别" prop="level">
<el-select v-model="queryParams.level" placeholder="请选择隐患级别" clearable size="small">
<el-option label="重大" value="1" />
<el-option label="一般" value="2" />
</el-select>
</el-form-item>-->
<!--<el-form-item label="责任归属" prop="flag">
<el-select v-model="queryParams.flag" placeholder="请选择责任归属" clearable size="small">
<el-option label="安全管理部" value="1" />
<el-option label="客服运营部" value="2" />
<el-option label="生产运营部" value="3" />
</el-select>
</el-form-item>-->
<!--<el-form-item label="隐患状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择隐患状态" clearable size="small">
<el-option label="待处理" value="0" />
<el-option label="拒绝整改" value="1" />
<el-option label="待复查" value="2" />
<el-option label="待审核" value="3" />
<el-option label="已归档" value="4" />
</el-select>
</el-form-item>-->
<el-form-item label="上报人" prop="reportName">
<el-input
v-model="queryParams.reportName"
placeholder="请输入隐患标题"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="营业网点" prop="branch">
<el-select v-model="queryParams.branch" placeholder="请选择营业网点">
<el-option
v-for="dict in sceneOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="上报时间" prop="reportTimeRange">
<el-date-picker
v-model="reportTimeRange"
type="datetimerange"
size="small"
:clearable="false"
value-format="yyyy-MM-dd HH:mm"
@change="timeChange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<!--<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['checkTask:danger:add']"
>新增</el-button>
</el-col>-->
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
:loading="exportLoading"
@click="handleExport"
v-hasPermi="['checkTask:danger:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
size="mini"
@click="handleApproval"
v-hasPermi="['checkTask:danger:approval']"
>审核</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="dangerList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" prop="id" v-if="!$store.state.user.roles.includes('visitor')"/>
<el-table-column label="隐患标题" align="center" prop="title" width="150" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span>{{ scope.row.title + (scope.row.remark ? '-' + scope.row.remark : '')}}</span>
</template>
</el-table-column>
<el-table-column label="隐患来源" align="center" prop="type" :formatter="typeFormatter"/>
<el-table-column label="营业网点" align="center" prop="branch" :formatter="branchFormat"/>
<el-table-column label="表具编号" align="center" prop="meterNum" />
<el-table-column label="责任归属" align="center" prop="flag">
<template slot-scope="scope">
<span v-if="scope.row.flag == 1">安全管理部</span>
<span v-else-if="scope.row.flag == 2">客服运营部</span>
<span v-else-if="scope.row.flag == 3">生产运营部</span>
<span v-else>-</span>
</template>
</el-table-column>
<!--<el-table-column label="隐患级别" align="center" prop="level">
<template slot-scope="scope">
<span v-if="scope.row.level == 1">重大</span>
<span v-if="scope.row.level == 2">一般</span>
</template>
</el-table-column>-->
<el-table-column label="隐患地址" align="center" prop="address" width="150" :show-overflow-tooltip="true"/>
<el-table-column label="隐患状态" align="center" prop="status">
<template slot-scope="scope">
<span v-if="scope.row.status == 0" style="color: red">待处理</span>
<span v-if="scope.row.status == 1" style="color: blue">拒绝整改</span>
<span v-if="scope.row.status == 2" style="color: blue">待复查</span>
<span v-if="scope.row.status == 3" style="color: green">待审核</span>
<span v-if="scope.row.status == 4" style="color: green">已归档</span>
</template>
</el-table-column>
<el-table-column label="上报人" align="center" prop="reportName" />
<el-table-column label="上报时间" align="center" prop="createTime" width="150">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<!--<el-table-column label="备注" align="center" prop="remark" width="100" :show-overflow-tooltip="true"/>-->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-document"
@click="handleDetail(scope.row)"
>详情</el-button>
<!-- <el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['checkTask:danger:edit']"
>修改</el-button>-->
<!--<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['checkTask:danger:remove']"
>删除</el-button>-->
<el-button
size="mini"
type="text"
@click="handleApproval(scope.row)"
v-hasPermi="['checkTask:danger:approval']"
>审核</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改安检隐患整改对话框 -->
<el-dialog :title="title" :visible.sync="open" width="900px" append-to-body destroy-on-close :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="12">
<el-form-item label="隐患标题" prop="title">
<el-input v-model="form.title" placeholder="请输入隐患标题" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="隐患来源" prop="type">
<el-select v-model="form.type" placeholder="请选择隐患来源" style="width: 100%">
<el-option label="居民" value="1" />
<el-option label="工商户" value="2" />
<el-option label="工业" value="3" />
<el-option label="其他" value="4" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="居民" prop="receiveId">
<el-input v-model="form.receiveId" placeholder="请输入居民" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="隐患级别" prop="level">
<el-select v-model="form.level" placeholder="请选择隐患级别" style="width: 100%">
<el-option label="重大" value="1" />
<el-option label="一般" value="2" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="隐患内容">
<el-input v-model="form.beforeContent" type="textarea" placeholder="请输入隐患内容" />
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="责任归属" prop="flag">
<el-select v-model="form.flag" placeholder="请选择责任归属" style="width: 100%">
<el-option label="安全管理部" value="1" />
<el-option label="客服运营部" value="2" />
<el-option label="生产运营部" value="3" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="具体地址" prop="address">
<el-input v-model="form.address" placeholder="请输入具体地址" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="经纬度坐标" prop="longitude">
<el-col :span="8">
<el-input v-model="form.longitude" placeholder="请输入经度"/>
</el-col>
<el-col :span="8" style="margin-left: 20px">
<el-input v-model="form.latitude" placeholder="请输入纬度"/>
</el-col>
<el-col :span="4" style="margin-left: 30px">
<el-button type="primary" plain @click="MapdialogFun">选择经纬度</el-button>
</el-col>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="隐患整改前图片" prop="beforeImg">
<el-input v-model="form.beforeImg" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="隐患整改前视频" prop="beforeVideo">
<el-input v-model="form.beforeVideo" placeholder="请输入隐患整改前视频" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 坐标选择 -->
<GetPos
:dialogVisible.sync="dialogTableVisibles"
:devicePos="devicePos"
@close="dialogcancelFun"
@getPath="getPath"
style="z-index: 3000"
/>
<!-- 详情 -->
<DangerDetail ref="dangerDetail"/>
<!-- 审核 -->
<Approval ref="approval"/>
</div>
</template>
<script>
import { dangerPendingApprovalList, getDanger, delDanger, addDanger, updateDanger, exportDanger } from "@/api/checktask/danger";
import Editor from '@/components/Editor';
import GetPos from '@/components/GetPos';
import DangerDetail from "./components/DangerDetail";
import Approval from "./components/Approval";
export default {
name: "Danger",
components: {
Editor,
GetPos,
DangerDetail,
Approval
},
data() {
return {
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 安检隐患整改表格数据
dangerList: [],
sceneOptions:[],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
taskId: null,
inspectId: null,
type: null,
category: 1,
receiveId: null,
title: null,
level: null,
beforeContent: null,
address: null,
longitude: null,
latitude: null,
beforeImg: null,
beforeVideo: null,
flag: null,
afterContent: null,
afterImg: null,
startTime: null,
endTime: null,
status: null,
reportName: null,
beginDate: null,
endDate : null,
branch:null
},
// 表单参数
form: {},
// 表单校验
rules: {
},
dialogTableVisibles: false,
devicePos: [],
dangerSource: [],
reportTimeRange: [],
};
},
created() {
this.getList();
this.getDangerSource();
this.getDicts("t_branch").then(response => {
this.sceneOptions = response.data;
});
},
methods: {
branchFormat(row, column) {
return this.selectDictLabel(this.sceneOptions, row.branch);
},
/** 查询安检隐患整改列表 */
getList() {
this.loading = true;
dangerPendingApprovalList(this.queryParams).then(response => {
this.dangerList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//隐患来源
getDangerSource(){
this.getDicts("t_danger_source").then(response => {
this.dangerSource = response.data;
});
},
typeFormatter(row){
const receiveName = row.receiveName ? '[' + row.receiveName + ']' : '';
return this.selectDictLabel(
this.dangerSource,
row.type
) + receiveName;
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: null,
taskId: null,
inspectId: null,
type: null,
receiveId: null,
title: null,
level: null,
beforeContent: null,
address: null,
longitude: null,
latitude: null,
beforeImg: null,
beforeVideo: null,
flag: null,
afterContent: null,
afterImg: null,
startTime: null,
endTime: null,
status: 0,
createTime: null,
remark: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.reportTimeRange = [];
this.queryParams.beginDate = null;
this.queryParams.endDate = null;
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加安检隐患整改";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getDanger(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改安检隐患整改";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateDanger(this.form).then(response => {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addDanger(this.form).then(response => {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$confirm('是否确认删除安检隐患整改名称为"' + row.title + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return delDanger(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有安检隐患整改数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.exportLoading = true;
return exportDanger(queryParams);
}).then(response => {
this.download(response.msg);
this.exportLoading = false;
}).catch(() => {});
},
/**
* 经纬度坐标方法
*/
MapdialogFun() {
this.dialogTableVisibles = true;
},
/**
* 地图关闭方法
*/
dialogcancelFun() {
this.dialogTableVisibles = false;
},
/**
* 经纬度 选择
* @param res
*/
getPath(res){
//确认选择经纬度
this.form.longitude = res[0];
this.form.latitude = res[1];
},
//详情
handleDetail(row){
this.$refs.dangerDetail.handleDangerDetail(row.id);
},
timeChange(val){
this.queryParams.beginDate = val[0];
this.queryParams.endDate = val[1];
},
handleApproval(row){
let approvalIds = [];
if(row.id){
approvalIds = [row.id];
}else{
if(this.ids.length == 0) {
this.$message.error("至少选择一个隐患");
return;
}
approvalIds = this.ids;
}
this.$refs.approval.open(approvalIds);
}
}
};
</script>
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