Admin
2022-08-18 cfa8a00451d70915cbf3d9b48969856fc09f76b1
Default Changelist
已修改5个文件
已添加4个文件
632 ■■■■ 文件已修改
src/api/specialWorkSystem/workApply/fire/index.ts 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/warningScreen/logo_dark.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/warningScreen/riskprocast.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/router/route.ts 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePrevent/dpIndex/index.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/intellectInspect/intelligentLine/index.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/riskWarningSys/warningBigScreen/index.vue 407 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkSystem/workApplyManage/workApplyForm/index.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkSystem/workApplyManage/workTicket/index.vue 113 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/specialWorkSystem/workApply/fire/index.ts
对比新文件
@@ -0,0 +1,14 @@
import request from '/@/utils/request';
export function fireApplyApi() {
    return {
        // 动火申请
        postFireApply: (data: object) => {
            return request({
                url: import.meta.env.VITE_API_URL + `/work/apply/hot`,
                method: 'post',
                data: data
            });
        }
    };
}
src/assets/warningScreen/logo_dark.png
src/assets/warningScreen/riskprocast.jpg
src/router/route.ts
@@ -103,5 +103,13 @@
        meta: {
            title: '双重预防首页'
        }
    },
    {
        path: '/warningScreen',
        name: 'warningScreen',
        component: () => import('/@/views/riskWarningSys/warningBigScreen/index.vue'),
        meta: {
            title: '预警预报'
        }
    }
];
src/views/doublePrevent/dpIndex/index.vue
@@ -44,7 +44,7 @@
                <div class="item-head">
                    <span>隐患整改情况</span>
                </div>
                <div id="riskFix"></div>
                <div class="riskFix" :id="riskFixId"></div>
            </div>
            <div class="table-item">
                <div class="item-head">
@@ -84,7 +84,7 @@
                <div class="item-head">
                    <span>隐患等级分布</span>
                </div>
                <div id="riskLevel"></div>
                <div class="riskLevel" :id="riskLevelId"></div>
            </div>
        </div>
        </el-scrollbar>
