lct
Your Name
2022-09-02 91ccfa3ebdc7a68b6f632c3e59757ec03b15ac1f
lct
已修改15个文件
已添加9个文件
2634 ■■■■■ 文件已修改
src/api/workApproval.js 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myApproval/components/brokenLog.vue 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myApproval/components/fireLog.vue 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myApproval/components/groundLog.vue 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myApproval/components/heightLog.vue 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myApproval/components/hoistLog.vue 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myApproval/components/plateLog.vue 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myApproval/components/powerLog.vue 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myApproval/components/spaceLog.vue 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myApproval/index.vue 687 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/components/brokenLog.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/components/groundLog.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/components/heightLog.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/components/plateLog.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/components/spaceLog.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/index.vue 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/components/broken.vue 200 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/components/fire.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/components/ground.vue 211 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/components/hoist.vue 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/components/plate.vue 161 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/components/power.vue 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/components/space.vue 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
            });
        }
    };
}
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>
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>
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>
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>
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>
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>
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>
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>
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>
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: "index"
    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>
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>
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>
src/views/specialWorkManage/workTicket/myJobApply/components/heightLog.vue
@@ -59,6 +59,10 @@
            return{
            }
        },
        created(){
            debugger
            console.log(this.details);
        }
    };
</script>
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>
src/views/specialWorkManage/workTicket/myJobApply/components/spaceLog.vue
@@ -62,6 +62,8 @@
            return{
            }
        },
        methods:{
        }
    };
</script>
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(',')
src/views/specialWorkManage/workTicket/workApply/components/broken.vue
@@ -9,11 +9,21 @@
                        <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>
@@ -22,24 +32,11 @@
                    <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="开始时间"
                                end-placeholder="结束时间"
                        />
                    </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>
@@ -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>
@@ -92,19 +89,70 @@
                    </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.involvedDepIds">
                        <el-cascader v-model="form.workDetail.involvedDepIds" :options="departList" :props="casProps" :show-all-levels="false" @change="handleChange" />
                            <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 :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-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>
@@ -122,12 +170,21 @@
</template>
<script>
    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>
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="开始时间"
src/views/specialWorkManage/workTicket/workApply/components/ground.vue
@@ -9,30 +9,13 @@
                        <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-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"
                                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">
                        <el-input
@@ -43,6 +26,21 @@
                        />
                    </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"
                                value-format="yyyy-MM-dd HH:mm:ss"
                                type="datetimerange"
                                range-separator="至"
                                start-placeholder="开始时间"
                                end-placeholder="结束时间"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="作业地址" prop="workLocation">
                        <el-input
@@ -59,10 +57,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>
@@ -77,7 +75,9 @@
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="动土方式" prop="workDetail.gbMethod">
@@ -90,6 +90,19 @@
                    </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" />
@@ -98,13 +111,44 @@
                </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-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>
@@ -112,7 +156,7 @@
            </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>
    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;
src/views/specialWorkManage/workTicket/workApply/components/hoist.vue
@@ -9,15 +9,13 @@
                        <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-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="作业等级" prop="workLevel">
                        <el-select v-model="form.workLevel">
@@ -30,12 +28,23 @@
                        </el-select>
                    </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"
                                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="开始时间"
@@ -89,16 +98,19 @@
                    </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>
    import {workApplyApi} from "../../../../../api/workApply";
    export default{
        name: 'hoistForm',
@@ -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
                            });
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,8 +158,6 @@
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="盲板位置" prop="workDetail.bpLocation">
                        <el-input
@@ -172,6 +168,9 @@
                        />
                    </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>
@@ -186,13 +185,44 @@
                </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-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>
@@ -210,13 +240,26 @@
</template>
<script>
    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,8 +437,43 @@
                        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>
src/views/specialWorkManage/workTicket/workApply/components/power.vue
@@ -9,11 +9,21 @@
                        <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>
@@ -22,24 +32,11 @@
                    <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="开始时间"
                                end-placeholder="结束时间"
                        />
                    </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>
@@ -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,6 +108,8 @@
</template>
<script>
    import {workApplyApi} from "../../../../../api/workApply";
    export default{
        name: 'hoistForm',
        components: {},
@@ -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
                            });
src/views/specialWorkManage/workTicket/workApply/components/space.vue
@@ -9,11 +9,21 @@
                        <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>
@@ -22,24 +32,11 @@
                    <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="开始时间"
                                end-placeholder="结束时间"
                        />
                    </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>
@@ -59,10 +56,10 @@
                    <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>
@@ -90,27 +87,42 @@
                    </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>
    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',
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>