From 91ccfa3ebdc7a68b6f632c3e59757ec03b15ac1f Mon Sep 17 00:00:00 2001 From: Your Name <123456> Date: 星期五, 02 九月 2022 15:15:01 +0800 Subject: [PATCH] lct --- src/views/specialWorkManage/workTicket/myJobApply/components/plateLog.vue | 9 src/views/specialWorkManage/workTicket/myJobApply/components/groundLog.vue | 6 src/views/specialWorkManage/workTicket/myApproval/components/heightLog.vue | 121 ++ src/views/specialWorkManage/workTicket/myJobApply/components/brokenLog.vue | 6 src/views/specialWorkManage/workTicket/myApproval/index.vue | 691 ++++++++++++++ src/api/workApproval.js | 54 + src/views/specialWorkManage/workTicket/myApproval/components/groundLog.vue | 124 ++ src/views/specialWorkManage/workTicket/myJobApply/components/spaceLog.vue | 2 src/views/specialWorkManage/workTicket/myApproval/components/powerLog.vue | 124 ++ src/views/specialWorkManage/workTicket/workApply/components/ground.vue | 273 +++- src/views/specialWorkManage/workTicket/workApply/index.vue | 4 src/views/specialWorkManage/workTicket/workApply/components/hoist.vue | 114 + src/views/specialWorkManage/workTicket/myApproval/components/hoistLog.vue | 129 ++ src/views/specialWorkManage/workTicket/myApproval/components/plateLog.vue | 143 ++ src/views/specialWorkManage/workTicket/myJobApply/components/heightLog.vue | 4 src/views/specialWorkManage/workTicket/workApply/components/plate.vue | 191 +++ src/views/specialWorkManage/workTicket/workApply/components/space.vue | 130 +- src/views/specialWorkManage/workTicket/myApproval/components/spaceLog.vue | 125 ++ src/views/specialWorkManage/workTicket/workApply/components/power.vue | 104 + src/views/specialWorkManage/workTicket/myApproval/components/brokenLog.vue | 124 ++ src/views/specialWorkManage/workTicket/workApply/components/fire.vue | 2 src/views/specialWorkManage/workTicket/workApply/components/broken.vue | 242 +++- src/views/specialWorkManage/workTicket/myApproval/components/fireLog.vue | 112 ++ src/views/specialWorkManage/workTicket/myJobApply/index.vue | 44 24 files changed, 2,509 insertions(+), 369 deletions(-) diff --git a/src/api/workApproval.js b/src/api/workApproval.js new file mode 100644 index 0000000..fb99853 --- /dev/null +++ b/src/api/workApproval.js @@ -0,0 +1,54 @@ +import { getToken } from '../utils/auth' +import request from '@/utils/request' + +export function workApprovalApi() { + return { + // 分页获取审批列表 + getApprovalListPage: (data) => { + return request({ + headers: { + 'Authorization': getToken() + }, + url: process.env.BASE_API + `/work/apply/pending/page/list`, + method: 'post', + data: data + }); + }, + + // 获取当前层级审批数据 + getApprovalData: (data) => { + return request({ + headers: { + 'Authorization': getToken() + }, + url: process.env.BASE_API + `/work/approval/pending/data`, + method: 'post', + data: data + }); + }, + + // 获取当前层级审批进度 + getApprovalStatus: (data) => { + return request({ + headers: { + 'Authorization': getToken() + }, + url: process.env.BASE_API + `/work/apply/approver/approved/view`, + method: 'post', + data: data + }); + }, + + // 终止当前审批进度 + postAbord: (data) => { + return request({ + headers: { + 'Authorization': getToken() + }, + url: process.env.BASE_API + `/work/apply/abord`, + method: 'post', + data: data + }); + } + }; +} diff --git a/src/views/specialWorkManage/workTicket/myApproval/components/brokenLog.vue b/src/views/specialWorkManage/workTicket/myApproval/components/brokenLog.vue new file mode 100644 index 0000000..99bc6d7 --- /dev/null +++ b/src/views/specialWorkManage/workTicket/myApproval/components/brokenLog.vue @@ -0,0 +1,124 @@ +<template> + <div style="height: 100%"> + <el-form :model="details" label-width="150px"> + <el-form-item label="作业申请单号"> + <el-input v-model="details.workPermitNo" readonly /> + </el-form-item> + <el-form-item label="申请人"> + <el-input v-model="details.applyUname" readonly /> + </el-form-item> + <el-form-item label="部门名称"> + <el-input v-model="details.depName" readonly /> + </el-form-item> + <el-form-item label="作业人"> + <el-input v-model="details.operators" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业类型"> + <el-input v-model="details.workTypeDesc" readonly /> + </el-form-item> + <el-form-item label="作业等级"> + <el-input v-model="details.workLevelDesc" readonly /> + </el-form-item> + <el-form-item label="作业内容"> + <el-input v-model="details.workContent" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业地址"> + <el-input v-model="details.workLocation" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业单位ID"> + <el-input v-model="details.workDetail.operationDepId" readonly type="textarea" /> + </el-form-item> + <el-form-item label="断路原因"> + <el-input v-model="details.workDetail.bcReason" readonly type="textarea" /> + </el-form-item> + <el-form-item label="断路地段说明"> + <el-input v-model="details.workDetail.bcExplain" readonly type="textarea" /> + </el-form-item> + <el-form-item label="涉及相关部门"> + <el-input v-model="details.workDetail.involvedDepIds" readonly type="textarea"/> + </el-form-item> + <el-form-item label="期望开始时间"> + <el-input v-model="details.expStartTime" readonly /> + </el-form-item> + <el-form-item label="期望结束时间"> + <el-input v-model="details.expEndTime" readonly /> + </el-form-item> + <el-form-item label="申请时间"> + <el-input v-model="details.applyTime" readonly /> + </el-form-item> +<!-- <el-form-item label="当前层级">--> +<!-- <el-input v-model="details.stepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="上一层级">--> +<!-- <el-input v-model="details.preStepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="下一层级">--> +<!-- <el-input v-model="details.nextStepId" readonly />--> +<!-- </el-form-item>--> + <el-form-item label="层级审批类型"> + <el-input v-model="details.stepTypeDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> + <el-input v-model="details.stepSerial" readonly /> + </el-form-item> + <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> + <el-input v-model="details.stepStartApprovalTime" readonly /> + </el-form-item> + <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> + <el-input v-model="details.stepFinishApprovalTime" readonly /> + </el-form-item> + <el-form-item label="审批人姓名"> + <el-input v-model="details.unitApprovalUname" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> + <el-input v-model="details.unitApprovalStartTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> + <el-input v-model="details.unitApprovalEndTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> + <el-input v-model="details.unitResultDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> + <el-input v-model="details.statusDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> + <el-input v-model="details.stepApprovalResultDesc" readonly /> + </el-form-item> + </el-form> + </div> +</template> + +<script> + export default{ + name: 'space', + components: {}, + props:['details'], + }; +</script> + +<style scoped lang="scss"> + .home-container { + height: 100%; + overflow: hidden; + position: relative; + .el-row{ + margin-bottom: 20px; + } + .el-row:last-child { + margin-bottom: 0; + } + .el-input{ + width: 100% !important; + } + .el-date-editor::v-deep{ + width: 100%; + } + .el-select{ + width: 100%; + } + .el-cascader{ + width: 100% !important; + } + } +</style> diff --git a/src/views/specialWorkManage/workTicket/myApproval/components/fireLog.vue b/src/views/specialWorkManage/workTicket/myApproval/components/fireLog.vue new file mode 100644 index 0000000..f8f1ac9 --- /dev/null +++ b/src/views/specialWorkManage/workTicket/myApproval/components/fireLog.vue @@ -0,0 +1,112 @@ +<template> + <div style="height: 100%"> + <el-form :model="details" label-width="150px"> + <el-form-item label="作业申请单号"> + <el-input v-model="details.workPermitNo" readonly /> + </el-form-item> + <el-form-item label="申请人"> + <el-input v-model="details.applyUname" readonly /> + </el-form-item> + <el-form-item label="部门名称"> + <el-input v-model="details.depName" readonly /> + </el-form-item> + <el-form-item label="作业人"> + <el-input v-model="details.operators" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业类型"> + <el-input v-model="details.workTypeDesc" readonly /> + </el-form-item> + <el-form-item label="作业等级"> + <el-input v-model="details.workLevelDesc" readonly /> + </el-form-item> + <el-form-item label="作业内容"> + <el-input v-model="details.workContent" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业地址"> + <el-input v-model="details.workLocation" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业方式"> + <el-input v-model="details.workDetail.hotMethod" readonly type="textarea" /> + </el-form-item> + <el-form-item label="关联其他作业"> + <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea" /> + </el-form-item> + <el-form-item label="申请时间"> + <el-input v-model="details.applyTime" readonly /> + </el-form-item> +<!-- <el-form-item label="当前层级">--> +<!-- <el-input v-model="details.stepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="上一层级">--> +<!-- <el-input v-model="details.preStepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="下一层级">--> +<!-- <el-input v-model="details.nextStepId" readonly />--> +<!-- </el-form-item>--> + <el-form-item label="层级审批类型"> + <el-input v-model="details.stepTypeDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> + <el-input v-model="details.stepSerial" readonly /> + </el-form-item> + <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> + <el-input v-model="details.stepStartApprovalTime" readonly /> + </el-form-item> + <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> + <el-input v-model="details.stepFinishApprovalTime" readonly /> + </el-form-item> + <el-form-item label="审批人姓名"> + <el-input v-model="details.unitApprovalUname" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> + <el-input v-model="details.unitApprovalStartTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> + <el-input v-model="details.unitApprovalEndTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> + <el-input v-model="details.unitResultDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> + <el-input v-model="details.statusDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> + <el-input v-model="details.stepApprovalResultDesc" readonly /> + </el-form-item> + </el-form> + </div> +</template> + +<script> + export default{ + name: 'fire', + components: {}, + props:['details'], + }; +</script> + +<style scoped lang="scss"> + .home-container { + height: 100%; + overflow: hidden; + position: relative; + .el-row{ + margin-bottom: 20px; + } + .el-row:last-child { + margin-bottom: 0; + } + .el-input{ + width: 100% !important; + } + .el-date-editor::v-deep{ + width: 100%; + } + .el-select{ + width: 100%; + } + .el-cascader{ + width: 100% !important; + } + } +</style> diff --git a/src/views/specialWorkManage/workTicket/myApproval/components/groundLog.vue b/src/views/specialWorkManage/workTicket/myApproval/components/groundLog.vue new file mode 100644 index 0000000..204fca2 --- /dev/null +++ b/src/views/specialWorkManage/workTicket/myApproval/components/groundLog.vue @@ -0,0 +1,124 @@ +<template> + <div style="height: 100%"> + <el-form :model="details" label-width="150px"> + <el-form-item label="作业申请单号"> + <el-input v-model="details.workPermitNo" readonly /> + </el-form-item> + <el-form-item label="申请人"> + <el-input v-model="details.applyUname" readonly /> + </el-form-item> + <el-form-item label="部门名称"> + <el-input v-model="details.depName" readonly /> + </el-form-item> + <el-form-item label="作业人"> + <el-input v-model="details.operators" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业类型"> + <el-input v-model="details.workTypeDesc" readonly /> + </el-form-item> + <el-form-item label="作业等级"> + <el-input v-model="details.workLevelDesc" readonly /> + </el-form-item> + <el-form-item label="作业内容"> + <el-input v-model="details.workContent" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业地址"> + <el-input v-model="details.workLocation" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业单位ID"> + <el-input v-model="details.workDetail.operationDepId" readonly type="textarea" /> + </el-form-item> + <el-form-item label="范围"> + <el-input v-model="details.workDetail.gbScope" readonly type="textarea" /> + </el-form-item> + <el-form-item label="动土方式"> + <el-input v-model="details.workDetail.gbMethod" readonly type="textarea" /> + </el-form-item> + <el-form-item label="关联其他作业"> + <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> + </el-form-item> + <el-form-item label="期望开始时间"> + <el-input v-model="details.expStartTime" readonly /> + </el-form-item> + <el-form-item label="期望结束时间"> + <el-input v-model="details.expEndTime" readonly /> + </el-form-item> + <el-form-item label="申请时间"> + <el-input v-model="details.applyTime" readonly /> + </el-form-item> +<!-- <el-form-item label="当前层级">--> +<!-- <el-input v-model="details.stepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="上一层级">--> +<!-- <el-input v-model="details.preStepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="下一层级">--> +<!-- <el-input v-model="details.nextStepId" readonly />--> +<!-- </el-form-item>--> + <el-form-item label="层级审批类型"> + <el-input v-model="details.stepTypeDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> + <el-input v-model="details.stepSerial" readonly /> + </el-form-item> + <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> + <el-input v-model="details.stepStartApprovalTime" readonly /> + </el-form-item> + <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> + <el-input v-model="details.stepFinishApprovalTime" readonly /> + </el-form-item> + <el-form-item label="审批人姓名"> + <el-input v-model="details.unitApprovalUname" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> + <el-input v-model="details.unitApprovalStartTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> + <el-input v-model="details.unitApprovalEndTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> + <el-input v-model="details.unitResultDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> + <el-input v-model="details.statusDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> + <el-input v-model="details.stepApprovalResultDesc" readonly /> + </el-form-item> + </el-form> + </div> +</template> + +<script> + export default{ + name: 'space', + components: {}, + props:['details'], + }; +</script> + +<style scoped lang="scss"> + .home-container { + height: 100%; + overflow: hidden; + position: relative; + .el-row{ + margin-bottom: 20px; + } + .el-row:last-child { + margin-bottom: 0; + } + .el-input{ + width: 100% !important; + } + .el-date-editor::v-deep{ + width: 100%; + } + .el-select{ + width: 100%; + } + .el-cascader{ + width: 100% !important; + } + } +</style> diff --git a/src/views/specialWorkManage/workTicket/myApproval/components/heightLog.vue b/src/views/specialWorkManage/workTicket/myApproval/components/heightLog.vue new file mode 100644 index 0000000..e851d49 --- /dev/null +++ b/src/views/specialWorkManage/workTicket/myApproval/components/heightLog.vue @@ -0,0 +1,121 @@ +<template> + <div style="height: 100%"> + <el-form :model="details" label-width="150px"> + <el-form-item label="作业申请单号"> + <el-input v-model="details.workPermitNo" readonly /> + </el-form-item> + <el-form-item label="申请人"> + <el-input v-model="details.applyUname" readonly /> + </el-form-item> + <el-form-item label="部门名称"> + <el-input v-model="details.depName" readonly /> + </el-form-item> + <el-form-item label="作业人"> + <el-input v-model="details.operators" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业类型"> + <el-input v-model="details.workTypeDesc" readonly /> + </el-form-item> + <el-form-item label="作业等级"> + <el-input v-model="details.workLevelDesc" readonly /> + </el-form-item> + <el-form-item label="作业内容"> + <el-input v-model="details.workContent" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业地址"> + <el-input v-model="details.workLocation" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业单位ID"> + <el-input v-model="details.workDetail.operationDepId" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业高度"> + <el-input v-model="details.workDetail.operationHeight" readonly type="textarea"><template #append>米(m)</template></el-input> + </el-form-item> + <el-form-item label="关联其他作业"> + <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> + </el-form-item> + <el-form-item label="期望开始时间"> + <el-input v-model="details.expStartTime" readonly /> + </el-form-item> + <el-form-item label="期望结束时间"> + <el-input v-model="details.expEndTime" readonly /> + </el-form-item> + <el-form-item label="申请时间"> + <el-input v-model="details.applyTime" readonly /> + </el-form-item> +<!-- <el-form-item label="当前层级">--> +<!-- <el-input v-model="details.stepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="上一层级">--> +<!-- <el-input v-model="details.preStepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="下一层级">--> +<!-- <el-input v-model="details.nextStepId" readonly />--> +<!-- </el-form-item>--> + <el-form-item label="层级审批类型"> + <el-input v-model="details.stepTypeDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> + <el-input v-model="details.stepSerial" readonly /> + </el-form-item> + <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> + <el-input v-model="details.stepStartApprovalTime" readonly /> + </el-form-item> + <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> + <el-input v-model="details.stepFinishApprovalTime" readonly /> + </el-form-item> + <el-form-item label="审批人姓名"> + <el-input v-model="details.unitApprovalUname" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> + <el-input v-model="details.unitApprovalStartTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> + <el-input v-model="details.unitApprovalEndTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> + <el-input v-model="details.unitResultDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> + <el-input v-model="details.statusDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> + <el-input v-model="details.stepApprovalResultDesc" readonly /> + </el-form-item> + </el-form> + </div> +</template> + +<script> + export default{ + name: 'space', + components: {}, + props:['details'], + }; +</script> + +<style scoped lang="scss"> + .home-container { + height: 100%; + overflow: hidden; + position: relative; + .el-row{ + margin-bottom: 20px; + } + .el-row:last-child { + margin-bottom: 0; + } + .el-input{ + width: 100% !important; + } + .el-date-editor::v-deep{ + width: 100%; + } + .el-select{ + width: 100%; + } + .el-cascader{ + width: 100% !important; + } + } +</style> diff --git a/src/views/specialWorkManage/workTicket/myApproval/components/hoistLog.vue b/src/views/specialWorkManage/workTicket/myApproval/components/hoistLog.vue new file mode 100644 index 0000000..637990b --- /dev/null +++ b/src/views/specialWorkManage/workTicket/myApproval/components/hoistLog.vue @@ -0,0 +1,129 @@ +<template> + <div style="height: 100%"> + <el-form :model="details" label-width="150px"> + <el-form-item label="作业申请单号"> + <el-input v-model="details.workPermitNo" readonly /> + </el-form-item> + <el-form-item label="申请人"> + <el-input v-model="details.applyUname" readonly /> + </el-form-item> + <el-form-item label="部门名称"> + <el-input v-model="details.depName" readonly /> + </el-form-item> + <el-form-item label="作业人"> + <el-input v-model="details.operators" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业类型"> + <el-input v-model="details.workTypeDesc" readonly /> + </el-form-item> + <el-form-item label="作业等级"> + <el-input v-model="details.workLevelDesc" readonly /> + </el-form-item> + <el-form-item label="作业内容"> + <el-input v-model="details.workContent" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业地址"> + <el-input v-model="details.workLocation" readonly type="textarea" /> + </el-form-item> + <el-form-item label="吊装工具名称"> + <el-input v-model="details.workDetail.hoistingToolName" readonly type="textarea" /> + </el-form-item> + <el-form-item label="起吊物体重量"> + <el-input v-model="details.workDetail.weightMass" readonly type="textarea"><template #append>吨(t)</template></el-input> + </el-form-item> + <el-form-item label="关联其他作业"> + <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> + </el-form-item> + <el-form-item label="期望开始时间"> + <el-input v-model="details.expStartTime" readonly /> + </el-form-item> + <el-form-item label="期望结束时间"> + <el-input v-model="details.expEndTime" readonly /> + </el-form-item> + <el-form-item label="申请时间"> + <el-input v-model="details.applyTime" readonly /> + </el-form-item> +<!-- <el-form-item label="当前层级">--> +<!-- <el-input v-model="details.stepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="上一层级">--> +<!-- <el-input v-model="details.preStepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="下一层级">--> +<!-- <el-input v-model="details.nextStepId" readonly />--> +<!-- </el-form-item>--> + <el-form-item label="层级审批类型"> + <el-input v-model="details.stepTypeDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> + <el-input v-model="details.stepSerial" readonly /> + </el-form-item> + <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> + <el-input v-model="details.stepStartApprovalTime" readonly /> + </el-form-item> + <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> + <el-input v-model="details.stepFinishApprovalTime" readonly /> + </el-form-item> + <el-form-item label="审批人姓名"> + <el-input v-model="details.unitApprovalUname" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> + <el-input v-model="details.unitApprovalStartTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> + <el-input v-model="details.unitApprovalEndTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> + <el-input v-model="details.unitResultDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> + <el-input v-model="details.statusDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> + <el-input v-model="details.stepApprovalResultDesc" readonly /> + </el-form-item> + </el-form> + </div> +</template> + +<script> + + export default{ + name: 'space', + components: {}, + props:['details'], + setup() { + const userInfo = useUserInfo() + const { userInfos } = storeToRefs(userInfo); + return { + Search + }; + }, + }; +</script> + +<style scoped lang="scss"> + .home-container { + height: 100%; + overflow: hidden; + position: relative; + .el-row{ + margin-bottom: 20px; + } + .el-row:last-child { + margin-bottom: 0; + } + .el-input{ + width: 100% !important; + } + .el-date-editor::v-deep{ + width: 100%; + } + .el-select{ + width: 100%; + } + .el-cascader{ + width: 100% !important; + } + } +</style> diff --git a/src/views/specialWorkManage/workTicket/myApproval/components/plateLog.vue b/src/views/specialWorkManage/workTicket/myApproval/components/plateLog.vue new file mode 100644 index 0000000..a640cbe --- /dev/null +++ b/src/views/specialWorkManage/workTicket/myApproval/components/plateLog.vue @@ -0,0 +1,143 @@ +<template> + <div style="height: 100%"> + <el-form :model="details" label-width="150px"> + <el-form-item label="作业申请单号"> + <el-input v-model="details.workPermitNo" readonly /> + </el-form-item> + <el-form-item label="申请人"> + <el-input v-model="details.applyUname" readonly /> + </el-form-item> + <el-form-item label="部门名称"> + <el-input v-model="details.depName" readonly /> + </el-form-item> + <el-form-item label="作业人"> + <el-input v-model="details.operators" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业类型"> + <el-input v-model="details.workTypeDesc" readonly /> + </el-form-item> + <el-form-item label="作业等级"> + <el-input v-model="details.workLevelDesc" readonly /> + </el-form-item> + <el-form-item label="作业内容"> + <el-input v-model="details.workContent" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业地址"> + <el-input v-model="details.workLocation" readonly type="textarea" /> + </el-form-item> + <el-form-item label="盲板编号"> + <el-input v-model="details.workDetail.bpCode" readonly type="textarea" /> + </el-form-item> + <el-form-item label="主要介质"> + <el-input v-model="details.workDetail.mainMedia" readonly type="textarea" /> + </el-form-item> + <el-form-item label="温度"> + <el-input v-model="details.workDetail.temperature" readonly type="textarea"><template #append>摄氏度(℃)</template></el-input> + </el-form-item> + <el-form-item label="压力"> + <el-input v-model="details.workDetail.pressure" readonly type="textarea"><template #append>千帕(kPa)</template></el-input> + </el-form-item> + <el-form-item label="盲板材质"> + <el-input v-model="details.workDetail.bpMaterialQuality" readonly type="textarea"/> + </el-form-item> + <el-form-item label="盲板规格"> + <el-input v-model="details.workDetail.bpSpecification" readonly type="textarea"/> + </el-form-item> + <el-form-item label="盲板位置"> + <el-input v-model="details.workDetail.bpLocation" readonly type="textarea"/> + </el-form-item> + <el-form-item label="装盲板时间"> + <el-input v-model="details.workDetail.installBpTime" readonly/> + </el-form-item> + <el-form-item label="拆盲板时间"> + <el-input v-model="details.workDetail.uninstallBpTime" readonly/> + </el-form-item> + <el-form-item label="关联其他作业"> + <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> + </el-form-item> + <el-form-item label="期望开始时间"> + <el-input v-model="details.expStartTime" readonly /> + </el-form-item> + <el-form-item label="期望结束时间"> + <el-input v-model="details.expEndTime" readonly /> + </el-form-item> + <el-form-item label="申请时间"> + <el-input v-model="details.applyTime" readonly /> + </el-form-item> +<!-- <el-form-item label="当前层级">--> +<!-- <el-input v-model="details.stepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="上一层级">--> +<!-- <el-input v-model="details.preStepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="下一层级">--> +<!-- <el-input v-model="details.nextStepId" readonly />--> +<!-- </el-form-item>--> + <el-form-item label="层级审批类型"> + <el-input v-model="details.stepTypeDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> + <el-input v-model="details.stepSerial" readonly /> + </el-form-item> + <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> + <el-input v-model="details.stepStartApprovalTime" readonly /> + </el-form-item> + <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> + <el-input v-model="details.stepFinishApprovalTime" readonly /> + </el-form-item> + <el-form-item label="审批人姓名"> + <el-input v-model="details.unitApprovalUname" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> + <el-input v-model="details.unitApprovalStartTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> + <el-input v-model="details.unitApprovalEndTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> + <el-input v-model="details.unitResultDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> + <el-input v-model="details.statusDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> + <el-input v-model="details.stepApprovalResultDesc" readonly /> + </el-form-item> + </el-form> + </div> +</template> + +<script> + export default{ + name: 'space', + components: {}, + props:['details'], + + }; +</script> + +<style scoped lang="scss"> + .home-container { + height: 100%; + overflow: hidden; + position: relative; + .el-row{ + margin-bottom: 20px; + } + .el-row:last-child { + margin-bottom: 0; + } + .el-input{ + width: 100% !important; + } + .el-date-editor::v-deep{ + width: 100%; + } + .el-select{ + width: 100%; + } + .el-cascader{ + width: 100% !important; + } + } +</style> diff --git a/src/views/specialWorkManage/workTicket/myApproval/components/powerLog.vue b/src/views/specialWorkManage/workTicket/myApproval/components/powerLog.vue new file mode 100644 index 0000000..c92fcbb --- /dev/null +++ b/src/views/specialWorkManage/workTicket/myApproval/components/powerLog.vue @@ -0,0 +1,124 @@ +<template> + <div style="height: 100%"> + <el-form :model="details" label-width="150px"> + <el-form-item label="作业申请单号"> + <el-input v-model="details.workPermitNo" readonly /> + </el-form-item> + <el-form-item label="申请人"> + <el-input v-model="details.applyUname" readonly /> + </el-form-item> + <el-form-item label="部门名称"> + <el-input v-model="details.depName" readonly /> + </el-form-item> + <el-form-item label="作业人"> + <el-input v-model="details.operators" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业类型"> + <el-input v-model="details.workTypeDesc" readonly /> + </el-form-item> + <el-form-item label="作业等级"> + <el-input v-model="details.workLevelDesc" readonly /> + </el-form-item> + <el-form-item label="作业内容"> + <el-input v-model="details.workContent" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业地址"> + <el-input v-model="details.workLocation" readonly type="textarea" /> + </el-form-item> + <el-form-item label="电源接入点"> + <el-input v-model="details.workDetail.powerAccessPoint" readonly type="textarea" /> + </el-form-item> + <el-form-item label="工作电压"> + <el-input v-model="details.workDetail.workingVoltage" readonly type="textarea"><template #append>伏特(v)</template></el-input> + </el-form-item> + <el-form-item label="用电设备及功率"> + <el-input v-model="details.workDetail.equipmentAndPower" readonly type="textarea" /> + </el-form-item> + <el-form-item label="关联其他作业"> + <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> + </el-form-item> + <el-form-item label="期望开始时间"> + <el-input v-model="details.expStartTime" readonly /> + </el-form-item> + <el-form-item label="期望结束时间"> + <el-input v-model="details.expEndTime" readonly /> + </el-form-item> + <el-form-item label="申请时间"> + <el-input v-model="details.applyTime" readonly /> + </el-form-item> +<!-- <el-form-item label="当前层级">--> +<!-- <el-input v-model="details.stepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="上一层级">--> +<!-- <el-input v-model="details.preStepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="下一层级">--> +<!-- <el-input v-model="details.nextStepId" readonly />--> +<!-- </el-form-item>--> + <el-form-item label="层级审批类型"> + <el-input v-model="details.stepTypeDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> + <el-input v-model="details.stepSerial" readonly /> + </el-form-item> + <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> + <el-input v-model="details.stepStartApprovalTime" readonly /> + </el-form-item> + <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> + <el-input v-model="details.stepFinishApprovalTime" readonly /> + </el-form-item> + <el-form-item label="审批人姓名"> + <el-input v-model="details.unitApprovalUname" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> + <el-input v-model="details.unitApprovalStartTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> + <el-input v-model="details.unitApprovalEndTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> + <el-input v-model="details.unitResultDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> + <el-input v-model="details.statusDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> + <el-input v-model="details.stepApprovalResultDesc" readonly /> + </el-form-item> + </el-form> + </div> +</template> + +<script> + export default{ + name: 'space', + components: {}, + props:['details'], + }; +</script> + +<style scoped lang="scss"> + .home-container { + height: 100%; + overflow: hidden; + position: relative; + .el-row{ + margin-bottom: 20px; + } + .el-row:last-child { + margin-bottom: 0; + } + .el-input{ + width: 100% !important; + } + .el-date-editor::v-deep{ + width: 100%; + } + .el-select{ + width: 100%; + } + .el-cascader{ + width: 100% !important; + } + } +</style> diff --git a/src/views/specialWorkManage/workTicket/myApproval/components/spaceLog.vue b/src/views/specialWorkManage/workTicket/myApproval/components/spaceLog.vue new file mode 100644 index 0000000..7bb19e6 --- /dev/null +++ b/src/views/specialWorkManage/workTicket/myApproval/components/spaceLog.vue @@ -0,0 +1,125 @@ +<template> + <div style="height: 100%"> + <el-form :model="details" label-width="150px"> + <el-form-item label="作业申请单号"> + <el-input v-model="details.workPermitNo" readonly /> + </el-form-item> + <el-form-item label="申请人"> + <el-input v-model="details.applyUname" readonly /> + </el-form-item> + <el-form-item label="部门名称"> + <el-input v-model="details.depName" readonly /> + </el-form-item> + <el-form-item label="作业人"> + <el-input v-model="details.operators" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业类型"> + <el-input v-model="details.workTypeDesc" readonly /> + </el-form-item> + <el-form-item label="作业等级"> + <el-input v-model="details.workLevelDesc" readonly /> + </el-form-item> + <el-form-item label="作业内容"> + <el-input v-model="details.workContent" readonly type="textarea" /> + </el-form-item> + <el-form-item label="作业地址"> + <el-input v-model="details.workLocation" readonly type="textarea" /> + </el-form-item> + <el-form-item label="受限空间所属单位ID"> + <el-input v-model="details.workDetail.csDepId" readonly type="textarea" /> + </el-form-item> + <el-form-item label="受限空间名称"> + <el-input v-model="details.workDetail.csName" readonly type="textarea" /> + </el-form-item> + <el-form-item label="空间原有介质名称"> + <el-input v-model="details.workDetail.csOriginalName" readonly type="textarea" /> + </el-form-item> + <el-form-item label="关联其他作业"> + <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea" /> + </el-form-item> + <el-form-item label="期望开始时间"> + <el-input v-model="details.expStartTime" readonly /> + </el-form-item> + <el-form-item label="期望结束时间"> + <el-input v-model="details.expEndTime" readonly /> + </el-form-item> + <el-form-item label="申请时间"> + <el-input v-model="details.applyTime" readonly /> + </el-form-item> +<!-- <el-form-item label="当前层级">--> +<!-- <el-input v-model="details.stepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="上一层级">--> +<!-- <el-input v-model="details.preStepId" readonly />--> +<!-- </el-form-item>--> +<!-- <el-form-item label="下一层级">--> +<!-- <el-input v-model="details.nextStepId" readonly />--> +<!-- </el-form-item>--> + <el-form-item label="层级审批类型"> + <el-input v-model="details.stepTypeDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> + <el-input v-model="details.stepSerial" readonly /> + </el-form-item> + <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> + <el-input v-model="details.stepStartApprovalTime" readonly /> + </el-form-item> + <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> + <el-input v-model="details.stepFinishApprovalTime" readonly /> + </el-form-item> + <el-form-item label="审批人姓名"> + <el-input v-model="details.unitApprovalUname" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> + <el-input v-model="details.unitApprovalStartTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> + <el-input v-model="details.unitApprovalEndTime" readonly /> + </el-form-item> + <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> + <el-input v-model="details.unitResultDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> + <el-input v-model="details.statusDesc" readonly /> + </el-form-item> + <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> + <el-input v-model="details.stepApprovalResultDesc" readonly /> + </el-form-item> + </el-form> + </div> +</template> + +<script> + export default{ + name: 'space', + components: {}, + props:['details'], + + }; +</script> + +<style scoped lang="scss"> + .home-container { + height: 100%; + overflow: hidden; + position: relative; + .el-row{ + margin-bottom: 20px; + } + .el-row:last-child { + margin-bottom: 0; + } + .el-input{ + width: 100% !important; + } + .el-date-editor::v-deep{ + width: 100%; + } + .el-select{ + width: 100%; + } + .el-cascader{ + width: 100% !important; + } + } +</style> diff --git a/src/views/specialWorkManage/workTicket/myApproval/index.vue b/src/views/specialWorkManage/workTicket/myApproval/index.vue index 34cd1a0..2c3510c 100644 --- a/src/views/specialWorkManage/workTicket/myApproval/index.vue +++ b/src/views/specialWorkManage/workTicket/myApproval/index.vue @@ -1,13 +1,694 @@ <template> - + <div class="home-container"> +<!-- <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">--> +<!-- <el-tab-pane label="申请中" name="1">--> + <div style="height: 100%"> + <el-row class="homeCard"> + <span>作业类型:</span> + <el-col :span="10"> + <div class="grid-content topInfo"> + <el-select v-model="searchWord"> + <el-option + v-for="item in workType" + :key="item.id" + :label="item.name" + :value="item.id" + /> + </el-select> + <el-button type="primary" @click="searchRecord">查询</el-button> + <el-button plain @click="clearSearch">重置</el-button> + </div> + </el-col> + </el-row> + <div class="homeCard"> + <div class="main-card"> + <el-row class="cardTop"> + <el-col :span="12" class="mainCardBtn"> +<!-- <el-button type="primary" :icon="Plus" size="default" @click="toApply()">申请</el-button>--> + <!-- <el-button type="danger" :icon="Delete" size="default">删除</el-button>--> + <!-- <el-button type="success" size="default">设置分类</el-button>--> + </el-col> +<!-- <el-button type="primary" @click="reLoadData()" />--> + </el-row> + <el-table ref="multipleTableRef" :data="applyData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }"> + <el-table-column property="applyUname" label="申请人" /> + <el-table-column property="depName" label="部门名称" /> + <el-table-column property="operators" label="作业人" /> + <el-table-column property="workTypeDesc" label="作业类型" /> + <el-table-column property="workLevelDesc" label="作业等级" /> + <el-table-column property="applyTime" label="申请时间" width="180" /> + <el-table-column label="审批状态" align="center" width="180"> + <template slot-scope="scope"> + <el-tag :type="scope.row.status==2?'success':(scope.row.status==8||scope.row.status==9)?'warning':'danger'">{{ scope.row.statusDesc }}</el-tag> + </template> + </el-table-column> + <el-table-column fixed="right" label="操作" align="center" width="250"> + <template slot-scope="scope"> + <el-button type="text" @click="viewRecord(scope.row)">查看</el-button> + <el-button type="text" @click="viewStatus(scope.row)">进度</el-button> +<!-- <el-button link type="warning" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">终止</el-button>--> + </template> + </el-table-column> + </el-table> + <div class="pageBtn"> + <el-pagination v-model:currentPage="pageIndex1" v-model:page-size="pageSize1" :page-sizes="[10, 15]" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize1" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" /> + </div> + </div> + </div> + </div> + <el-dialog v-model="dialogDetails" title="作业审批详情" center> + <fire v-if="dialogType == 1" :details = details></fire> + <space v-else-if="dialogType == 2" :details = details></space> + <hoist v-else-if="dialogType == 3" :details = details></hoist> + <ground v-else-if="dialogType == 4" :details = details></ground> + <broken v-else-if="dialogType == 5" :details = details></broken> + <height v-else-if="dialogType == 6" :details = details></height> + <power v-else-if="dialogType == 7" :details = details></power> + <plate v-else :details = details></plate> + <template #footer> + <span class="dialog-footer"> + <el-button type="primary" @click="dialogDetails = false" + >确认</el-button + > + </span> + </template> + </el-dialog> + <el-dialog v-model="dialogStatus" title="作业审批进度" center width="60%"> + <el-form v-if="approveInfo.operators.length > 0" style="margin-bottom: 40px"> + <el-form-item label="申请作业人"> + <el-input v-model="approveInfo.operators" readonly type="textarea" /> + </el-form-item> + </el-form> + <div style="display: flex; flex-direction: column-reverse"> + <div v-for="(item, index) in approveInfo.approvalSteps" class="stepItem"> + <div class="stepNum">{{ item.stepSerial }}</div> + <div class="stepCard"> + <el-card class="box-card" shadow="always"> + <div class="text"> + 审批结果:<span>{{ item.approvalResultDesc }}</span> + </div> + <div class="text"> + 审批类型:<span>{{ item.typeDesc }}</span> + </div> + <div class="text" v-show="item.startApprovalTime != null"> + 开始时间:<span>{{ item.startApprovalTime }}</span> + </div> + <div class="approveUnit"> + <div class="item-tit"><span>审批人</span><span>审批状态</span></div> + <div class="item-cont" v-for="i in item.stepUnits"> + <span>{{ i.approvalUname }}</span + ><span>{{ i.resultDesc }}</span> + </div> + </div> + <div class="approveItem"> + <div class="item-tit"> + <span>审批项目</span> +<!-- <span>类型</span>--> + <div>措施标准</div> + </div> + <div class="item-cont" v-for="i in item.stepItems"> + <span>{{ i.itemName }}</span> +<!-- <span>{{ i.typeDesc }}</span>--> + <div v-if="i.measure !== null"> + <div> + <span>作业类型:</span><span>{{ i.measure.workTypeDesc }}</span> + </div> + <div> + <span>措施内容:</span><span>{{ i.measure.context }}</span> + </div> + </div> + <div v-if="i.stand !== null"> + <div> + <span>标题名称:</span><span>{{ i.stand.title }}</span> + </div> + <div> + <span>标准内容:</span><span>{{ i.stand.typeDesc }}</span> + </div> + </div> + </div> + </div> + <div class="text" v-show="item.expFinishApprovalTime != null"> + 期望结束时间:<span>{{ item.expFinishApprovalTime }}</span> + </div> + <div class="text" v-show="item.finishApprovalTime != null"> + 结束时间:<span>{{ item.finishApprovalTime }}</span> + </div> + </el-card> + </div> + </div> + </div> + </el-dialog> + <el-dialog v-model="deleteDialog" title="提示" width="30%" center> + <span>您确定要终止该条审批吗?</span> + <template #footer> + <span class="dialog-footer"> + <el-button @click="deleteDialog = false" size="default">取消</el-button> + <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button> + </span> + </template> + </el-dialog> +<!-- </el-tab-pane>--> +<!-- <el-tab-pane label="已通过" name="2">--> +<!-- <div style="height: 100%">--> +<!-- <el-row class="homeCard">--> +<!-- <el-col :span="8">--> +<!-- <div class="grid-content topInfo">--> +<!-- <el-input v-model="searchWord" placeholder="作业证名称"></el-input>--> +<!-- <el-button type="primary">查询</el-button>--> +<!-- <el-button plain>重置</el-button>--> +<!-- </div>--> +<!-- </el-col>--> +<!-- </el-row>--> +<!-- <div class="homeCard">--> +<!-- <div class="main-card">--> +<!-- <el-table ref="multipleTableRef" :data="passedData" style="width: 100%" height="calc(100% - 48px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">--> +<!-- <el-table-column type="selection" width="55" />--> +<!-- <el-table-column type="index" label="编号" width="200" />--> +<!-- <el-table-column property="level" label="作业证等级" width="180" sortable />--> +<!-- <el-table-column property="applyDate" label="申请日期" sortable />--> +<!-- <el-table-column property="name" label="申请人" width="180" />--> +<!-- <el-table-column property="department" label="申请部门" width="180" />--> +<!-- <el-table-column label="申请状态" width="180">--> +<!-- <template slot-scope="scope">--> +<!-- <el-tag type="success">{{ scope.row.status }}</el-tag>--> +<!-- </template>--> +<!-- </el-table-column>--> +<!-- </el-table>--> +<!-- <div class="pageBtn">--> +<!-- <el-pagination v-model:currentPage="pageIndex2" v-model:page-size="pageSize2" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize2" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" />--> +<!-- </div>--> +<!-- </div>--> +<!-- </div>--> +<!-- </div>--> +<!-- </el-tab-pane>--> +<!-- </el-tabs>--> + </div> </template> <script> -export default { - name: "index" -} +import fire from './components/fireLog' +import space from './components/spaceLog' +import hoist from './components/hoistLog' +import ground from './components/groundLog' +import broken from './components/brokenLog' +import height from './components/heightLog' +import power from './components/powerLog' +import plate from './components/plateLog' +import {getDepartmentList} from "../../../../api/departmentManage"; +import {workApprovalApi} from "../../../../api/workApproval"; + +export default{ + name: 'myApproval', + components: { + fire, + space, + hoist, + ground, + broken, + height, + power, + plate + }, + data() { + return { + pageIndex1: 1, + pageSize1: 10, + totalSize1: 0, + dialogType: null, + activeName: '1', + departmentList: [], + departmentRecursionList: [], + chosenIndex: null, + searchWord: '', + applyData: [], + workTimeList: [], + multipleSelection: [], + approveInfo: { + approvalSteps: [], + operators: [] + }, + dialogDetails: false, + dialogStatus: false, + deleteDialog: false, + addRecord: {}, + details: {}, + statusInfo: {}, + deleteId: null, + deleteArr: [], + workType: [ + { id: 1, name: '动火作业' }, + { id: 2, name: '受限空间作业' }, + { id: 3, name: '吊装作业' }, + { id: 4, name: '动土作业' }, + { id: 5, name: '断路作业' }, + { id: 6, name: '高处作业' }, + { id: 7, name: '临时用电作业' }, + { id: 8, name: '盲板抽堵作业' } + ], + } + }, + methods:{ + async getListByPage() { + const data = { pageSize: this.pageSize1, pageIndex: this.pageIndex1, searchParams: { workType: this.searchWord } }; + let res = await workApprovalApi().getApprovalListPage(data); + if (res.data.code === '200') { + this.applyData = JSON.parse(JSON.stringify(res.data.data)); + this.applyData = this.applyData.map((item) => { + if (item.operators == null || item.operators == []) { + item.operators = []; + } else { + item.operators = Array.from(item.operators, ({ operatorUname }) => operatorUname); + } + return item; + }); + this.totalSize1 = res.data.total; + } else { + this.$message({ + type: 'warning', + message: res.data.msg + }); + } + }, + + reLoadData() { + this.getListByPage(); + }, + + toApply() { + this.$router.push({ + path: 'workApply' + }); + }, + + handleClick(tab, event) { + console.log(tab, event); + }, + + async getAllDepartment() { + let res = await getDepartmentList({pageSize:1000,pageIndex:1}) + if(res.data.code === '200'){ + this.departmentList = res.data.result.result + this.recursion(this.departmentList); + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + }, + + recursion(value) { + for (let i of value) { + if (i.children.length !== 0) { + this.departmentRecursionList.push(i); + this.recursion(i.children); + } else { + this.departmentRecursionList.push(i); + } + } + }, + + searchRecord() { + if (this.searchWord == '') { + this.$message({ + type: 'warning', + message: '请输入查询关键词' + }); + } else { + this.getListByPage(); + } + }, + + clearSearch() { + this.searchWord = ''; + this.getListByPage(); + }, + + viewStatus(row) { + this.getStatus({ workApplyId: row.workApplyId }); + this.dialogStatus = true; + }, + + async getStatus(data) { + let res = await workApprovalApi().getApprovalStatus(data); + if (res.data.code === '200') { + this.approveInfo = JSON.parse(JSON.stringify(res.data.data)); + this.approveInfo.operators = Array.from(this.approveInfo.operators, ({ operatorUname }) => operatorUname); + } else { + this.$message({ + type: 'warning', + message: res.data.msg + }); + } + }, + + deleteRecordBtn(row) { + this.deleteId = row.workApplyId; + this.deleteDialog = true; + }, + + async deleteRecord(data) { + let res = await workApprovalApi().postAbord(data); + if (res.data.code === '200') { + this.$message({ + type: 'success', + message: res.data.msg + }); + this.getListByPage(); + } else { + this.$message({ + type: 'warning', + message: res.data.msg + }); + } + }, + + conFirmDelete() { + this.deleteRecord({ workApplyId: this.deleteId }); + this.deleteDialog = false; + }, + + handleSizeChange1(val) { + this.pageSize1 = val; + this.getListByPage(); + }, + + handleCurrentChange1(val) { + this.pageIndex1 = val; + this.getListByPage(); + }, + + // 查看记录 + viewRecord(row) { + this.dialogType = row.workType + this.details = JSON.parse(JSON.stringify(row)); + // getApprovalData(this.details.workApplyId) + if(this.details.workDetail.otherSpecialWork == '' || !this.details.workDetail.otherSpecialWork){ + this.details.workDetail.otherSpecialWork = '' + } + else { + const a = this.details.workDetail.otherSpecialWork + this.details.workDetail.otherSpecialWork = a.split(',').map((item) => { + return this.workType.find((i) => i.id === Number(item)).name; + }).join('、'); + } + if(this.details.workDetail.involvedDepIds == '' || !this.details.workDetail.involvedDepIds){ + this.details.workDetail.involvedDepIds = '' + } + else { + const a = this.details.workDetail.involvedDepIds + this.details.workDetail.involvedDepIds = a.split(',').map((item) => { + return this.departmentRecursionList.find((i) => i.depId === Number(item)).depName; + }).join('、'); + } + this.dialogDetails = true; + }, + + }, + +}; </script> -<style scoped> +<style scoped lang="scss"> +$homeNavLengh: 8; +.home-container { + height: calc(100vh - 144px); + box-sizing: border-box; + overflow: hidden; + .demo-tabs { + width: 100%; + height: 100%; + &::v-deep(.el-tabs__content) { + height: calc(100% - 60px); + } + + .el-tab-pane { + height: 100%; + } + } + .homeCard { + width: 100%; + padding: 20px; + box-sizing: border-box; + background: #fff; + border-radius: 4px; + + .main-card { + width: 100%; + height: 100%; + .cardTop { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 20px; + .mainCardBtn { + margin: 0; + } + } + .pageBtn { + height: 60px; + display: flex; + align-items: center; + justify-content: right; + + .demo-pagination-block + .demo-pagination-block { + margin-top: 10px; + } + .demo-pagination-block .demonstration { + margin-bottom: 16px; + } + } + } + &:last-of-type { + height: calc(100% - 100px); + } + } + .stepItem { + display: flex; + align-items: flex-start; + margin-top: 30px; + margin-left: 30px; + padding-bottom: 30px; + padding-left: 40px; + border-left: 1px solid #a0cfff; + position: relative; + &:first-of-type { + margin-top: 30px; + } + &:first-of-type { + margin-bottom: 0; + border-left: none; + } + .stepNum { + position: absolute; + width: 40px; + height: 40px; + border-radius: 20px; + box-sizing: border-box; + font-size: 18px; + color: #333; + border: 1px solid #a0cfff; + line-height: 38px; + text-align: center; + left: -20px; + top: -30px; + background: #d9ecff; + } + .stepCard { + width: 100%; + margin-top: -30px; + + .box-card { + width: 100%; + + .card-header { + display: flex; + justify-content: space-between; + align-items: center; + + span { + font-weight: bold; + margin-left: 10px; + } + } + + .text { + width: 100%; + font-size: 14px; + margin-bottom: 10px; + padding-left: 10px; + + span { + font-weight: bolder; + color: #409eff; + } + + &:last-of-type { + margin-bottom: 0; + } + } + .approveUnit { + width: 100%; + font-size: 14px; + margin-bottom: 20px; + padding: 10px 15px; + border: 1px solid #fff; + background: #ecf8ff; + border-radius: 6px; + .item-tit { + width: 100%; + display: flex; + color: #409eff; + align-items: flex-start; + justify-content: space-between; + padding-bottom: 10px; + border-bottom: 1px solid #a0cfff; + + & > span { + flex: 1; + &:last-of-type{ + text-align: center; + } + } + & > div { + flex: 1; + text-align: center; + } + } + .item-cont { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 0; + border-bottom: 1px solid #c6e2ff; + + & > span { + flex: 1; + &:last-of-type{ + text-align: center; + } + } + & > div { + flex: 1; + text-align: center; + + & > div { + text-align: left; + width: 100%; + display: flex; + justify-content: center; + align-items: center; + span { + width: 45%; + &:first-of-type { + width: 30%; + } + } + } + } + &:last-of-type { + border-bottom: 0; + } + } + } + .approveItem { + width: 100%; + font-size: 14px; + margin-bottom: 20px; + padding: 10px 15px; + background: #ecf8ff; + border: 1px solid #fff; + border-radius: 6px; + .item-tit { + width: 100%; + display: flex; + color: #409eff; + align-items: flex-start; + justify-content: space-between; + padding-bottom: 10px; + border-bottom: 1px solid #a0cfff; + + & > span { + flex: 1; + } + & > div { + flex: 2; + text-align: center; + } + } + .item-cont { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 0; + border-bottom: 1px solid #c6e2ff; + + & > span { + flex: 1; + } + & > div { + flex: 2; + text-align: center; + + & > div { + text-align: left; + width: 100%; + display: flex; + justify-content: center; + align-items: flex-start; + margin-bottom: 10px; + span { + width: 50%; + &:first-of-type { + width: 25%; + } + } + } + } + &:last-of-type { + border-bottom: 0; + } + } + } + } + } + &:hover .card-header { + color: #0098f5; + } + &:hover .stepNum { + border: 2px solid #0098f5; + color: #0098f5; + } + } + .el-row { + display: flex; + align-items: center; + margin-bottom: 20px; + &:last-child { + margin-bottom: 0; + } + .grid-content { + align-items: center; + min-height: 36px; + } + + .topInfo { + display: flex; + align-items: center; + font-size: 16px; + font-weight: bold; + + & > div { + white-space: nowrap; + margin-right: 20px; + } + } + } + .el-card { + border: 0; + } +} </style> diff --git a/src/views/specialWorkManage/workTicket/myJobApply/components/brokenLog.vue b/src/views/specialWorkManage/workTicket/myJobApply/components/brokenLog.vue index b69a64b..f7adaca 100644 --- a/src/views/specialWorkManage/workTicket/myJobApply/components/brokenLog.vue +++ b/src/views/specialWorkManage/workTicket/myJobApply/components/brokenLog.vue @@ -37,9 +37,9 @@ <el-form-item label="涉及相关部门"> <el-input v-model="details.workDetail.involvedDepIds" readonly type="textarea"/> </el-form-item> - <el-form-item label="图片"> - <el-image v-for="item in details.workDetail.bcPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" /> - </el-form-item> +<!-- <el-form-item label="图片">--> +<!-- <el-image v-for="item in details.workDetail.bcPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" />--> +<!-- </el-form-item>--> <el-form-item label="期望开始时间"> <el-input v-model="details.expStartTime" readonly /> </el-form-item> diff --git a/src/views/specialWorkManage/workTicket/myJobApply/components/groundLog.vue b/src/views/specialWorkManage/workTicket/myJobApply/components/groundLog.vue index c516b14..a5729bd 100644 --- a/src/views/specialWorkManage/workTicket/myJobApply/components/groundLog.vue +++ b/src/views/specialWorkManage/workTicket/myJobApply/components/groundLog.vue @@ -37,9 +37,9 @@ <el-form-item label="关联其他作业"> <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> </el-form-item> - <el-form-item label="图片"> - <el-image v-for="item in details.workDetail.gbPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" /> - </el-form-item> +<!-- <el-form-item label="图片">--> +<!-- <el-image v-for="item in details.workDetail.gbPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" />--> +<!-- </el-form-item>--> <el-form-item label="期望开始时间"> <el-input v-model="details.expStartTime" readonly /> </el-form-item> diff --git a/src/views/specialWorkManage/workTicket/myJobApply/components/heightLog.vue b/src/views/specialWorkManage/workTicket/myJobApply/components/heightLog.vue index 029ed49..54150fd 100644 --- a/src/views/specialWorkManage/workTicket/myJobApply/components/heightLog.vue +++ b/src/views/specialWorkManage/workTicket/myJobApply/components/heightLog.vue @@ -59,6 +59,10 @@ return{ } + }, + created(){ + debugger + console.log(this.details); } }; </script> diff --git a/src/views/specialWorkManage/workTicket/myJobApply/components/plateLog.vue b/src/views/specialWorkManage/workTicket/myJobApply/components/plateLog.vue index cefc73b..b4dfa07 100644 --- a/src/views/specialWorkManage/workTicket/myJobApply/components/plateLog.vue +++ b/src/views/specialWorkManage/workTicket/myJobApply/components/plateLog.vue @@ -55,9 +55,9 @@ <el-form-item label="关联其他作业"> <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> </el-form-item> - <el-form-item label="盲板位置图"> - <el-image v-for="item in details.workDetail.bpLocationMapPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" /> - </el-form-item> +<!-- <el-form-item label="盲板位置图">--> +<!-- <el-image v-for="item in details.workDetail.bpLocationMapPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" />--> +<!-- </el-form-item>--> <el-form-item label="期望开始时间"> <el-input v-model="details.expStartTime" readonly /> </el-form-item> @@ -83,6 +83,9 @@ return{ } + }, + created(){ + console.log(this.details); } }; </script> diff --git a/src/views/specialWorkManage/workTicket/myJobApply/components/spaceLog.vue b/src/views/specialWorkManage/workTicket/myJobApply/components/spaceLog.vue index f7f9f06..b014206 100644 --- a/src/views/specialWorkManage/workTicket/myJobApply/components/spaceLog.vue +++ b/src/views/specialWorkManage/workTicket/myJobApply/components/spaceLog.vue @@ -62,6 +62,8 @@ return{ } + }, + methods:{ } }; </script> diff --git a/src/views/specialWorkManage/workTicket/myJobApply/index.vue b/src/views/specialWorkManage/workTicket/myJobApply/index.vue index a736bf3..dbce605 100644 --- a/src/views/specialWorkManage/workTicket/myJobApply/index.vue +++ b/src/views/specialWorkManage/workTicket/myJobApply/index.vue @@ -24,7 +24,7 @@ <div class="main-card"> <el-row class="cardTop"> <el-col :span="24" class="mainCardBtn"> - <el-button type="primary" size="default" @click="toApply()">申请</el-button> +<!-- <el-button type="primary" size="default" @click="toApply()">申请</el-button>--> <!-- <el-button type="danger" :icon="Delete" size="default">删除</el-button>--> <!-- <el-button type="success" size="default">设置分类</el-button>--> </el-col> @@ -56,24 +56,24 @@ </div> </div> </div> - <el-dialog v-model="dialogDetails" title="作业申请详情" center> + <el-dialog :visible.sync="dialogDetails" title="作业申请详情" center> <fire v-if="dialogType == 1" :details = details></fire> - <space v-else-if="dialogType == 2" :details = details></space> - <hoist v-else-if="dialogType == 3" :details = details></hoist> - <ground v-else-if="dialogType == 4" :details = details></ground> - <broken v-else-if="dialogType == 5" :details = details></broken> - <height v-else-if="dialogType == 6" :details = details></height> - <power v-else-if="dialogType == 7" :details = details></power> - <plate v-else :details = details></plate> + <space v-if="dialogType == 2" :details = details></space> + <hoist v-if="dialogType == 3" :details = details></hoist> + <ground v-if="dialogType == 4" :details = details></ground> + <broken v-if="dialogType == 5" :details = details></broken> + <height v-if="dialogType == 6" :details = details></height> + <power v-if="dialogType == 7" :details = details></power> + <plate v-if="dialogType == 8" :details = details></plate> <template #footer> - <span class="dialog-footer"> + <div class="dialog-footer" align="right"> <el-button type="primary" @click="dialogDetails = false" >确认</el-button > - </span> + </div> </template> </el-dialog> - <el-dialog v-model="dialogStatus" title="作业申请进度" width="60%"> + <el-dialog :visible.sync="dialogStatus" title="作业申请进度" width="60%"> <el-form v-if="approveInfo.operators.length > 0" style="margin-bottom: 40px"> <el-form-item label="申请作业人"> <el-input v-model="approveInfo.operators" readonly type="textarea" /> @@ -138,7 +138,7 @@ </div> </div> </el-dialog> - <el-dialog v-model="deleteDialog" title="提示" width="30%" center> + <el-dialog :visible.sync="deleteDialog" title="提示" width="30%" center> <span>您确定要取消该条申请吗?</span> <template #footer> <span class="dialog-footer"> @@ -245,6 +245,9 @@ ] } }, + created(){ + this.getListByPage() + }, methods:{ async getListByPage() { const data = { pageSize: this.pageSize1, pageIndex: this.pageIndex1, searchParams: { workType: this.searchWord } }; @@ -335,8 +338,9 @@ let res = await workApplyApi().getStatus(data); if (res.data.code === '200') { this.approveInfo = JSON.parse(JSON.stringify(res.data.data)); - this.approveInfo.operators = Array.from(this.approveInfo.operators, ({ operatorUname }) => operatorUname); - console.log(this.approveInfo, 'steps'); + this.approveInfo.operators = this.approveInfo.operators.map(item => { + return item.operatorUname + }).join('、') } else { this.$message({ type: 'warning', @@ -374,24 +378,24 @@ viewRecord(row) { this.dialogType = row.workType this.details = JSON.parse(JSON.stringify(row)); + this.details.operators = this.details.operators.join('、') if(this.details.workDetail.otherSpecialWork == '' || !this.details.workDetail.otherSpecialWork){ - this.details.workDetail.otherSpecialWork=[] + this.details.workDetail.otherSpecialWork = '' } else { - console.log(this.details.workDetail.otherSpecialWork,'split') const a = this.details.workDetail.otherSpecialWork this.details.workDetail.otherSpecialWork = a.split(',').map((item) => { return this.workType.find((i) => i.id === Number(item)).name; - }); + }).join('、'); } if(this.details.workDetail.involvedDepIds == '' || !this.details.workDetail.involvedDepIds){ - this.details.workDetail.involvedDepIds=[] + this.details.workDetail.involvedDepIds = '' } else { const a = this.details.workDetail.involvedDepIds this.details.workDetail.involvedDepIds = a.split(',').map((item) => { return this.departmentRecursionList.find((i) => i.depId === Number(item)).depName; - }); + }).join('、'); } if(this.details.workDetail.gbPath){ this.details.workDetail.gbPath = this.details.workDetail.gbPath.split(',') diff --git a/src/views/specialWorkManage/workTicket/workApply/components/broken.vue b/src/views/specialWorkManage/workTicket/workApply/components/broken.vue index 18f134c..009f34f 100644 --- a/src/views/specialWorkManage/workTicket/workApply/components/broken.vue +++ b/src/views/specialWorkManage/workTicket/workApply/components/broken.vue @@ -9,21 +9,30 @@ <el-select v-model="form.operatorUids" multiple> <el-option v-for="item in workerList" - :key="item.uid" - :label="item.username" - :value="item.uid" + :key="item.id" + :label="item.realname" + :value="item.id" /> </el-select> </el-form-item> </el-col> + <el-col :span="12"> + <el-form-item label="作业内容" prop="workContent"> + <el-input + v-model="form.workContent" + autosize + type="textarea" + placeholder="请输入作业内容" + /> + </el-form-item> + </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="作业时间" prop="workTimeLine"> <el-date-picker v-model="form.workTimeLine" - format="YYYY-MM-DD HH:mm" - value-format="YYYY-MM-DD HH:mm:00" + value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" range-separator="至" start-placeholder="开始时间" @@ -31,28 +40,16 @@ /> </el-form-item> </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业内容" prop="workContent"> - <el-input - v-model="form.workContent" - autosize - type="textarea" - placeholder="请输入作业内容" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业地址" prop="workLocation"> - <el-input - v-model="form.workLocation" - autosize - type="textarea" - placeholder="请输入作业地址" - /> - </el-form-item> - </el-col> + <el-col :span="12"> + <el-form-item label="作业地址" prop="workLocation"> + <el-input + v-model="form.workLocation" + autosize + type="textarea" + placeholder="请输入作业地址" + /> + </el-form-item> + </el-col> </el-row> @@ -61,10 +58,10 @@ <el-form-item label="作业单位" prop="workDetail.operationDepId"> <el-select v-model="form.workDetail.operationDepId"> <el-option - v-for="item in csDepList" - :key="item.value" - :label="item.label" - :value="item.value" + v-for="item in departList" + :key="item.id" + :label="item.department" + :value="item.id" /> </el-select> </el-form-item> @@ -91,24 +88,75 @@ /> </el-form-item> </el-col> - <el-col :span="12"> - <el-form-item label="涉及相关部门" prop="workDetail.involvedDepIds"> - <el-cascader v-model="form.workDetail.involvedDepIds" :options="departList" :props="casProps" :show-all-levels="false" @change="handleChange" /> - </el-form-item> - </el-col> + <el-col :span="12"> + <el-form-item label="危险辨识" prop="hazardIdentification"> + <el-input + v-model="form.hazardIdentification" + autosize + type="textarea" + placeholder="请输入危险辨识" + /> + </el-form-item> + </el-col> + </el-row> - <el-row> - <el-col :span="24"> - <el-form-item label="图片上传" prop="workDetail.bcPath"> - <el-upload accept="image/*" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl"> - <el-icon><Plus /></el-icon> - <template #tip> - <div class="el-upload__tip">上传jpg/png图片尺寸小于500KB,最多可上传5张</div> - </template> - </el-upload> - </el-form-item> - </el-col> - </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="涉及相关部门" prop="workDetail.involvedDepIds"> + <el-select v-model="form.workDetail.involvedDepIds"> + <el-option + v-for="item in departList" + :key="item.id" + :label="item.department" + :value="item.id" + /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24"> + <el-form-item label="隐患上报图" prop="img"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + :data="uploadForm" + list-type="picture-card" + :file-list="fileList" + v-model="form.workDetail.gbPath" + :on-change="handleChangeFile" + :on-success="onFileSuccess" + :multiple="false" + :auto-upload="true"> + <i slot="default" class="el-icon-plus"></i> + <div slot="file" slot-scope="{file}"> + <img + class="el-upload-list__item-thumbnail" + :src="file.url" alt="" + > + <span class="el-upload-list__item-actions"> + <span + class="el-upload-list__item-preview" + @click="handleFile(file)" + > + <i class="el-icon-zoom-in"></i> + </span> + <span + v-if="!disabled" + class="el-upload-list__item-delete" + @click="handleRemove(file,file.$index)" + > + <i class="el-icon-delete"></i> + </span> + </span> + </div> + </el-upload> + </el-form-item> + </el-col> + </el-row> </div> </el-form> <div class="applyBtn"> @@ -122,12 +170,21 @@ </template> <script> - export default{ + import {workApplyApi} from "../../../../../api/workApply"; + import Cookies from "_js-cookie@2.2.0@js-cookie"; + + export default{ name: 'brokenForm', components: {}, props:['workerList','departList'], data(){ return{ + fileRoad:process.env.BASE_API + '/task/web/upload', + uploadForm:{ + }, + header:{Authorization:''}, + fileList:[], + disabled:false, form: { operatorUids: [], workType: 5, @@ -143,9 +200,9 @@ }, workTimeLine: [], expStartTime: '', + hazardIdentification: '', expEndTime: '' }, - fileList: [], imgLimit: 5, uploadUrl: '', dialogVisible: false, @@ -183,10 +240,11 @@ multiple: true }, applyRules:{ - operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'change' }], workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.operationDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.bcReason": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -196,26 +254,42 @@ } }, methods:{ - async submitForm(formEl) { - if (!formEl) return - await formEl.validate(async (valid, fields) => { + submitForm(formEl) { + this.$refs["ruleFormRef"].validate(async (valid, fields) => { if (valid) { - state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0] - state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1] - let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form)) - data.workDetail.involvedDepIds = data.workDetail.involvedDepIds.join(',') - data.workDetail.bcPath = data.workDetail.bcPath.join(',') + this.form.expStartTime = JSON.parse(JSON.stringify(this.form.workTimeLine))[0] + this.form.expEndTime = JSON.parse(JSON.stringify(this.form.workTimeLine))[1] + let { workTimeLine, ...data } = JSON.parse(JSON.stringify(this.form)) + data.workDetail.involvedDepIds = data.workDetail.involvedDepIds.toString() + data.workDetail.bcPath = JSON.stringify(this.fileList.map(item => { return item.url.substring(process.env.IMG_API.length) })) const res = await workApplyApi().postBrokenApply(data) if (res.data.code === '200') { - ElMessage({ + this.$message({ type: 'success', message: '提交成功!' }); - formEl.resetFields() - state.form.workDetail.bcPath = [] - state.fileList = [] + this.$refs["ruleFormRef"].clearValidate() + this.form = { + operatorUids: [], + workType: 5, + workLevel: 0, + workContent: '', + workLocation: '', + workDetail:{ + operationDepId: null, + bcReason: '', + bcExplain: '', + bcPath: [], + involvedDepIds: [] + }, + workTimeLine: [], + expStartTime: '', + hazardIdentification: '', + expEndTime: '' + } + this.fileList = [] } else { - ElMessage({ + this.$message({ type: 'warning', message: res.data.msg }); @@ -224,8 +298,46 @@ console.log('error submit!', fields) } }) - } + }, + + + handleChangeFile(){ + this.header.Authorization = Cookies.get('token') + }, + onFileSuccess(response){ + if(response.code === '200'){ + this.fileList.push({url:process.env.IMG_API + response.result.path}) + this.$notify({ + type:'success', + duration:2000, + message:'上传成功', + title:'成功', + }) + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + }, + handleFile(file){ + this.dialogImageUrl = file.url; + this.dialogVisible = true; + }, + showImg(file){ + window.open(file, '_blank') + }, + handleRemove(file,value){ + return this.$confirm(`确定移除 ${ file.uid }?`,'提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(()=> { + this.fileList.splice(value,1) + }) + }, }, + }; </script> diff --git a/src/views/specialWorkManage/workTicket/workApply/components/fire.vue b/src/views/specialWorkManage/workTicket/workApply/components/fire.vue index 946c7c9..afa2d3a 100644 --- a/src/views/specialWorkManage/workTicket/workApply/components/fire.vue +++ b/src/views/specialWorkManage/workTicket/workApply/components/fire.vue @@ -44,7 +44,7 @@ <el-form-item label="作业时间" prop="workTimeLine"> <el-date-picker v-model="form.workTimeLine" - value-format="yyyy-MM-dd HH:mm:00" + value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" range-separator="至" start-placeholder="开始时间" diff --git a/src/views/specialWorkManage/workTicket/workApply/components/ground.vue b/src/views/specialWorkManage/workTicket/workApply/components/ground.vue index c449429..b2bbabe 100644 --- a/src/views/specialWorkManage/workTicket/workApply/components/ground.vue +++ b/src/views/specialWorkManage/workTicket/workApply/components/ground.vue @@ -9,21 +9,30 @@ <el-select v-model="form.operatorUids" multiple> <el-option v-for="item in workerList" - :key="item.uid" - :label="item.username" - :value="item.uid" + :key="item.id" + :label="item.realname" + :value="item.id" /> </el-select> </el-form-item> </el-col> + <el-col :span="12"> + <el-form-item label="作业内容" prop="workContent"> + <el-input + v-model="form.workContent" + autosize + type="textarea" + placeholder="请输入作业内容" + /> + </el-form-item> + </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="作业时间" prop="workTimeLine"> <el-date-picker v-model="form.workTimeLine" - format="YYYY-MM-DD HH:mm" - value-format="YYYY-MM-DD HH:mm:00" + value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" range-separator="至" start-placeholder="开始时间" @@ -31,38 +40,27 @@ /> </el-form-item> </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业内容" prop="workContent"> - <el-input - v-model="form.workContent" - autosize - type="textarea" - placeholder="请输入作业内容" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业地址" prop="workLocation"> - <el-input - v-model="form.workLocation" - autosize - type="textarea" - placeholder="请输入作业地址" - /> - </el-form-item> - </el-col> + + <el-col :span="12"> + <el-form-item label="作业地址" prop="workLocation"> + <el-input + v-model="form.workLocation" + autosize + type="textarea" + placeholder="请输入作业地址" + /> + </el-form-item> + </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="作业单位" prop="workDetail.operationDepId"> <el-select v-model="form.workDetail.operationDepId"> <el-option - v-for="item in csDepList" - :key="item.value" - :label="item.label" - :value="item.value" + v-for="item in departList" + :key="item.id" + :label="item.department" + :value="item.id" /> </el-select> </el-form-item> @@ -77,42 +75,88 @@ /> </el-form-item> </el-col> + </el-row> + + <el-row> + <el-col :span="12"> + <el-form-item label="动土方式" prop="workDetail.gbMethod"> + <el-input + v-model="form.workDetail.gbMethod" + autosize + type="textarea" + placeholder="请输入" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="危险辨识" prop="hazardIdentification"> + <el-input + v-model="form.hazardIdentification" + autosize + type="textarea" + placeholder="请输入危险辨识" + /> + </el-form-item> + </el-col> + </el-row> + <el-row> + + <el-col :span="12"> + <el-form-item label="关联作业" prop="workDetail.otherSpecialWork"> + <el-select v-model="form.workDetail.otherSpecialWork" multiple> + <el-option v-for="item in otherWorkList" :key="item.value" :label="item.label" :value="item.value" /> + </el-select> + </el-form-item> + </el-col> + </el-row> <el-row> - <el-col :span="12"> - <el-form-item label="动土方式" prop="workDetail.gbMethod"> - <el-input - v-model="form.workDetail.gbMethod" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="关联作业" prop="workDetail.otherSpecialWork"> - <el-select v-model="form.workDetail.otherSpecialWork" multiple> - <el-option v-for="item in otherWorkList" :key="item.value" :label="item.label" :value="item.value" /> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="24"> - <el-form-item label="图片上传" prop="workDetail.gbPath"> - <el-upload accept="image/*" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl"> - <el-icon><Plus /></el-icon> - <template #tip> - <div class="el-upload__tip">上传jpg/png图片尺寸小于500KB,最多可上传5张</div> - </template> - </el-upload> - </el-form-item> - </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24"> + <el-form-item label="隐患上报图" prop="img"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + :data="uploadForm" + list-type="picture-card" + :file-list="fileList" + v-model="form.workDetail.gbPath" + :on-change="handleChangeFile" + :on-success="onFileSuccess" + :multiple="false" + :auto-upload="true"> + <i slot="default" class="el-icon-plus"></i> + <div slot="file" slot-scope="{file}"> + <img + class="el-upload-list__item-thumbnail" + :src="file.url" alt="" + > + <span class="el-upload-list__item-actions"> + <span + class="el-upload-list__item-preview" + @click="handleFile(file)" + > + <i class="el-icon-zoom-in"></i> + </span> + <span + v-if="!disabled" + class="el-upload-list__item-delete" + @click="handleRemove(file,file.$index)" + > + <i class="el-icon-delete"></i> + </span> + </span> + </div> + </el-upload> + </el-form-item> + </el-col> </el-row> </div> </el-form> <div class="applyBtn"> - <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> + <el-button type="primary" size="large" plain @click="submitForm()">发起申请</el-button> </div> </div> <el-dialog v-model="dialogVisible"> @@ -122,12 +166,21 @@ </template> <script> - export default { + import Cookies from "_js-cookie@2.2.0@js-cookie"; + import {workApplyApi} from "../../../../../api/workApply"; + + export default { name: 'groundForm', components: {}, - props:['workerList'], + props:['workerList','departList'], data(){ return{ + fileRoad:process.env.BASE_API + '/task/web/upload', + uploadForm:{ + }, + header:{Authorization:''}, + fileList:[], + disabled:false, form: { operatorUids: [], workType: 4, @@ -145,7 +198,6 @@ expStartTime: '', expEndTime: '' }, - fileList: [], imgLimit: 5, uploadUrl: '', dialogVisible: false, @@ -211,9 +263,10 @@ } ], applyRules:{ - operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'change' }], workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.operationDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -224,26 +277,41 @@ } }, methods:{ - async submitForm(formEl) { - if (!formEl) return - await formEl.validate(async (valid, fields) => { + submitForm() { + this.$refs["ruleFormRef"].validate(async (valid, fields) => { if (valid) { - state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0] - state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1] - let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form)) + this.form.expStartTime = JSON.parse(JSON.stringify(this.form.workTimeLine))[0] + this.form.expEndTime = JSON.parse(JSON.stringify(this.form.workTimeLine))[1] + let { workTimeLine, ...data } = JSON.parse(JSON.stringify(this.form)) data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',') - data.workDetail.gbPath = data.workDetail.gbPath.join(',') + data.workDetail.gbPath = JSON.stringify(this.fileList.map(item => { return item.url.substring(process.env.IMG_API.length) })) const res = await workApplyApi().postGroundApply(data) if (res.data.code === '200') { - ElMessage({ + this.$message({ type: 'success', message: '提交成功!' }); - formEl.resetFields() - state.form.workDetail.gbPath = [] - state.fileList = [] + this.$refs["ruleFormRef"].clearValidate() + this.form = { + operatorUids: [], + workType: 2, + workLevel: 0, + workContent: '', + workLocation: '', + workDetail:{ + csDepId: null, + csName: '', + csOriginalName: '', + otherSpecialWork: [] + }, + workTimeLine: [], + expStartTime: '', + hazardIdentification: '', + expEndTime: '' + } + this.fileList = [] } else { - ElMessage({ + this.$message({ type: 'warning', message: res.data.msg }); @@ -252,7 +320,44 @@ console.log('error submit!', fields) } }) - } + }, + + + handleChangeFile(){ + this.header.Authorization = Cookies.get('token') + }, + onFileSuccess(response){ + if(response.code === '200'){ + this.fileList.push({url:process.env.IMG_API + response.result.path}) + this.$notify({ + type:'success', + duration:2000, + message:'上传成功', + title:'成功', + }) + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + }, + handleFile(file){ + this.dialogImageUrl = file.url; + this.dialogVisible = true; + }, + showImg(file){ + window.open(file, '_blank') + }, + handleRemove(file,value){ + return this.$confirm(`确定移除 ${ file.uid }?`,'提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(()=> { + this.fileList.splice(value,1) + }) + }, }, }; @@ -307,18 +412,6 @@ } </style> <style> - .avatar-uploader .el-upload { - border: 1px dashed var(--el-border-color); - border-radius: 6px; - cursor: pointer; - position: relative; - overflow: hidden; - transition: var(--el-transition-duration-fast); - } - - .avatar-uploader .el-upload:hover { - border-color: var(--el-color-primary); - } .el-icon.avatar-uploader-icon { font-size: 28px; diff --git a/src/views/specialWorkManage/workTicket/workApply/components/hoist.vue b/src/views/specialWorkManage/workTicket/workApply/components/hoist.vue index 24e900e..77dbde7 100644 --- a/src/views/specialWorkManage/workTicket/workApply/components/hoist.vue +++ b/src/views/specialWorkManage/workTicket/workApply/components/hoist.vue @@ -9,41 +9,50 @@ <el-select v-model="form.operatorUids" multiple> <el-option v-for="item in workerList" - :key="item.uid" - :label="item.username" - :value="item.uid" + :key="item.id" + :label="item.realname" + :value="item.id" /> </el-select> </el-form-item> </el-col> + <el-col :span="12"> + <el-form-item label="作业等级" prop="workLevel"> + <el-select v-model="form.workLevel"> + <el-option + v-for="item in workLevelList" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + </el-col> </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业等级" prop="workLevel"> - <el-select v-model="form.workLevel"> - <el-option - v-for="item in workLevelList" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业时间" prop="workTimeLine"> - <el-date-picker - v-model="form.workTimeLine" - format="YYYY-MM-DD HH:mm" - value-format="YYYY-MM-DD HH:mm:00" - type="datetimerange" - range-separator="至" - start-placeholder="开始时间" - end-placeholder="结束时间" - /> - </el-form-item> - </el-col> - </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="危险辨识" prop="hazardIdentification"> + <el-input + v-model="form.hazardIdentification" + autosize + type="textarea" + placeholder="请输入危险辨识" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="作业时间" prop="workTimeLine"> + <el-date-picker + v-model="form.workTimeLine" + value-format="yyyy-MM-dd HH:mm:ss" + type="datetimerange" + range-separator="至" + start-placeholder="开始时间" + end-placeholder="结束时间" + /> + </el-form-item> + </el-col> + </el-row> <el-row> <el-col :span="12"> <el-form-item label="作业内容" prop="workContent"> @@ -89,10 +98,11 @@ </el-form-item> </el-col> </el-row> + </div> </el-form> <div class="applyBtn"> - <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> + <el-button type="primary" size="large" plain @click="submitForm()">发起申请</el-button> </div> </div> </div> @@ -100,7 +110,9 @@ <script> - export default{ + import {workApplyApi} from "../../../../../api/workApply"; + + export default{ name: 'hoistForm', components: {}, props:['workerList'], @@ -118,6 +130,7 @@ }, workTimeLine: [], expStartTime: '', + hazardIdentification: '', expEndTime: '' }, workLevelList: [ @@ -135,10 +148,11 @@ } ], applyRules:{ - operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'change' }], workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + workLevel: [{ required: true, message: '该内容不能为空', trigger: 'change' }], workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.hoistingToolName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -147,23 +161,37 @@ } }, methods:{ - async submitForm (formEl) { - if (!formEl) return - await formEl.validate(async (valid, fields) => { + submitForm (formEl) { + this.$refs["ruleFormRef"].validate(async (valid, fields) => { if (valid) { - state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0] - state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1] - let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form)) + this.form.expStartTime = JSON.parse(JSON.stringify(this.form.workTimeLine))[0] + this.form.expEndTime = JSON.parse(JSON.stringify(this.form.workTimeLine))[1] + let { workTimeLine, ...data } = JSON.parse(JSON.stringify(this.form)) data.workDetail.weightMass = Number(data.workDetail.weightMass) const res = await workApplyApi().postHoistApply(data) if (res.data.code === '200') { - ElMessage({ + this.$message({ type: 'success', message: '提交成功!' }); - formEl.resetFields() + this.$refs["ruleFormRef"].clearValidate() + this.form = { + operatorUids: [], + workType: 3, + workLevel: null, + workContent: '', + workLocation: '', + workDetail:{ + hoistingToolName: '', + weightMass: null + }, + workTimeLine: [], + expStartTime: '', + hazardIdentification: '', + expEndTime: '' + } } else { - ElMessage({ + this.$message({ type: 'warning', message: res.data.msg }); diff --git a/src/views/specialWorkManage/workTicket/workApply/components/plate.vue b/src/views/specialWorkManage/workTicket/workApply/components/plate.vue index 41cfaff..ff6c1cd 100644 --- a/src/views/specialWorkManage/workTicket/workApply/components/plate.vue +++ b/src/views/specialWorkManage/workTicket/workApply/components/plate.vue @@ -9,9 +9,9 @@ <el-select v-model="form.operatorUids" multiple> <el-option v-for="item in workerList" - :key="item.uid" - :label="item.username" - :value="item.uid" + :key="item.id" + :label="item.realname" + :value="item.id" /> </el-select> </el-form-item> @@ -44,7 +44,6 @@ <el-form-item label="作业时间" prop="workTimeLine"> <el-date-picker v-model="form.workTimeLine" - format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" range-separator="至" @@ -151,8 +150,7 @@ <el-form-item label="盲板时间" prop="workDetail.installLine"> <el-date-picker v-model="form.workDetail.installLine" - format="YYYY-MM-DD HH:mm" - value-format="YYYY-MM-DD HH:mm:00" + value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" range-separator="--" start-placeholder="装盲板时间" @@ -160,18 +158,19 @@ /> </el-form-item> </el-col> + <el-col :span="12"> + <el-form-item label="盲板位置" prop="workDetail.bpLocation"> + <el-input + v-model="form.workDetail.bpLocation" + autosize + type="textarea" + placeholder="请输入" + /> + </el-form-item> + </el-col> </el-row> <el-row> - <el-col :span="12"> - <el-form-item label="盲板位置" prop="workDetail.bpLocation"> - <el-input - v-model="form.workDetail.bpLocation" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> + <el-col :span="12"> <el-form-item label="关联作业" prop="workDetail.otherSpecialWork"> <el-select v-model="form.workDetail.otherSpecialWork" multiple> @@ -185,18 +184,49 @@ </el-form-item> </el-col> </el-row> - <el-row> - <el-col :span="24"> - <el-form-item label="盲板位置图" prop="workDetail.bpLocationMapPath"> - <el-upload accept="image/*" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl"> - <el-icon><Plus /></el-icon> - <template #tip> - <div class="el-upload__tip">上传jpg/png图片尺寸小于500KB,最多可上传5张</div> - </template> - </el-upload> - </el-form-item> - </el-col> - </el-row> + <el-row> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24"> + <el-form-item label="隐患上报图" prop="img"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + :data="uploadForm" + list-type="picture-card" + :file-list="fileList" + v-model="form.workDetail.bpLocationMapPath" + :on-change="handleChangeFile" + :on-success="onFileSuccess" + :multiple="false" + :auto-upload="true"> + <i slot="default" class="el-icon-plus"></i> + <div slot="file" slot-scope="{file}"> + <img + class="el-upload-list__item-thumbnail" + :src="file.url" alt="" + > + <span class="el-upload-list__item-actions"> + <span + class="el-upload-list__item-preview" + @click="handleFile(file)" + > + <i class="el-icon-zoom-in"></i> + </span> + <span + v-if="!disabled" + class="el-upload-list__item-delete" + @click="handleRemove(file,file.$index)" + > + <i class="el-icon-delete"></i> + </span> + </span> + </div> + </el-upload> + </el-form-item> + </el-col> + </el-row> </div> </el-form> <div class="applyBtn"> @@ -210,13 +240,26 @@ </template> <script> - export default{ + import {workApplyApi} from "../../../../../api/workApply"; + import Cookies from "_js-cookie@2.2.0@js-cookie"; + + export default{ name: 'brokenForm', components: {}, props:['workerList'], data(){ return{ + fileRoad:process.env.BASE_API + '/task/web/upload', + uploadForm:{ + }, + header:{Authorization:''}, + disabled:false, form: { + fileRoad:process.env.BASE_API + '/task/web/upload', + uploadForm:{ + }, + header:{Authorization:''}, + disabled:false, operatorUids: [], workType: 8, workLevel: null, @@ -337,32 +380,55 @@ } }, methods:{ - async submitForm(formEl) { - if (!formEl) return - await formEl.validate(async (valid, fields) => { + submitForm(formEl) { + this.$refs["ruleFormRef"].validate(async (valid, fields) => { if (valid) { - state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0] - state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1] - state.form.workDetail.installBpTime = JSON.parse(JSON.stringify(state.form.workDetail.installLine))[0] - state.form.workDetail.uninstallBpTime = JSON.parse(JSON.stringify(state.form.workDetail.installLine))[1] - let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form)) - let { installLine, ...data2 } = JSON.parse(JSON.stringify(state.form.workDetail)) + this.form.expStartTime = JSON.parse(JSON.stringify(this.form.workTimeLine))[0] + this.form.expEndTime = JSON.parse(JSON.stringify(this.form.workTimeLine))[1] + this.form.workDetail.installBpTime = JSON.parse(JSON.stringify(this.form.workDetail.installLine))[0] + this.form.workDetail.uninstallBpTime = JSON.parse(JSON.stringify(this.form.workDetail.installLine))[1] + let { workTimeLine, ...data } = JSON.parse(JSON.stringify(this.form)) + let { installLine, ...data2 } = JSON.parse(JSON.stringify(this.form.workDetail)) data.workDetail = data2 data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',') - data.workDetail.bpLocationMapPath = data.workDetail.bpLocationMapPath.join(',') + data.workDetail.bpLocationMapPath = JSON.stringify(this.fileList.map(item => { return item.url.substring(process.env.IMG_API.length) })) data.workDetail.temperature = Number(data.workDetail.temperature) data.workDetail.pressure = Number(data.workDetail.pressure) const res = await workApplyApi().postPlateApply(data) if (res.data.code === '200') { - ElMessage({ + this.$message({ type: 'success', message: '提交成功!' }); - formEl.resetFields() - state.form.workDetail.bpLocationMapPath = [] - state.fileList = [] + this.$refs["ruleFormRef"].clearValidate() + this.form = { + operatorUids: [], + workType: 8, + workLevel: null, + workContent: '', + workLocation: '', + workDetail:{ + bpCode: '', + mainMedia: '', + temperature: null, + pressure: null, + bpMaterialQuality: '', + bpSpecification: '', + bpLocation: '', + bpLocationMapPath: [], + installLine: [], + installBpTime: '', + uninstallBpTime: '', + hazardIdentification: '', + otherSpecialWork: [] + }, + workTimeLine: [], + expStartTime: '', + expEndTime: '' + } + this.fileList = [] } else { - ElMessage({ + this.$message({ type: 'warning', message: res.data.msg }); @@ -371,7 +437,42 @@ console.log('error submit!', fields) } }) - } + }, + handleChangeFile(){ + this.header.Authorization = Cookies.get('token') + }, + onFileSuccess(response){ + if(response.code === '200'){ + this.fileList.push({url:process.env.IMG_API + response.result.path}) + this.$notify({ + type:'success', + duration:2000, + message:'上传成功', + title:'成功', + }) + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + }, + handleFile(file){ + this.dialogImageUrl = file.url; + this.dialogVisible = true; + }, + showImg(file){ + window.open(file, '_blank') + }, + handleRemove(file,value){ + return this.$confirm(`确定移除 ${ file.uid }?`,'提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(()=> { + this.fileList.splice(value,1) + }) + }, }, }; </script> diff --git a/src/views/specialWorkManage/workTicket/workApply/components/power.vue b/src/views/specialWorkManage/workTicket/workApply/components/power.vue index 514cdce..505bca6 100644 --- a/src/views/specialWorkManage/workTicket/workApply/components/power.vue +++ b/src/views/specialWorkManage/workTicket/workApply/components/power.vue @@ -9,21 +9,30 @@ <el-select v-model="form.operatorUids" multiple> <el-option v-for="item in workerList" - :key="item.uid" - :label="item.username" - :value="item.uid" + :key="item.id" + :label="item.realname" + :value="item.id" /> </el-select> </el-form-item> </el-col> + <el-col :span="12"> + <el-form-item label="作业内容" prop="workContent"> + <el-input + v-model="form.workContent" + autosize + type="textarea" + placeholder="请输入作业内容" + /> + </el-form-item> + </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="作业时间" prop="workTimeLine"> <el-date-picker v-model="form.workTimeLine" - format="YYYY-MM-DD HH:mm" - value-format="YYYY-MM-DD HH:mm:00" + value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" range-separator="至" start-placeholder="开始时间" @@ -31,28 +40,16 @@ /> </el-form-item> </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业内容" prop="workContent"> - <el-input - v-model="form.workContent" - autosize - type="textarea" - placeholder="请输入作业内容" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业地址" prop="workLocation"> - <el-input - v-model="form.workLocation" - autosize - type="textarea" - placeholder="请输入作业地址" - /> - </el-form-item> - </el-col> + <el-col :span="12"> + <el-form-item label="作业地址" prop="workLocation"> + <el-input + v-model="form.workLocation" + autosize + type="textarea" + placeholder="请输入作业地址" + /> + </el-form-item> + </el-col> </el-row> @@ -90,6 +87,16 @@ /> </el-form-item> </el-col> + <el-col :span="12"> + <el-form-item label="危险辨识" prop="hazardIdentification"> + <el-input + v-model="form.hazardIdentification" + autosize + type="textarea" + placeholder="请输入危险辨识" + /> + </el-form-item> + </el-col> </el-row> </div> </el-form> @@ -101,7 +108,9 @@ </template> <script> - export default{ + import {workApplyApi} from "../../../../../api/workApply"; + + export default{ name: 'hoistForm', components: {}, props:['workerList'], @@ -120,6 +129,7 @@ }, workTimeLine: [], expStartTime: '', + hazardIdentification: '', expEndTime: '' }, workLevelList: [ @@ -137,10 +147,11 @@ } ], applyRules:{ - operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'change' }], workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + workLevel: [{ required: true, message: '该内容不能为空', trigger: 'change' }], workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.powerAccessPoint": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -150,23 +161,38 @@ } }, methods:{ - async submitForm(formEl) { - if (!formEl) return - await formEl.validate(async (valid, fields) => { + submitForm() { + this.$refs["ruleFormRef"].validate(async (valid, fields) => { if (valid) { - state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0] - state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1] - let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form)) + this.form.expStartTime = JSON.parse(JSON.stringify(this.form.workTimeLine))[0] + this.form.expEndTime = JSON.parse(JSON.stringify(this.form.workTimeLine))[1] + let { workTimeLine, ...data } = JSON.parse(JSON.stringify(this.form)) // data.workDetail.weightMass = Number(data.workDetail.weightMass) const res = await workApplyApi().postPowerApply(data) if (res.data.code === '200') { - ElMessage({ + this.$message({ type: 'success', message: '提交成功!' }); - formEl.resetFields() + this.$refs["ruleFormRef"].clearValidate() + this.form = { + operatorUids: [], + workType: 7, + workLevel: 0, + workContent: '', + workLocation: '', + workDetail:{ + powerAccessPoint: '', + workingVoltage: null, + equipmentAndPower: '' + }, + workTimeLine: [], + expStartTime: '', + hazardIdentification: '', + expEndTime: '' + } } else { - ElMessage({ + this.$message({ type: 'warning', message: res.data.msg }); diff --git a/src/views/specialWorkManage/workTicket/workApply/components/space.vue b/src/views/specialWorkManage/workTicket/workApply/components/space.vue index 4c3870c..9890277 100644 --- a/src/views/specialWorkManage/workTicket/workApply/components/space.vue +++ b/src/views/specialWorkManage/workTicket/workApply/components/space.vue @@ -9,21 +9,30 @@ <el-select v-model="form.operatorUids" multiple> <el-option v-for="item in workerList" - :key="item.uid" - :label="item.username" - :value="item.uid" + :key="item.id" + :label="item.realname" + :value="item.id" /> </el-select> </el-form-item> </el-col> + <el-col :span="12"> + <el-form-item label="作业内容" prop="workContent"> + <el-input + v-model="form.workContent" + autosize + type="textarea" + placeholder="请输入作业内容" + /> + </el-form-item> + </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="作业时间" prop="workTimeLine"> <el-date-picker v-model="form.workTimeLine" - format="YYYY-MM-DD HH:mm" - value-format="YYYY-MM-DD HH:mm:00" + value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" range-separator="至" start-placeholder="开始时间" @@ -31,38 +40,26 @@ /> </el-form-item> </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业内容" prop="workContent"> - <el-input - v-model="form.workContent" - autosize - type="textarea" - placeholder="请输入作业内容" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业地址" prop="workLocation"> - <el-input - v-model="form.workLocation" - autosize - type="textarea" - placeholder="请输入作业地址" - /> - </el-form-item> - </el-col> + <el-col :span="12"> + <el-form-item label="作业地址" prop="workLocation"> + <el-input + v-model="form.workLocation" + autosize + type="textarea" + placeholder="请输入作业地址" + /> + </el-form-item> + </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="受限空间所属单位" prop="workDetail.csDepId"> <el-select v-model="form.workDetail.csDepId"> <el-option - v-for="item in csDepList" - :key="item.value" - :label="item.label" - :value="item.value" + v-for="item in departList" + :key="item.id" + :label="item.department" + :value="item.id" /> </el-select> </el-form-item> @@ -89,28 +86,43 @@ /> </el-form-item> </el-col> - <el-col :span="12"> - <el-form-item label="关联作业" prop="workDetail.otherSpecialWork"> - <el-select v-model="form.workDetail.otherSpecialWork" multiple> - <el-option v-for="item in otherWorkList" :key="item.value" :label="item.label" :value="item.value" /> - </el-select> - </el-form-item> - </el-col> + <el-col :span="12"> + <el-form-item label="危险辨识" prop="hazardIdentification"> + <el-input + v-model="form.hazardIdentification" + autosize + type="textarea" + placeholder="请输入危险辨识" + /> + </el-form-item> + </el-col> </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="关联作业" prop="workDetail.otherSpecialWork"> + <el-select v-model="form.workDetail.otherSpecialWork" multiple> + <el-option v-for="item in otherWorkList" :key="item.value" :label="item.label" :value="item.value" /> + </el-select> + </el-form-item> + </el-col> + + </el-row> </div> </el-form> <div class="applyBtn"> - <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> + <el-button type="primary" size="large" plain @click="submitForm()">发起申请</el-button> </div> </div> </div> </template> <script> - export default{ + import {workApplyApi} from "../../../../../api/workApply"; + + export default{ name: 'spaceForm', components: {}, - props:['workerList'], + props:['workerList','departList'], data(){ return{ form: { @@ -127,6 +139,7 @@ }, workTimeLine: [], expStartTime: '', + hazardIdentification: '', expEndTime: '' }, csDepList: [ @@ -190,9 +203,10 @@ } ], applyRules:{ - operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'change' }], + workType: [{ required: true, message: '该内容不能为空', trigger: 'change' }], workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.csDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -202,13 +216,12 @@ } }, methods:{ - async submitForm(formEl) { - if (!formEl) return - await formEl.validate(async (valid, fields) => { + submitForm() { + this.$refs["ruleFormRef"].validate(async (valid, fields) => { if (valid) { - state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0] - state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1] - let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form)) + this.form.expStartTime = JSON.parse(JSON.stringify(this.form.workTimeLine))[0] + this.form.expEndTime = JSON.parse(JSON.stringify(this.form.workTimeLine))[1] + let { workTimeLine, ...data } = JSON.parse(JSON.stringify(this.form)) data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',') console.log(data,'data') const res = await workApplyApi().postSpaceApply(data) @@ -217,7 +230,24 @@ type: 'success', message: '提交成功!' }); - formEl.resetFields() + this.$refs["ruleFormRef"].clearValidate() + this.form = { + operatorUids: [], + workType: 2, + workLevel: 0, + workContent: '', + workLocation: '', + workDetail:{ + csDepId: null, + csName: '', + csOriginalName: '', + otherSpecialWork: [] + }, + workTimeLine: [], + expStartTime: '', + hazardIdentification: '', + expEndTime: '' + } } else { this.$message({ type: 'warning', diff --git a/src/views/specialWorkManage/workTicket/workApply/index.vue b/src/views/specialWorkManage/workTicket/workApply/index.vue index 4ecdc2e..0668f53 100644 --- a/src/views/specialWorkManage/workTicket/workApply/index.vue +++ b/src/views/specialWorkManage/workTicket/workApply/index.vue @@ -5,13 +5,13 @@ <fire-form :workerList="allWorkers"></fire-form> </el-tab-pane> <el-tab-pane label="受限空间作业"> - <space-form :workerList= allWorkers></space-form> + <space-form :workerList= allWorkers :departList = departmentList></space-form> </el-tab-pane> <el-tab-pane label="吊装作业"> <hoist-form :workerList = allWorkers></hoist-form> </el-tab-pane> <el-tab-pane label="动土作业"> - <ground-form :workerList = allWorkers></ground-form> + <ground-form :workerList = allWorkers :departList = departmentList></ground-form> </el-tab-pane> <el-tab-pane label="断路作业"> <broken-form :workerList= allWorkers :departList = departmentList></broken-form> -- Gitblit v1.9.2