提交代码

dev_xds
姜玉琦 2024-05-15 01:53:12 +08:00
parent ed4601e356
commit a537cf8542
9 changed files with 1186 additions and 352 deletions

View File

@ -60,3 +60,12 @@ export function auditinfoList(query) {
params: query params: query
}) })
} }
//提交隐患问题处理
export function modifyProblem(data) {
return request({
url: '/trouble/sspProblemmodify/modifyProblem',
method: 'post',
data: data
})
}

View File

@ -275,3 +275,23 @@
position: relative; position: relative;
float: right; float: right;
} }
.timeline_for_state_1 {
padding: 2px 12px;
height: 20px;
width: 100px;
text-align: center;
line-height: 20px;
font-size: 13px;
background: url("https://szgcwx.jhncidg.com/staticFiles/img/menu/WEB_F5E44186F6C44161B99491284E33EEE6.png") no-repeat center/100% 100%;
}
.timeline_for_state_2 {
padding: 2px 12px;
height: 20px;
width: 100px;
text-align: center;
line-height: 20px;
font-size: 13px;
background: url("https://szgcwx.jhncidg.com/staticFiles/img/WEB_345B9059DAD1492EB37EC4814EB340F0.png") no-repeat center/100% 100%;
}

View File

@ -27,7 +27,7 @@ export default {
vnodes.push(<span slot='title'>{(title)}</span>) vnodes.push(<span slot='title'>{(title)}</span>)
} }
let name=context?.parent?.item?.name; let name=context?.parent?.item?.name;
if(['Todo','Task','Approve','Project','CheckDetection','ProjectMeasure','MaterialSeal','ProjectChecking','Attendance','FlowLabourInfo'].includes(name)){ if(['Todo','Task','Approve','Project','CheckDetection','ProjectMeasure','MaterialSeal','ProjectChecking','Attendance','FlowLabourInfo','Trouble','PshProblemmodify','SspProblemmodify'].includes(name)){
console.log(name); console.log(name);
vnodes.push(h('span',{class:"todo_num_tips tips_"+name},1)) vnodes.push(h('span',{class:"todo_num_tips tips_"+name},1))
} }

View File

@ -1,142 +1,176 @@
import { findMyTask } from "@/api/publics"; import { findMyTask } from "@/api/publics";
const flowtask = { const flowtask = {
state: { state: {
awaitTaskNum:0 awaitTaskNum: 0
}, },
mutations: { mutations: {
SET_AWAIT_TASK: (state, number) => { SET_AWAIT_TASK: (state, number) => {
state.awaitTaskNum = number state.awaitTaskNum = number
} }
}, },
actions: { actions: {
// 设置代办任务 // 设置代办任务
settingAwaitNum({ commit }) { settingAwaitNum({ commit }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
//查询当前登录人的代办任务数量 //查询当前登录人的代办任务数量
findMyTask({}).then(response => { findMyTask({}).then(response => {
let todos=document.querySelectorAll(".tips_Todo"); let todos = document.querySelectorAll(".tips_Todo");
let approves=document.querySelectorAll(".tips_Approve"); let approves = document.querySelectorAll(".tips_Approve");
let tasks=document.querySelectorAll(".tips_Task"); let tasks = document.querySelectorAll(".tips_Task");
let checkDetections=document.querySelectorAll(".tips_CheckDetection"); let checkDetections = document.querySelectorAll(".tips_CheckDetection");
let projectMeasures=document.querySelectorAll(".tips_ProjectMeasure"); let projectMeasures = document.querySelectorAll(".tips_ProjectMeasure");
let projectCheckings=document.querySelectorAll(".tips_ProjectChecking"); let projectCheckings = document.querySelectorAll(".tips_ProjectChecking");
let materialSeals=document.querySelectorAll(".tips_MaterialSeal"); let materialSeals = document.querySelectorAll(".tips_MaterialSeal");
let surProjects=document.querySelectorAll(".tips_Project"); let surProjects = document.querySelectorAll(".tips_Project");
//commit('SET_AWAIT_TASK',response.total) //commit('SET_AWAIT_TASK',response.total)
if(todos.length>0){ if (todos.length > 0) {
todos.forEach(el=>{ todos.forEach(el => {
el.innerHTML=response.data.todo; el.innerHTML = response.data.todo;
if(response.data.todo>0){ if (response.data.todo > 0) {
el.style.display="inline"; el.style.display = "inline";
}else{ } else {
el.style.display="none"; el.style.display = "none";
} }
}); });
} }
if(tasks.length>0){ if (tasks.length > 0) {
//let sum = parseInt(response.data.todo)+parseInt(response.data.approve); //let sum = parseInt(response.data.todo)+parseInt(response.data.approve);
tasks.forEach(el=>{ tasks.forEach(el => {
el.innerHTML=response.data.todo; el.innerHTML = response.data.todo;
if(response.data.todo>0){ if (response.data.todo > 0) {
el.style.display="inline"; el.style.display = "inline";
}else{ } else {
el.style.display="none"; el.style.display = "none";
} }
}); });
} }
// if(approves.length>0){ // if(approves.length>0){
// approves.forEach(el=>{ // approves.forEach(el=>{
// el.innerHTML=response.data.approve; // el.innerHTML=response.data.approve;
// if(response.data.approve>0){ // if(response.data.approve>0){
// el.style.display="inline"; // el.style.display="inline";
// }else{ // }else{
// el.style.display="none"; // el.style.display="none";
// } // }
// }); // });
// } // }
if(checkDetections.length>0){ if (checkDetections.length > 0) {
checkDetections.forEach(el=>{ checkDetections.forEach(el => {
el.innerHTML=response.data.approveQYFS; el.innerHTML = response.data.approveQYFS;
if(response.data.approveQYFS>0){ if (response.data.approveQYFS > 0) {
el.style.display="inline"; el.style.display = "inline";
}else{ } else {
el.style.display="none"; el.style.display = "none";
} }
}); });
} }
if(projectMeasures.length>0){ if (projectMeasures.length > 0) {
projectMeasures.forEach(el=>{ projectMeasures.forEach(el => {
el.innerHTML=response.data.approveSCSL; el.innerHTML = response.data.approveSCSL;
if(response.data.approveSCSL>0){ if (response.data.approveSCSL > 0) {
el.style.display="inline"; el.style.display = "inline";
}else{ } else {
el.style.display="none"; el.style.display = "none";
} }
}); });
} }
if(projectCheckings.length>0){ if (projectCheckings.length > 0) {
projectCheckings.forEach(el=>{ projectCheckings.forEach(el => {
el.innerHTML=response.data.approveJPYS; el.innerHTML = response.data.approveJPYS;
if(response.data.approveJPYS>0){ if (response.data.approveJPYS > 0) {
el.style.display="inline"; el.style.display = "inline";
}else{ } else {
el.style.display="none"; el.style.display = "none";
} }
}); });
} }
if(materialSeals.length>0){ if (materialSeals.length > 0) {
materialSeals.forEach(el=>{ materialSeals.forEach(el => {
el.innerHTML=response.data.approveCLFY; el.innerHTML = response.data.approveCLFY;
if(response.data.approveCLFY>0){ if (response.data.approveCLFY > 0) {
el.style.display="inline"; el.style.display = "inline";
}else{ } else {
el.style.display="none"; el.style.display = "none";
} }
}); });
} }
if(surProjects.length>0){ if (surProjects.length > 0) {
let sum = parseInt(response.data.approveQYFS)+parseInt(response.data.approveSCSL)+parseInt(response.data.approveJPYS)+parseInt(response.data.approveCLFY); let sum = parseInt(response.data.approveQYFS) + parseInt(response.data.approveSCSL) + parseInt(response.data.approveJPYS) + parseInt(response.data.approveCLFY);
surProjects.forEach(el=>{ surProjects.forEach(el => {
el.innerHTML=sum; el.innerHTML = sum;
if(sum>0){ if (sum > 0) {
el.style.display="inline"; el.style.display = "inline";
}else{ } else {
el.style.display="none"; el.style.display = "none";
} }
}); });
} }
let Attendance=document.querySelectorAll(".tips_Attendance"); let Attendance = document.querySelectorAll(".tips_Attendance");
if(Attendance.length>0){ if (Attendance.length > 0) {
Attendance.forEach(el=>{ Attendance.forEach(el => {
el.innerHTML=response.data.approveLZYJ; el.innerHTML = response.data.approveLZYJ;
if(response.data.approveLZYJ>0){ if (response.data.approveLZYJ > 0) {
el.style.display="inline"; el.style.display = "inline";
}else{ } else {
el.style.display="none"; el.style.display = "none";
} }
}); });
} }
let FlowLabourInfo=document.querySelectorAll(".tips_FlowLabourInfo"); let FlowLabourInfo = document.querySelectorAll(".tips_FlowLabourInfo");
if(FlowLabourInfo.length>0){ if (FlowLabourInfo.length > 0) {
FlowLabourInfo.forEach(el=>{ FlowLabourInfo.forEach(el => {
el.innerHTML=response.data.approveLZYJ; el.innerHTML = response.data.approveLZYJ;
if(response.data.approveLZYJ>0){ if (response.data.approveLZYJ > 0) {
el.style.display="inline"; el.style.display = "inline";
}else{ } else {
el.style.display="none"; el.style.display = "none";
} }
}); });
} }
resolve() let trouble = document.querySelectorAll(".tips_Trouble");
}).catch(error => { let pshProblemmodify = document.querySelectorAll(".tips_PshProblemmodify");
reject(error) let sspProblemmodify = document.querySelectorAll(".tips_SspProblemmodify");
}); if (trouble.length > 0) {
}) let sum = parseInt(response.data.zlCount) + parseInt(response.data.aqCount);
} trouble.forEach(el => {
el.innerHTML = sum;
if (sum > 0) {
el.style.display = "inline";
} else {
el.style.display = "none";
}
});
}
if (pshProblemmodify.length > 0) {
pshProblemmodify.forEach(el => {
el.innerHTML = response.data.aqCount;
if (response.data.aqCount > 0) {
el.style.display = "inline";
} else {
el.style.display = "none";
}
});
}
if (sspProblemmodify.length > 0) {
sspProblemmodify.forEach(el => {
el.innerHTML = response.data.zlCount;
if (response.data.zlCount > 0) {
el.style.display = "inline";
} else {
el.style.display = "none";
}
});
}
resolve()
}).catch(error => {
reject(error)
});
})
} }
} }
}
export default flowtask
export default flowtask