@@ -146,6 +146,8 @@
                classGroupList: [],
                inspectPointAllList: []
            });
            const riskFixId = ref("eChartFix" + Date.now() + Math.random())
            const riskLevelId = ref("eChartLe" + Date.now() + Math.random())
            // 页面载入时执行方法
            onMounted(() => {
@@ -200,14 +202,14 @@
            // 隐患整改情况
            const initRiskFix =()=>{
                var dom = document.getElementById('riskFix');
                var myChart = echarts.init(dom, null, {
                const dom = document.getElementById(riskFixId.value);
                let myChart = echarts.init(dom, null, {
                    renderer: 'canvas',
                    useDirtyRect: false
                });
                var app = {};
                let app = {};
                var option;
                let option;
                option = {
                    tooltip: {
@@ -273,14 +275,14 @@
            // 隐患整改情况
            const initRiskLevel =()=>{
                var dom = document.getElementById('riskLevel');
                var myChart = echarts.init(dom, null, {
                const dom = document.getElementById(riskLevelId.value);
                let myChart = echarts.init(dom, null, {
                    renderer: 'canvas',
                    useDirtyRect: false
                });
                var app = {};
                let app = {};
                var option;
                let option;
                option = {
                    tooltip: {
@@ -369,6 +371,8 @@
                Refresh,
                Plus,
                router,
                riskFixId,
                riskLevelId,
                toRiskEve,
                toRiskStatus,
                toRevice,
@@ -515,10 +519,10 @@
                        }
                    }
                }
                #riskFix{
                .riskFix{
                    height: 300px;
                }
                #riskLevel{
                .riskLevel{
                    height: 300px
                }
                .deviceTable{
src/views/intellectInspect/intelligentLine/index.vue
@@ -317,7 +317,7 @@
                height: 24px;
                border-radius: 50%;
                position: absolute;
                border: 1px solid rgba(0, 225, 255, 0.6);
                border: 1px solid rgba(0, 114, 255, 0.6);
                top: -12px;
                left: 10px;
@@ -331,7 +331,7 @@
                    -moz-border-radius: 50%;
                    border: 1px solid #0072ff;
                    border-radius: 50%;
                    background-color: #00e1ff;
                    background-color: #0072ff;
                    z-index: 2;
                }
                .pulse {
@@ -340,7 +340,7 @@
                    height: 48px;
                    left: -13px;
                    top: -13px;
                    border: 1px solid #00e1ff;
                    border: 1px solid #0072ff;
                    -webkit-border-radius: 50%;
                    -moz-border-radius: 50%;
                    border-radius: 50%;
@@ -352,7 +352,7 @@
                    -webkit-animation-iteration-count: infinite;
                    -moz-animation-iteration-count: infinite;
                    animation-iteration-count: infinite;
                    box-shadow: 1px 1px 30px #00e1ff;
                    box-shadow: 1px 1px 30px #0072ff;
                }
                .pulse1 {
                    position: absolute;
@@ -360,7 +360,7 @@
                    height: 48px;
                    left: -13px;
                    top: -13px;
                    border: 1px solid #00e1ff;
                    border: 1px solid #0072ff;
                    -webkit-border-radius: 50%;
                    -moz-border-radius: 50%;
                    border-radius: 50%;
@@ -372,7 +372,7 @@
                    -webkit-animation-iteration-count: infinite;
                    -moz-animation-iteration-count: infinite;
                    animation-iteration-count: infinite;
                    box-shadow: 1px 1px 30px #00e1ff;
                    box-shadow: 1px 1px 30px #0072ff;
                }
            }
            & > div {
@@ -525,7 +525,7 @@
                height: 24px;
                border-radius: 50%;
                position: absolute;
                border: 1px solid rgba(0, 225, 255, 0.6);
                border: 1px solid rgba(0, 114, 255, 0.6);
                top: -12px;
                left: 10px;
@@ -537,9 +537,9 @@
                    top: 5px;
                    -webkit-border-radius: 50%;
                    -moz-border-radius: 50%;
                    border: 1px solid #0072ff;
                    border: 1px solid #0072FF;
                    border-radius: 50%;
                    background-color: #00e1ff;
                    background-color: #0072FF;
                    z-index: 2;
                }
                .pulse {
@@ -548,7 +548,7 @@
                    height: 48px;
                    left: -13px;
                    top: -13px;
                    border: 1px solid #00e1ff;
                    border: 1px solid #0072FF;
                    -webkit-border-radius: 50%;
                    -moz-border-radius: 50%;
                    border-radius: 50%;
@@ -560,7 +560,7 @@
                    -webkit-animation-iteration-count: infinite;
                    -moz-animation-iteration-count: infinite;
                    animation-iteration-count: infinite;
                    box-shadow: 1px 1px 30px #00e1ff;
                    box-shadow: 1px 1px 30px #0072FF;
                }
                .pulse1 {
                    position: absolute;
@@ -568,7 +568,7 @@
                    height: 48px;
                    left: -13px;
                    top: -13px;
                    border: 1px solid #00e1ff;
                    border: 1px solid #0072FF;
                    -webkit-border-radius: 50%;
                    -moz-border-radius: 50%;
                    border-radius: 50%;
@@ -580,7 +580,7 @@
                    -webkit-animation-iteration-count: infinite;
                    -moz-animation-iteration-count: infinite;
                    animation-iteration-count: infinite;
                    box-shadow: 1px 1px 30px #00e1ff;
                    box-shadow: 1px 1px 30px #0072FF;
                }
            }
            & > div {
@@ -734,7 +734,7 @@
                height: 24px;
                border-radius: 50%;
                position: absolute;
                border: 1px solid rgba(0, 225, 255, 0.6);
                border: 1px solid rgba(0, 114, 255, 0.6);
                top: -12px;
                left: 2px;
@@ -748,7 +748,7 @@
                    -moz-border-radius: 50%;
                    border: 1px solid #0072ff;
                    border-radius: 50%;
                    background-color: #00e1ff;
                    background-color: #0072ff;
                    z-index: 2;
                }
                .pulse {
@@ -757,7 +757,7 @@
                    height: 48px;
                    left: -13px;
                    top: -13px;
                    border: 1px solid #00e1ff;
                    border: 1px solid #0072ff;
                    -webkit-border-radius: 50%;
                    -moz-border-radius: 50%;
                    border-radius: 50%;
@@ -769,7 +769,7 @@
                    -webkit-animation-iteration-count: infinite;
                    -moz-animation-iteration-count: infinite;
                    animation-iteration-count: infinite;
                    box-shadow: 1px 1px 30px #00e1ff;
                    box-shadow: 1px 1px 30px #0072ff;
                }
                .pulse1 {
                    position: absolute;
@@ -777,7 +777,7 @@
                    height: 48px;
                    left: -13px;
                    top: -13px;
                    border: 1px solid #00e1ff;
                    border: 1px solid #0072ff;
                    -webkit-border-radius: 50%;
                    -moz-border-radius: 50%;
                    border-radius: 50%;
@@ -789,7 +789,7 @@
                    -webkit-animation-iteration-count: infinite;
                    -moz-animation-iteration-count: infinite;
                    animation-iteration-count: infinite;
                    box-shadow: 1px 1px 30px #00e1ff;
                    box-shadow: 1px 1px 30px #0072ff;
                }
            }
            & > div {
src/views/riskWarningSys/warningBigScreen/index.vue
对比新文件
@@ -0,0 +1,407 @@
<template>
    <div class="container">
        <div class="header-content">
            <div class="logo">
                <img src="../../../assets/warningScreen/logo_dark.png" alt="" />
            </div>
            <div class="title">风险预警预报平台</div>
            <div class="title-right">
<!--                <img src="themeStyle.skinIcon" class="qiehuan" @click="changeTheme" />-->
                <span class="datetime">{{currentTime}}</span>
                <div class="btns">
                    <div class="fullbtn" @click="onScreenfullClick">
                        <div class="toFull">
                            <i class="iconfont" :title="isScreenfull ? $t('message.user.title6') : $t('message.user.title5')" :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i>
                        </div>
                        <div>全屏</div>
                    </div>
                    <div class="backBtn" @click="goBack()">
                        <img src="../../../assets/loginPage/back-icon.png"/>
                        <div>退出</div>
                    </div>
                </div>
            </div>
        </div>
        <div class="main-content">
            <div class="main-left">
                <div class="left-top">
                </div>
                <div class="left-mid">
                </div>
                <div class="left-bottom">
                </div>
            </div>
            <div class="main-middle">
                <div class="mid-top">
                </div>
                <div class="mid-bottom">
                    <div class="mid-bot-l">
                    </div>
                    <div class="mid-bot-m">
                    </div>
                    <div class="mid-bot-r">
                    </div>
                </div>
            </div>
            <div class="main-right">
                <div class="right-top">
                </div>
                <div class="right-mid">
                </div>
                <div class="right-bottom">
                </div>
            </div>
        </div>
    </div>
</template>
<script lang="ts">
    import screenfull from 'screenfull';
    import { toRefs, reactive, ref, onMounted } from 'vue';
    import { ElTable } from 'element-plus';
    import { FormInstance, FormRules, ElMessage } from 'element-plus';
    import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent/index.ts';
    import { useRouter } from 'vue-router';
    import {hiddenReportApi} from "/@/api/doublePreventSystem/report";
    import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice/index.ts';
    import * as echarts from 'echarts/core';
    import {TooltipComponent, TooltipComponentOption, LegendComponent, LegendComponentOption} from 'echarts/components';
    import {PieChart, PieSeriesOption} from 'echarts/charts';
    import {LabelLayout} from 'echarts/features';
    import {CanvasRenderer} from 'echarts/renderers';
    echarts.use([TooltipComponent, LegendComponent, PieChart, CanvasRenderer, LabelLayout]);
    // 定义接口来定义对象的类型
    interface stateType {
        isScreenfull: boolean;
        currentTime: string
    }
    export default {
        name: 'warningScreen',
        components: {},
        setup() {
            const router = useRouter();
            const state = reactive<stateType>({
                isScreenfull: false,
                currentTime: ''
            });
            // 页面载入时执行方法
            onMounted(() => {
                setInterval(() => {
                    state.currentTime = new Date().toLocaleString();
                    console.log(state.currentTime)
                }, 1000);
            });
            // 全屏
            const onScreenfullClick = () => {
                if (!screenfull.isEnabled) {
                    ElMessage.warning('暂不不支持全屏');
                    return false;
                }
                screenfull.toggle();
                screenfull.on('change', () => {
                    if (screenfull.isFullscreen) {
                        state.isScreenfull = true;
                    } else {
                        state.isScreenfull = false;
                    }
                });
            };
            // 返回上一页
            const goBack = () => {
                window.history.go(-1);
            };
            // 隐患状态列表
            // const getDeviceRecord = async () => {
            //     const data = { pageSize: state.pageSize, pageIndex: state.pageIndex};
            //     let res = await productionDeviceApi().getProductionDeviceList(data)
            //     if (res.data.code === '200'){
            //         state.deviceData = res.data.data
            //     } else {
            //         ElMessage({
            //             type: 'warning',
            //             message: res.data.msg
            //         });
            //     }
            // };
            // 隐患整改情况
            // const initRiskFix =()=>{
            //     var dom = document.getElementById('riskFix');
            //     var myChart = echarts.init(dom, null, {
            //         renderer: 'canvas',
            //         useDirtyRect: false
            //     });
            //     var app = {};
            //
            //     var option;
            //
            //     option = {
            //         tooltip: {
            //             trigger: 'item'
            //         },
            //         legend: {
            //             bottom: '5%',
            //             left: 'center'
            //         },
            //         series: [
            //             {
            //                 name: 'Access From',
            //                 type: 'pie',
            //                 radius: ['35%', '60%'],
            //                 avoidLabelOverlap: false,
            //                 itemStyle: {
            //                     borderRadius: 6,
            //                     borderColor: '#fff',
            //                     borderWidth: 2
            //                 },
            //                 label: {
            //                     alignTo: 'labelLine',
            //                     formatter: '{name|{b}}\n{value|{c}}',
            //                     minMargin: 5,
            //                     edgeDistance: 5,
            //                     lineHeight: 15,
            //                     rich: {
            //                         name: {
            //                             fontSize: 14,
            //                             color: '#666'
            //                         }
            //                     }
            //                 },
            //                 labelLine: {
            //                     length: 15,
            //                     maxSurfaceAngle: 80
            //                 },
            //                 emphasis: {
            //                     label: {
            //                         show: true,
            //                         fontSize: '40',
            //                         fontWeight: 'bold'
            //                     }
            //                 },
            //                 data: [
            //                     { value: 1048, name: '整改中' },
            //                     { value: 735, name: '待验收' },
            //                     { value: 580, name: '延期整改' },
            //                     { value: 484, name: '超期未整改' },
            //                     { value: 300, name: '已验收' }
            //                 ],
            //                 center: ['50%','40%']
            //             }
            //         ]
            //     };
            //
            //     if (option && typeof option === 'object') {
            //         myChart.setOption(option);
            //     }
            //
            //     window.addEventListener('resize', myChart.resize);
            // }
            return {
                router,
                onScreenfullClick,
                goBack,
                ...toRefs(state)
            };
        }
    };
</script>
<style scoped lang="scss">
    $homeNavLengh: 8;
    @media screen and (min-width: 1366px) {
    }
    @media screen and (min-width: 1024px) and (max-width: 1366px){
    }
    @media screen and (max-width: 1024px) {
    }
    .container {
        width: 100%;
        height: 100%;
        display: flex;
        flex-direction: column;
        align-items: center;
        background: url('../../../assets/warningScreen/riskprocast.jpg') no-repeat center;
        background-size: 100% 100%;
        color: #11FEEE;
        .header-content {
            width: 100%;
            height: 80px;
            padding: 0 20px;
            font-size: 20px;
            display: flex;
            align-items: center;
            justify-content: space-around;
            z-index: 9;
            .logo {
                width: 27%;
                display: flex;
                align-items: center;
                justify-content: center;
                img {
                    height: 35px;
                    width: 128px;
                }
            }
            .title {
                width: 46%;
                font-size: 26px;
                font-weight: bolder;
                line-height: 80px;
                text-align: center;
                letter-spacing: 2px;
            }
            .title-right {
                width: 27%;
                height: 90px;
                display: flex;
                align-items: center;
                justify-content: space-around;
                font-size: 15px;
                padding-left: 30px;
                .datetime {
                    color: #11FEEE;
                }
                .btns{
                    display: flex;
                    align-items: center;
                    &>div{
                        display: flex;
                        align-items: center;
                        align-items: center;
                        font-size: 15px;
                        margin-right: 20px;
                        img{
                            width: 16px;
                            height: auto;
                        }
                        div{
                            margin-left: 6px;
                        }
                    }
                }
            }
        }
        .main-content{
            width: 100%;
            height: 100%;
            padding: 20px;
            display: flex;
            align-items: center;
            justify-content: space-between;
            .main-left{
                width: calc(25% - 10px);
                height: 100%;
                display: flex;
                flex-direction: column;
                justify-content: space-between;
                align-items: flex-start;
                .left-top{
                    width: 100%;
                    height: calc((100%/3) - (40px/3));
                }
                .left-mid{
                    width: 100%;
                    height: calc((100%/3) - (40px/3));
                }
                .left-bottom{
                    width: 100%;
                    height: calc((100%/3) - (40px/3));
                }
            }
            .main-middle{
                width: calc(50% - 20px);
                height: 100%;
                display: flex;
                flex-direction: column;
                justify-content: space-between;
                align-items: flex-start;
                .mid-top{
                    width: 100%;
                    height: calc((200%/3) - (80px/3) + 20px);
                }
                .mid-bottom{
                    display: flex;
                    width: 100%;
                    height: calc(100% - (200%/3) + (80px/3) - 40px);
                    justify-content: space-between;
                    &>div {
                        position: relative;
                        width: calc((100% - 40px)/3);
                        border-radius: 8px;
                        overflow: hidden;
                        .chart-tit {
                            position: absolute;
                            left: 20px;
                            top: 20px;
                            font-weight: 700;
                            z-index: 3;
                        }
                    }
                }
            }
            .main-right{
                width: calc(25% - 10px);
                height: 100%;
                display: flex;
                flex-direction: column;
                justify-content: space-between;
                align-items: flex-start;
                .right-top{
                    width: 100%;
                    height: calc((100%/3) - (40px/3));
                }
                .right-mid{
                    width: 100%;
                    height: calc((100%/3) - (40px/3));
                }
                .right-bottom{
                    width: 100%;
                    height: calc((100%/3) - (40px/3));
                }
            }
        }
    }
    .el-input {
        width: 100% !important;
    }
    .el-date-editor::v-deep {
        width: 100%;
    }
    .el-select {
        width: 100%;
    }
</style>
src/views/specialWorkSystem/workApplyManage/workApplyForm/index.vue
@@ -219,9 +219,7 @@
            </div>
        </el-form>
        <div class="applyBtn">
            <el-col :span="24" class="submitBtn">
                <el-button type="primary" size="large" plain @click="handleApply(ruleFormRef2)">发起申请</el-button>
            </el-col>
            <el-button type="primary" size="large" plain @click="handleApply(ruleFormRef2)">发起申请</el-button>
        </div>
        <el-dialog v-model="dialogAddWorker" title="添加作业人">
            <el-form :model="addWorkerForm" label-width="120px" :rules="addWorkerRules" ref='ruleFormRef3'>
@@ -624,26 +622,20 @@
        .homeCard{
            width: 100%;
            padding: 20px;
            box-sizing: border-box;
            background: #fff;
            border-radius: 4px;
            margin-bottom: 20px;
            &:last-of-type{
                margin-bottom: 100px;
            }
        }
        .applyBtn{
            position: absolute;
            width: 100%;
            padding: 20px;
            background: #fff;
            bottom: 0;
            left: 0;
            height: 80px;
            z-index: 999;
            margin-bottom: 0;
            border-radius: 0;
            z-index: 5;
            box-shadow: 0 -3px 8px rgba(150,150,150,.1);
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .el-row{
            margin-bottom: 20px;
@@ -662,10 +654,6 @@
        }
        .el-cascader{
            width: 100% !important;
        }
        .submitBtn{
            display: flex;
            justify-content: center;
        }
    }
</style>
src/views/specialWorkSystem/workApplyManage/workTicket/index.vue
@@ -2,32 +2,20 @@
    <div class="home-container">
        <div style="height: 100%">
        <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef2">
<!--            <blind-panel-form :bpForm="form.addForm" ref="additionalForm"></blind-panel-form>-->
<!--            <cut-line-form :clForm="form.addForm" ref="additionalForm"></cut-line-form>-->
<!--            <dirt-work-form :dwForm="form.addForm" ref="additionalForm"></dirt-work-form>-->
            <fire-work-form :fwForm="form.addForm" ref="additionalForm"></fire-work-form>
<!--            <hang-load-form :hlForm="form.addForm" ref="additionalForm"></hang-load-form>-->
<!--            <high-work-form :hwForm="form.addForm" ref="additionalForm"></high-work-form>-->
<!--            <limited-space-form :lsForm="form.addForm" ref="additionalForm"></limited-space-form>-->
<!--            <temp-elect-form :teForm="form.addForm" ref="additionalForm"></temp-elect-form>-->
            <div>
            <div class="homeCard">
            <el-row>
                <el-col :span="3"><el-button type="primary" size="default" @click="dialogAddWorker = true">添加作业人</el-button></el-col>
                <el-col :span="21">
                    <el-table :data="form.workerList" style="width: 100%">
                        <el-table-column type="index" label="序号" width="100"/>
                        <el-table-column prop="worker" label="作业人"/>
                        <el-table-column prop="role" label="作业人角色" width="180"/>
                        <el-table-column prop="unit" label="所属单位" width="180" />
                        <el-table-column prop="certificate" label="证书名称" width="180" />
                        <el-table-column prop="certificateId" label="证书号" />
                        <el-table-column fixed="right" label="操作" align="center" width="180">
                            <template #default="scope">
                                <el-button link type="danger" size="small" @click="deleteRow(scope.$index)">删除</el-button>
                <el-col :span="12">
                    <el-form-item label="作业人" prop="operatorUid">
                        <el-input
                                v-model="form.operatorUid"
                                placeholder="请输入"
                                class="input-with-select"
                        >
                            <template #append>
                                <el-button :icon="Search" />
                            </template>
                        </el-table-column>
                    </el-table>
                        </el-input>
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
@@ -216,7 +204,6 @@
                </el-col>
            </el-row>
            </div>
            </div>
        </el-form>
        <div class="applyBtn">
            <el-button type="primary" size="large" plain @click="handleApply(ruleFormRef2)">发起申请</el-button>
@@ -350,56 +337,34 @@
    import { Search } from '@element-plus/icons-vue'
    import { ElMessage } from 'element-plus'
    import type { FormInstance, FormRules } from 'element-plus'
    let global: any = {
        homeChartOne: null,
        homeChartTwo: null,
        homeCharThree: null,
        dispose: [null, '', undefined],
    };
    import { fireApplyApi } from '/@/api/specialWorkSystem/workApply/fire';
    interface stateType {
        homeOne: Array <type>
    }
    interface type {
        form: Object
    }
    export default defineComponent({
        name: 'workApplyForm',
        components: {
            fireWorkForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/fireWorkForm.vue')),
            limitedSpaceForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/limitedSpaceForm.vue')),
            hangLoadForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/hangLoadForm.vue')),
            dirtWorkForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/dirtWorkForm.vue')),
            cutLineForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/cutLineForm.vue')),
            highWorkForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/highWorkForm.vue')),
            tempElectForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/tempElectForm.vue')),
            blindPanelForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/blindPanelForm.vue'))
        },
        name: 'workTicket',
        components: {},
        setup() {
            const userInfo = useUserInfo()
            const { userInfos } = storeToRefs(userInfo);
            const state  = reactive<stateType>({
                homeOne:[{id:1,name:'安全基础信息系统'},{id:2,name:'双重预防系统'},{id:3,name:'系统2'},{id:4,name:'系统3'},{id:5,name:'系统4'}],
                form: {
                    operatorUid: [],
                    workType: null,
                    workLevel: null,
                    workContent: '',
                    workLocation: '',
                    workDetail:{
                        hotMethod: '',
                        otherSpecialWork: []
                    },
                    expStartTime: '',
                    expEndTime: ''
                },
            });
            const form = reactive({
                addForm: {},
                workerList: [],
                workLocation: '',
                workTimeLine: '',
                workContent: '',
                workUnit: '',
                responsor: '',
                monitor: '',
                workMonitor: '',
                monitorStation: '',
                workhouseLeader: '',
                applyDate: '',
                otherSpecialWorks: [],
                protections: '',
                saftyFile: {},
                safetyMan: '',
                educated: ''
            })
            const dialogAddWorker = ref(false)
            const dialogAddFile = ref(false)
            const addWorkerForm = ref({
@@ -480,23 +445,6 @@
            const ruleFormRef = ref<FormInstance>()
            const ruleFormRef2 = ref<FormInstance>()
            const ruleFormRef3 = ref<FormInstance>()
            const applyRules = reactive<FormRules>({
                extraForm: [{type: 'object', required: true,message: '此处不能为空'}],
                workLocation: [{required: true,message: '此处不能为空'}],
                workTimeLine: [{required: true,message: '此处不能为空'}],
                workContent: [{required: true,message: '此处不能为空'}],
                workUnit: [{required: true,message: '此处不能为空'}],
                responsor: [{required: true,message: '此处不能为空'}],
                monitor: [{required: true,message: '此处不能为空'}],
                workMonitor: [{required: true,message: '此处不能为空'}],
                monitorStation: [{required: true,message: '此处不能为空'}],
                workhouseLeader: [{required: true,message: '此处不能为空'}],
                applyDate: [{required: true,message: '此处不能为空'}],
                otherSpecialWorks: [{type: 'array', required: true,message: '此处不能为空'}],
                protections: [{required: true,message: '此处不能为空'}],
                safetyMan: [{required: true,message: '此处不能为空'}],
                educated: [{required: true,message: '此处不能为空'}]
            })
            const addWorkerRules = reactive<FormRules>({
                worker: [{required: true,message: '此处不能为空'}],
                role: [{required: true,message: '此处不能为空'}],
@@ -599,7 +547,6 @@
                additionalForm,
                addWorkerRules,
                saftyFileRules,
                applyRules,
                isValid,
                handleApply,
                cancleAddFile,