lct
Your Name
2022-09-01 3947c8a497ac1b08399cebd7b81ce387332fbba9
lct
已修改15个文件
已添加17个文件
4212 ■■■■■ 文件已修改
config/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/workApply.js 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Tab/Plot.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Tab/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventAction/hiddenDanger/hiddenDangerReform/rectify/components/rectifyDialog.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventAction/hiddenDanger/inspectionRecord/components/detail.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventAction/riskLevelManage/controlAction/controlActionSelect/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventAction/riskLevelManage/controlAction/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventAction/riskLevelManage/fourColorMap/oneHundredAndThirty/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workFlow/approveRule/components/approveItemDialog.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workFlow/approveRule/components/approveLevelDialog.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workFlow/approveRule/components/approveRuleDialog.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workFlow/approveRule/index.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/components/brokenLog.vue 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/components/fireLog.vue 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/components/groundLog.vue 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/components/heightLog.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/components/hoistLog.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/components/plateLog.vue 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/components/powerLog.vue 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/components/spaceLog.vue 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/index.vue 701 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/components/broken.vue 274 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/components/fire.vue 294 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/components/ground.vue 330 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/components/height.vue 343 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/components/hoist.vue 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/components/plate.vue 421 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/components/power.vue 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/components/space.vue 278 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/index.vue 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
config/index.js
@@ -23,7 +23,7 @@
    // can be overwritten by process.env.HOST
    // if you want dev by ip, please set host: '0.0.0.0'
    host: 'localhost',
    host: '192.168.0.54',
    port: 8101, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
    autoOpenBrowser: true,
    errorOverlay: true,