View File

@ -17,7 +17,13 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="隐患分类" prop="createUser"> <el-form-item label="隐患分类" prop="createUser">
<el-select v-model="queryParams.roleTypes" multiple placeholder="请选择隐患分类" clearable collapse-tags> <el-select
v-model="queryParams.roleTypes"
multiple
placeholder="请选择隐患分类"
clearable
collapse-tags
>
<el-option <el-option
v-for="dict in roleTypeOpts" v-for="dict in roleTypeOpts"
:key="dict.value" :key="dict.value"
@ -44,7 +50,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="整改" prop="lordSent"> <el-form-item label="整改用户" prop="lordSent">
<el-input <el-input
v-model="queryParams.lordSent" v-model="queryParams.lordSent"
placeholder="请输入整改人姓名/联系方式" placeholder="请输入整改人姓名/联系方式"
@ -52,7 +58,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="提交" prop="createBy"> <el-form-item label="提交用户" prop="createBy">
<el-input <el-input
v-model="queryParams.createBy" v-model="queryParams.createBy"
placeholder="请输入提交人姓名/联系方式" placeholder="请输入提交人姓名/联系方式"
@ -60,17 +66,6 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="提交时间">
<el-date-picker
v-model="daterangeMarksTime"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item <el-form-item
label="责任主体" label="责任主体"
prop="projectDeptId" prop="projectDeptId"
@ -89,12 +84,29 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="提交时间">
<el-date-picker
v-model="daterangeMarksTime"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery" <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
>搜索</el-button >搜索</el-button
> >
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
<el-button icon="el-icon-download" size="mini" v-hasPermi="['trouble:sspProblemmodify:export']" @click="handleExport"></el-button> <el-button
icon="el-icon-download"
size="mini"
v-hasPermi="['trouble:sspProblemmodify:export']"
@click="handleExport"
>导出</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -153,7 +165,8 @@
<el-table <el-table
v-loading="loading" v-loading="loading"
:data="sspProblemmodifyList" :data="sspProblemmodifyList"
@selection-change="handleSelectionChange" stripe @selection-change="handleSelectionChange"
stripe
> >
<el-table-column type="selection" width="40" align="center" v-if="false" /> <el-table-column type="selection" width="40" align="center" v-if="false" />
<el-table-column <el-table-column
@ -261,7 +274,7 @@
label="操作" label="操作"
align="center" align="center"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
width="100" width="120"
fixed="right" fixed="right"
> >
<template slot-scope="scope"> <template slot-scope="scope">
@ -272,20 +285,22 @@
@click="handlePlay(scope.row)" @click="handlePlay(scope.row)"
v-hasPermi="['trouble:sspMarks:query']" v-hasPermi="['trouble:sspMarks:query']"
>视频</el-button> --> >视频</el-button> -->
<!-- <el-button <el-button
size="mini" v-if="getIsModify(scope.row)"
type="text" size="mini"
icon="el-icon-edit" type="text"
@click="handleUpdate(scope.row)" icon="el-icon-check"
v-hasPermi="['trouble:sspProblemmodify:edit']" @click="handleModify(scope.row)"
>修改</el-button> --> v-hasPermi="['trouble:sspProblemmodify:edit']"
>处理</el-button
>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-notebook-2" icon="el-icon-notebook-2"
@click="handleLog(scope.row)" @click="handleDetail(scope.row)"
v-hasPermi="['trouble:sspProblemmodify:query']" v-hasPermi="['trouble:sspProblemmodify:query']"
>整改日志</el-button >详情</el-button
> >
<el-button <el-button
v-if="getIsVdel(scope.row)" v-if="getIsVdel(scope.row)"
@ -310,7 +325,14 @@
</el-tabs> </el-tabs>
<!-- 添加或修改安全整改对话框 --> <!-- 添加或修改安全整改对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body :close-on-click-modal="false" :close-on-press-escape="false"> <el-dialog
:title="title"
:visible.sync="open"
width="500px"
append-to-body
:close-on-click-modal="false"
:close-on-press-escape="false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="项目id" prop="projectId"> <el-form-item label="项目id" prop="projectId">
<el-input v-model="form.projectId" placeholder="请输入项目id" /> <el-input v-model="form.projectId" placeholder="请输入项目id" />
@ -384,17 +406,16 @@
</el-dialog> </el-dialog>
<el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="srcList" /> <el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="srcList" />
<sspProblemmodifyAuditinfoDrawer <sspProblemmodifyAuditinfoDrawer ref="sspProblemmodifyAuditinfoDrawer" />
size="40%" <modifyProblemDrawer ref="modifyProblemDrawer" :closeCallBack="getList" />
:visible.sync="sspProblemmodifyAuditinfoDrawerVisible"
:form-data="formData"
/>
<el-dialog <el-dialog
title="视频播放" title="视频播放"
:visible.sync="openVideo" :visible.sync="openVideo"
width="980px" width="980px"
:before-close="cancelVideo" :before-close="cancelVideo"
append-to-body :close-on-click-modal="false" :close-on-press-escape="false" append-to-body
:close-on-click-modal="false"
:close-on-press-escape="false"
> >
<video <video
ref="video" ref="video"
@ -422,12 +443,14 @@ import {
} from "@/api/trouble/sspProblemmodify"; } from "@/api/trouble/sspProblemmodify";
import ElImageViewer from "element-ui/packages/image/src/image-viewer"; import ElImageViewer from "element-ui/packages/image/src/image-viewer";
import sspProblemmodifyAuditinfoDrawer from "../sspProblemmodify/sspProblemmodifyAuditinfoDrawer.vue"; import sspProblemmodifyAuditinfoDrawer from "../sspProblemmodify/sspProblemmodifyAuditinfoDrawer.vue";
import modifyProblemDrawer from "./../sspProblemmodify/modifyProblemDrawer.vue";
export default { export default {
name: "SspProblemmodify", name: "SspProblemmodify",
components: { components: {
sspProblemmodifyAuditinfoDrawer,
ElImageViewer, ElImageViewer,
modifyProblemDrawer,
sspProblemmodifyAuditinfoDrawer,
}, },
dicts: ["ssp_aqyhlx", "sys_common_isdel", "smz_ssp_checkstate"], dicts: ["ssp_aqyhlx", "sys_common_isdel", "smz_ssp_checkstate"],
data() { data() {
@ -480,12 +503,12 @@ export default {
checkUserPhone: null, checkUserPhone: null,
isDel: null, isDel: null,
dangerType: null, dangerType: null,
createBy:null, createBy: null,
createUser: null, createUser: null,
createTime: null, createTime: null,
updateUser: null, updateUser: null,
updateTime: null, updateTime: null,
roleTypes:[], roleTypes: [],
projectDeptId: null, projectDeptId: null,
}, },
depts: null, depts: null,
@ -495,10 +518,6 @@ export default {
rules: {}, rules: {},
srcList: [], srcList: [],
activeName: "dzg", activeName: "dzg",
sspProblemmodifyAuditinfoDrawerVisible: false,
formData: {
problemmodifyId: null,
},
tabs: { tabs: {
all: "全部数据0", all: "全部数据0",
dzg: "待整改0", dzg: "待整改0",
@ -506,16 +525,24 @@ export default {
ycl: "整改完成0", ycl: "整改完成0",
zgcs: "整改超时0", zgcs: "整改超时0",
}, },
roleTypeOpts:[ roleTypeOpts: [
{label:'集团',value:3} { label: "集团", value: 3 },
,{label:'子公司',value:4} { label: "子公司", value: 4 },
,{label:'甲方代表',value:5} { label: "甲方代表", value: 5 },
,{label:'监理单位',value:6} { label: "监理单位", value: 6 },
,{label:'总包单位',value:7}] { label: "总包单位", value: 7 },
],
myMinRoles: [],
isAdmin: false,
nowUser: "",
}; };
}, },
created() { created() {
this.nowUser = this.$store.getters.name;
this.myMinRoles = this.$store.getters.roles;
if (this.myMinRoles.includes("admin") || this.myMinRoles.includes("super")) {
this.isAdmin = true;
}
this.queryParams.activeName = this.activeName; this.queryParams.activeName = this.activeName;
this.getList(); this.getList();
this.$api.publics.getZgsDeptList().then((d) => { this.$api.publics.getZgsDeptList().then((d) => {
@ -554,21 +581,21 @@ export default {
if (response && response.data) { if (response && response.data) {
let sum = 0; let sum = 0;
this.tabs.dzg = "待整改0"; this.tabs.dzg = "待整改0";
let chk03=0; let chk03 = 0;
if(response.data.check0){ if (response.data.check0) {
chk03+=response.data.check0; chk03 += response.data.check0;
} }
if(response.data.check3){ if (response.data.check3) {
chk03+=response.data.check3; chk03 += response.data.check3;
} }
if (chk03){ if (chk03) {
sum += chk03; sum += chk03;
this.tabs.dzg = "待整改(" + chk03 + ""; this.tabs.dzg = "待整改(" + chk03 + "";
} }
this.tabs.dqr = "待复检0"; this.tabs.dqr = "待复检0";
if (response.data.check1) { if (response.data.check1) {
sum += response.data.check1; sum += response.data.check1;
this.tabs.dqr = "待复检(" + response.data.check1+ ""; this.tabs.dqr = "待复检(" + response.data.check1 + "";
} }
this.tabs.ycl = "整改完成0"; this.tabs.ycl = "整改完成0";
if (response.data.check4) { if (response.data.check4) {
@ -624,9 +651,6 @@ export default {
}; };
this.resetForm("form"); this.resetForm("form");
}, },
getIsVdel(){
return false;
},
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.pageNum = 1; this.queryParams.pageNum = 1;
@ -634,7 +658,7 @@ export default {
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.queryParams.roleTypes=[]; this.queryParams.roleTypes = [];
this.daterangeMarksTime = []; this.daterangeMarksTime = [];
this.resetForm("queryForm"); this.resetForm("queryForm");
this.handleQuery(); this.handleQuery();
@ -701,8 +725,7 @@ export default {
.catch(() => {}); .catch(() => {});
}, },
handleLog(row) { handleLog(row) {
this.formData.problemmodifyId = row.id; this.$refs.sspProblemmodifyAuditinfoDrawer.show(row);
this.sspProblemmodifyAuditinfoDrawerVisible = true;
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
@ -714,6 +737,38 @@ export default {
`安全整改_${new Date().getTime()}.xlsx` `安全整改_${new Date().getTime()}.xlsx`
); );
}, },
/** 是否可处理 */
getIsModify(row) {
if (row.checkState == 0 || row.checkState == 3) {
if (this.isAdmin || this.nowUser == row.lordSentUser) {
return true;
} else {
return false;
}
} else if (row.checkState == 1) {
if (this.isAdmin || this.nowUser == row.recheckSendUser) {
return true;
} else {
return false;
}
} else {
return false;
}
},
/** 处理操作 */
handleModify(row) {
this.$refs.modifyProblemDrawer.show(row);
},
/** 是否可删除 */
getIsVdel(row) {
if (this.isAdmin) {
return true;
} else if (this.nowUser == row.createUser && row.checkState != 4) {
return true;
} else {
return false;
}
},
}, },
}; };
</script> </script>

View File

@ -17,7 +17,13 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="隐患分类" prop="roleTypes"> <el-form-item label="隐患分类" prop="roleTypes">
<el-select v-model="queryParams.roleTypes" multiple placeholder="请选择隐患分类" clearable collapse-tags> <el-select
v-model="queryParams.roleTypes"
multiple
placeholder="请选择隐患分类"
clearable
collapse-tags
>
<el-option <el-option
v-for="dict in roleTypeOpts" v-for="dict in roleTypeOpts"
:key="dict.value" :key="dict.value"
@ -44,7 +50,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="整改" prop="lordSent"> <el-form-item label="整改用户" prop="lordSent">
<el-input <el-input
v-model="queryParams.lordSent" v-model="queryParams.lordSent"
placeholder="请输入整改人姓名/联系方式" placeholder="请输入整改人姓名/联系方式"
@ -52,7 +58,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="提交" prop="createBy"> <el-form-item label="提交用户" prop="createBy">
<el-input <el-input
v-model="queryParams.createBy" v-model="queryParams.createBy"
placeholder="请输入提交人姓名/联系方式" placeholder="请输入提交人姓名/联系方式"
@ -60,17 +66,6 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="提交时间">
<el-date-picker
v-model="daterangeMarksTime"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item <el-form-item
label="责任主体" label="责任主体"
prop="projectDeptId" prop="projectDeptId"
@ -89,12 +84,29 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="提交时间">
<el-date-picker
v-model="daterangeMarksTime"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery" <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
>搜索</el-button >搜索</el-button
> >
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
<el-button icon="el-icon-download" size="mini" v-hasPermi="['trouble:sspProblemmodify:export']" @click="handleExport"></el-button> <el-button
icon="el-icon-download"
size="mini"
v-hasPermi="['trouble:sspProblemmodify:export']"
@click="handleExport"
>导出</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -153,7 +165,8 @@
<el-table <el-table
v-loading="loading" v-loading="loading"
:data="sspProblemmodifyList" :data="sspProblemmodifyList"
@selection-change="handleSelectionChange" stripe @selection-change="handleSelectionChange"
stripe
> >
<el-table-column type="selection" width="40" align="center" v-if="false" /> <el-table-column type="selection" width="40" align="center" v-if="false" />
<el-table-column <el-table-column
@ -263,7 +276,7 @@
align="center" align="center"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
fixed="right" fixed="right"
width="100" width="120"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<!-- <el-button v-if="scope.row.marksVideo != null && scope.row.marksVideo != ''" <!-- <el-button v-if="scope.row.marksVideo != null && scope.row.marksVideo != ''"
@ -273,16 +286,25 @@
@click="handlePlay(scope.row)" @click="handlePlay(scope.row)"
v-hasPermi="['trouble:sspMarks:query']" v-hasPermi="['trouble:sspMarks:query']"
>视频</el-button> --> >视频</el-button> -->
<el-button
v-if="getIsModify(scope.row)"
size="mini"
type="text"
icon="el-icon-check"
@click="handleModify(scope.row)"
v-hasPermi="['trouble:sspProblemmodify:edit']"
>处理</el-button
>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-notebook-2" icon="el-icon-notebook-2"
@click="handleLog(scope.row)" @click="handleDetail(scope.row)"
v-hasPermi="['trouble:sspProblemmodify:query']" v-hasPermi="['trouble:sspProblemmodify:query']"
>整改日志</el-button >详情</el-button
> >
<el-button <el-button
v-if="scope.row.vDel == '0'" v-if="getIsVdel(scope.row)"
size="mini" size="mini"
type="text" type="text"
icon="el-icon-delete" icon="el-icon-delete"
@ -304,7 +326,14 @@
</el-tabs> </el-tabs>
<!-- 添加或修改质量整改对话框 --> <!-- 添加或修改质量整改对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body :close-on-click-modal="false" :close-on-press-escape="false"> <el-dialog
:title="title"
:visible.sync="open"
width="500px"
append-to-body
:close-on-click-modal="false"
:close-on-press-escape="false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="项目id" prop="projectId"> <el-form-item label="项目id" prop="projectId">
<el-input v-model="form.projectId" placeholder="请输入项目id" /> <el-input v-model="form.projectId" placeholder="请输入项目id" />
@ -378,16 +407,15 @@
</el-dialog> </el-dialog>
<el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="srcList" /> <el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="srcList" />
<sspProblemmodifyAuditinfoDrawer <sspProblemmodifyAuditinfoDrawer ref="sspProblemmodifyAuditinfoDrawer" />
size="40%" <modifyProblemDrawer ref="modifyProblemDrawer" :closeCallBack="getList"/>
:visible.sync="sspProblemmodifyAuditinfoDrawerVisible"
:form-data="formData"
/>
<el-dialog <el-dialog
title="视频播放" title="视频播放"
:visible.sync="openVideo" :visible.sync="openVideo"
width="980px" width="980px"
:before-close="cancelVideo" :close-on-click-modal="false" :close-on-press-escape="false" :before-close="cancelVideo"
:close-on-click-modal="false"
:close-on-press-escape="false"
append-to-body append-to-body
> >
<video <video
@ -416,12 +444,14 @@ import {
} from "@/api/trouble/sspProblemmodify"; } from "@/api/trouble/sspProblemmodify";
import ElImageViewer from "element-ui/packages/image/src/image-viewer"; import ElImageViewer from "element-ui/packages/image/src/image-viewer";
import sspProblemmodifyAuditinfoDrawer from "./sspProblemmodifyAuditinfoDrawer.vue"; import sspProblemmodifyAuditinfoDrawer from "./sspProblemmodifyAuditinfoDrawer.vue";
import modifyProblemDrawer from './modifyProblemDrawer.vue';
export default { export default {
name: "SspProblemmodify", name: "SspProblemmodify",
components: { components: {
sspProblemmodifyAuditinfoDrawer,
ElImageViewer, ElImageViewer,
modifyProblemDrawer,
sspProblemmodifyAuditinfoDrawer,
}, },
dicts: ["ssp_zlyhlx", "sys_common_isdel", "smz_ssp_checkstate"], dicts: ["ssp_zlyhlx", "sys_common_isdel", "smz_ssp_checkstate"],
data() { data() {
@ -479,7 +509,7 @@ export default {
createTime: null, createTime: null,
updateUser: null, updateUser: null,
updateTime: null, updateTime: null,
roleTypes:[], roleTypes: [],
projectDeptId: null, projectDeptId: null,
}, },
depts: null, depts: null,
@ -489,10 +519,6 @@ export default {
rules: {}, rules: {},
srcList: [], srcList: [],
activeName: "dzg", activeName: "dzg",
sspProblemmodifyAuditinfoDrawerVisible: false,
formData: {
problemmodifyId: null,
},
tabs: { tabs: {
all: "全部数据0", all: "全部数据0",
dzg: "待整改0", dzg: "待整改0",
@ -500,15 +526,24 @@ export default {
ycl: "整改完成0", ycl: "整改完成0",
zgcs: "整改超时0", zgcs: "整改超时0",
}, },
roleTypeOpts:[ roleTypeOpts: [
{label:'集团',value:3} { label: "集团", value: 3 },
,{label:'子公司',value:4} { label: "子公司", value: 4 },
,{label:'甲方代表',value:5} { label: "甲方代表", value: 5 },
,{label:'监理单位',value:6} { label: "监理单位", value: 6 },
,{label:'总包单位',value:7}] { label: "总包单位", value: 7 },
],
myMinRoles: [],
isAdmin: false,
nowUser:"",
}; };
}, },
created() { created() {
this.nowUser = this.$store.getters.name;
this.myMinRoles = this.$store.getters.roles;
if (this.myMinRoles.includes("admin") || this.myMinRoles.includes("super")) {
this.isAdmin = true;
}
this.queryParams.activeName = this.activeName; this.queryParams.activeName = this.activeName;
this.getList(); this.getList();
this.$api.publics.getZgsDeptList().then((d) => { this.$api.publics.getZgsDeptList().then((d) => {
@ -547,14 +582,14 @@ export default {
if (response && response.data) { if (response && response.data) {
let sum = 0; let sum = 0;
this.tabs.dzg = "待整改0"; this.tabs.dzg = "待整改0";
let chk03=0; let chk03 = 0;
if(response.data.check0){ if (response.data.check0) {
chk03+=response.data.check0; chk03 += response.data.check0;
} }
if(response.data.check3){ if (response.data.check3) {
chk03+=response.data.check3; chk03 += response.data.check3;
} }
if (chk03){ if (chk03) {
sum += chk03; sum += chk03;
this.tabs.dzg = "待整改(" + chk03 + ""; this.tabs.dzg = "待整改(" + chk03 + "";
} }
@ -613,7 +648,7 @@ export default {
createUser: null, createUser: null,
createTime: null, createTime: null,
updateUser: null, updateUser: null,
updateTime: null, updateTime: null,
}; };
this.resetForm("form"); this.resetForm("form");
}, },
@ -624,7 +659,7 @@ export default {
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.queryParams.roleTypes=[]; this.queryParams.roleTypes = [];
this.daterangeMarksTime = []; this.daterangeMarksTime = [];
this.resetForm("queryForm"); this.resetForm("queryForm");
this.handleQuery(); this.handleQuery();
@ -690,9 +725,9 @@ export default {
}) })
.catch(() => {}); .catch(() => {});
}, },
handleLog(row) { /** 查看详情 */
this.formData.problemmodifyId = row.id; handleDetail(row) {
this.sspProblemmodifyAuditinfoDrawerVisible = true; this.$refs.sspProblemmodifyAuditinfoDrawer.show(row);
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
@ -704,6 +739,38 @@ export default {
`质量整改_${new Date().getTime()}.xlsx` `质量整改_${new Date().getTime()}.xlsx`
); );
}, },
/** 是否可处理 */
getIsModify(row) {
if(row.checkState==0 || row.checkState==3){
if(this.isAdmin || this.nowUser==row.lordSentUser){
return true;
}else{
return false;
}
}else if(row.checkState==1){
if(this.isAdmin || this.nowUser==row.recheckSendUser){
return true;
}else{
return false;
}
}else{
return false;
}
},
/** 处理操作 */
handleModify(row){
this.$refs.modifyProblemDrawer.show(row);
},
/** 是否可删除 */
getIsVdel(row) {
if(this.isAdmin){
return true;
}else if(this.nowUser==row.createUser && row.checkState!=4){
return true;
}else{
return false;
}
},
}, },
}; };
</script> </script>

View File

@ -0,0 +1,484 @@
<template>
<div class="ssp-container-index-drawer">
<el-drawer
v-if="vOpen"
:visible.sync="vOpen"
ref="drawer"
v-loading="loading"
direction="rtl"
@close="closeCallBack"
size="60%"
>
<template slot="title">
<div>{{ typeName }}隐患详情查看</div>
</template>
<div class="block">
<div class="drawer">
<div class="drawerLeft">
<el-steps :active="active" finish-status="success" simple>
<el-step title="提交隐患"></el-step>
<el-step title="处理隐患"></el-step>
<el-step title="整改复检"></el-step>
<el-step title="处理完成"></el-step>
</el-steps>
<el-timeline>
<el-timeline-item
v-for="(item, index) in flowRecordList"
:key="index"
:icon="setIcon(item.processState)"
:color="setColor(item.processState)"
>
<p style="font-weight: 700">
{{ getProcess(index, item.process) }}
</p>
<el-card :body-style="{ padding: '10px' }">
<el-descriptions class="margin-top" :column="1" size="small" border>
<el-descriptions-item
v-if="item.createUserName"
label-class-name="my-label"
:labelStyle="labelStyle"
>
<template slot="label"
><i class="el-icon-user"></i>办理用户</template
>
{{ item.createUserName }}
<el-tag type="info" size="mini">{{ item.createUser }}</el-tag>
</el-descriptions-item>
<el-descriptions-item
v-if="item.createTime"
label-class-name="my-label"
:labelStyle="labelStyle"
>
<template slot="label"
><i class="el-icon-date"></i>办理时间</template
>
{{ item.createTime }}
</el-descriptions-item>
<el-descriptions-item
v-if="item.fileUrls"
label-class-name="my-label"
:labelStyle="labelStyle"
>
<template slot="label" v-if="item.processState == 1"
><i class="el-icon-picture-outline"></i>隐患图片</template
>
<template slot="label" v-if="item.processState != 1"
><i class="el-icon-picture-outline"></i>整改图片</template
>
<el-image
ref="preview"
v-for="img in item.fileUrls.split(',')"
:src="img + '.min.jpg'"
style="width: 50px; height: 50px; margin-right: 10px"
@click="onPreview(img)"
></el-image>
</el-descriptions-item>
<el-descriptions-item
v-if="item.opinion"
label-class-name="my-label"
:labelStyle="labelStyle"
>
<template slot="label"
><i class="el-icon-tickets"></i>处理意见</template
>
{{ item.opinion }}
</el-descriptions-item>
</el-descriptions>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
<div class="drawerRight">
<el-form
ref="form"
label-width="80px"
size="mini"
:model="form"
:rules="rules"
style="padding-right: 20px; padding-left: 20px"
>
<el-form-item label="项目名称">
{{ dataInfo.problemArea }}
</el-form-item>
<el-form-item label="隐患图片">
<el-image
ref="preview"
v-for="img in dataInfo.smarkUrl.split(',')"
:src="getImageUrl(img)"
style="width: 60px; height: 60px; margin-right: 8px"
@click="onPreview(img)"
></el-image>
</el-form-item>
<el-form-item label="问题类型">
<span v-if="dataInfo.problemType == '1'" class="timeline_for_state_1"
>常规检查</span
>
<span v-else class="timeline_for_state_2">专项检查</span>
</el-form-item>
<el-form-item label="隐患类型">
<dict-tag
v-if="dataInfo.infoType == 1"
:options="dict.type.ssp_zlyhlx"
:value="dataInfo.dangerType"
/>
<dict-tag
v-if="dataInfo.infoType == 0"
:options="dict.type.ssp_aqyhlx"
:value="dataInfo.dangerType"
/>
</el-form-item>
<el-form-item label="隐患描述">
{{ dataInfo.workParts }}
</el-form-item>
<el-form-item label="整改要求">
{{ dataInfo.changeInfo }}
</el-form-item>
<el-form-item label="检查单位">
{{ dataInfo.deptName }}
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="检查分类">
<el-tag v-if="dataInfo.roleType == 3"></el-tag>
<el-tag v-if="dataInfo.roleType == 4"></el-tag>
<el-tag v-if="dataInfo.roleType == 5"></el-tag>
<el-tag v-if="dataInfo.roleType == 6"></el-tag>
<el-tag v-if="dataInfo.roleType == 7"></el-tag>
<el-tag v-if="dataInfo.roleType == 8"></el-tag>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检查人">
{{ dataInfo.createUserName }}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="检查时间">
{{ dataInfo.createTime }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="整改人">
{{ dataInfo.lordSent }}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="抄送人">
{{ dataInfo.copySend }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="复检人">
{{ dataInfo.recheckSend }}
</el-form-item>
</el-col>
</el-row>
<el-form-item label="截至时间">
{{ dataInfo.nickedTime }}
</el-form-item>
<el-form-item
v-if="dataInfo.checkState == 0 || dataInfo.checkState == 3"
label="整改说明"
prop="flowComment"
>
<el-input
type="textarea"
:rows="3"
placeholder="请输入整改说明255字内"
v-model="form.flowComment"
/>
</el-form-item>
<el-form-item
v-if="dataInfo.checkState == 1"
label="复检意见"
prop="flowComment"
>
<el-input
type="textarea"
:rows="3"
placeholder="请输入复检意见255字内"
v-model="form.flowComment"
/>
</el-form-item>
<el-form-item
v-if="dataInfo.checkState == 0 || dataInfo.checkState == 3"
label="整改图片"
prop="files"
>
<image-upload v-model="form.files" :limit="5" />
</el-form-item>
<div style="text-align: center; padding-bottom: 20px">
<el-button @click="cancel"> </el-button>
<el-button
type="success"
v-if="dataInfo.checkState == 0 || dataInfo.checkState == 3"
icon="el-icon-check"
@click="submitForm(0)"
> </el-button
>
<el-button
type="danger"
v-if="dataInfo.checkState == 1"
icon="el-icon-error"
@click="submitForm(2)"
> </el-button
>
<el-button
type="success"
v-if="dataInfo.checkState == 1"
icon="el-icon-success"
@click="submitForm(4)"
> </el-button
>
</div>
</el-form>
</div>
</div>
</div>
</el-drawer>
<el-image-viewer
v-if="showViewer"
:on-close="closeViewer"
:url-list="previewList"
style="z-index: 9999"
/>
</div>
</template>
<script>
import { auditinfoList, modifyProblem } from "@/api/trouble/sspProblemmodify";
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
import { getSspProblemmodify } from "@/api/trouble/sspProblemmodify";
export default {
name: "modifyProblemDrawer",
components: { ElImageViewer },
props: {
closeCallBack: {
type: Function,
},
},
dicts: ["ssp_zlyhlx", "ssp_aqyhlx", "smz_ssp_checkstate"],
data() {
return {
vOpen: false,
option: {},
//
queryParams: {
mainId: null,
},
form: {
flowComment: "",
files: "",
},
rules: {
flowComment: [
{ required: true, message: "请输入处理意见", trigger: "blur" },
{ max: 255, message: "处理意见最多255字符", trigger: "blur" },
],
files: [{ required: true, message: "请上传整改图片", trigger: "blur" }],
},
//
loading: true,
//
flowRecordList: [],
//label
labelStyle: { width: "200px" },
showViewer: false,
previewList: [],
dataInfo: {
smarkUrl: "",
},
active: 100,
typeName: "",
};
},
computed: {},
watch: {},
created() {},
mounted() {},
beforeDestroy() {},
methods: {
getImageUrl(url) {
return process.env.VUE_APP_BASE_API + url + ".min.jpg";
},
onPreview(urls) {
this.previewList = [];
urls.split(",").forEach((item) => {
this.previewList.push(process.env.VUE_APP_BASE_API + item);
});
this.showViewer = true;
},
getProcess(i, v) {
let num = this.flowRecordList.length - i;
if (num < 10) {
num = "0" + num;
}
return num + ". " + v;
},
closeViewer() {
this.showViewer = false;
},
setIcon(val) {
if (val == 2) {
return "el-icon-close";
} else {
return "el-icon-check";
}
},
setColor(val) {
if (val == 2) {
return "#f56c6c";
} else {
return "#2bc418";
}
},
show(options) {
if (this.option.id != options.id) {
this.form.flowComment = "";
this.form.files = "";
}
if (options.infoType == 1) {
this.typeName = "质量";
} else {
this.typeName = "安全";
}
this.option = options;
this.initDataInfo();
this.getAuditinfoList();
this.vOpen = true;
},
initDataInfo() {
this.loading = true;
getSspProblemmodify(this.option.id).then((res) => {
if (res.data.checkState == 0) {
this.active = 1;
} else if (res.data.checkState == 1) {
this.active = 2;
} else if (res.data.checkState == 3) {
this.active = 1;
}
this.dataInfo = res.data;
this.loading = false;
});
},
/** 查询项目人员列表 */
getAuditinfoList() {
this.queryParams.mainId = this.option.id;
auditinfoList(this.queryParams).then((response) => {
this.flowRecordList = response.rows;
});
},
//
cancel() {
this.vOpen = false;
},
/** 提交按钮 */
submitForm(v) {
let that = this;
this.$refs["form"].validate((valid) => {
if (valid) {
let msg = "提交复检";
if (v == 2) {
msg = "复检驳回";
}
if (v == 4) {
msg = "复检通过";
}
this.$confirm("是否确认" + msg + "?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
that.loading = true;
let params = {
mainId: that.option.id,
processState: v,
opinion: that.form.flowComment,
fileUrls: that.form.files,
};
modifyProblem(params).then((res) => {
that.$modal.msgSuccess("操作成功");
that.loading = false;
//
that.$refs.drawer.closeDrawer();
});
})
.catch(() => {
console.log("取消操作");
});
}
});
},
},
};
</script>
<style scope>
.el-alert {
display: flex !important;
}
.el-alert--info.is-light {
background: cornflowerblue !important;
color: #ffffff !important;
}
.el-alert--info .el-alert__description {
color: #ffffff !important;
}
.el-steps--simple {
padding: 5px 5px !important;
}
.el-timeline-item {
padding-bottom: 0px !important;
}
.el-timeline {
padding-left: 5px !important;
padding-top: 20px !important;
}
.el-timeline-item__wrapper {
padding-left: 15px !important;
}
.el-timeline-item__content {
font-weight: 900;
}
.el-form-item {
margin-bottom: 15px !important;
}
.el-step.is-simple .el-step__title {
font-size: 13px !important;
}
.el-card {
margin-left: -15px !important;
}
</style>
<style lang="scss">
.ssp-container-index-drawer {
.drawer {
width: 100%;
height: 100%;
padding-left: 20px;
padding-right: 20px;
padding-bottom: 20px;
.drawerLeft {
width: 50%;
min-width: 280px;
height: 100%;
float: left;
border-right: 1px solid #dcdfe6;
overflow-y: scroll;
padding-right: 20px;
}
.drawerRight {
width: 50%;
min-width: 400px;
height: 100%;
float: left;
padding-left: 20px;
}
}
}
</style>

View File

@ -1,85 +1,161 @@
<template> <template>
<div class="app-container project-build-node-drawer"> <div class="ssp-container-index-drawer">
<el-drawer <el-drawer v-if="vOpen" :visible.sync="vOpen" ref="drawer" v-loading="vLoading" direction="rtl" size="60%">
v-bind="$attrs" <template slot="title">
v-on="$listeners" <div>隐患详情查看</div>
@opened="onOpen"
@close="onClose"
style="padding-left: 40px"
title="隐患整改审批日志"
>
<template slot="t">
<right-toolbar @queryTable="getAuditinfoList" :search="true"></right-toolbar>
</template> </template>
<div class="block"> <div class="block">
<el-timeline> <div class="drawer">
<el-timeline-item <div class="drawerLeft">
v-for="(item, index) in flowRecordList" <el-steps :active="active" finish-status="success" simple>
:key="index" <el-step title="提交隐患"></el-step>
:icon="setIcon(item.processState)" <el-step title="处理隐患"></el-step>
:color="setColor(item.processState)" <el-step title="整改复检"></el-step>
> <el-step title="处理完成"></el-step>
<p style="font-weight: 700"> </el-steps>
{{ getProcess(index, item.process) }} <el-timeline>
</p> <el-timeline-item
<el-card :body-style="{ padding: '10px' }"> v-for="(item, index) in flowRecordList"
<el-descriptions class="margin-top" :column="1" size="small" border> :key="index"
<el-descriptions-item :icon="setIcon(item.processState)"
v-if="item.createUserName" :color="setColor(item.processState)"
label-class-name="my-label" >
:labelStyle="labelStyle" <p style="font-weight: 700">
{{ getProcess(index, item.process) }}
</p>
<el-card :body-style="{ padding: '10px' }">
<el-descriptions class="margin-top" :column="1" size="small" border>
<el-descriptions-item
v-if="item.createUserName"
label-class-name="my-label"
:labelStyle="labelStyle"
>
<template slot="label"
><i class="el-icon-user"></i>办理用户</template
>
{{ item.createUserName }}
<el-tag type="info" size="mini">{{ item.createUser }}</el-tag>
</el-descriptions-item>
<el-descriptions-item
v-if="item.createTime"
label-class-name="my-label"
:labelStyle="labelStyle"
>
<template slot="label"
><i class="el-icon-date"></i>办理时间</template
>
{{ item.createTime }}
</el-descriptions-item>
<el-descriptions-item
v-if="item.fileUrls"
label-class-name="my-label"
:labelStyle="labelStyle"
>
<template slot="label" v-if="item.processState == 1"
><i class="el-icon-picture-outline"></i>隐患图片</template
>
<template slot="label" v-if="item.processState != 1"
><i class="el-icon-picture-outline"></i>整改图片</template
>
<el-image
ref="preview"
v-for="img in item.fileUrls.split(',')"
:src="img + '.min.jpg'"
style="width: 50px; height: 50px; margin-right: 10px"
@click="onPreview(img)"
></el-image>
</el-descriptions-item>
<el-descriptions-item
v-if="item.opinion"
label-class-name="my-label"
:labelStyle="labelStyle"
>
<template slot="label"
><i class="el-icon-tickets"></i>处理意见</template
>
{{ item.opinion }}
</el-descriptions-item>
</el-descriptions>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
<div class="drawerRight">
<el-form
ref="form"
label-width="80px"
size="mini"
style="padding-right: 20px; padding-left: 20px"
>
<el-form-item label="项目名称">
{{ dataInfo.problemArea }}
</el-form-item>
<el-form-item label="隐患图片">
<el-image
ref="preview"
v-for="img in dataInfo.smarkUrl.split(',')"
:src="getImageUrl(img)"
style="width: 60px; height: 60px; margin-right: 8px"
@click="onPreview(img)"
></el-image>
</el-form-item>
<el-form-item label="问题类型">
<span v-if="dataInfo.problemType == '1'" class="timeline_for_state_1"
>常规检查</span
> >
<template slot="label"><i class="el-icon-user"></i>办理用户</template> <span v-else class="timeline_for_state_2">专项检查</span>
{{ item.createUserName }} </el-form-item>
<el-tag type="info" size="mini">{{ item.createUser }}</el-tag> <el-form-item label="隐患类型">
</el-descriptions-item> <dict-tag v-if="dataInfo.infoType==1" :options="dict.type.ssp_zlyhlx" :value="dataInfo.dangerType" />
<el-descriptions-item <dict-tag v-if="dataInfo.infoType==0" :options="dict.type.ssp_aqyhlx" :value="dataInfo.dangerType" />
v-if="item.createTime" </el-form-item>
label-class-name="my-label" <el-form-item label="隐患描述">
:labelStyle="labelStyle" {{ dataInfo.workParts }}
> </el-form-item>
<template slot="label"><i class="el-icon-date"></i>办理时间</template> <el-form-item label="整改要求">
{{ item.createTime }} {{ dataInfo.changeInfo }}
</el-descriptions-item> </el-form-item>
<el-descriptions-item <el-form-item label="检查单位">
v-if="item.fileUrls" {{ dataInfo.deptName }}
label-class-name="my-label" </el-form-item>
:labelStyle="labelStyle" <el-form-item label="检查分类">
> <el-tag v-if="dataInfo.roleType==3"></el-tag>
<template slot="label" v-if="item.processState == 1" <el-tag v-if="dataInfo.roleType==4"></el-tag>
><i class="el-icon-picture-outline"></i>隐患图片</template <el-tag v-if="dataInfo.roleType==5"></el-tag>
> <el-tag v-if="dataInfo.roleType==6"></el-tag>
<template slot="label" v-if="item.processState != 1" <el-tag v-if="dataInfo.roleType==7"></el-tag>
><i class="el-icon-picture-outline"></i>整改图片</template <el-tag v-if="dataInfo.roleType==8"></el-tag>
> </el-form-item>
<el-image <el-form-item label="检查人">
ref="preview" {{ dataInfo.createUserName }}
v-for="img in item.fileUrls.split(',')" </el-form-item>
:src="img + '.min.jpg'" <el-form-item label="检查时间">
style="width: 50px; height: 50px; margin-right: 10px" {{ dataInfo.createTime }}
@click="onPreview(img)" </el-form-item>
></el-image> <el-form-item label="整改人">
</el-descriptions-item> {{ dataInfo.lordSent }}
<el-descriptions-item </el-form-item>
v-if="item.opinion" <el-form-item label="抄送人">
label-class-name="my-label" {{ dataInfo.copySend }}
:labelStyle="labelStyle" </el-form-item>
> <el-form-item label="复检人">
<template slot="label" {{ dataInfo.recheckSend }}
><i class="el-icon-tickets"></i>处理意见</template </el-form-item>
> <el-form-item label="截至时间">
{{ item.opinion }} {{ dataInfo.nickedTime }}
</el-descriptions-item> </el-form-item>
</el-descriptions> <el-form-item label="流程状态">
</el-card> <dict-tag :options="dict.type.smz_ssp_checkstate" :value="dataInfo.checkState" />
</el-timeline-item> </el-form-item>
</el-timeline> </el-form>
</div>
</div>
</div> </div>
</el-drawer> </el-drawer>
<el-image-viewer <el-image-viewer
v-if="showViewer" v-if="showViewer"
:on-close="closeViewer" :on-close="closeViewer"
:url-list="srcList" :url-list="previewList"
style="z-index: 9999" style="z-index: 9999"
/> />
</div> </div>
@ -88,47 +164,48 @@
<script> <script>
import { auditinfoList } from "@/api/trouble/sspProblemmodify"; import { auditinfoList } from "@/api/trouble/sspProblemmodify";
import ElImageViewer from "element-ui/packages/image/src/image-viewer"; import ElImageViewer from "element-ui/packages/image/src/image-viewer";
import { getSspProblemmodify } from "@/api/trouble/sspProblemmodify";
export default { export default {
components: { ElImageViewer }, components: { ElImageViewer },
props: { props: {},
formData: { dicts: ["ssp_zlyhlx","ssp_aqyhlx","smz_ssp_checkstate"],
problemmodifyId: String,
},
},
dicts: [],
data() { data() {
return { return {
vOpen: false,
option: {},
// //
queryParams: { queryParams: {
mainId: null, mainId: null,
}, },
// //
loading: true, vLoading: true,
// //
flowRecordList: [], flowRecordList: [],
//label //label
labelStyle: { width: "200px" }, labelStyle: { width: "200px" },
showViewer: false, showViewer: false,
srcList: [], previewList: [],
dataInfo: {
smarkUrl:"",
},
active: 100,
}; };
}, },
computed: {}, computed: {},
watch: { watch: {},
formData: {
handler(value) {
this.formData = value;
},
immediate: true,
},
},
created() {}, created() {},
mounted() {}, mounted() {},
beforeDestroy() {}, beforeDestroy() {},
methods: { methods: {
onPreview(url) { getImageUrl(url) {
this.srcList = []; return process.env.VUE_APP_BASE_API + url + ".min.jpg";
this.srcList.push(url); },
onPreview(urls) {
this.previewList = [];
urls.split(",").forEach((item) => {
this.previewList.push(process.env.VUE_APP_BASE_API + item);
});
this.showViewer = true; this.showViewer = true;
}, },
getProcess(i, v) { getProcess(i, v) {
@ -155,21 +232,97 @@ export default {
return "#2bc418"; return "#2bc418";
} }
}, },
onOpen() { show(options) {
this.option = options;
this.initDataInfo();
this.getAuditinfoList(); this.getAuditinfoList();
this.vOpen = true;
},
initDataInfo() {
this.vLoading = true;
getSspProblemmodify(this.option.id).then((res) => {
if (res.data.checkState == 0) {
this.active = 1;
} else if (res.data.checkState == 1) {
this.active = 2;
} else if (res.data.checkState == 3) {
this.active = 1;
}
this.dataInfo = res.data;
this.vLoading = false;
});
}, },
onClose() {},
/** 查询项目人员列表 */ /** 查询项目人员列表 */
getAuditinfoList() { getAuditinfoList() {
if (this.formData.problemmodifyId) { this.queryParams.mainId = this.option.id;
this.loading = true; auditinfoList(this.queryParams).then((response) => {
this.queryParams.mainId = this.formData.problemmodifyId; this.flowRecordList = response.rows;
auditinfoList(this.queryParams).then((response) => { });
this.flowRecordList = response.rows;
this.loading = false;
});
}
}, },
}, },
}; };
</script> </script>
<style scope>
.el-alert {
display: flex !important;
}
.el-alert--info.is-light {
background: cornflowerblue !important;
color: #ffffff !important;
}
.el-alert--info .el-alert__description {
color: #ffffff !important;
}
.el-steps--simple {
padding: 5px 5px !important;
}
.el-timeline-item {
padding-bottom: 0px !important;
}
.el-timeline {
padding-left: 5px !important;
padding-top: 20px !important;
}
.el-timeline-item__wrapper {
padding-left: 15px !important;
}
.el-timeline-item__content {
font-weight: 900;
}
.el-form-item {
margin-bottom: 15px !important;
}
.el-step.is-simple .el-step__title{
font-size:13px !important;
}
.el-card{
margin-left: -15px !important;
}
</style>
<style lang="scss">
.ssp-container-index-drawer {
.drawer {
width: 100%;
height: 100%;
padding-left: 20px;
padding-right: 20px;
padding-bottom: 20px;
.drawerLeft {
width: 55%;
min-width: 280px;
height: 100%;
float: left;
border-right: 1px solid #dcdfe6;
overflow-y: scroll;
padding-right: 20px;
}
.drawerRight {
width: 45%;
min-width: 400px;
height: 100%;
float: left;
padding-left: 20px;
}
}
}
</style>

View File

@ -124,7 +124,19 @@ public class SmzSspProblemmodifyController extends BaseController
@GetMapping(value = "/{id}") @GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) public AjaxResult getInfo(@PathVariable("id") Long id)
{ {
return success(smzSspProblemmodifyService.selectSmzSspProblemmodifyById(id)); return success(smzSspProblemmodifyService.selectSmzSspProblemmodifyInfoById(id));
}
/**
*
* @param smzSspAuditinfo
* @return
*/
@PreAuthorize("@ss.hasPermi('trouble:sspProblemmodify:edit')")
@Log(title = "提交问题整改", businessType = BusinessType.UPDATE)
@PostMapping("/modifyProblem")
public AjaxResult modifyProblem(@RequestBody SmzSspAuditinfo smzSspAuditinfo){
return success(smzSspAuditinfoService.insertSmzSspAuditinfo(smzSspAuditinfo));
} }
/** /**