src/api/workApply.js
对比新文件
@@ -0,0 +1,183 @@
import { getToken } from '../utils/auth'
import request from '@/utils/request'
export function workApplyApi() {
    return {
        // 分页获取申请列表
        getApplyListPage: (data) => {
            return request({
                headers: {
                    'Authorization': getToken()
                },
                url: process.env.BASE_API + `/work/apply/applying/page/list`,
                method: 'post',
                data: data
            });
        },
        // 分页获取申请列表
        getAllUsers: () => {
            return request({
                headers: {
                    'Authorization': getToken()
                },
                url: process.env.BASE_API + `/account/list`,
                method: 'get'
            });
        },
        // 动火申请
        postFireApply: (data) => {
            return request({
                headers: {
                    'Authorization': getToken()
                },
                url: process.env.BASE_API + `/work/apply/hot`,
                method: 'post',
                data: data
            });
        },
        // 受限空间申请
        postSpaceApply: (data) => {
            return request({
                headers: {
                    'Authorization': getToken()
                },
                url: process.env.BASE_API + `/work/apply/confinedspace`,
                method: 'post',
                data: data
            });
        },
        // 吊装申请
        postHoistApply: (data) => {
            return request({
                headers: {
                    'Authorization': getToken()
                },
                url: process.env.BASE_API + `/work/apply/hoisting`,
                method: 'post',
                data: data
            });
        },
        // 动土申请
        postGroundApply: (data) => {
            return request({
                headers: {
                    'Authorization': getToken()
                },
                url: process.env.BASE_API + `/work/apply/groundBreaking`,
                method: 'post',
                data: data
            });
        },
        // 断路申请
        postBrokenApply: (data) => {
            return request({
                headers: {
                    'Authorization': getToken()
                },
                url: process.env.BASE_API + `/work/apply/brokenCircuit`,
                method: 'post',
                data: data
            });
        },
        // 高处申请
        postHeightApply: (data) => {
            return request({
                headers: {
                    'Authorization': getToken()
                },
                url: process.env.BASE_API + `/work/apply/height`,
                method: 'post',
                data: data
            });
        },
        // 临时用电申请
        postPowerApply: (data) => {
            return request({
                headers: {
                    'Authorization': getToken()
                },
                url: process.env.BASE_API + `/work/apply/temporaryPower`,
                method: 'post',
                data: data
            });
        },
        // 盲板申请
        postPlateApply: (data) => {
            return request({
                headers: {
                    'Authorization': getToken()
                },
                url: process.env.BASE_API + `/work/apply/blindPlatePlugging`,
                method: 'post',
                data: data
            });
        },
        // 取消申请
        cancelApply: (data) => {
            return request({
                headers: {
                    'Authorization': getToken()
                },
                url: process.env.BASE_API + `/work/apply/cancel`,
                method: 'post',
                data: data
            });
        },
        // 查询进度
        getStatus: (data) => {
            return request({
                headers: {
                    'Authorization': getToken()
                },
                url: process.env.BASE_API + `/work/apply/applicant/approved/view`,
                method: 'post',
                data: data
            });
        },
        // 获取图片上传路径
        getUploadUrl: (name) => {
            return request({
                headers: {
                    'Authorization': getToken()
                },
                url: process.env.BASE_API + `/specialWork/file/getPresignUrl`,
                method: 'post',
                data: { prefixName: name.split('.')[0], suffixName: name.split('.')[1] }
            });
        },
        // 上传图片
        uploadFile: (path) => {
            return request({
                headers: {
                    contentType: 'application/json;charset=UTF-8'
                },
                url: path,
                method: 'put',
                data: file
            });
        },
        // 删除图片
        deleteFile: (data) => {
            return request({
                url: process.env.BASE_API + `/specialWork/file/deleteFile`,
                method: 'post',
                data: data
            });
        }
    };
}
src/components/Tab/Plot.vue
@@ -176,7 +176,6 @@
                this.showCreatePanel = true;
            },
            removeHandle(label) {
                debugger
                if (!global.map) return;
                for(let i in this.colorMapList){
                    if(JSON.parse(this.colorMapList[i].properties).attr.id === label.attr.id){
@@ -210,7 +209,6 @@
                };
            },
            async createHandle() {
                // debugger
                // this.form.geometry = JSON.stringify(this.form.geometry)
                // this.form.properties = JSON.stringify(this.form.properties)
                // let res = await addMap(this.form)
src/components/Tab/index.vue
@@ -73,7 +73,6 @@
  },
  methods : {
      getList(){
          debugger
          this.$emit('getList')
      }
  }
src/views/doublePreventAction/hiddenDanger/hiddenDangerReform/rectify/components/rectifyDialog.vue
@@ -282,7 +282,6 @@
                }else{
                    this.dialogFormVisible = true
                    this.dataForm = row
                    debugger
                    this.fileOneList = row.reportImages.map(item => {
                        return  process.env.IMG_API + item
                    })
src/views/doublePreventAction/hiddenDanger/inspectionRecord/components/detail.vue
@@ -131,7 +131,6 @@
        },
        methods:{
            showInspectionRecordForm(type,value) {
                debugger
                if (type === '查看') {
                    this.isShowRecordDialog = true;
                    let recordFormValue = JSON.parse(JSON.stringify(value));
src/views/doublePreventAction/riskLevelManage/controlAction/controlActionSelect/index.vue
@@ -273,7 +273,6 @@
        },
        changeClassifyTwoList(){
            debugger
            if(this.listQuery.classify1 === 1){
                this.classifyTwoList = this.classifyOneList[0].subClassify
                this.listQuery.classify2 = ''
src/views/doublePreventAction/riskLevelManage/controlAction/index.vue
@@ -559,7 +559,6 @@
            },
            giveValue(value){
                debugger
                this.$emit('giveRiskControlId',this.riskControlMeasureIdList)
                // this.$emit('giveRiskControlId',value)
            },
src/views/doublePreventAction/riskLevelManage/fourColorMap/oneHundredAndThirty/index.vue
@@ -121,7 +121,6 @@
                let params = {}
                params['eType'] = 2
                getMap(params).then(res => {
                    debugger
                    this.colorMapList = JSON.parse(JSON.stringify(res.data.result))
                    const list = this.colorMapList.map(item => {
                        return {
src/views/login/index.vue
@@ -92,7 +92,6 @@
                _this.loading = true
                loginByUsername(loginForm)
                    .then((response) => {
                        debugger
                        const res = response.data
                        if (res.code == 200) {
                            sessionStorage.setItem('isdepartment',res.result.isdepartment)
src/views/specialWorkManage/workFlow/approveRule/components/approveItemDialog.vue
@@ -90,6 +90,7 @@
                    { id: 3, name: '填空' }
                ];
            } else {
                this.personType = 2
                this.typeList = [
                    { id: 2, name: '选项' },
                    { id: 3, name: '填空' }
src/views/specialWorkManage/workFlow/approveRule/components/approveLevelDialog.vue
@@ -33,7 +33,6 @@
                    </el-form-item>
                </el-col>
                <div class="checkUnit-point">
                            <div class="filter-container">
                                <el-button size="default" type="primary" @click="openApproveActionDialog('新增', '', 0)">
                                    <el-icon>
@@ -67,7 +66,7 @@
                                    <template slot-scope="scope">
                                        <div v-for="item in standardList">
                                            <div v-if="scope.row.standId === item.ruleStandId">
                                                <span>{{item.text}}</span>
                                                <span>{{item.ruleStandTypeDesc}}</span>
                                            </div>
                                        </div>
                                    </template>
@@ -202,7 +201,6 @@
        },
        achieveApprovalItem(value, title, index) {
            debugger
            if (title === '新增审批项') {
                this.approveLevelForm.itemList.push(value);
            } else {
src/views/specialWorkManage/workFlow/approveRule/components/approveRuleDialog.vue
@@ -9,7 +9,7 @@
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="部门名称" prop="depId">
                            <el-select v-model="approveRuleForm.depId" @change="clearValue" :disabled="!disabled" placeholder="请选择作业类型" class="input-add">
                            <el-select v-model="approveRuleForm.depId" :disabled="!disabled" placeholder="请选择部门名称" class="input-add">
                                <el-option v-for="item in departmentList" :key="item.id" :value="item.id" :label="item.department"></el-option>
                            </el-select>
                        </el-form-item>
@@ -30,7 +30,7 @@
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="创建审批链">
                            <div style="width: 100%;padding-bottom: 10px" v-show="disabled">
                            <div style="width: 100%;padding-bottom: 10px" v-if="disabled">
                                <el-button type="primary" size="default" @click="openApproveLevelDialog('新增', '')">新增审批层级</el-button>
                            </div>
                            <div style="width: 100%; margin-left: -30px">
@@ -92,7 +92,7 @@
                                            </div>
                                        </el-card>
                                    </div>
                                    <div v-show="disabled">
                                    <div v-if="disabled">
                                        <el-button type="primary" style="margin-left: 10px;margin-bottom: 10px" size="default" @click="openApproveLevelDialog('修改', item)">修改</el-button>
                                        <el-button type="danger" size="default" @click="deleteApproveLevel(index, item)">删除</el-button>
                                    </div>
@@ -102,7 +102,7 @@
                    </el-col>
            </el-form>
            <template #footer>
                <div v-show="disabled" class="dialog-footer" align="right">
                <div v-if="disabled" class="dialog-footer" align="right">
                    <el-button type="warning" @click="ifShowApproveRuleDialog = false" size="default" plain>取消</el-button>
                    <el-button type="primary" @click="submitApproveRule()" size="default">确认</el-button>
                </div>
@@ -114,6 +114,7 @@
<script>
import approveLevelDialog from './approveLevelDialog.vue';
import {approveRuleApi} from "../../../../../api/approveRule";
export default {
    name: 'approveRuleDialog',
@@ -182,6 +183,7 @@
        },
        achieveApprovalLevel(value, title) {
            debugger
            if (title === '新增审批层级') {
                if (this.approveRuleForm.stepList.length === 0) {
                    value.stepSerial = 1;
@@ -222,7 +224,7 @@
                this.approveRuleForm = JSON.parse(JSON.stringify(value));
                this.setValue(value.workType);
            } else {
                this.disabled = false;
                this.disabled = true;
                this.title = '查看审批规则';
                this.setValue(value.workType);
                this.approveRuleForm = JSON.parse(JSON.stringify(value));
src/views/specialWorkManage/workFlow/approveRule/index.vue
@@ -42,16 +42,20 @@
                        <el-table-column property="ruleName" label="任务名称" />
                        <el-table-column property="workType" label="作业类型">
                            <template slot-scope="scope">
                                <span>
                                    {{ parseNumber(scope.row.workType, '作业类型') }}
                                </span>
                                <div v-for="item in workTypeList">
                                    <div v-if="scope.row.workType === item.id">
                                        <span>{{item.name}}</span>
                                    </div>
                                </div>
                            </template>
                        </el-table-column>
                        <el-table-column property="workLevel" label="作业等级">
                            <template slot-scope="scope">
                                <span>
                                    {{ parseNumber(scope.row.workLevel, '作业等级') }}
                                </span>
                                <div v-for="item in workLevelList">
                                    <div v-if="scope.row.workLevel === item.id">
                                        <span>{{item.name}}</span>
                                    </div>
                                </div>
                            </template>
                        </el-table-column>
                        <el-table-column prop="createUname" label="创建人" show-overflow-tooltip></el-table-column>
@@ -189,9 +193,8 @@
                confirmButtonText: '确认',
                cancelButtonText: '取消',
                type: 'warning'
            })
                .then(async () => {
                    let res = await approveRuleApi().deleteApproveRule({ ids: [row.id] });
            }).then(async () => {
                    let res = await approveRuleApi().deleteApproveRule({ ids: [row.ruleId] });
                    this.deleteList.ids = [];
                    if (res.data.code === '200') {
                        this.$message({
src/views/specialWorkManage/workTicket/myJobApply/components/brokenLog.vue
对比新文件
@@ -0,0 +1,96 @@
<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-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>
            <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.statusDesc" readonly />
            </el-form-item>
        </el-form>
    </div>
</template>
<script>
    export default{
        name: 'space',
        components: {},
        props:['details'],
        data(){
            return{
            }
        }
    };
</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/myJobApply/components/fireLog.vue
对比新文件
@@ -0,0 +1,87 @@
<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.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.statusDesc" readonly />
            </el-form-item>
        </el-form>
    </div>
</template>
<script>
    export default{
        name: 'fire',
        components: {},
        props:['details'],
        data(){
            return{
            }
        }
    };
</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/myJobApply/components/groundLog.vue
对比新文件
@@ -0,0 +1,97 @@
<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-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>
            <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.statusDesc" readonly />
            </el-form-item>
        </el-form>
    </div>
</template>
<script>
    export default{
        name: 'space',
        components: {},
        props:['details'],
        data(){
            return{
            }
        }
    };
</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/myJobApply/components/heightLog.vue
对比新文件
@@ -0,0 +1,90 @@
<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.statusDesc" readonly />
            </el-form-item>
        </el-form>
    </div>
</template>
<script>
    export default {
        name: 'space',
        components: {},
        props:['details'],
        data(){
            return{
            }
        }
    };
</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/myJobApply/components/hoistLog.vue
对比新文件
@@ -0,0 +1,90 @@
<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.statusDesc" readonly />
            </el-form-item>
        </el-form>
    </div>
</template>
<script>
    export default{
        name: 'space',
        components: {},
        props:['details'],
        data(){
            return{
            }
        }
    };
</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/myJobApply/components/plateLog.vue
对比新文件
@@ -0,0 +1,114 @@
<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-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>
            <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.statusDesc" readonly />
            </el-form-item>
        </el-form>
    </div>
</template>
<script>
    export default{
        name: 'space',
        components: {},
        props:['details'],
        data(){
            return{
            }
        }
    };
</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/myJobApply/components/powerLog.vue
对比新文件
@@ -0,0 +1,93 @@
<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.statusDesc" readonly />
            </el-form-item>
        </el-form>
    </div>
</template>
<script>
    export default{
        name: 'space',
        components: {},
        props:['details'],
        data(){
            return{
            }
        }
    };
</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/myJobApply/components/spaceLog.vue
对比新文件
@@ -0,0 +1,93 @@
<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.statusDesc" readonly />
            </el-form-item>
        </el-form>
    </div>
</template>
<script>
    export default{
        name: 'space',
        components: {},
        props:['details'],
        data(){
            return{
            }
        }
    };
</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/myJobApply/index.vue
@@ -1,13 +1,704 @@
<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="24" class="mainCardBtn">
                                    <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>
                            </el-row>
                            <el-table ref="multipleTableRef" :data="applyData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
                                <el-table-column property="workPermitNo" label="作业申请单号" width="180" />
                                <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 link type="text"   @click="viewRecord(scope.row)">查看</el-button>
                                        <el-button link type="text"   @click="viewStatus(scope.row)">进度</el-button>
                                        <el-button link type="text"  @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="作业申请进度" width="60%">
                    <el-form v-if="approveInfo.operators.length > 0" style="margin-bottom: 40px">
                        <el-form-item label="申请作业人">
                            <el-input v-model="approveInfo.operators" readonly type="textarea" />
                        </el-form-item>
                    </el-form>
                    <div style="display: flex; flex-direction: column-reverse">
                        <div v-for="(item, index) in approveInfo.approvalSteps" class="stepItem">
                            <div class="stepNum">{{ item.stepSerial }}</div>
                            <div class="stepCard">
                                <el-card class="box-card" shadow="always">
                                    <div class="text">
                                        审批结果:<span>{{ item.approvalResultDesc }}</span>
                                    </div>
                                    <div class="text">
                                        审批类型:<span>{{ item.typeDesc }}</span>
                                    </div>
                                    <div class="text" v-show="item.startApprovalTime != null">
                                        开始时间:<span>{{ item.startApprovalTime }}</span>
                                    </div>
                                    <div class="approveUnit">
                                        <div class="item-tit"><span>审批人</span><span>审批状态</span></div>
                                        <div class="item-cont" v-for="i in item.stepUnits">
                                            <span>{{ i.approvalUname }}</span
                                            ><span>{{ i.resultDesc }}</span>
                                        </div>
                                    </div>
                                    <div class="approveItem">
                                        <div class="item-tit">
                                            <span>审批项目</span>
<!--                                            <span>类型</span>-->
                                            <div>措施标准</div>
                                        </div>
                                        <div class="item-cont" v-for="i in item.stepItems">
                                            <span>{{ i.itemName }}</span>
<!--                                            <span>{{ i.typeDesc }}</span>-->
                                            <div v-if="i.measure !== null">
                                                <div>
                                                    <span>作业类型:</span><span>{{ i.measure.workTypeDesc }}</span>
                                                </div>
                                                <div>
                                                    <span>措施内容:</span><span>{{ i.measure.context }}</span>
                                                </div>
                                            </div>
                                            <div v-if="i.stand !== null">
                                                <div>
                                                    <span>标题名称:</span><span>{{ i.stand.title }}</span>
                                                </div>
                                                <div>
                                                    <span>标准内容:</span><span>{{ i.stand.typeDesc }}</span>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    <div class="text" v-show="item.expFinishApprovalTime != null">
                                        期望结束时间:<span>{{ item.expFinishApprovalTime }}</span>
                                    </div>
                                    <div class="text" v-show="item.finishApprovalTime != null">
                                        结束时间:<span>{{ item.finishApprovalTime }}</span>
                                    </div>
                                </el-card>
                            </div>
                        </div>
                    </div>
                </el-dialog>
                <el-dialog v-model="deleteDialog" title="提示" width="30%" center>
                    <span>您确定要取消该条申请吗?</span>
                    <template #footer>
                        <span class="dialog-footer">
                            <el-button @click="deleteDialog = false" size="default">取消</el-button>
                            <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
                        </span>
                    </template>
                </el-dialog>
<!--            </el-tab-pane>-->
<!--            <el-tab-pane label="已通过" name="2">-->
<!--                <div style="height: 100%">-->
<!--                    <el-row class="homeCard">-->
<!--                        <el-col :span="8">-->
<!--                            <div class="grid-content topInfo">-->
<!--                                <el-input v-model="searchWord" placeholder="作业证名称"></el-input>-->
<!--                                <el-button type="primary">查询</el-button>-->
<!--                                <el-button plain>重置</el-button>-->
<!--                            </div>-->
<!--                        </el-col>-->
<!--                    </el-row>-->
<!--                    <div class="homeCard">-->
<!--                        <div class="main-card">-->
<!--                            <el-table ref="multipleTableRef" :data="passedData" style="width: 100%" height="calc(100% - 48px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">-->
<!--                                <el-table-column type="selection" width="55" />-->
<!--                                <el-table-column type="index" label="编号" width="200" />-->
<!--                                <el-table-column property="level" label="作业证等级" width="180" sortable />-->
<!--                                <el-table-column property="applyDate" label="申请日期" sortable />-->
<!--                                <el-table-column property="name" label="申请人" width="180" />-->
<!--                                <el-table-column property="department" label="申请部门" width="180" />-->
<!--                                <el-table-column label="申请状态" width="180">-->
<!--                                    <template slot-scope="scope">-->
<!--                                        <el-tag type="success">{{ scope.row.status }}</el-tag>-->
<!--                                    </template>-->
<!--                                </el-table-column>-->
<!--                            </el-table>-->
<!--                            <div class="pageBtn">-->
<!--                                <el-pagination v-model:currentPage="pageIndex2" v-model:page-size="pageSize2" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize2" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" />-->
<!--                            </div>-->
<!--                        </div>-->
<!--                    </div>-->
<!--                </div>-->
<!--            </el-tab-pane>-->
<!--        </el-tabs>-->
    </div>
</template>
<script>
export default {
    name: "index"
}
import fire from './components/fireLog'
import space from './components/spaceLog'
import hoist from './components/hoistLog'
import broken from './components/groundLog'
import ground from './components/brokenLog'
import height from './components/heightLog'
import power from './components/powerLog'
import plate from './components/plateLog'
import {workApplyApi} from "../../../../api/workApply";
export default{
    name: 'myApply',
    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 workApplyApi().getApplyListPage(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
                });
            }
        },
        toNames(row, column, cellValue, index) {
            if (row.list == []) {
                return [];
            } else {
                const nameList = [];
                for (let i = 0; i < row.list.length; i++) {
                    for (let t = 0; t < this.workTimeList.length; t++) {
                        if (row.list[i] == this.workTimeList[t].id) {
                            nameList.push(this.workTimeList[t].name);
                        }
                    }
                }
                return nameList.join();
            }
        },
        reLoadData() {
            this.getListByPage();
        },
        // 填写表单
        toApply() {
            this.$router.push({
                path: 'workApply'
            });
        },
        handleClick(tab, event) {
            console.log(tab, event);
        },
        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 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');
            } else {
                this.$message({
                    type: 'warning',
                    message: res.data.msg
                });
            }
        },
        deleteRecordBtn(row) {
            this.deleteId = row.workApplyId;
            this.deleteDialog = true;
        },
        async deleteRecord(data) {
            let res = await workApplyApi().cancelApply(data);
            if (res.data.code === '200') {
                this.$message({
                    type: 'success',
                    message: res.data.msg
                });
                await this.getListByPage();
            } else {
                this.$message({
                    type: 'warning',
                    message: res.data.msg
                });
            }
        },
        conFirmDelete() {
            this.deleteRecord({ workApplyId: this.deleteId });
            this.deleteDialog = false;
        },
        viewRecord(row) {
            this.dialogType = row.workType
            this.details = JSON.parse(JSON.stringify(row));
            if(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;
                });
            }
            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;
                });
            }
            if(this.details.workDetail.gbPath){
                this.details.workDetail.gbPath = this.details.workDetail.gbPath.split(',')
            }
            if(this.details.workDetail.bcPath){
                this.details.workDetail.bcPath = this.details.workDetail.bcPath.split(',')
            }
            if(this.details.workDetail.bpLocationMapPath){
                this.details.workDetail.bpLocationMapPath = this.details.workDetail.bpLocationMapPath.split(',')
            }
            this.dialogDetails = true;
        },
        handleSizeChange1(val) {
            this.pageSize1 = val;
            this.getListByPage();
        },
        handleCurrentChange1(val) {
            this.pageIndex1 = val;
            this.getListByPage();
        }
    },
};
</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/workApply/components/broken.vue
对比新文件
@@ -0,0 +1,274 @@
<template>
    <div class="home-container">
        <div style="height: 100%">
        <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
            <div class="homeCard">
            <el-row>
                <el-col :span="12">
                    <el-form-item label="作业人" prop="operatorUids">
                        <el-select v-model="form.operatorUids" multiple>
                            <el-option
                                    v-for="item in workerList"
                                    :key="item.uid"
                                    :label="item.username"
                                    :value="item.uid"
                            />
                        </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
                                v-model="form.workContent"
                                autosize
                                type="textarea"
                                placeholder="请输入作业内容"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="作业地址" prop="workLocation">
                        <el-input
                                v-model="form.workLocation"
                                autosize
                                type="textarea"
                                placeholder="请输入作业地址"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="作业单位" prop="workDetail.operationDepId">
                        <el-select v-model="form.workDetail.operationDepId">
                            <el-option
                                    v-for="item in csDepList"
                                    :key="item.value"
                                    :label="item.label"
                                    :value="item.value"
                            />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="断路原因" prop="workDetail.bcReason">
                        <el-input
                                v-model="form.workDetail.bcReason"
                                autosize
                                type="textarea"
                                placeholder="请输入"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="断路地段说明" prop="workDetail.bcExplain">
                        <el-input
                                v-model="form.workDetail.bcExplain"
                                autosize
                                type="textarea"
                                placeholder="请输入"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="涉及相关部门" prop="workDetail.involvedDepIds">
                        <el-cascader v-model="form.workDetail.involvedDepIds" :options="departList" :props="casProps" :show-all-levels="false" @change="handleChange" />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="24">
                    <el-form-item label="图片上传" prop="workDetail.bcPath">
                        <el-upload accept="image/*" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl">
                            <el-icon><Plus /></el-icon>
                            <template #tip>
                                <div class="el-upload__tip">上传jpg/png图片尺寸小于500KB,最多可上传5张</div>
                            </template>
                        </el-upload>
                    </el-form-item>
                </el-col>
            </el-row>
            </div>
        </el-form>
        <div class="applyBtn">
            <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
        </div>
    </div>
    <el-dialog v-model="dialogVisible">
        <img w-full :src="dialogImageUrl" alt="Preview Image" />
    </el-dialog>
    </div>
</template>
<script>
    export default{
        name: 'brokenForm',
        components: {},
        props:['workerList','departList'],
        data(){
            return{
                form: {
                    operatorUids: [],
                    workType: 5,
                    workLevel: 0,
                    workContent: '',
                    workLocation: '',
                    workDetail:{
                        operationDepId: null,
                        bcReason: '',
                        bcExplain: '',
                        bcPath: [],
                        involvedDepIds: []
                    },
                    workTimeLine: [],
                    expStartTime: '',
                    expEndTime: ''
                },
                fileList: [],
                imgLimit: 5,
                uploadUrl: '',
                dialogVisible: false,
                dialogImageUrl: null,
                csDepList: [
                    {
                        label: "单位一",
                        value: 1
                    },
                    {
                        label: "单位二",
                        value: 2
                    },
                    {
                        label: "单位三",
                        value: 3
                    },
                    {
                        label: "单位四",
                        value: 4
                    },
                    {
                        label: "单位五",
                        value: 5
                    },
                    {
                        label: "单位六",
                        value: 6
                    }
                ],
                casProps: {
                    emitPath: false,
                    value: 'depId',
                    label: 'depName',
                    multiple: true
                },
                applyRules:{
                    operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workLocation: [{ 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' }],
                    "workDetail.bcExplain": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.bcPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
                }
            }
        },
        methods:{
            async submitForm(formEl) {
                if (!formEl) return
                await formEl.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(',')
                        const res = await workApplyApi().postBrokenApply(data)
                        if (res.data.code === '200') {
                            ElMessage({
                                type: 'success',
                                message: '提交成功!'
                            });
                            formEl.resetFields()
                            state.form.workDetail.bcPath = []
                            state.fileList = []
                        } else {
                            ElMessage({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    } else {
                        console.log('error submit!', fields)
                    }
                })
            }
        },
    };
</script>
<style scoped lang="scss">
    .home-container {
        height: 100%;
        overflow: hidden;
        position: relative;
        .homeCard{
            width: 100%;
            padding: 20px;
            box-sizing: border-box;
            background: #fff;
            border-radius: 4px;
            margin-bottom: 20px;
        }
        .applyBtn{
            width: 100%;
            background: #fff;
            padding-top: 15px;
            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;
        }
        .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/workApply/components/fire.vue
对比新文件
@@ -0,0 +1,294 @@
<template>
    <div class="home-container">
        <div style="height: 100%">
        <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
            <div class="homeCard">
            <el-row>
                <el-col :span="12">
                    <el-form-item label="作业人" prop="operatorUids">
                        <el-select v-model="form.operatorUids" multiple>
                            <el-option
                                    v-for="item in workerList"
                                    :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="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="workLevel">
                        <el-select v-model="form.workLevel">
                            <el-option
                                    v-for="item in workLevelList"
                                    :key="item.value"
                                    :label="item.label"
                                    :value="item.value"
                            />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="作业时间" prop="workTimeLine">
                        <el-date-picker
                                v-model="form.workTimeLine"
                                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
                                v-model="form.workContent"
                                autosize
                                type="textarea"
                                placeholder="请输入作业内容"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="作业地址" prop="workLocation">
                        <el-input
                                v-model="form.workLocation"
                                autosize
                                type="textarea"
                                placeholder="请输入作业地址"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="动火方式" prop="workDetail.hotMethod">
                        <el-input
                                v-model="form.workDetail.hotMethod"
                                autosize
                                type="textarea"
                                placeholder="请输入动火方式"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="关联作业" prop="workDetail.otherSpecialWork">
                        <el-select v-model="form.workDetail.otherSpecialWork" multiple>
                            <el-option
                                    v-for="item in otherWorkList"
                                    :key="item.value"
                                    :label="item.label"
                                    :value="item.value"
                            />
                        </el-select>
                    </el-form-item>
                </el-col>
            </el-row>
            </div>
        </el-form>
        <div class="applyBtn">
            <el-button type="primary" size="large" plain @click="submitForm()">发起申请</el-button>
        </div>
    </div>
    </div>
</template>
<script>
    import {workApplyApi} from "../../../../../api/workApply";
    export default{
        name: 'fireForm',
        components: {},
        props:['workerList'],
        data(){
            return{
                form: {
                    operatorUids: [],
                    workType: 1,
                    workLevel: null,
                    workContent: '',
                    workLocation: '',
                    workDetail:{
                        hotMethod: '',
                        otherSpecialWork: []
                    },
                    workTimeLine: [],
                    expStartTime: '',
                    hazardIdentification: '',
                    expEndTime: ''
                },
                workTypeList: [
                    {
                        label: "类型一",
                        value: 1
                    },
                    {
                        label: "类型二",
                        value: 2
                    }
                ],
                workLevelList: [
                    {
                        label: "一级动火作业",
                        value: 1
                    },
                    {
                        label: "二级动火作业",
                        value: 2
                    },
                    {
                        label: "特级动火作业",
                        value: 3
                    }
                ],
                otherWorkList: [
                    {
                        label: "动火作业",
                        value: 1
                    },
                    {
                        label: "受限空间作业",
                        value: 2
                    },
                    {
                        label: "吊装作业",
                        value: 3
                    },
                    {
                        label: "动土作业",
                        value: 4
                    },
                    {
                        label: "断路作业",
                        value: 5
                    },
                    {
                        label: "高处作业",
                        value: 6
                    },
                    {
                        label: "临时用电作业",
                        value: 7
                    },
                    {
                        label: "盲板抽堵作业",
                        value: 8
                    }
                ],
                applyRules:{
                    operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'change' }],
                    workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workLevel: [{ required: true, message: '该内容不能为空', trigger: 'change' }],
                    workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.hotMethod": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
                }
            }
        },
        methods:{
            submitForm() {
                this.$refs["ruleFormRef"].validate(async (valid, fields) => {
                    if (valid) {
                        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().postFireApply(data)
                        if (res.data.code === '200') {
                            this.$message({
                                type: 'success',
                                message: '提交成功!'
                            });
                            this.$refs["ruleFormRef"].clearValidate()
                            this.form = {
                                operatorUids: [],
                                workType: 1,
                                workLevel: null,
                                workContent: '',
                                workLocation: '',
                                workDetail:{
                                    hotMethod: '',
                                    otherSpecialWork: []
                                },
                                workTimeLine: [],
                                expStartTime: '',
                                hazardIdentification: '',
                                expEndTime: ''
                            }
                        } else {
                            this.$message({
                                type: 'warning',
                                message: res.data.message
                            });
                        }
                    } else {
                        console.log('error submit!', fields)
                    }
                })
            }
        },
    };
</script>
<style scoped lang="scss">
    .home-container {
        height: 100%;
        overflow: hidden;
        position: relative;
        .homeCard{
            width: 100%;
            padding: 20px;
            box-sizing: border-box;
            background: #fff;
            border-radius: 4px;
            margin-bottom: 20px;
        }
        .applyBtn{
            width: 100%;
            background: #fff;
            padding-top: 15px;
            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;
        }
        .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/workApply/components/ground.vue
对比新文件
@@ -0,0 +1,330 @@
<template>
    <div class="home-container">
        <div style="height: 100%">
        <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
            <div class="homeCard">
            <el-row>
                <el-col :span="12">
                    <el-form-item label="作业人" prop="operatorUids">
                        <el-select v-model="form.operatorUids" multiple>
                            <el-option
                                v-for="item in workerList"
                                :key="item.uid"
                                :label="item.username"
                                :value="item.uid"
                            />
                        </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
                                v-model="form.workContent"
                                autosize
                                type="textarea"
                                placeholder="请输入作业内容"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="作业地址" prop="workLocation">
                        <el-input
                                v-model="form.workLocation"
                                autosize
                                type="textarea"
                                placeholder="请输入作业地址"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="作业单位" prop="workDetail.operationDepId">
                        <el-select v-model="form.workDetail.operationDepId">
                            <el-option
                                    v-for="item in csDepList"
                                    :key="item.value"
                                    :label="item.label"
                                    :value="item.value"
                            />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="范围" prop="workDetail.gbScope">
                        <el-input
                                v-model="form.workDetail.gbScope"
                                autosize
                                type="textarea"
                                placeholder="请输入"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="动土方式" prop="workDetail.gbMethod">
                        <el-input
                                v-model="form.workDetail.gbMethod"
                                autosize
                                type="textarea"
                                placeholder="请输入"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="关联作业" prop="workDetail.otherSpecialWork">
                        <el-select v-model="form.workDetail.otherSpecialWork" multiple>
                            <el-option v-for="item in otherWorkList" :key="item.value" :label="item.label" :value="item.value" />
                        </el-select>
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="24">
                    <el-form-item label="图片上传" prop="workDetail.gbPath">
                        <el-upload accept="image/*" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl">
                            <el-icon><Plus /></el-icon>
                            <template #tip>
                                <div class="el-upload__tip">上传jpg/png图片尺寸小于500KB,最多可上传5张</div>
                            </template>
                        </el-upload>
                    </el-form-item>
                </el-col>
            </el-row>
            </div>
        </el-form>
        <div class="applyBtn">
            <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
        </div>
    </div>
    <el-dialog v-model="dialogVisible">
        <img w-full :src="dialogImageUrl" alt="Preview Image" />
    </el-dialog>
    </div>
</template>
<script>
    export default {
        name: 'groundForm',
        components: {},
        props:['workerList'],
        data(){
            return{
                form: {
                    operatorUids: [],
                    workType: 4,
                    workLevel: 0,
                    workContent: '',
                    workLocation: '',
                    workDetail:{
                        operationDepId: null,
                        gbScope: '',
                        gbMethod: '',
                        gbPath: [],
                        otherSpecialWork: []
                    },
                    workTimeLine: [],
                    expStartTime: '',
                    expEndTime: ''
                },
                fileList: [],
                imgLimit: 5,
                uploadUrl: '',
                dialogVisible: false,
                dialogImageUrl: null,
                csDepList: [
                    {
                        label: "单位一",
                        value: 1
                    },
                    {
                        label: "单位二",
                        value: 2
                    },
                    {
                        label: "单位三",
                        value: 3
                    },
                    {
                        label: "单位四",
                        value: 4
                    },
                    {
                        label: "单位五",
                        value: 5
                    },
                    {
                        label: "单位六",
                        value: 6
                    }
                ],
                otherWorkList: [
                    {
                        label: '动火作业',
                        value: 1
                    },
                    {
                        label: '受限空间作业',
                        value: 2
                    },
                    {
                        label: '吊装作业',
                        value: 3
                    },
                    {
                        label: '动土作业',
                        value: 4
                    },
                    {
                        label: '断路作业',
                        value: 5
                    },
                    {
                        label: '高处作业',
                        value: 6
                    },
                    {
                        label: '临时用电作业',
                        value: 7
                    },
                    {
                        label: '盲板抽堵作业',
                        value: 8
                    }
                ],
                applyRules:{
                    operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.operationDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.gbScope": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.gbMethod": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.gbPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
                }
            }
        },
        methods:{
            async submitForm(formEl) {
                if (!formEl) return
                await formEl.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.otherSpecialWork = data.workDetail.otherSpecialWork.join(',')
                        data.workDetail.gbPath = data.workDetail.gbPath.join(',')
                        const res = await workApplyApi().postGroundApply(data)
                        if (res.data.code === '200') {
                            ElMessage({
                                type: 'success',
                                message: '提交成功!'
                            });
                            formEl.resetFields()
                            state.form.workDetail.gbPath = []
                            state.fileList = []
                        } else {
                            ElMessage({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    } else {
                        console.log('error submit!', fields)
                    }
                })
            }
        },
    };
</script>
<style scoped lang="scss">
    .avatar-uploader .avatar {
        width: 178px;
        height: 178px;
        display: block;
    }
    .home-container {
        height: 100%;
        overflow: hidden;
        position: relative;
        .homeCard{
            width: 100%;
            padding: 20px;
            box-sizing: border-box;
            background: #fff;
            border-radius: 4px;
            margin-bottom: 20px;
        }
        .applyBtn{
            width: 100%;
            background: #fff;
            padding-top: 15px;
            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;
        }
        .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>
<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;
        color: #8c939d;
        width: 178px;
        height: 178px;
        text-align: center;
    }
</style>
src/views/specialWorkManage/workTicket/workApply/components/height.vue
对比新文件
@@ -0,0 +1,343 @@
<template>
    <div class="home-container">
        <div style="height: 100%">
        <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
            <div class="homeCard">
            <el-row>
                <el-col :span="12">
                    <el-form-item label="作业人" prop="operatorUids">
                        <el-select v-model="form.operatorUids" multiple>
                            <el-option
                                    v-for="item in workerList"
                                    :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="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="workLevel">
                        <el-select v-model="form.workLevel">
                            <el-option
                                    v-for="item in workLevelList"
                                    :key="item.value"
                                    :label="item.label"
                                    :value="item.value"
                            />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="作业时间" prop="workTimeLine">
                        <el-date-picker
                                v-model="form.workTimeLine"
                                format="yyyy-MM-dd HH:mm:ss"
                                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>
                <el-col :span="12">
                    <el-form-item label="作业地址" prop="workLocation">
                        <el-input
                                v-model="form.workLocation"
                                autosize
                                type="textarea"
                                placeholder="请输入作业地址"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="作业单位" prop="workDetail.operationDepId">
                        <el-select v-model="form.workDetail.operationDepId">
                            <el-option
                                    v-for="item in heDepList"
                                    :key="item.value"
                                    :label="item.label"
                                    :value="item.value"
                            />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="作业高度" prop="workDetail.operationHeight">
                        <el-input
                                v-model="form.workDetail.operationHeight"
                                type="number"
                                placeholder="请输入"
                        >
                            <template #append>米(m)</template>
                        </el-input>
                    </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()">发起申请</el-button>
        </div>
    </div>
    </div>
</template>
<script>
    import {workApplyApi} from "../../../../../api/workApply";
    export default{
        name: 'heightForm',
        components: {},
        props:['workerList'],
        data(){
            return{
                form: {
                    operatorUids: [],
                    workType: 6,
                    workLevel: null,
                    workContent: '',
                    workLocation: '',
                    workDetail:{
                        operationDepId: '',
                        operationHeight: null,
                        otherSpecialWork: []
                    },
                    workTimeLine: [],
                    expStartTime: '',
                    hazardIdentification: '',
                    expEndTime: ''
                },
                heDepList: [
                    {
                        label: "单位一",
                        value: 1
                    },
                    {
                        label: "单位二",
                        value: 2
                    },
                    {
                        label: "单位三",
                        value: 3
                    },
                    {
                        label: "单位四",
                        value: 4
                    },
                    {
                        label: "单位五",
                        value: 5
                    },
                    {
                        label: "单位六",
                        value: 6
                    }
                ],
                workTypeList: [
                    {
                        label: "类型一",
                        value: 1
                    },
                    {
                        label: "类型二",
                        value: 2
                    }
                ],
                workLevelList: [
                    {
                        label: "一级高处作业",
                        value: 4
                    },
                    {
                        label: "二级高处作业",
                        value: 5
                    },
                    {
                        label: "三级高处作业",
                        value: 6
                    },
                    {
                        label: "特级高处作业",
                        value: 7
                    }
                ],
                otherWorkList: [
                    {
                        label: "动火作业",
                        value: 1
                    },
                    {
                        label: "受限空间作业",
                        value: 2
                    },
                    {
                        label: "吊装作业",
                        value: 3
                    },
                    {
                        label: "动土作业",
                        value: 4
                    },
                    {
                        label: "断路作业",
                        value: 5
                    },
                    {
                        label: "高处作业",
                        value: 6
                    },
                    {
                        label: "临时用电作业",
                        value: 7
                    },
                    {
                        label: "盲板抽堵作业",
                        value: 8
                    }
                ],
                applyRules:{
                    operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'change' }],
                    hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workLevel: [{ required: true, message: '该内容不能为空', trigger: 'change' }],
                    workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.operationDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.operationHeight": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
                }
            }
        },
        methods:{
            submitForm(formEl) {
                this.$refs["ruleFormRef"].validate(async (valid, fields) => {
                    if (valid) {
                        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().postFireApply(data)
                        if (res.data.code === '200') {
                            this.$message({
                                type: 'success',
                                message: '提交成功!'
                            });
                            this.$refs["ruleFormRef"].clearValidate()
                            this.form = {
                                operatorUids: [],
                                workType: 6,
                                workLevel: null,
                                workContent: '',
                                workLocation: '',
                                workDetail:{
                                    operationDepId: '',
                                    operationHeight: null,
                                    otherSpecialWork: []
                                },
                                workTimeLine: [],
                                expStartTime: '',
                                hazardIdentification: '',
                                expEndTime: ''
                            }
                        } else {
                            ElMessage({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    } else {
                        console.log('error submit!', fields)
                    }
                })
            },
        },
    };
</script>
<style scoped lang="scss">
    .home-container {
        height: 100%;
        overflow: hidden;
        position: relative;
        .homeCard{
            width: 100%;
            padding: 20px;
            box-sizing: border-box;
            background: #fff;
            border-radius: 4px;
            margin-bottom: 20px;
        }
        .applyBtn{
            width: 100%;
            background: #fff;
            padding-top: 15px;
            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;
        }
        .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/workApply/components/hoist.vue
对比新文件
@@ -0,0 +1,222 @@
<template>
    <div class="home-container">
        <div style="height: 100%">
        <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
            <div class="homeCard">
            <el-row>
                <el-col :span="12">
                    <el-form-item label="作业人" prop="operatorUids">
                        <el-select v-model="form.operatorUids" multiple>
                            <el-option
                                    v-for="item in workerList"
                                    :key="item.uid"
                                    :label="item.username"
                                    :value="item.uid"
                            />
                        </el-select>
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="作业等级" prop="workLevel">
                        <el-select v-model="form.workLevel">
                            <el-option
                                    v-for="item in workLevelList"
                                    :key="item.value"
                                    :label="item.label"
                                    :value="item.value"
                            />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="作业时间" prop="workTimeLine">
                        <el-date-picker
                                v-model="form.workTimeLine"
                                format="YYYY-MM-DD HH:mm"
                                value-format="YYYY-MM-DD HH:mm:00"
                                type="datetimerange"
                                range-separator="至"
                                start-placeholder="开始时间"
                                end-placeholder="结束时间"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="作业内容" prop="workContent">
                        <el-input
                                v-model="form.workContent"
                                autosize
                                type="textarea"
                                placeholder="请输入作业内容"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="作业地址" prop="workLocation">
                        <el-input
                                v-model="form.workLocation"
                                autosize
                                type="textarea"
                                placeholder="请输入作业地址"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="吊装工具名称" prop="workDetail.hoistingToolName">
                        <el-input
                                v-model="form.workDetail.hoistingToolName"
                                autosize
                                type="textarea"
                                placeholder="请输入"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="起吊物体质量" prop="workDetail.weightMass">
                        <el-input
                                v-model="form.workDetail.weightMass"
                                type="number"
                                placeholder="请输入"
                        >
                            <template #append>吨(t)</template>
                        </el-input>
                    </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>
        </div>
    </div>
    </div>
</template>
<script>
    export default{
        name: 'hoistForm',
        components: {},
        props:['workerList'],
        data(){
            return{
                form: {
                    operatorUids: [],
                    workType: 3,
                    workLevel: null,
                    workContent: '',
                    workLocation: '',
                    workDetail:{
                        hoistingToolName: '',
                        weightMass: null
                    },
                    workTimeLine: [],
                    expStartTime: '',
                    expEndTime: ''
                },
                workLevelList: [
                    {
                        label: "一级吊装作业",
                        value: 8
                    },
                    {
                        label: "二级吊装作业",
                        value: 9
                    },
                    {
                        label: "三级吊装作业",
                        value: 10
                    }
                ],
                applyRules:{
                    operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.hoistingToolName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.weightMass": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
                },
            }
        },
        methods:{
            async submitForm (formEl) {
                if (!formEl) return
                await formEl.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.weightMass = Number(data.workDetail.weightMass)
                        const res = await workApplyApi().postHoistApply(data)
                        if (res.data.code === '200') {
                            ElMessage({
                                type: 'success',
                                message: '提交成功!'
                            });
                            formEl.resetFields()
                        } else {
                            ElMessage({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    } else {
                        console.log('error submit!', fields)
                    }
                })
            }
        },
    };
</script>
<style scoped lang="scss">
    .home-container {
        height: 100%;
        overflow: hidden;
        position: relative;
        .homeCard{
            width: 100%;
            padding: 20px;
            box-sizing: border-box;
            background: #fff;
            border-radius: 4px;
            margin-bottom: 20px;
        }
        .applyBtn{
            width: 100%;
            background: #fff;
            padding-top: 15px;
            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;
        }
        .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/workApply/components/plate.vue
对比新文件
@@ -0,0 +1,421 @@
<template>
    <div class="home-container">
        <div style="height: 100%">
        <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
            <div class="homeCard">
            <el-row>
                <el-col :span="12">
                    <el-form-item label="作业人" prop="operatorUids">
                        <el-select v-model="form.operatorUids" multiple>
                            <el-option
                                    v-for="item in workerList"
                                    :key="item.uid"
                                    :label="item.username"
                                    :value="item.uid"
                            />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="危险辨识" prop="hazardIdentification">
                        <el-input
                            v-model="form.hazardIdentification"
                            autosize
                            type="textarea"
                            placeholder="请输入危险辨识"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="作业等级" prop="workLevel">
                        <el-select v-model="form.workLevel">
                            <el-option
                                    v-for="item in workLevelList"
                                    :key="item.value"
                                    :label="item.label"
                                    :value="item.value"
                            />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="作业时间" prop="workTimeLine">
                        <el-date-picker
                            v-model="form.workTimeLine"
                            format="yyyy-MM-dd HH:mm:ss"
                            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>
                <el-col :span="12">
                    <el-form-item label="作业地址" prop="workLocation">
                        <el-input
                                v-model="form.workLocation"
                                autosize
                                type="textarea"
                                placeholder="请输入作业地址"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="盲板编号" prop="workDetail.bpCode">
                        <el-input
                                v-model="form.workDetail.bpCode"
                                autosize
                                type="textarea"
                                placeholder="请输入"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="主要介质" prop="workDetail.mainMedia">
                        <el-input
                                v-model="form.workDetail.mainMedia"
                                autosize
                                type="textarea"
                                placeholder="请输入"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="温度" prop="workDetail.temperature">
                        <el-input
                                v-model="form.workDetail.temperature"
                                type="number"
                                placeholder="请输入"
                        >
                            <template #append>摄氏度(℃)</template>
                        </el-input>
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="压力" prop="workDetail.pressure">
                        <el-input
                                v-model="form.workDetail.pressure"
                                type="number"
                                placeholder="请输入"
                        >
                            <template #append>千帕(kPa)</template>
                        </el-input>
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="盲板材质" prop="workDetail.bpMaterialQuality">
                        <el-input
                                v-model="form.workDetail.bpMaterialQuality"
                                autosize
                                type="textarea"
                                placeholder="请输入"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="盲板规格" prop="workDetail.bpSpecification">
                        <el-input
                                v-model="form.workDetail.bpSpecification"
                                autosize
                                type="textarea"
                                placeholder="请输入"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <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"
                                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="workDetail.bpLocation">
                        <el-input
                                v-model="form.workDetail.bpLocation"
                                autosize
                                type="textarea"
                                placeholder="请输入"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="关联作业" prop="workDetail.otherSpecialWork">
                        <el-select v-model="form.workDetail.otherSpecialWork" multiple>
                            <el-option
                                    v-for="item in otherWorkList"
                                    :key="item.value"
                                    :label="item.label"
                                    :value="item.value"
                            />
                        </el-select>
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="24">
                    <el-form-item label="盲板位置图" prop="workDetail.bpLocationMapPath">
                        <el-upload accept="image/*" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl">
                            <el-icon><Plus /></el-icon>
                            <template #tip>
                                <div class="el-upload__tip">上传jpg/png图片尺寸小于500KB,最多可上传5张</div>
                            </template>
                        </el-upload>
                    </el-form-item>
                </el-col>
            </el-row>
            </div>
        </el-form>
        <div class="applyBtn">
            <el-button type="primary" size="large" plain @click="submitForm()">发起申请</el-button>
        </div>
    </div>
    <el-dialog v-model="dialogVisible">
        <img w-full :src="dialogImageUrl" alt="Preview Image" />
    </el-dialog>
    </div>
</template>
<script>
    export default{
        name: 'brokenForm',
        components: {},
        props:['workerList'],
        data(){
            return{
                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: ''
                },
                fileList: [],
                imgLimit: 5,
                uploadUrl: '',
                dialogVisible: false,
                dialogImageUrl: null,
                workLevelList: [
                    {
                        label: "抽盲板作业",
                        value: 11
                    },
                    {
                        label: "堵盲板作业",
                        value: 12
                    }
                ],
                csDepList: [
                    {
                        label: "单位一",
                        value: 1
                    },
                    {
                        label: "单位二",
                        value: 2
                    },
                    {
                        label: "单位三",
                        value: 3
                    },
                    {
                        label: "单位四",
                        value: 4
                    },
                    {
                        label: "单位五",
                        value: 5
                    },
                    {
                        label: "单位六",
                        value: 6
                    }
                ],
                otherWorkList: [
                    {
                        label: "动火作业",
                        value: 1
                    },
                    {
                        label: "受限空间作业",
                        value: 2
                    },
                    {
                        label: "吊装作业",
                        value: 3
                    },
                    {
                        label: "动土作业",
                        value: 4
                    },
                    {
                        label: "断路作业",
                        value: 5
                    },
                    {
                        label: "高处作业",
                        value: 6
                    },
                    {
                        label: "临时用电作业",
                        value: 7
                    },
                    {
                        label: "盲板抽堵作业",
                        value: 8
                    }
                ],
                applyRules:{
                    operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'change' }],
                    workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workLevel: [{ required: true, message: '该内容不能为空', trigger: 'change' }],
                    workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.bpCode": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.mainMedia": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.temperature": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.pressure": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.bpMaterialQuality": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.bpSpecification": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.installLine": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.bpLocation": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.bpLocationMapPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
                },
            }
        },
        methods:{
            async submitForm(formEl) {
                if (!formEl) return
                await formEl.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))
                        data.workDetail = data2
                        data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',')
                        data.workDetail.bpLocationMapPath = data.workDetail.bpLocationMapPath.join(',')
                        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({
                                type: 'success',
                                message: '提交成功!'
                            });
                            formEl.resetFields()
                            state.form.workDetail.bpLocationMapPath = []
                            state.fileList = []
                        } else {
                            ElMessage({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    } else {
                        console.log('error submit!', fields)
                    }
                })
            }
        },
    };
</script>
<style scoped lang="scss">
    .home-container {
        height: 100%;
        overflow: hidden;
        position: relative;
        .homeCard{
            width: 100%;
            padding: 20px;
            box-sizing: border-box;
            background: #fff;
            border-radius: 4px;
            margin-bottom: 20px;
        }
        .applyBtn{
            width: 100%;
            background: #fff;
            padding-top: 15px;
            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;
        }
        .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/workApply/components/power.vue
对比新文件
@@ -0,0 +1,225 @@
<template>
    <div class="home-container">
        <div style="height: 100%">
        <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
            <div class="homeCard">
            <el-row>
                <el-col :span="12">
                    <el-form-item label="作业人" prop="operatorUids">
                        <el-select v-model="form.operatorUids" multiple>
                            <el-option
                                    v-for="item in workerList"
                                    :key="item.uid"
                                    :label="item.username"
                                    :value="item.uid"
                            />
                        </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
                                v-model="form.workContent"
                                autosize
                                type="textarea"
                                placeholder="请输入作业内容"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="作业地址" prop="workLocation">
                        <el-input
                                v-model="form.workLocation"
                                autosize
                                type="textarea"
                                placeholder="请输入作业地址"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="电源接入点" prop="workDetail.powerAccessPoint">
                        <el-input
                                v-model="form.workDetail.powerAccessPoint"
                                autosize
                                type="textarea"
                                placeholder="请输入"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="工作电压" prop="workDetail.workingVoltage">
                        <el-input
                                v-model="form.workDetail.workingVoltage"
                                type="number"
                                placeholder="请输入"
                        >
                            <template #append>伏特(v)</template>
                        </el-input>
                    </el-form-item>
                </el-col>
            </el-row>
                <el-row>
                    <el-col :span="12">
                        <el-form-item label="用电设备及功率" prop="workDetail.equipmentAndPower">
                            <el-input
                                    v-model="form.workDetail.equipmentAndPower"
                                    autosize
                                    type="textarea"
                                    placeholder="请输入"
                            />
                        </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>
        </div>
    </div>
    </div>
</template>
<script>
    export default{
        name: 'hoistForm',
        components: {},
        props:['workerList'],
        data(){
            return{
                form: {
                    operatorUids: [],
                    workType: 7,
                    workLevel: 0,
                    workContent: '',
                    workLocation: '',
                    workDetail:{
                        powerAccessPoint: '',
                        workingVoltage: null,
                        equipmentAndPower: ''
                    },
                    workTimeLine: [],
                    expStartTime: '',
                    expEndTime: ''
                },
                workLevelList: [
                    {
                        label: "一级吊装作业",
                        value: 8
                    },
                    {
                        label: "二级吊装作业",
                        value: 9
                    },
                    {
                        label: "三级吊装作业",
                        value: 10
                    }
                ],
                applyRules:{
                    operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.powerAccessPoint": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.workingVoltage": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.equipmentAndPower": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
                }
            }
        },
        methods:{
            async submitForm(formEl) {
                if (!formEl) return
                await formEl.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.weightMass = Number(data.workDetail.weightMass)
                        const res = await workApplyApi().postPowerApply(data)
                        if (res.data.code === '200') {
                            ElMessage({
                                type: 'success',
                                message: '提交成功!'
                            });
                            formEl.resetFields()
                        } else {
                            ElMessage({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    } else {
                        console.log('error submit!', fields)
                    }
                })
            }
        },
    };
</script>
<style scoped lang="scss">
    .home-container {
        height: 100%;
        overflow: hidden;
        position: relative;
        .homeCard{
            width: 100%;
            padding: 20px;
            box-sizing: border-box;
            background: #fff;
            border-radius: 4px;
            margin-bottom: 20px;
        }
        .applyBtn{
            width: 100%;
            background: #fff;
            padding-top: 15px;
            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;
        }
        .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/workApply/components/space.vue
对比新文件
@@ -0,0 +1,278 @@
<template>
    <div class="home-container">
        <div style="height: 100%">
        <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
            <div class="homeCard">
            <el-row>
                <el-col :span="12">
                    <el-form-item label="作业人" prop="operatorUids">
                        <el-select v-model="form.operatorUids" multiple>
                            <el-option
                                    v-for="item in workerList"
                                    :key="item.uid"
                                    :label="item.username"
                                    :value="item.uid"
                            />
                        </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
                                v-model="form.workContent"
                                autosize
                                type="textarea"
                                placeholder="请输入作业内容"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="作业地址" prop="workLocation">
                        <el-input
                                v-model="form.workLocation"
                                autosize
                                type="textarea"
                                placeholder="请输入作业地址"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="受限空间所属单位" prop="workDetail.csDepId">
                        <el-select v-model="form.workDetail.csDepId">
                            <el-option
                                    v-for="item in csDepList"
                                    :key="item.value"
                                    :label="item.label"
                                    :value="item.value"
                            />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="受限空间名称" prop="workDetail.csName">
                        <el-input
                                v-model="form.workDetail.csName"
                                autosize
                                type="textarea"
                                placeholder="请输入"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="12">
                    <el-form-item label="空间内原有介质" prop="workDetail.csOriginalName">
                        <el-input
                                v-model="form.workDetail.csOriginalName"
                                autosize
                                type="textarea"
                                placeholder="请输入"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                    <el-form-item label="关联作业" prop="workDetail.otherSpecialWork">
                        <el-select v-model="form.workDetail.otherSpecialWork" multiple>
                            <el-option v-for="item in otherWorkList" :key="item.value" :label="item.label" :value="item.value" />
                        </el-select>
                    </el-form-item>
                </el-col>
            </el-row>
            </div>
        </el-form>
        <div class="applyBtn">
            <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
        </div>
    </div>
    </div>
</template>
<script>
    export default{
        name: 'spaceForm',
        components: {},
        props:['workerList'],
        data(){
            return{
                form: {
                    operatorUids: [],
                    workType: 2,
                    workLevel: 0,
                    workContent: '',
                    workLocation: '',
                    workDetail:{
                        csDepId: null,
                        csName: '',
                        csOriginalName: '',
                        otherSpecialWork: []
                    },
                    workTimeLine: [],
                    expStartTime: '',
                    expEndTime: ''
                },
                csDepList: [
                    {
                        label: "单位一",
                        value: 1
                    },
                    {
                        label: "单位二",
                        value: 2
                    },
                    {
                        label: "单位三",
                        value: 3
                    },
                    {
                        label: "单位四",
                        value: 4
                    },
                    {
                        label: "单位五",
                        value: 5
                    },
                    {
                        label: "单位六",
                        value: 6
                    }
                ],
                otherWorkList: [
                    {
                        label: '动火作业',
                        value: 1
                    },
                    {
                        label: '受限空间作业',
                        value: 2
                    },
                    {
                        label: '吊装作业',
                        value: 3
                    },
                    {
                        label: '动土作业',
                        value: 4
                    },
                    {
                        label: '断路作业',
                        value: 5
                    },
                    {
                        label: '高处作业',
                        value: 6
                    },
                    {
                        label: '临时用电作业',
                        value: 7
                    },
                    {
                        label: '盲板抽堵作业',
                        value: 8
                    }
                ],
                applyRules:{
                    operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.csDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.csName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
                    "workDetail.csOriginalName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
                }
            }
        },
        methods:{
            async submitForm(formEl) {
                if (!formEl) return
                await formEl.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.otherSpecialWork = data.workDetail.otherSpecialWork.join(',')
                        console.log(data,'data')
                        const res = await workApplyApi().postSpaceApply(data)
                        if (res.data.code === '200') {
                            this.$message({
                                type: 'success',
                                message: '提交成功!'
                            });
                            formEl.resetFields()
                        } else {
                            this.$message({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    } else {
                        console.log('error submit!', fields)
                    }
                })
            }
        },
    };
</script>
<style scoped lang="scss">
    .home-container {
        height: 100%;
        overflow: hidden;
        position: relative;
        .homeCard{
            width: 100%;
            padding: 20px;
            box-sizing: border-box;
            background: #fff;
            border-radius: 4px;
            margin-bottom: 20px;
        }
        .applyBtn{
            width: 100%;
            background: #fff;
            padding-top: 15px;
            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;
        }
        .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/workApply/index.vue
@@ -1,13 +1,133 @@
<template>
<div>1</div>
    <div class="home-container">
        <el-tabs type="border-card">
            <el-tab-pane label="动火作业">
                <fire-form :workerList="allWorkers"></fire-form>
            </el-tab-pane>
            <el-tab-pane label="受限空间作业">
                <space-form :workerList= allWorkers></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>
            </el-tab-pane>
            <el-tab-pane label="断路作业">
                <broken-form :workerList= allWorkers :departList = departmentList></broken-form>
            </el-tab-pane>
            <el-tab-pane label="高处作业">
                <height-form :workerList = allWorkers></height-form>
            </el-tab-pane>
            <el-tab-pane label="临时用电作业">
                <power-form :workerList = allWorkers></power-form>
            </el-tab-pane>
            <el-tab-pane label="盲板抽堵作业">
                <plate-form :workerList = allWorkers></plate-form>
            </el-tab-pane>
        </el-tabs>
    </div>
</template>
<script>
export default {
    name: "index"
}
    import fireForm from './components/fire.vue'
    import spaceForm from './components/space.vue'
    import hoistForm from './components/hoist.vue'
    import groundForm from './components/ground.vue'
    import brokenForm from './components/broken.vue'
    import heightForm from './components/height.vue'
    import powerForm from './components/power.vue'
    import plateForm from './components/plate.vue'
    import {getDepartmentList} from "../../../../api/departmentManage";
    import {safetyInspectionItemName} from "../../../../api/safetySelfInspection";
    export default{
        name: 'workTicket',
        components: {
            fireForm, spaceForm, hoistForm, groundForm, brokenForm, heightForm, powerForm, plateForm
        },
        data(){
            return{
                allWorkers: [],
                departmentList: []
            }
        },
        created(){
            this.getAll()
            this.getAllDepartment()
        },
        methods:{
            async getAll() {
                let res = await safetyInspectionItemName()
                if(res.data.code === '200'){
                    this.allWorkers = res.data.result
                }else{
                    this.$message({
                        message:res.data.message,
                        type:'warning'
                    })
                }
            },
            async getAllDepartment() {
                let res = await getDepartmentList({pageSize:1000,pageIndex:1})
                if(res.data.code === '200'){
                    this.departmentList = res.data.result.result
                }else{
                    this.$message({
                        message:res.data.message,
                        type:'warning'
                    })
                }
            },
        },
    };
</script>
<style scoped>
<style scoped lang="scss">
    .home-container {
        height: 100%;
        overflow: hidden;
        position: relative;
        .homeCard{
            width: 100%;
            padding: 20px;
            box-sizing: border-box;
            background: #fff;
            border-radius: 4px;
            margin-bottom: 20px;
        }
        .applyBtn{
            width: 100%;
            background: #fff;
            height: 80px;
            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;
        }
        .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>