From 70fb6d09d29ca1b4ba29a9299f310e2455301b8c Mon Sep 17 00:00:00 2001 From: lct123456 <lucht> Date: 星期一, 25 四月 2022 15:36:11 +0800 Subject: [PATCH] 四色图 --- src/views/specialWorkManage/specialWork/taskInfo/components/reviewInfo/index.vue | 72 src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionPerson/index.vue | 10 src/views/specialWorkManage/specialWork/taskInfo/components/fileAndEquipment/index.vue | 207 + src/views/specialWorkManage/specialWork/taskInfo/index.vue | 528 ++++ src/views/specialWorkManage/specialWork/taskCreate/components/taskCreate.vue | 1336 ++++++++++ src/views/specialWorkManage/workPlan/reserve.vue | 238 + src/views/doublePreventAction/hiddenDanger/inspectionRecord/index.vue | 39 src/views/specialWorkManage/specialWork/taskCreate/index.vue | 344 ++ src/views/specialWorkManage/specialWork/taskCreate/components/file/index.vue | 251 + src/views/specialWorkManage/specialWork/taskCreate/components/safetyAndRiskConfirm/index.vue | 298 ++ src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionComplete/index.vue | 2 config/dev.env.js | 10 src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionUnusual/index.vue | 8 src/views/doublePreventAction/hiddenDanger/inspectionTask/components/inpectionPoint.vue | 6 src/views/specialWorkManage/specialWork/taskCreate/components/equipment/index.vue | 91 src/views/specialWorkManage/specialWork/taskCreate/components/taskBasic/index.vue | 1552 +++++++++++ src/views/specialWorkManage/specialWork/index.vue | 13 src/views/specialWorkManage/specialWork/taskCreate/components/reviewInfo/index.vue | 73 src/views/specialWorkManage/specialWork/taskCreate/components/file/constructionFile.vue | 247 + src/views/doublePreventAction/hiddenDanger/inspectionStatistics/index.vue | 6 src/views/specialWorkManage/workPlan/form/dialog.vue | 224 + src/views/specialWorkManage/specialWork/taskInfo/components/equipment/index.vue | 72 src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue | 11 src/views/specialWorkManage/specialWork/taskInfo/components/taskInfo.vue | 179 + src/views/specialWorkManage/specialWork/taskInfo/components/hotFireBasic/index.vue | 723 +++++ src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue | 3 src/views/specialWorkManage/specialWork/taskCreate/components/safetyAction/index.vue | 170 + src/router/index.js | 4 src/views/specialWorkManage/specialWork/taskInfo/components/safetyAndRiskConfirm/index.vue | 277 ++ src/views/specialWorkManage/specialWork/taskInfo/components/safetyAction/index.vue | 118 src/assets/tileset.json | 1 src/views/specialWorkManage/specialWork/taskInfo/components/fireMan/index.vue | 68 src/views/specialWorkManage/index.vue | 13 src/views/specialWorkManage/specialWork/taskCreate/components/file/allFire.vue | 244 + src/views/specialWorkManage/workPlan/statistics.vue | 216 + src/views/specialWorkManage/specialWork/taskCreate/components/fireMan/index.vue | 127 src/views/specialWorkManage/workPlan/index.vue | 13 37 files changed, 7,768 insertions(+), 26 deletions(-) diff --git a/config/dev.env.js b/config/dev.env.js index 1b5d1ba..d88e0d0 100644 --- a/config/dev.env.js +++ b/config/dev.env.js @@ -5,8 +5,8 @@ // BASE_API: '"http://10.142.119.232:8100"', // IMG_API: '"http://10.142.119.232:8100/upload/"', - // BASE_API: '"http://222.92.213.22:8101/api"', - // IMG_API: '"http://222.92.213.22:8101/api/upload/"', + // BASE_API: '"http://222.92.213.22:8006/zhongtai"', + // IMG_API: '"http://222.92.213.22:8006/zhongtai/upload/"', // // BASE_API: '"https://sinanoaq.cn:8100"', // BASE_API: '"http://127.0.0.1:8100"', @@ -18,9 +18,11 @@ // IMG_API: '"http://220.171.99.118:4100/upload/"', // BASE_API: '"http://192.168.0.35:8006"', // IMG_API: '"http://192.168.0.35:8006/upload/"', - BASE_API: '"http://222.92.213.21:8006/zhongtai"', - IMG_API: '"http://222.92.213.21:8006/zhongtai/upload/"', + // BASE_API: '"http://222.92.213.21:8006/zhongtai"', + // IMG_API: '"http://222.92.213.21:8006/zhongtai/upload/"', NANO_API: '"http://127.0.0.1:8081/zhongtaiexam"', // BASE_API: '"http://220.171.99.118:4101/api"', // IMG_API: '"http://220.171.99.118:4101/api/upload/"', + BASE_API: '"http://112.86.23.31:8006"', + IMG_API: '"http://112.86.23.31:8006/upload/"', }; diff --git a/src/assets/tileset.json b/src/assets/tileset.json new file mode 100644 index 0000000..29cc7ea --- /dev/null +++ b/src/assets/tileset.json @@ -0,0 +1 @@ +{"asset":{"generatetool":"cesiumlab2@www.cesiumlab.com/osgb2tiles3","gltfUpAxis":"Z","version":"1.0"},"geometricError":1483.9877869095,"root":{"boundingVolume":{"box":[-163.46875,141.668724060059,1254.39343261719,646.749145507813,0,0,0,360.510932922363,0,0,0,47.9827880859375]},"children":[{"boundingVolume":{"box":[-163.46875,141.668724060059,1254.39343261719,646.749145507813,0,0,0,360.510932922363,0,0,0,47.9827880859375]},"content":{"uri":"top/0_0_0_0.json"},"geometricError":741.99389345475}],"geometricError":1483.9877869095,"transform":[-0.989732660191945,0.142930967076336,0.0,0.0,-0.0953358071431997,-0.660157584780009,0.745052378785398,0.0,0.106491057022322,0.737402672837608,0.667005961642188,0.0,680094.759938871,4709350.32278489,4231252.07610948,1.0]}} diff --git a/src/router/index.js b/src/router/index.js index 084971d..13fe121 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -55,11 +55,11 @@ { path: '/', component: Layout, - redirect: '/workPlan/workPlan/reserve', + redirect: '/specialWorkManage/index/specialWorkManage/workPlan/index/specialWorkManage/workPlan/reserve', children: [ { path: 'dashboard', - component: () => import('@/views/workPlan/reserve'), + component: () => import('@/views/specialWorkManage/workPlan/reserve'), name: 'Dashboard1', meta: { title: '首页', icon: 'el-icon-dash', noCache: true, affix: true } } diff --git a/src/views/doublePreventAction/hiddenDanger/inspectionRecord/index.vue b/src/views/doublePreventAction/hiddenDanger/inspectionRecord/index.vue index 4c61f8c..b68cee8 100644 --- a/src/views/doublePreventAction/hiddenDanger/inspectionRecord/index.vue +++ b/src/views/doublePreventAction/hiddenDanger/inspectionRecord/index.vue @@ -91,11 +91,14 @@ </el-table-column> <el-table-column label="隐患排查内容" prop="content" align="center"> </el-table-column> - <el-table-column label="巡检内容" prop="info" align="center"> + <el-table-column label="上报说明" prop="info" align="center"> </el-table-column> - <el-table-column label="巡检照片" prop="img" align="center"> + <el-table-column label="上报照片" prop="img" align="center"> </el-table-column> <el-table-column label="状态" prop="status" align="center"> + <template slot-scope="scope"> + {{ scope.row.status | parseStatusList}} + </template> </el-table-column> <el-table-column label="操作" align="center" width="280" class-name="small-padding fixed-width"> <template slot-scope="scope"> @@ -115,6 +118,12 @@ <el-table-column label="异常通知人" prop="noticeUname" align="center"> </el-table-column> <el-table-column label="巡检人" prop="execUname" align="center"> + </el-table-column> + <el-table-column label="巡检开始时间" prop="execUname" align="center"> + </el-table-column> + <el-table-column label="巡检结束时间" prop="execUname" align="center"> + </el-table-column> + <el-table-column label="巡检提交时间" prop="execUname" align="center"> </el-table-column> <el-table-column label="任务状态" prop="status" align="center"> <template slot-scope="scope"> @@ -176,6 +185,7 @@ import { computePageCount } from '@/utils' import { getInspectionRecord } from '@/api/inspectionTask' import {getAllDepartment, getDepartmentList} from "../../../../api/departmentManage"; + import {safetyInspectionItemName} from "../../../../api/safetySelfInspection"; export default { name: 'index', filters: { @@ -193,6 +203,19 @@ return "任务关闭" } }, + parseStatusList(status) { + if(status === 1){ + return "待巡检" + }else if(status === 2) { + return "巡检中" + }else if(status === 3) { + return "已完成" + }else if(status === 4) { + return "超时未巡检" + }else{ + return "已取消" + } + } }, computed: { ...mapGetters([ @@ -237,6 +260,7 @@ created() { this.getInspectionRecordData() this.getDepartment() + this.getUser() }, methods: { async getInspectionRecordData(){ @@ -264,6 +288,17 @@ }) } }, + async getUser(){ + let res = await safetyInspectionItemName() + if(res.data.code === '200'){ + this.userList = res.data.result + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + }, showAnalyseUnitForm(value,type){ this.inspectionRecordVisible = true this.$nextTick(() =>{ diff --git a/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionComplete/index.vue b/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionComplete/index.vue index 8c79628..95d33c8 100644 --- a/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionComplete/index.vue +++ b/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionComplete/index.vue @@ -25,7 +25,7 @@ xAxis: { type: 'category', boundaryGap: false, - data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] + data: ['2022-4-1', '2022-4-2', '2022-4-4', '2022-4-4', '2022-4-5', '2022-4-6', '2022-4-7'] }, yAxis: { type: 'value' diff --git a/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionPerson/index.vue b/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionPerson/index.vue index ab48306..ab266c5 100644 --- a/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionPerson/index.vue +++ b/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionPerson/index.vue @@ -17,6 +17,14 @@ this.drawLine() }, methods:{ + // setCount(val){ + // this.numData = val.map(item =>{ + // return item.num + // }) + // this.timeData = val.map(item =>{ + // return item.errorTaskIdList + // }) + // }, async drawLine(){ this.myChart = this.$echarts.init(document.getElementById('inspectionPerson')) this.myChart.setOption({ @@ -30,7 +38,7 @@ color:'#fac858', xAxis: { type: 'category', - data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] + data: ['2022-4-1', '2022-4-2', '2022-4-4', '2022-4-4', '2022-4-5', '2022-4-6', '2022-4-7'] }, yAxis: { type: 'value' diff --git a/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionUnusual/index.vue b/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionUnusual/index.vue index ee83469..80d2946 100644 --- a/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionUnusual/index.vue +++ b/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionUnusual/index.vue @@ -1,5 +1,5 @@ <template> - <div id="toadyLine" style="width:90%;height:360px;margin: 0 auto;"> + <div id="inspectionUnusual" style="width:90%;height:360px;margin: 0 auto;"> </div> </template> @@ -18,9 +18,9 @@ }, methods:{ async drawTodayLine(){ - this.timeData = [1,2,3,4,] - this.numData = [2,5,7,9] - let myChart = this.$echarts.init(document.getElementById('toadyLine')) + this.timeData = ['2022-4-1', '2022-4-2', '2022-4-4', '2022-4-4', '2022-4-5', '2022-4-6', '2022-4-7'] + this.numData = [2,5,7,9,1,15,6] + let myChart = this.$echarts.init(document.getElementById('inspectionUnusual')) myChart.setOption({ xAxis: { type: 'category', diff --git a/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/index.vue b/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/index.vue index ba480e3..f938c1c 100644 --- a/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/index.vue +++ b/src/views/doublePreventAction/hiddenDanger/inspectionStatistics/index.vue @@ -81,8 +81,6 @@ value3:['',''], listQuery:{ "dateList": [ - "", - "" ], "endDate": "", "execUid": null, @@ -111,7 +109,7 @@ this.listQuery.startDate = this.value1[0] this.listQuery.endDate = this.value1[1] let res = await getInspectionCount(this.listQuery) - debugger + // this.$refs.inspectionPerson.setCount(res.data.result) }, async changeInspectionPerson() { let res = await getInspectionCount(this.listQuery) @@ -122,7 +120,7 @@ <style scoped> /deep/.el-divider--horizontal { - margin-top: 0px !important; + margin-top: 1px !important; } .inspectionStatistics{ width:100%; diff --git a/src/views/doublePreventAction/hiddenDanger/inspectionTask/components/inpectionPoint.vue b/src/views/doublePreventAction/hiddenDanger/inspectionTask/components/inpectionPoint.vue index 5846821..d5607ac 100644 --- a/src/views/doublePreventAction/hiddenDanger/inspectionTask/components/inpectionPoint.vue +++ b/src/views/doublePreventAction/hiddenDanger/inspectionTask/components/inpectionPoint.vue @@ -84,8 +84,10 @@ // content:item.riskMeasureDesc // } // }))) - this.inspectionPointData.push({id:value.id,content:value.riskMeasureDesc}) - this.$emit('giveToForm',this.inspectionPointData) + if(this.inspectionPointData.findIndex(item => item.id === value.id) === -1) { + this.inspectionPointData.push({id:value.id,content:value.riskMeasureDesc}) + this.$emit('giveToForm',this.inspectionPointData) + } } }else{ this.controlActionForm.workId = JSON.stringify(this.inspectionTaskForm.workId) diff --git a/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue b/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue index c72d513..73c496e 100644 --- a/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue +++ b/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue @@ -467,7 +467,7 @@ this.noticeDepartment = this.handleDepartment(JSON.parse(JSON.stringify(value)).noticeUid) this.changeNotice() this.execDepartment = this.handleDepartment(JSON.parse(JSON.stringify(value)).execUid) - this.changeExec() + this.changeExec() this.inspectionTaskForm = JSON.parse(JSON.stringify(value)) // this.inspectionTaskForm.execUid = value.execUname // this.inspectionTaskForm.noticeUid = value.noticeUname @@ -576,10 +576,11 @@ }) }, receiveToForm(value) { - this.inspectionTaskForm.riskControlMeasureIdList = [] - this.inspectionTaskForm.riskControlMeasureIdList = value.map( item => { - return item.id - }) + // this.inspectionTaskForm.riskControlMeasureIdList = [] + // this.inspectionTaskForm.riskControlMeasureIdList = value.map( item => { + // return item.id + // }) + this.inspectionTaskForm.riskControlMeasureIdList.push({id:value.id}) }, refreshHandle(){ this.getInspectionTaskData() diff --git a/src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue b/src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue index 5ec579a..5ef5f54 100644 --- a/src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue +++ b/src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue @@ -6,6 +6,7 @@ </template> <script> + import tileset from '../../../../assets/tileset.json' import Map from '../../../../components/Map'; import Tab from '../../../../components/Tab'; import { global } from '../../../../global'; @@ -66,7 +67,7 @@ this.loaded = true; map.addModel({ - link: 'http://222.92.213.21:8006/zhongtaiweb/tileset.json', + link: 'http://222.92.213.22:8006/b3dm60/tileset.json', name: '商业园区', callback: tileset => { var boundingSphere = tileset.boundingSphere; diff --git a/src/views/specialWorkManage/index.vue b/src/views/specialWorkManage/index.vue new file mode 100644 index 0000000..ea834ff --- /dev/null +++ b/src/views/specialWorkManage/index.vue @@ -0,0 +1,13 @@ +<template> + <router-view></router-view> +</template> + +<script> + export default { + name: "index" + } +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/index.vue b/src/views/specialWorkManage/specialWork/index.vue new file mode 100644 index 0000000..ea834ff --- /dev/null +++ b/src/views/specialWorkManage/specialWork/index.vue @@ -0,0 +1,13 @@ +<template> + <router-view></router-view> +</template> + +<script> + export default { + name: "index" + } +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/taskCreate/components/equipment/index.vue b/src/views/specialWorkManage/specialWork/taskCreate/components/equipment/index.vue new file mode 100644 index 0000000..211a7b3 --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskCreate/components/equipment/index.vue @@ -0,0 +1,91 @@ +<template> + <div> + <div style="padding-bottom: 10px"> + <el-button type="primary" @click="addEquipment">添加设备</el-button> + </div> + <el-table :data="equipmentData" border fit highlight-current-row style="width: 100%;" :header-cell-style="{'text-align':'center'}"> + <el-table-column type="index" label="序号" align="center" width="60"/> + <el-table-column prop="taskcode" label="作业编号" align="left"> + </el-table-column> + <el-table-column prop="name" label="设备名称" align="left"> + <template slot-scope="scope"> + <el-input v-model="scope.row.name"></el-input> + </template> + </el-table-column> + <el-table-column prop="type" label="设备类型" align="left"> + <template slot-scope="scope"> + <el-select v-model="scope.row.type"> + <el-option + v-for="item in typeList" + :key="item.id" + :label="item.name" + :value="item.name" + > + </el-option> + </el-select> + </template> + </el-table-column> + <el-table-column prop="num" label="设备数量" align="left"> + <template slot-scope="scope"> + <el-input v-model="scope.row.num"></el-input> + </template> + </el-table-column> + <el-table-column label="操作" align="center"> + <template slot-scope="scope"> + <el-button type="text" @click="deleteEquipment(scope.$index)">删除</el-button> + </template> + </el-table-column> + </el-table> + <div align="center" style="padding-top: 20px" v-if="title === '新增' || title === '编辑' || title=== '施工单位确认' || title === '施工单位信息填写' || title === '复制'"> + <el-button type="primary" @click="goNext">下一步</el-button> + </div> + </div> +</template> + +<script> +import { getSafetyActionList } from '@/api/task' + +export default { + props:['basicInformation','title'], + name: 'index', + data(){ + return{ + typeList:[{id:1,name:'安全防护设备及工具'},{id:2,name:'安全施工防护用具'},{id:3,name:'有毒有害防护设备'},{id:4,name:'个人防护设备'},{id:5,name:'安全措施设备及工器具'}], + equipmentData:[], + } + }, + created(){ + }, + methods:{ + addEquipment(){ + this.equipmentData.push({ + createdat: "", + createdby: "", + flag: 0, + id: 0, + modifiedat: "", + modifiedby: "", + name: "", + num: "", + taskcode: this.basicInformation.code, + }) + }, + deleteEquipment(val){ + this.equipmentData.splice(val,1) + }, + goNext(){ + if(this.title === '施工单位确认'){ + this.$emit('changeToConstructionConfirm') + }else if(this.title === '施工单位信息填写'){ + this.$emit('confirmConstruction') + }else { + this.$emit('changeToCardFile') + } + }, + } +} +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/taskCreate/components/file/allFire.vue b/src/views/specialWorkManage/specialWork/taskCreate/components/file/allFire.vue new file mode 100644 index 0000000..c09ab0b --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskCreate/components/file/allFire.vue @@ -0,0 +1,244 @@ +<template> + <div> + <el-form ref="form" :model="fileForm" label-width="160px" label-position="right"> + <!-- <el-form-item label="事故救援预案:">--> + <!-- <el-upload--> + <!-- accept=".pdf,.jpg,.png"--> + <!-- :action="fileRoad"--> + <!-- class="upload-demo"--> + <!-- ref="upload"--> + <!-- :headers="header"--> + <!-- :data="uploadForm"--> + <!-- :on-change="handleChangeOne"--> + <!-- :auto-upload="true"--> + <!-- :on-remove="onRemove"--> + <!-- :on-success="onSuccess"--> + <!-- :on-preview="onPreview"--> + <!-- :file-list="fileListOne">--> + <!-- <el-button size="small" type="primary">点击上传</el-button>--> + <!-- </el-upload>--> + <!-- </el-form-item>--> + <el-form-item label="作业人员身体健康:"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + :data="uploadForm" + :on-preview="onPreview" + :file-list="fileListTwo"> + <el-button size="small" type="primary" v-if="false">点击上传</el-button> + </el-upload> + </el-form-item> + <el-form-item label="作业资质证书:" v-if="false"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :data="uploadForm" + :on-preview="onPreview" + :file-list="fileListThree"> + <el-button size="small" type="primary" v-if="false">点击上传</el-button> + </el-upload> + </el-form-item> + <el-form-item label="事故救援预案:" v-if="false"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + :data="uploadForm" + :on-preview="onPreview" + :file-list="fileListOne"> + </el-upload> + </el-form-item> + <!-- <el-form-item label="作业人员身体健康:" v-if="ifConstruction">--> + <!-- <el-upload--> + <!-- accept=".pdf,.jpg,.png"--> + <!-- :action="fileRoad"--> + <!-- class="upload-demo"--> + <!-- ref="upload"--> + <!-- :headers="header"--> + <!-- :data="uploadForm"--> + <!-- :on-change="handleChangeTwo"--> + <!-- :auto-upload="true"--> + <!-- :on-remove="onRemove"--> + <!-- :on-success="onSuccess"--> + <!-- :on-preview="onPreview"--> + <!-- :file-list="fileListTwo">--> + <!-- <el-button size="small" type="primary">点击上传</el-button>--> + <!-- </el-upload>--> + <!-- </el-form-item>--> + <!-- <el-form-item label="作业资质证书:" v-if="ifConstruction">--> + <!-- <el-upload--> + <!-- accept=".pdf,.jpg,.png"--> + <!-- :action="fileRoad"--> + <!-- class="upload-demo"--> + <!-- ref="upload"--> + <!-- :headers="header"--> + <!-- :data="uploadForm"--> + <!-- :on-change="handleChangeThree"--> + <!-- :on-remove="onRemove"--> + <!-- :on-success="onSuccess"--> + <!-- :auto-upload="true"--> + <!-- :on-preview="onPreview"--> + <!-- :file-list="fileListThree">--> + <!-- <el-button size="small" type="primary">点击上传</el-button>--> + <!-- </el-upload>--> + <!-- </el-form-item>--> + </el-form> + <el-dialog :visible.sync="dialogVisible"> + <img width="100%" :src="dialogImageUrl" alt=""> + </el-dialog> + </div> +</template> + +<script> + import Cookies from 'js-cookie' + import { deleteFile, getFileData } from '@/api/task' + + export default { + props:['basicInformation','title'], + name: 'index', + data(){ + return{ + ifApply:'', + ifCompany:'', + ifConstruction:'', + ifApplyButton:'', + ifCompanyButton:'', + disabled:'', + fileForm:{}, + header:{Authorization:''}, + fileRoad:process.env.BASE_API + '/task/upload', + dialogVisible:false, + dialogImageUrl:'', + riskAndDanger:[], + safetyOrganizeAction:[], + workSecurityAction:[], + fileList:[], + fileListOne:[], + fileListTwo:[], + fileListThree:[], + uploadForm:{ + taskcode:'', + type:'', + } + } + }, + mounted(){ + this.getFileList() + }, + methods:{ + async onPreview(file){ + window.open( process.env.IMG_API + file.fileurl,'_blank') + }, + async getFileList(){ + let params = {} + params["taskCode"] = this.basicInformation.code + let res = await getFileData(params) + if(res.data.code === '200'){ + this.fileList = [] + this.fileListOne = [] + this.fileListTwo = [] + this.fileListThree = [] + this.fileList = res.data.result + this.fileList.map(item =>{ + return Object.assign(item,{name:item.originalname}) + }) + for(let i in this.fileList){ + if(this.fileList[i].type === '事故救援预案'){ + this.fileListOne.push(this.fileList[i]) + } + } + for(let i in this.fileList){ + if(this.fileList[i].type === '作业人员身体健康'){ + this.fileListTwo.push(this.fileList[i]) + } + } + for(let i in this.fileList){ + if(this.fileList[i].type === '作业资质证书'){ + this.fileListThree.push(this.fileList[i]) + } + } + } + }, + submit(){ + this.uploadForm.type = "事故救援预案" + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + this.$refs.upload.submit() + }, + handlePictureCardPreview(file) { + this.dialogImageUrl = file.url; + this.dialogVisible = true; + }, + handleChangeOne(file, fileList) { + this.uploadForm.type = '事故救援预案' + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + }, + handleChangeTwo(file, fileList) { + this.uploadForm.type = '作业人员身体健康'; + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + }, + handleChangeThree(file, fileList) { + this.uploadForm.type = '作业资质证书'; + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + }, + onSuccess(response){ + if(response.code === '200'){ + this.$notify({ + type:'success', + duration:2000, + message:'上传成功', + title:'成功', + }) + this.getFileList() + } + }, + onRemove(file,fileList){ + return this.$confirm(`确定移除 ${ file.name }?`,'提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(() =>{ + let params = {} + params["id"] = file.id + deleteFile(params).then(res =>{ + if(res.data.code === '200'){ + this.$notify({ + type:'success', + duration:2000, + message:'删除成功', + title:'成功', + }) + this.getFileList() + }else{ + this.$message({ + type:'warning', + message:res.data.message + }) + } + }) + }) + }, + goNext(){ + if(this.title === '施工单位确认'){ + this.$emit('changeToConstructionConfirm') + }else{ + this.$emit('confirmConstruction') + } + }, + } + } +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/taskCreate/components/file/constructionFile.vue b/src/views/specialWorkManage/specialWork/taskCreate/components/file/constructionFile.vue new file mode 100644 index 0000000..66eb654 --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskCreate/components/file/constructionFile.vue @@ -0,0 +1,247 @@ +<template> + <div> + <el-form ref="form" :model="fileForm" label-width="160px" label-position="right"> +<!-- <el-form-item label="事故救援预案:">--> +<!-- <el-upload--> +<!-- accept=".pdf,.jpg,.png"--> +<!-- :action="fileRoad"--> +<!-- class="upload-demo"--> +<!-- ref="upload"--> +<!-- :headers="header"--> +<!-- :data="uploadForm"--> +<!-- :on-change="handleChangeOne"--> +<!-- :auto-upload="true"--> +<!-- :on-remove="onRemove"--> +<!-- :on-success="onSuccess"--> +<!-- :on-preview="onPreview"--> +<!-- :file-list="fileListOne">--> +<!-- <el-button size="small" type="primary">点击上传</el-button>--> +<!-- </el-upload>--> +<!-- </el-form-item>--> +<!-- <el-form-item label="作业人员身体健康:" v-if="ifApply">--> +<!-- <el-upload--> +<!-- accept=".pdf,.jpg,.png"--> +<!-- :action="fileRoad"--> +<!-- class="upload-demo"--> +<!-- ref="upload"--> +<!-- :headers="header"--> +<!-- :data="uploadForm"--> +<!-- :on-preview="onPreview"--> +<!-- :file-list="fileListTwo">--> +<!-- <el-button size="small" type="primary" v-if="false">点击上传</el-button>--> +<!-- </el-upload>--> +<!-- </el-form-item>--> +<!-- <el-form-item label="作业资质证书:" v-if="ifApply">--> +<!-- <el-upload--> +<!-- accept=".pdf,.jpg,.png"--> +<!-- :action="fileRoad"--> +<!-- class="upload-demo"--> +<!-- ref="upload"--> +<!-- :data="uploadForm"--> +<!-- :on-preview="onPreview"--> +<!-- :file-list="fileListThree">--> +<!-- <el-button size="small" type="primary" v-if="false">点击上传</el-button>--> +<!-- </el-upload>--> +<!-- </el-form-item>--> + <el-form-item label="事故救援预案:" v-if="ifCompany"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + :data="uploadForm" + :on-preview="onPreview" + :file-list="fileListOne"> + </el-upload> + </el-form-item> + <el-form-item label="作业人员身体健康:" v-if="ifConstruction"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + :data="uploadForm" + :on-change="handleChangeTwo" + :auto-upload="true" + :on-remove="onRemove" + :on-success="onSuccess" + :on-preview="onPreview" + :file-list="fileListTwo"> + <el-button size="small" type="primary">点击上传</el-button> + </el-upload> + </el-form-item> + <el-form-item label="作业资质证书:" v-if="ifConstruction"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + :data="uploadForm" + :on-change="handleChangeThree" + :on-remove="onRemove" + :on-success="onSuccess" + :auto-upload="true" + :on-preview="onPreview" + :file-list="fileListThree"> + <el-button size="small" type="primary">点击上传</el-button> + </el-upload> + </el-form-item> + </el-form> + <div align="center" style="padding-top: 20px"> + <el-button type="primary" @click="goNext">下一步</el-button> + </div> + <el-dialog :visible.sync="dialogVisible"> + <img width="100%" :src="dialogImageUrl" alt=""> + </el-dialog> + </div> +</template> + +<script> + import Cookies from 'js-cookie' + import { deleteFile, getFileData } from '@/api/task' + + export default { + props:['basicInformation','title'], + name: 'index', + data(){ + return{ + ifApply:'', + ifCompany:'', + ifConstruction:'', + ifApplyButton:'', + ifCompanyButton:'', + disabled:'', + fileForm:{}, + header:{Authorization:''}, + fileRoad:process.env.BASE_API + '/task/upload', + dialogVisible:false, + dialogImageUrl:'', + riskAndDanger:[], + safetyOrganizeAction:[], + workSecurityAction:[], + fileList:[], + fileListOne:[], + fileListTwo:[], + fileListThree:[], + uploadForm:{ + taskcode:'', + type:'', + } + } + }, + mounted(){ + this.getFileList() + }, + methods:{ + async onPreview(file){ + window.open( process.env.IMG_API + file.fileurl,'_blank') + }, + async getFileList(){ + let params = {} + params["taskCode"] = this.basicInformation.code + let res = await getFileData(params) + if(res.data.code === '200'){ + this.fileList = [] + this.fileListOne = [] + this.fileListTwo = [] + this.fileListThree = [] + this.fileList = res.data.result + this.fileList.map(item =>{ + return Object.assign(item,{name:item.originalname}) + }) + for(let i in this.fileList){ + if(this.fileList[i].type === '事故救援预案'){ + this.fileListOne.push(this.fileList[i]) + } + } + for(let i in this.fileList){ + if(this.fileList[i].type === '作业人员身体健康'){ + this.fileListTwo.push(this.fileList[i]) + } + } + for(let i in this.fileList){ + if(this.fileList[i].type === '作业资质证书'){ + this.fileListThree.push(this.fileList[i]) + } + } + } + }, + submit(){ + this.uploadForm.type = "事故救援预案" + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + this.$refs.upload.submit() + }, + handlePictureCardPreview(file) { + this.dialogImageUrl = file.url; + this.dialogVisible = true; + }, + handleChangeOne(file, fileList) { + this.uploadForm.type = '事故救援预案' + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + }, + handleChangeTwo(file, fileList) { + this.uploadForm.type = '作业人员身体健康'; + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + }, + handleChangeThree(file, fileList) { + this.uploadForm.type = '作业资质证书'; + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + }, + onSuccess(response){ + if(response.code === '200'){ + this.$notify({ + type:'success', + duration:2000, + message:'上传成功', + title:'成功', + }) + this.getFileList() + } + }, + onRemove(file,fileList){ + return this.$confirm(`确定移除 ${ file.name }?`,'提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(() =>{ + let params = {} + params["id"] = file.id + deleteFile(params).then(res =>{ + if(res.data.code === '200'){ + this.$notify({ + type:'success', + duration:2000, + message:'删除成功', + title:'成功', + }) + this.getFileList() + }else{ + this.$message({ + type:'warning', + message:res.data.message + }) + } + }) + }) + }, + goNext(){ + if(this.title === '施工单位确认'){ + this.$emit('changeToConstructionConfirm') + }else{ + this.$emit('confirmConstruction') + } + }, + } + } +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/taskCreate/components/file/index.vue b/src/views/specialWorkManage/specialWork/taskCreate/components/file/index.vue new file mode 100644 index 0000000..1055d78 --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskCreate/components/file/index.vue @@ -0,0 +1,251 @@ +<template> + <div> + <el-form ref="form" :model="fileForm" label-width="160px" label-position="right"> + <el-form-item label="事故救援预案:"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + :data="uploadForm" + :on-change="handleChangeOne" + :auto-upload="true" + :on-remove="onRemove" + :on-success="onSuccess" + :on-preview="onPreview" + :file-list="fileListOne"> + <el-button size="small" type="primary">点击上传</el-button> + </el-upload> + </el-form-item> +<!-- <el-form-item label="作业人员身体健康:" v-if="ifApply">--> +<!-- <el-upload--> +<!-- accept=".pdf,.jpg,.png"--> +<!-- :action="fileRoad"--> +<!-- class="upload-demo"--> +<!-- ref="upload"--> +<!-- :headers="header"--> +<!-- :data="uploadForm"--> +<!-- :on-preview="onPreview"--> +<!-- :file-list="fileListTwo">--> +<!-- <el-button size="small" type="primary" v-if="false">点击上传</el-button>--> +<!-- </el-upload>--> +<!--<!– </el-form-item>–>--> +<!-- <el-form-item label="作业资质证书:" v-if="ifApply">--> +<!-- <el-upload--> +<!-- accept=".pdf,.jpg,.png"--> +<!-- :action="fileRoad"--> +<!-- class="upload-demo"--> +<!-- ref="upload"--> +<!-- :data="uploadForm"--> +<!-- :on-preview="onPreview"--> +<!-- :file-list="fileListThree">--> +<!-- <el-button size="small" type="primary" v-if="false">点击上传</el-button>--> +<!-- </el-upload>--> +<!-- </el-form-item>--> +<!-- <el-form-item label="事故救援预案:" v-if="ifCompany">--> +<!-- <el-upload--> +<!-- accept=".pdf,.jpg,.png"--> +<!-- :action="fileRoad"--> +<!-- class="upload-demo"--> +<!-- ref="upload"--> +<!-- :headers="header"--> +<!-- :data="uploadForm"--> +<!-- :on-preview="onPreview"--> +<!-- :file-list="fileListOne">--> +<!-- <el-button size="small" type="primary" v-if="false">点击上传</el-button>--> +<!-- </el-upload>--> +<!-- </el-form-item>--> +<!-- <el-form-item label="作业人员身体健康:" v-if="ifCompany">--> +<!-- <el-upload--> +<!-- accept=".pdf,.jpg,.png"--> +<!-- :action="fileRoad"--> +<!-- class="upload-demo"--> +<!-- ref="upload"--> +<!-- :headers="header"--> +<!-- :data="uploadForm"--> +<!-- :on-change="handleChangeTwo"--> +<!-- :auto-upload="true"--> +<!-- :on-remove="onRemove"--> +<!-- :on-success="onSuccess"--> +<!-- :on-preview="onPreview"--> +<!-- :file-list="fileListTwo">--> +<!-- <el-button size="small" type="primary" v-if="ifCompanyButton">点击上传</el-button>--> +<!-- </el-upload>--> +<!-- </el-form-item>--> +<!-- <el-form-item label="作业资质证书:" v-if="ifCompany">--> +<!-- <el-upload--> +<!-- accept=".pdf,.jpg,.png"--> +<!-- :action="fileRoad"--> +<!-- class="upload-demo"--> +<!-- ref="upload"--> +<!-- :headers="header"--> +<!-- :data="uploadForm"--> +<!-- :on-change="handleChangeThree"--> +<!-- :on-remove="onRemove"--> +<!-- :on-success="onSuccess"--> +<!-- :auto-upload="true"--> +<!-- :on-preview="onPreview"--> +<!-- :file-list="fileListThree">--> +<!-- <el-button size="small" type="primary" v-if="ifCompanyButton">点击上传</el-button>--> +<!-- </el-upload>--> +<!-- </el-form-item>--> + </el-form> + <div align="center" style="padding-top: 20px"> + <el-button type="primary" @click="goNext">下一步</el-button> + </div> + <el-dialog :visible.sync="dialogVisible"> + <img width="100%" :src="dialogImageUrl" alt=""> + </el-dialog> + </div> +</template> + +<script> +import Cookies from 'js-cookie' +import { deleteFile, getFileData } from '@/api/task' + +export default { + props:['basicInformation','title'], + name: 'index', + data(){ + return{ + ifApply:'', + ifCompany:'', + ifApplyButton:'', + ifCompanyButton:'', + disabled:'', + fileForm:{}, + header:{Authorization:''}, + fileRoad:process.env.BASE_API + '/task/upload', + dialogVisible:false, + dialogImageUrl:'', + riskAndDanger:[], + safetyOrganizeAction:[], + workSecurityAction:[], + fileList:[], + fileListOne:[], + fileListTwo:[], + fileListThree:[], + uploadForm:{ + taskcode:'', + type:'', + } + } + }, + mounted(){ + this.getFileList() + }, + methods:{ + async onPreview(file){ + window.open( process.env.IMG_API + file.fileurl,'_blank') + }, + async getFileList(){ + let params = {} + params["taskCode"] = this.basicInformation.code + let res = await getFileData(params) + if(res.data.code === '200'){ + this.fileList = [] + this.fileListOne = [] + this.fileListTwo = [] + this.fileListThree = [] + this.fileList = res.data.result + this.fileList.map(item =>{ + return Object.assign(item,{name:item.originalname}) + }) + for(let i in this.fileList){ + if(this.fileList[i].type === '事故救援预案'){ + this.fileListOne.push(this.fileList[i]) + } + } + for(let i in this.fileList){ + if(this.fileList[i].type === '作业人员身体健康'){ + this.fileListTwo.push(this.fileList[i]) + } + } + for(let i in this.fileList){ + if(this.fileList[i].type === '作业资质证书'){ + this.fileListThree.push(this.fileList[i]) + } + } + } + }, + submit(){ + this.uploadForm.type = "事故救援预案" + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + this.$refs.upload.submit() + }, + handlePictureCardPreview(file) { + this.dialogImageUrl = file.url; + this.dialogVisible = true; + }, + handleChangeOne(file, fileList) { + this.uploadForm.type = '事故救援预案' + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + }, + handleChangeTwo(file, fileList) { + this.uploadForm.type = '作业人员身体健康'; + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + }, + handleChangeThree(file, fileList) { + this.uploadForm.type = '作业资质证书'; + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + }, + onSuccess(response){ + if(response.code === '200'){ + console.log(this.fileListOne) + this.$notify({ + type:'success', + duration:2000, + message:'上传成功', + title:'成功', + }) + this.getFileList() + } + }, + onRemove(file,fileList){ + return this.$confirm(`确定移除 ${ file.name }?`,'提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(() =>{ + let params = {} + params["id"] = file.id + deleteFile(params).then(res =>{ + if(res.data.code === '200'){ + this.$notify({ + type:'success', + duration:2000, + message:'删除成功', + title:'成功', + }) + this.getFileList() + }else{ + this.$message({ + type:'warning', + message:res.data.message + }) + } + }) + }) + }, + goNext(){ + if(this.title === '施工单位确认'){ + this.$emit('changeToConstructionConfirm') + }else if(this.title === '施工单位信息填写'){ + + }else { + this.$emit('confirm') + } + + }, + } +} +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/taskCreate/components/fireMan/index.vue b/src/views/specialWorkManage/specialWork/taskCreate/components/fireMan/index.vue new file mode 100644 index 0000000..442e6e8 --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskCreate/components/fireMan/index.vue @@ -0,0 +1,127 @@ +<template> + <div> + <div style="padding-bottom: 10px"> + <el-button type="primary" @click="addTaskWorker">添加作业人</el-button> + </div> + <el-table :data="taskWorkers" border fit highlight-current-row style="width: 100%;" :header-cell-style="{'text-align':'center'}"> + <el-table-column type="index" label="序号" align="center" width="60"/> + <el-table-column prop="taskcode" label="作业编号" align="left"> + </el-table-column> + <el-table-column prop="unit" label="作业类型" align="left"> + <template slot-scope="scope"> + <el-select v-model="scope.row.tasktype"> + <el-option + v-for="item in taskTypeList" + :key="item.id" + :label="item.name" + :value="item.name" + > + </el-option> + </el-select> + </template> + </el-table-column> + <el-table-column prop="unit" label="施工单位" align="left"> + <template slot-scope="scope"> + <el-input v-model="scope.row.unit"></el-input> + </template> + </el-table-column> + <el-table-column prop="worker" label="作业人姓名" align="left"> + <template slot-scope="scope"> + <el-select v-model="scope.row.worker"> + <el-option + v-for="item in workerList" + :key="item.id" + :value="item.realname" + :label="item.realname" + > + </el-option> + </el-select> + </template> + </el-table-column> + <el-table-column prop="branch" label="特种作业工种" align="left"> + <template slot-scope="scope"> + <el-input v-model="scope.row.branch"></el-input> + </template> + </el-table-column> + <el-table-column prop="number" label="特种作业证号" align="left"> + <template slot-scope="scope"> + <el-input v-model="scope.row.number"></el-input> + </template> + </el-table-column> + <el-table-column label="操作" align="center"> + <template slot-scope="scope"> + <el-button type="text" @click="deleteWorker(scope.$index)">删除</el-button> + </template> + </el-table-column> + </el-table> + <div align="center" style="padding-top: 20px" v-if="title === '新增' || title === '编辑' || title=== '施工单位确认' || title === '施工单位信息填写' || title === '复制'"> + <el-button type="primary" @click="goNext">下一步</el-button> + </div> + </div> +</template> + +<script> + +import { userList } from '@/api/user' + +export default { + props:['basicInformation','title'], + name: 'index', + data(){ + return{ + taskWorkers:[], + workerList:[], + taskTypeList:[ + {id:0,name:'受限空间作业'}, + {id:1,name:'吊装作业'}, + {id:2,name:'动土作业'}, + {id:3,name:'断路作业'}, + {id:4,name:'高处作业'}, + {id:5,name:'临时用电作业'}, + {id:6,name:'盲板抽堵作业'}, + {id:7,name:'动火作业'}, + ], + } + }, + created(){ + this.getWorker() + }, + methods:{ + addTaskWorker(){ + this.taskWorkers.push({ + createdat: "", + createdby: "", + flag: 0, + id: 0, + modifiedat: "", + modifiedby: "", + taskcode: this.basicInformation.code, + unit: "", + worker: "", + branch: "", + number: "", + tasktype:'', + }) + }, + deleteWorker(val){ + this.taskWorkers.splice(val,1) + }, + goNext(){ + this.$emit('confirmConstruction') + }, + async getWorker(){ + let params = {} + params['pageIndex'] = 1 + params['pageSize'] = 1000 + let res = await userList(params) + if(res.data.code === '200'){ + this.workerList = res.data.result.result + } + } + } +} +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/taskCreate/components/reviewInfo/index.vue b/src/views/specialWorkManage/specialWork/taskCreate/components/reviewInfo/index.vue new file mode 100644 index 0000000..b1649a9 --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskCreate/components/reviewInfo/index.vue @@ -0,0 +1,73 @@ +<template> + <el-dialog title="审批" :visible.sync="reviewInfoDialog" :modal-append-to-body="false" :close-on-click-modal="false" width="50%"> + <div class="block"> + <el-timeline> + <el-timeline-item + v-for="(activity, index) in activities" + :key="index" + :color="'#0bbd87'" + :size="activity.size" + :timestamp="activity.reviewat"> + <div style="padding-bottom: 10px;font-weight: bolder">{{activity.level}}</div> + <el-card> + <el-row> + <el-col :span="2"> + <div>签字:</div> + </el-col> + <el-col :span="22"> + <img :src="activity.autograph" style="width:40px;height:40px;margin-left:10px;cursor:pointer" @click="showPic(activity.autograph)"></img> + </el-col> + </el-row> + <el-row> + <span>现场图:</span> + <img slot="reference" v-for="(item,index) in activity.pictures" :src="item.url" :key="index" style="width:40px;height:40px;margin-left:10px;cursor:pointer" @click="showPic()"></img> + </el-row> + + </el-card> + </el-timeline-item> + </el-timeline> + </div> + <el-dialog :visible.sync="dialogVisible" :append-to-body="true"> + <img width="100%" :src="dialogImageUrl" alt=""> + </el-dialog> + </el-dialog> +</template> + +<script> + export default { + name: 'index', + data(){ + return{ + reviewInfoDialog:false, + dialogVisible:false, + dialogImageUrl:'', + activities: [] + } + }, + methods:{ + openReviewInfo(value){ + this.reviewInfoDialog = true + debugger + this.activities = JSON.parse(JSON.stringify(value.taskReviews)) + for(let i in this.activities){ + if(this.activities[i].pictures !== null && this.activities[i].pictures.length !== 0){ + this.activities[i].pictures = this.activities[i].pictures.map( item =>{ + return process.env.IMG_API + item + }) + } + this.activities[i].autograph = process.env.IMG_API + this.activities[i].autograph + } + + + }, + showPic(value){ + this.dialogVisible = true + this.dialogImageUrl = value + }, + } + } +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/taskCreate/components/safetyAction/index.vue b/src/views/specialWorkManage/specialWork/taskCreate/components/safetyAction/index.vue new file mode 100644 index 0000000..2f00b61 --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskCreate/components/safetyAction/index.vue @@ -0,0 +1,170 @@ +<template> + <div> + <el-table :data="tasksecurity" border fit highlight-current-row style="width: 100%;" :header-cell-style="{'text-align':'center'}"> + <el-table-column type="index" label="序号" align="center" width="60"/> + <el-table-column prop="content" label="安全措施" align="left"> + <template slot-scope="scope"> + <div v-if="scope.row.checktype === '判断'"> + {{scope.row.content}} + </div> + <div v-if="scope.row.checktype === '填空'"> + <span>{{scope.row.content.split('_')[0]}}</span> + <el-input style="width:50px" v-model="scope.row.num"></el-input> + <span>{{scope.row.content.split('_')[1]}}</span> + </div> + </template> + </el-table-column> + <el-table-column prop="checked" label="选项" align="center" width="300"> + <template slot-scope="scope"> + <el-radio v-model="scope.row.checked" :label="1">是</el-radio> + <el-radio v-model="scope.row.checked" :label="0">否</el-radio> + <el-radio v-model="scope.row.checked" :label="2">不涉及</el-radio> + </template> + </el-table-column> + </el-table> + <div align="center" style="padding-top: 20px" v-if="title === '新增' || title === '编辑' || title=== '施工单位确认' || title === '施工单位信息填写' || title === '复制'"> + <el-button type="primary" @click="goNext">下一步</el-button> + </div> + </div> +</template> + +<script> +import { getSafetyActionList } from '@/api/task' + +export default { + props:['basicInformation','title'], + name: 'index', + data(){ + return{ + currentPage:0, + pageSize:1000, + tasksecurity:[], + safetyActionData:[ + // {id:0,selected:true,action:'动火设备内部构件清理干净,蒸汽吹扫或水洗合格,达到用火条件。',type:0}, + // {id:1,selected:null,actionOne:'',actionTwo:'',type:1}, + // {id:2,selected:null,action:'动火点10m范围内及动火点下部区域严禁同时进行可燃溶剂清洗和喷漆等作业。在受限空间内进行动火作业、临时用电作业时,不得同时进行刷漆、喷漆作业或使用可燃溶剂清洗等其他可能散发易燃气体、可燃液体的作业。',type:0}, + // {id:3,selected:null,action:'动火点周围的下水井、地漏、地沟、电缆沟等已清除易燃物,并已采取覆盖、铺沙、水封等手段进行隔离。',type:0}, + // {id:4,selected:null,action:'动火点周围易燃物已清除。',type:0}, + // {id:5,selected:null,action:'罐区内动火点同一围堰内和防火间距内的储罐不同时进行脱水作业,排凝等作业。',type:0}, + // {id:6,selected:null,action:'距动火点30m内严禁排放可燃气体,15m内严禁排放各类可燃液体。',type:0}, + // {id:7,selected:null,action:'电焊回路线已接在焊件上,把线未穿过下水井或其它设备搭接。',type:0}, + // {id:8,selected:null,action:'高处作业已采取防火花飞溅措施。',type:0}, + // {id:9,selected:null,action:'乙炔气瓶(直立放置)、氧气瓶与火源间的距离大于10m,二者间距不应小于5m。',type:0}, + // {id:10,selected:null,actionOne:'',actionTwo:'',actionThree:'',actionFour:'',type:2}, + // {id:11,selected:null,actionOne:'',type:3}, + ], + } + }, + methods:{ + async getSafeTyAction(){ + let typeList = [] + for(let i in this.basicInformation.subTaskInfos){ + typeList.push(this.basicInformation.subTaskInfos[i].type) + } + let params = {} + params['pageIndex'] = this.currentPage + params['pageSize'] = this.pageSize + params['type'] = '申请单位负责检查项' + this.safetyActionData = [] + this.tasksecurity = [] + let res = await getSafetyActionList(params) + if(res.data.code === '200'){ + this.safetyActionData = res.data.result + for(let i in this.safetyActionData){ + if(typeList.indexOf(this.safetyActionData[i].tasktype) !== -1){ + this.tasksecurity.push({ + id:this.safetyActionData[i].id, + taskcode: this.basicInformation.code, + content: this.safetyActionData[i].content, + checked: this.safetyActionData[i].check, + num: this.safetyActionData[i].number, + confirmedby: "test", + checktype:this.safetyActionData[i].checktype, + tasktype:this.safetyActionData[i].tasktype + }) + } + } + // this.safetyActionData.filter(item =>{ + // if(typeList.indexOf(item.tasktype) !== -1){ + // return{ + // id:item.id, + // taskcode: this.basicInformation.code, + // content: item.content, + // checked: item.check, + // num: item.number, + // confirmedby: "test", + // checktype:item.checktype, + // tasktype:item.tasktype + // } + // } + // }) + // console.log(typeList) + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + }, + async getConstructionAction(){ + // let typeList = [] + // for(let i in this.basicInformation.subTaskInfos){ + // typeList.push(this.basicInformation.subTaskInfos[i].type) + // } + let params = {} + params['pageIndex'] = this.currentPage + params['pageSize'] = this.pageSize + params['type'] = '施工单位负责检查项' + this.safetyActionData = [] + this.tasksecurity = [] + let res = await getSafetyActionList(params) + if(res.data.code === '200'){ + this.safetyActionData = res.data.result + // for(let i in this.safetyActionData){ + // if(typeList.indexOf(this.safetyActionData[i].tasktype) !== -1){ + // this.tasksecurity.push({ + // id:this.safetyActionData[i].id, + // taskcode: this.basicInformation.code, + // content: this.safetyActionData[i].content, + // checked: this.safetyActionData[i].check, + // num: this.safetyActionData[i].number, + // confirmedby: "test", + // checktype:this.safetyActionData[i].checktype, + // tasktype:this.safetyActionData[i].tasktype + // }) + // } + // } + this.tasksecurity = this.safetyActionData.map(item =>{ + return { + id:item.id, + taskcode: this.basicInformation.code, + content: item.content, + checked: item.check, + num: item.number, + confirmedby: "test", + checktype:item.checktype, + } + }) + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + }, + goNext(){ + if(this.title === '施工单位确认'){ + this.$emit('changeToConstructionConfirm') + }else if(this.title === '施工单位信息填写'){ + this.$emit('confirmConstruction') + }else { + this.$emit('changeToCardFile') + } + }, + } +} +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/taskCreate/components/safetyAndRiskConfirm/index.vue b/src/views/specialWorkManage/specialWork/taskCreate/components/safetyAndRiskConfirm/index.vue new file mode 100644 index 0000000..6f36966 --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskCreate/components/safetyAndRiskConfirm/index.vue @@ -0,0 +1,298 @@ +<template> + <div class="safetyAndRiskConfirm"> + <div class="safetyAndRiskConfirm_title"> + <span>{{"安全交底和风险告知确认卡"}}</span> + <span style="color:red">{{"(*必填项)"}}</span> + </div> + <el-descriptions class="margin-top" :column="2" border> + <el-descriptions-item :span="1"> + <template slot="label"> + <i class="el-icon-office-building"></i> + 作业单位 + </template> + <div class="safetyAndRiskConfirm_input">{{constructionUnit}}</div> + </el-descriptions-item> + <el-descriptions-item :span="1" class="test"> + <template slot="label"> + <i class="el-icon-user-solid"></i> + 车间项目负责人 + </template> + <div class="safetyAndRiskConfirm_input">{{director}}</div> + </el-descriptions-item> + <el-descriptions-item :span="2"> + <template slot="label" > + <i class="el-icon-notebook-2"></i> + 作业内容 + <span style="color:red">*</span> + <span>:</span> + </template> + <el-input class="safetyAndRiskConfirm_input" v-model="taskRiskForm.content"></el-input> + </el-descriptions-item> + <el-descriptions-item :span="2"> + <template slot="label" > + <i class="el-icon-time"></i> + 作业时间 + </template> + <div class="safetyAndRiskConfirm_input">{{startTime + '-' + endTime}}</div> + </el-descriptions-item> + <el-descriptions-item :span="2"> + <template slot="label" > + <i class="el-icon-user"></i> + 作业人员 + </template> + <el-input class="safetyAndRiskConfirm_input"></el-input> + </el-descriptions-item> + </el-descriptions> + <el-descriptions title="基本要求" direction="vertical" :column="4" border> + </el-descriptions> + <div class="safetyAndRiskConfirm_top"> + <div class="safetyAndRiskConfirm_top_title"> + {{"作业前,项目负责人应对施工作业人员进行安全交底和风险告知,内容包括作业许可范围及作业环境、作业风险、防范措施(工艺、设备、个体防护等)、应急措施及其他注意事项。作业人员应按照风险告知内容,逐条对接确认,落实到位后方可作业。"}} + </div> + </div> + <div class="safetyAndRiskConfirm_middle"> + <div class="safetyAndRiskConfirm_middle_left"> + <div class="safetyAndRiskConfirm_middle_left_title">{{'安全交底和风险告知内容'}}</div> + </div> + <div class="safetyAndRiskConfirm_middle_right"> + <div class="safetyAndRiskConfirm_middle_right_one"> + <div class="safetyAndRiskConfirm_middle_right_one_top"> + {{"作业许可范围及作业环境"}} + <span style="color:red">*</span> + <span>:</span> + </div> + <div class="safetyAndRiskConfirm_middle_right_one_text"> + <el-input type="textarea" :row="2" class="safetyAndRiskConfirm_middle_right_one_textarea" v-model="taskRiskForm.environment"></el-input> + </div> + </div> + <div class="safetyAndRiskConfirm_middle_right_one"> + <div class="safetyAndRiskConfirm_middle_right_one_top"> + {{"作业风险:"}} + </div> + <div class="safetyAndRiskConfirm_middle_right_one_text"> + <el-input type="textarea" :row="2" class="safetyAndRiskConfirm_middle_right_one_textarea" v-model="hazard" readonly></el-input> + </div> + </div> + <div class="safetyAndRiskConfirm_middle_right_one"> + <div class="safetyAndRiskConfirm_middle_right_one_top"> + {{"防范措施(工艺、设备、个体防护等)"}} + <span style="color:red">*</span> + <span>:</span> + </div> + <div class="safetyAndRiskConfirm_middle_right_one_text"> + <el-input type="textarea" :row="2" class="safetyAndRiskConfirm_middle_right_one_textarea" v-model="taskRiskForm.preventive"></el-input> + + </div> + </div> + <div class="safetyAndRiskConfirm_middle_right_one"> + <div class="safetyAndRiskConfirm_middle_right_one_top"> + {{"应急措施"}} + <span style="color:red">*</span> + <span>:</span> + </div> + <div class="safetyAndRiskConfirm_middle_right_one_text"> + <el-input type="textarea" :row="2" class="safetyAndRiskConfirm_middle_right_one_textarea" v-model="taskRiskForm.emergency"></el-input> + </div> + </div> + <div class="safetyAndRiskConfirm_middle_right_one"> + <div class="safetyAndRiskConfirm_middle_right_one_top"> + {{"其他注意事项"}} + <span style="color:red">*</span> + <span>:</span> + </div> + <div calss="safetyAndRiskConfirm_middle_right_one_text"> + <el-input type="textarea" :row="2" class="safetyAndRiskConfirm_middle_right_one_textarea" v-model="taskRiskForm.other"></el-input> + </div> + </div> + <div class="safetyAndRiskConfirm_middle_right_two"> + <div class="safetyAndRiskConfirm_middle_right_one_top"> + {{"企业负责人确认:"}} + </div> + <div calss="safetyAndRiskConfirm_middle_right_one_text"> + <el-input type="textarea" :row="2" class="safetyAndRiskConfirm_middle_right_one_textarea"></el-input> + </div> + </div> + </div> + </div> + <div class="safetyAndRiskConfirm_bottom"> + <div class="safetyAndRiskConfirm_bottom_title"> + {{"我方所有施工作业人员已明确该项目的风险并清楚了危害、防范措施和其它注意事项。"}} + </div> + </div> + <div align="center" style="padding-top: 20px" v-if="title === '新增' || title === '编辑' || title=== '施工单位确认' || title === '施工单位信息填写' || title === '复制'"> + <el-button type="primary" @click="goNext">下一步</el-button> + </div> + </div> +</template> + +<script> +export default { + name: 'index', + props:['basicInformation','title'], + data(){ + return{ + director:'', + startTime:'', + endTime:'', + constructionUnit:'', + hazard:'', + taskRiskForm:{ + id:'', + taskcode:'', + content:'', + environment:'', + preventive:'', + emergency:'', + other:'', + director:'', + taskdirector:'', + confirmat:'', + createdat:'', + createdby:'', + modifiedat:'', + modifiedby:'', + flag:'', + }, + } + }, + mounted(){ + this.getBasic() + }, + methods:{ + getBasic(){ + this.constructionUnit = this.basicInformation.constructionunit + this.director = this.basicInformation.director + this.startTime = this.basicInformation.starttime + this.endTime = this.basicInformation.endtime + this.hazard = this.basicInformation.hazard + this.taskRiskForm.taskcode = this.basicInformation.code + }, + goNext(){ + if(this.title === '施工单位确认'){ + this.$emit('changeToConstructionConfirm') + }else { + this.$emit('changeToCardFile') + } + }, + } +} +</script> + +<style scoped> +.safetyAndRiskConfirm{ + width:60%; + margin:0 auto; +} +.safetyAndRiskConfirm_title{ + padding-bottom: 15px; + font-weight: bold; + font-size: 25px; + text-align: center; +} +/deep/.el-descriptions__header{ + border-left: 1px solid #EBEEF5; + border-right: 1px solid #EBEEF5; + border-bottom: 1px solid #EBEEF5; + margin: 0px auto; + height:30px; + text-align: center; +} +/deep/.el-descriptions__title{ + text-align: center; + width:100%; + margin: 0px auto; +} +.safetyAndRiskConfirm_top{ + border-left: 1px solid #EBEEF5; + border-right: 1px solid #EBEEF5; + border-bottom: 1px solid #EBEEF5; + margin: 0px auto; + height:80px; + font-size: 18px; + text-indent: 2em; +} +.safetyAndRiskConfirm_top_title{ + position: relative; + top: 50%; /*偏移*/ + transform: translateY(-50%); +} +/*.safetyAndRiskConfirm_basic{*/ +/* border-left: 1px solid #EBEEF5;*/ +/* border-right: 1px solid #EBEEF5;*/ +/* border-bottom: 1px solid #EBEEF5;*/ +/* margin: 0px auto;*/ +/* height:80px;*/ +/* font-size: 18px;*/ +/* text-indent: 2em;*/ +/*}*/ +.safetyAndRiskConfirm_middle{ + border-left: 1px solid #EBEEF5; + border-right: 1px solid #EBEEF5; + border-bottom: 1px solid #EBEEF5; + margin: 0px auto; + height:550px; + font-size: 18px; +} +.safetyAndRiskConfirm_middle_left{ + height:100%; + width:10%; + border-right: 1px solid #EBEEF5; + display:inline-block; + float: left; +} +.safetyAndRiskConfirm_middle_left_title{ + padding-left: 12px; + padding-right: 12px; + text-align: center; + position: relative; + top: 50%; /*偏移*/ + transform: translateY(-50%); +} +.safetyAndRiskConfirm_middle_right{ + float: left; + height:100%; + width:90%; +} +.safetyAndRiskConfirm_middle_right_one{ + height:16.6%; + width:100%; + border-bottom: 1px solid #EBEEF5; +} +.safetyAndRiskConfirm_middle_right_two{ + height:16.6%; + width:100%; +} +.safetyAndRiskConfirm_middle_right_one_top{ + height:30%; + width:100%; + padding-top:5px; + padding-left: 5px; +} +.safetyAndRiskConfirm_middle_right_one_textarea{ + padding-left: 5px; + padding-right:5px ; + padding-top: 2px; +} +.safetyAndRiskConfirm_middle_right_one_text{ + height:70%; + width:100%; +} + +.safetyAndRiskConfirm_bottom{ + border-left: 1px solid #EBEEF5; + border-right: 1px solid #EBEEF5; + border-bottom: 1px solid #EBEEF5; + margin: 0px auto; + height:100px; + font-size: 18px; +} +.safetyAndRiskConfirm_bottom_title{ + text-align: center; + position: relative; + top: 50%; /*偏移*/ + transform: translateY(-50%); +} +.test{ + /*border: 0px;*/ +} +</style> diff --git a/src/views/specialWorkManage/specialWork/taskCreate/components/taskBasic/index.vue b/src/views/specialWorkManage/specialWork/taskCreate/components/taskBasic/index.vue new file mode 100644 index 0000000..cd582aa --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskCreate/components/taskBasic/index.vue @@ -0,0 +1,1552 @@ +<template> + <div style="padding:20px 50px 0 50px;"> + <el-form ref="form" :rules="taskBasicRules" :model="taskBasicForm" label-position="center" label-width="150px"> + <el-collapse v-model="activeNames"> + <el-collapse-item title="基本信息" name="0"> + + <el-row> + <el-col :span="8"> + <el-form-item label="申请单位:" prop="unit"> + <el-input v-model="taskBasicForm.unit" readonly></el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="申请人:" prop="applicant"> + <el-input v-model="taskBasicForm.applicant" readonly></el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="负责人:" prop="director"> + <el-input v-model="taskBasicForm.director"></el-input> + </el-form-item> + </el-col> + </el-row> + + <el-row> + <el-col :span="8"> + <el-form-item label="危害辨识:" prop="hazard"> + <el-select v-model="taskBasicForm.hazard" filterable class="taskBasic_select" multiple> + <el-option + v-for="item in hazardList" + :key="item.id" + :label="item.text" + :value="item.text" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="开始时间:" style="margin-right: 0px" prop="starttime"> + <el-date-picker value-format="yyyy-MM-dd HH:mm" type="datetime" v-model="taskBasicForm.starttime" placeholder="选择开始日期" class="taskBasic_select"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="结束时间:" prop="endtime"> + <el-date-picker value-format="yyyy-MM-dd HH:mm" type="datetime" v-model="taskBasicForm.endtime" placeholder="选择结束日期" class="taskBasic_select"> + </el-date-picker> + </el-form-item> + </el-col> + </el-row> + + <el-row> + + <el-col :span="8"> + <el-form-item label="施工单位:" prop="constructionunit" > + <el-select v-model="taskBasicForm.constructionunit" clearable class="taskBasic_select"> + <el-option + v-for="item in companyList" + :key="item.id" + :value="item.company" + :label="item.company" + ></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="16"> + <el-form-item label="作业地点:" prop="area"> + <el-input v-model="taskBasicForm.area"></el-input> + </el-form-item> + </el-col> + </el-row> + + <el-row> + + <el-col :span="8"> + <el-form-item label="是否节假日:" prop="isholiday" > + <el-select v-model="taskBasicForm.isholiday" clearable class="taskBasic_select"> + <el-option + v-for="item in list" + :key="item.id" + :value="item.id" + :label="item.name" + ></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="16"> + <el-form-item label="作业内容:" prop="description"> + <el-input v-model="taskBasicForm.description"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="8"> + <el-form-item label="是否需要检测气体:" prop="isanalysis" > + <el-select v-model="taskBasicForm.isanalysis" clearable class="taskBasic_select" @change="showAnalysis"> + <el-option + v-for="item in list" + :key="item.id" + :value="item.id" + :label="item.name" + ></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="8" v-if="ifAnalysis"> + <el-form-item label="分析地点:" prop="analysisarea" > + <el-input v-model="taskBasicForm.analysisarea"></el-input> + </el-form-item> + </el-col> + <el-col :span="8" v-if="ifAnalysis"> + <el-form-item label="分析介质:" prop="analysismedium" > + <el-input v-model="taskBasicForm.analysismedium"></el-input> + </el-form-item> + </el-col> + </el-row> + + </el-collapse-item> + <el-collapse-item title="受限空间作业" name="1"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifIncludeArea" :label="1">是</el-radio> + <el-radio v-model="ifIncludeArea" :label="0">否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifIncludeArea"> + <el-row> + <el-col :span="8"> + <el-form-item label="受限空间分类:" prop="spacecategory"> + <el-select v-model="taskBasicForm.spacecategory" class="taskBasic_select" @change="handleSpaceCategory"> + <el-option + v-for="item in spaceCategoryList" + :key="item.id" + :value="item.name" + :label="item.name" + ></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="受限空间名称:" prop="spacename"> + <el-select v-model="taskBasicForm.spacename" class="taskBasic_select"> + <el-option + v-for="item in spaceNameList" + :key="item.id" + :value="item.name" + :label="item.name" + ></el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="8"> + <el-form-item label="受限空间介质名称:" prop="spacemedium"> + <el-input v-model="taskBasicForm.spacemedium" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="是否受酸碱腐蚀:" prop="acibase"> + <el-select v-model="taskBasicForm.acibase" class="taskBasic_select"> + <el-option + v-for="item in acibaseList" + :key="item.id" + :value="item.name" + :label="item.name" + ></el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + </div> + + </el-collapse-item> + <el-collapse-item title="吊装作业" name="2"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifHoisting" :label="1">是</el-radio> + <el-radio v-model="ifHoisting" :label="0">否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifHoisting"> + <el-row> + <el-col :span="8"> + <el-form-item label="吊装重物等级:" prop="hoistinglevel"> + <el-select v-model="taskBasicForm.hoistinglevel" class="taskBasic_select"> + <el-option value="一级吊装(质量>100吨)"></el-option> + <el-option value="二级吊装(40吨<=质量<=100吨)"></el-option> + <el-option value="三级吊装(质量<40吨)"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="吊装重物质量(t):" prop="hoistingweight"> + <el-input v-model="taskBasicForm.hoistingweight" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + </div> + </el-collapse-item> + <el-collapse-item title="动土作业" name="3"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifBuilding" :label="1">是</el-radio> + <el-radio v-model="ifBuilding" :label="0">否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifBuilding"> + <el-row> + <el-col :span="8"> + <el-form-item label="动土作业深度:" prop="soildepth"> + <el-input v-model="taskBasicForm.soildepth" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="动土作业面积:" prop="soilarea"> + <el-input v-model="taskBasicForm.soilarea" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-form-item label="动土方案文件:" prop="soilfile"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + :data="uploadForm" + list-type="picture-card" + :file-list="taskBasicForm.soilfile" + :on-change="handleChangeBuildingFile" + :on-success="onSoilFileSuccess" + :auto-upload="true"> + <i slot="default" class="el-icon-plus"></i> + <div slot="file" slot-scope="{file}"> + <img + class="el-upload-list__item-thumbnail" + :src="file.url" alt="" + > + <span class="el-upload-list__item-actions"> + <span + class="el-upload-list__item-preview" + @click="handleFile(file)" + > + <i class="el-icon-zoom-in"></i> + </span> + <span + v-if="!disabled" + class="el-upload-list__item-delete" + @click="handleRemove(file,'one')" + > + <i class="el-icon-delete"></i> + </span> + </span> + </div> + </el-upload> + </el-form-item> + </el-row> + </div> + </el-collapse-item> + <el-collapse-item title="断路作业" name="4"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifIncludeRoad" :label="1">是</el-radio> + <el-radio v-model="ifIncludeRoad" :label="0">否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifIncludeRoad"> + <el-row> + <el-col :span="16"> + <el-form-item label="断路原因:" prop="breakreason"> + <el-input v-model="taskBasicForm.breakreason" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-form-item label="断路地段示意图:" prop="breakfile"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + list-type="picture-card" + :file-list="taskBasicForm.breakfile" + :on-success="onBreakFileSuccess" + :on-change="handleChangeRoadFile" + :auto-upload="true"> + <i slot="default" class="el-icon-plus"></i> + <div slot="file" slot-scope="{file}"> + <img + class="el-upload-list__item-thumbnail" + :src="file.url" alt="" + > + <span class="el-upload-list__item-actions"> + <span + class="el-upload-list__item-preview" + @click="handleFile(file)" + > + <i class="el-icon-zoom-in"></i> + </span> + <span + v-if="!disabled" + class="el-upload-list__item-delete" + @click="handleRemove(file,'two')" + > + <i class="el-icon-delete"></i> + </span> + </span> + </div> + </el-upload> + </el-form-item> + </el-row> + </div> + </el-collapse-item> + <el-collapse-item title="高处作业" name="5"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifIncludeHigh" :label="1">是</el-radio> + <el-radio v-model="ifIncludeHigh" :label="0">否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifIncludeHigh"> + <el-row> + <el-col :span="8"> + <el-form-item label="作业等级:" prop="heightlevel"> + <el-select v-model="taskBasicForm.heightlevel" class="taskBasic_select"> + <el-option value="一级高处作业(2米≤高度<5米)"></el-option> + <el-option value="二级高处作业(5米≤高度<15米)"></el-option> + <el-option value="三级高处作业(15米≤高度<30米)"></el-option> + <el-option value="特级高处作业(高度≥30米)"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="作业高度:" prop="workheight"> + <el-input type="number" v-model="taskBasicForm.workheight" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + </div> + </el-collapse-item> + <el-collapse-item title="临时用电作业" name="6"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifIncludeElectricity" :label="1">是</el-radio> + <el-radio v-model="ifIncludeElectricity" :label="0">否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifIncludeElectricity"> + <el-row> + <el-col :span="8"> + <el-form-item label="电压接入点:" prop="electricityarea"> + <el-input v-model="taskBasicForm.electricityarea" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="工作电压:" prop="voltage"> + <el-input v-model="taskBasicForm.voltage" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="8"> + <el-form-item label="用电设备及功率:" prop="power"> + <el-input v-model="taskBasicForm.power" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + </div> + </el-collapse-item> + <el-collapse-item title="盲板抽堵作业" name="7"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifIncludePump" :label="1" >是</el-radio> + <el-radio v-model="ifIncludePump" :label="0" >否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifIncludePump"> + <el-row> + <el-col :span="8"> + <el-form-item label="设备管道名称:" prop="pipename"> + <el-input v-model="taskBasicForm.pipename" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="设备管道介质:" prop="pipemedium"> + <el-input v-model="taskBasicForm.pipemedium" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="8"> + <el-form-item label="设备管道温度:" prop="pipetemperature"> + <el-input v-model="taskBasicForm.pipetemperature" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="设备管道压力:" prop="pipepressure"> + <el-input v-model="taskBasicForm.pipepressure" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="8"> + <el-form-item label="盲板材质:" prop="blindboardmaterial"> + <el-input v-model="taskBasicForm.blindboardmaterial" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="盲板规格11:" prop="blindboardspecification"> + <el-input v-model="taskBasicForm.blindboardspecification" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="8"> + <el-form-item label="盲板编号:" prop="blindboardnumber"> + <el-input v-model="taskBasicForm.blindboardnumber" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-form-item label="盲板位置图:" prop="blindboardlocation"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + list-type="picture-card" + :file-list="taskBasicForm.blindboardlocation" + :on-success="onPumpFileSuccess" + :on-change="handleChangePumpFile" + :auto-upload="true"> + <i slot="default" class="el-icon-plus"></i> + <div slot="file" slot-scope="{file}"> + <img + class="el-upload-list__item-thumbnail" + :src="file.url" alt="" + > + <span class="el-upload-list__item-actions"> + <span + class="el-upload-list__item-preview" + @click="handleFile(file)" + > + <i class="el-icon-zoom-in"></i> + </span> + <span + v-if="!disabled" + class="el-upload-list__item-delete" + @click="handleRemove(file,'three')" + > + <i class="el-icon-delete"></i> + </span> + </span> + </div> + </el-upload> + </el-form-item> + </el-row> + </div> + </el-collapse-item> + <el-collapse-item title="动火作业" name="8"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifIncludeFire" :label="1">是</el-radio> + <el-radio v-model="ifIncludeFire" :label="0">否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifIncludeFire"> + <el-row> + <el-col :span="8"> + <el-form-item label="动火级别:" prop="firelevel"> + <el-select v-model="taskBasicForm.firelevel" class="taskBasic_select"> + <el-option + v-for="item in levelList" + :key="item.id" + :label="item.name" + :value="item.id" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="动火方式:" prop="firetype"> + <el-select v-model="taskBasicForm.firetype" filterable class="taskBasic_select"> + <el-option + v-for="item in fireTypeList" + :key="item.id" + :value="item.text" + :label="item.text" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + </div> + </el-collapse-item> + </el-collapse> + </el-form> + <div align="center" style="padding-top: 20px" v-if="title === '新增' || title === '编辑' || title=== '施工单位确认' || title === '施工单位信息填写'|| title === '施工单位信息填写' || title === '复制'"> + <el-button type="primary" @click="goNext">下一步</el-button> + </div> + <el-dialog :visible.sync="dialogVisible" :append-to-body="true"> + <img width="100%" :src="dialogImageUrl" alt=""> + </el-dialog> + </div> +</template> + +<script> + import { getUnitList } from '@/api/unitManage' + import Cookies from 'js-cookie' + import { addTask, updateTask } from '@/api/task' + import { dictionaryAllItems } from '@/api/dictionary' + + export default { + name: 'index', + props:['title'], + data(){ + return{ + type:'', + fileRoad:process.env.BASE_API + '/task/web/upload', + uploadForm:{ + name:'', + }, + header:{Authorization:''}, + taskBasicForm:{ + applicant: "", + applyunitname: "", + applyunitopinion: "", + applyunittime: "", + approverprofession: "", + approversupervisor: "", + area: "", + code: "", + completedconfirm: "", + completedname: "", + completedtime: "", + constructionname: "", + constructionopinion: "", + constructiontime: "", + constructionunit: "", + createdat: "", + createdby: "", + department: "", + director: "", + endtime: "", + enterprisename: "", + enterpriseopinion: "", + enterprisetime: "", + flag: 0, + hazard: [], + id: 0, + isdel: 0, + isholiday: null, + level:'', + modifiedat: "", + modifiedby: "", + othertask: "", + partdirector: "", + profession: "", + relevantname: "", + relevantopinion: "", + relevanttime: "", + resources: [ + ], + securityname: "", + securityopinion: "", + securitytime: "", + securitydep: "", + shiftleadername: "", + shiftleaderopinion: "", + shiftleadertime: "", + starttime: "", + status: 0, + supervisor: "", + taskAnalyses: [ + ], + taskEquipments: [ + ], + taskRisk: { + confirmat: "", + content: "", + createdat: "", + createdby: "", + director: "", + emergency: "", + environment: "", + flag: 0, + id: 0, + modifiedat: "", + modifiedby: "", + other: "", + preventive: "", + taskcode: "", + taskdirector: "" + }, + taskSecurities: [ + ], + taskWorkers: [ + ], + unit: "", + subTaskInfos:[], + type:'', + category:'', + firelevel:'', + checked:'', + spacecategory:'', + spacename:'', + spacemedium:'', + acibase:'', + hoistinglevel:'', + hoistingweight:'', + soildepth:'', + soilarea:'', + soilfile:[], + breakreason:'', + breakfile:[], + workheight:'', + heightlevel:'', + electricityarea:'', + voltage:'', + power:'', + pipename:'', + pipemedium:'', + pipetemperature:'', + pipepressure:'', + blindboardmaterial:'', + blindboardspecification:'', + blindboardnumber:'', + commander:'', + blindboardlocation:[], + firetype:'', + description:'', + isanalysis:'', + analysisarea:'', + analysismedium:'' + }, + activeNames:['0'], + companyList:[], + fireTypeList:[], + hazardList:[], + list:[{id:0,name:'否'},{id:1,name:'是'}], + levelList:[{id:2,name:'特级'},{id:1,name:'一级'},{id:0,name:'二级'},], + spaceCategoryList:[{id:0,name:'密闭设备:如船舱、贮罐、车载槽罐、反应塔(釜)、冷藏箱、压力容器、管道、烟道、锅炉等'},{id:1,name:'地下有限空间:如地下管道、地下室、地下仓库、地下工程、暗沟、隧道、涵洞、地坑、废井、地窖、污水池(井)、沼气池、化粪池、下水道等'},{id:2,name:'地上有限空间:如储藏室、酒糟池、发酵池、垃圾站、温室、冷库、粮仓、料仓等'},], + spaceNameList:[], + acibaseList:[{id:0,name:'酸腐蚀'},{id:1,name:'碱腐蚀'},{id:2,name:'其他腐蚀'},{id:3,name:'没有腐蚀'}], + taskBasicRules:{ + unit: [{ required: true, message: '申请单位不能为空', trigger: 'blur' }], + applicant: [{ required: true, message: '申请人不能为空', trigger: 'blur' }], + level: [{ required: true, message: '动火作业级别不能为空', trigger: 'change' }], + mode: [{ required: true, message: '用户名不能为空', trigger: 'blur' }], + hazard: [{ required: true, message: '危害辨识不能为空', trigger: 'blur' }], + director: [{ required: true, message: '负责人不能为空', trigger: 'blur' }], + area: [{ required: true, message: '动火地点不能为空', trigger: 'blur' }], + constructionunit: [{ required: true, message: '施工部门不能为空', trigger: 'change' }], + starttime: [{ required: true, message: '开始时间不能为空', trigger: 'blur' }], + endtime: [{ required: true, message: '结束时间不能为空', trigger: 'blur' }], + spacecategory: [{ required: true, message: '受限空间分类不能为空', trigger: 'change' }], + spacename: [{ required: true, message: '受限空间名称不能为空', trigger: 'change' }], + spacemedium: [{ required: true, message: '受限空间介质名称不能为空', trigger: 'change' }], + acibase: [{ required: true, message: '是否酸碱腐蚀不能为空', trigger: 'change' }], + hoistinglevel: [{ required: true, message: '吊装重物等级不能为空', trigger: 'change' }], + hoistingweight: [{ required: true, message: '吊装重物质量不能为空', trigger: 'blur' }], + soildepth: [{ required: true, message: '动土作业深度不能为空', trigger: 'blur' }], + soilarea: [{ required: true, message: '动土作业面积不能为空', trigger: 'blur' }], + // soilfile: [{ required: true, message: '动土方案文件不能为空', trigger: 'blur' }], + breakreason: [{ required: true, message: '断路原因不能为空', trigger: 'blur' }], + // breakfile: [{ required: true, message: '断路地段示意图不能为空', trigger: 'blur' }], + heightlevel: [{ required: true, message: '作业等级不能为空', trigger: 'change' }], + workheight: [{ required: true, message: '作业高度不能为空', trigger: 'blur' }], + electricityarea: [{ required: true, message: '电压接入点不能为空', trigger: 'blur' }], + voltage: [{ required: true, message: '工作电压不能为空', trigger: 'blur' }], + power: [{ required: true, message: '用电设备及功率不能为空', trigger: 'blur' }], + pipename: [{ required: true, message: '设备管道名称不能为空', trigger: 'blur' }], + pipemedium: [{ required: true, message: '设备管道介质不能为空', trigger: 'blur' }], + pipetemperature: [{ required: true, message: '设备管道温度不能为空', trigger: 'blur' }], + pipepressure: [{ required: true, message: '设备管道压力不能为空', trigger: 'blur' }], + blindboardmaterial: [{ required: true, message: '盲板材质不能为空', trigger: 'blur' }], + blindboardspecification: [{ required: true, message: '盲板规格不能为空', trigger: 'blur' }], + blindboardnumber: [{ required: true, message: '盲板编号不能为空', trigger: 'blur' }], + // blindboardlocation: [{ required: true, message: '盲板位置图不能为空', trigger: 'blur' }], + firelevel: [{ required: true, message: '动火级别不能为空', trigger: 'blur' }], + firetype: [{ required: true, message: '动火类型不能为空', trigger: 'blur' }], + isholiday:[{ required: true, message: '是否节假日不能为空', trigger: 'change' }], + description:[{ required: true, message: '作业内容不能为空', trigger: 'blur' }], + isanalysis:[{ required: true, message: '是否需要气体检测不能为空', trigger: 'change' }], + analysisarea:[{ required: true, message: '分析地点不能为空', trigger: 'blur' }], + analysismedium:[{ required: true, message: '分析介质不能为空', trigger: 'blur' }] + }, + ifIncludeArea:null, + ifHoisting:null, + ifBuilding:null, + ifIncludeRoad:null, + ifIncludeHigh:null, + ifIncludeElectricity:null, + ifIncludePump:null, + ifIncludeFire:null, + dialogImageUrl:false, + dialogVisible:false, + disabled: false, + ifAnalysis:false, + } + }, + watch:{ + ifIncludeArea: { + handler(newName, oldName) { + if(newName === 1){ + this.ifAnalysis = true + this.taskBasicForm.isanalysis = 1 + }else{ + this.ifAnalysis = false + this.taskBasicForm.isanalysis = 0 + } + }, + immediate:true, + deep:true + }, + ifIncludeFire: { + handler(newName, oldName) { + if(newName === 1){ + this.ifAnalysis = true + this.taskBasicForm.isanalysis = 1 + }else{ + this.ifAnalysis = false + this.taskBasicForm.isanalysis = 0 + } + }, + immediate:true, + deep:true + } + }, + created(){ + this.getCompany() + this.getFireTypeList() + this.getHazardList() + }, + methods:{ + giveTaskBasic(){ + this.taskBasicForm = JSON.parse(JSON.stringify(this.taskBasicForm)) + }, + handlePictureCardPreview(file){ + this.dialogImageUrl = file.url; + this.dialogVisible = true; + }, + showAnalysis(){ + if(this.taskBasicForm.isanalysis === 0){ + this.ifAnalysis = false + }else{ + this.ifAnalysis = true + } + }, + goNext(){ + if(this.title === '施工单位确认'){ + this.$emit('changeToConstructionConfirm') + }else{ + this.$refs["form"].validate((valid) =>{ + if(valid){ + if(this.type === 1){ + this.addTask() + }else if(this.type === 2){ + this.updateTask() + } + }else{ + this.$message({ + type:'warning', + message:'请完善基本信息' + }) + if(this.ifIncludeArea === true){ + + }else if(this.ifHoisting === true){ + + }else if(this.ifBuilding === true){ + + }else if(this.ifIncludeRoad === true){ + + }else if(this.ifIncludeHigh === true){ + + }else if(this.ifIncludeElectricity === true){ + + }else if(this.ifIncludePump === true){ + + }else if(this.ifIncludeFire === true){ + + } + } + }) + } + }, + async addTask(){ + if(this.taskBasicForm.soilfile.length === 0 && this.ifBuilding === 1){ + this.$message({ + type:'warning', + message:'请上传动图方案文件' + }) + }else if(this.taskBasicForm.breakfile.length === 0 && this.ifIncludeRoad === 1){ + this.$message({ + type:'warning', + message:'请上传短路地段示意图' + }) + }else if(this.taskBasicForm.blindboardlocation.length === 0 && this.ifIncludePump === 1){ + this.$message({ + type:'warning', + message:'请上传盲板位置图' + }) + }else{ + this.taskBasicForm.hazard = this.taskBasicForm.hazard.join('、') + let addForm = JSON.parse(JSON.stringify(this.taskBasicForm)) + let level = [] + addForm.subTaskInfos = [] + if(this.ifIncludeArea === 1){ + level.push(0) + addForm.subTaskInfos.push({id:'',taskcode:'',type:'受限空间作业',category:'',level:'',checked:1,spacecategory:this.taskBasicForm.spacecategory,spacename:this.taskBasicForm.spacename,spacemedium:this.taskBasicForm.spacemedium,acibase:this.taskBasicForm.acibase,hoistinglevel:'',hoistingweight:'',soildepth:'',soilarea:'',soilfile:[],breakreason:'',breakfile:[],heightlevel:'',workheight:'',electricityarea:'',voltage:'',power:'',pipename:'',pipemedium:'',pipetemperature:'',pipepressure:'',blindboardmaterial:'',blindboardspecification:'',blindboardnumber:'',commander:'',blindboardlocation:[],firetype:'',level:''}) + } + if(this.ifHoisting === 1){ + if(this.taskBasicForm.hoistinglevel === '一级吊装(质量>100吨)'){ + level.push(2) + }else if(this.taskBasicForm.hoistinglevel === '二级吊装(40吨<=质量<=100吨)'){ + level.push(1) + }else{ + level.push(0) + } + addForm.subTaskInfos.push({id:'',taskcode:'',type:'吊装作业',category:'',level:'',checked:1,spacecategory:'',spacename:'',spacemedium:'',acibase:'',hoistinglevel:this.taskBasicForm.hoistinglevel,hoistingweight:this.taskBasicForm.hoistingweight,soildepth:'',soilarea:'',soilfile:[],breakreason:'',breakfile:[],heightlevel:'',workheight:'',electricityarea:'',voltage:'',power:'',pipename:'',pipemedium:'',pipetemperature:'',pipepressure:'',blindboardmaterial:'',blindboardspecification:'',blindboardnumber:'',commander:'',blindboardlocation:[],firetype:'',level:''}) + } + if(this.ifBuilding === 1){ + level.push(1) + addForm.subTaskInfos.push({id:'',taskcode:'',type:'动土作业',category:'',level:'',checked:1,spacecategory:'',spacename:'',spacemedium:'',acibase:'',hoistinglevel:'',hoistingweight:'',soildepth:this.taskBasicForm.soildepth,soilarea:this.taskBasicForm.soilarea,soilfile:this.taskBasicForm.soilfile,breakreason:'',breakfile:[],heightlevel:'',workheight:'',electricityarea:'',voltage:'',power:'',pipename:'',pipemedium:'',pipetemperature:'',pipepressure:'',blindboardmaterial:'',blindboardspecification:'',blindboardnumber:'',commander:'',blindboardlocation:[],firetype:'',level:''}) + } + if(this.ifIncludeRoad === 1){ + level.push(1) + addForm.subTaskInfos.push({id:'',taskcode:'',type:'断路作业',category:'',level:'',checked:1,spacecategory:'',spacename:'',spacemedium:'',acibase:'',hoistinglevel:'',hoistingweight:'',soildepth:'',soilarea:'',soilfile:[],breakreason:this.taskBasicForm.breakreason,breakfile:this.taskBasicForm.breakfile,heightlevel:'',workheight:'',electricityarea:'',voltage:'',power:'',pipename:'',pipemedium:'',pipetemperature:'',pipepressure:'',blindboardmaterial:'',blindboardspecification:'',blindboardnumber:'',commander:'',blindboardlocation:[],firetype:'',level:''}) + } + if(this.ifIncludeHigh === 1){ + if (this.taskBasicForm.heightlevel = '特级高处作业(高度≥30米)'){ + level.push(2) + }else if(this.taskBasicForm.heightlevel = '三级高处作业(15米≤高度<30米)' || this.taskBasicForm.heightlevel === '二级高处作业(5米≤高度<15米)'){ + level.push(1) + }else{ + level.push(0) + } + addForm.subTaskInfos.push({id:'',taskcode:'',type:'高处作业',category:'',level:'',checked:1,spacecategory:'',spacename:'',spacemedium:'',acibase:'',hoistinglevel:'',hoistingweight:'',soildepth:'',soilarea:'',soilfile:[],breakreason:'',breakfile:[],heightlevel:this.taskBasicForm.heightlevel,workheight:this.taskBasicForm.workheight,electricityarea:'',voltage:'',power:'',pipename:'',pipemedium:'',pipetemperature:'',pipepressure:'',blindboardmaterial:'',blindboardspecification:'',blindboardnumber:'',commander:'',blindboardlocation:[],firetype:'',level:''}) + } + if(this.ifIncludeElectricity === 1){ + level.push(1) + addForm.subTaskInfos.push({id:'',taskcode:'',type:'临时用电作业',category:'',level:'',checked:1,spacecategory:'',spacename:'',spacemedium:'',acibase:'',hoistinglevel:'',hoistingweight:'',soildepth:'',soilarea:'',soilfile:[],breakreason:'',breakfile:[],heightlevel:'',workheight:'',electricityarea:this.taskBasicForm.electricityarea,voltage:this.taskBasicForm.voltage,power:this.taskBasicForm.power,pipename:'',pipemedium:'',pipetemperature:'',pipepressure:'',blindboardmaterial:'',blindboardspecification:'',blindboardnumber:'',commander:'',blindboardlocation:[],firetype:'',level:''}) + } + if(this.ifIncludePump === 1){ + level.push(0) + addForm.subTaskInfos.push({id:'',taskcode:'',type:'盲板抽堵作业',category:'',level:'',checked:1,spacecategory:'',spacename:'',spacemedium:'',acibase:'',hoistinglevel:'',hoistingweight:'',soildepth:'',soilarea:'',soilfile:[],breakreason:'',breakfile:[],heightlevel:'',workheight:'',electricityarea:'',voltage:'',power:'',pipename:this.taskBasicForm.pipename,pipemedium:this.taskBasicForm.pipemedium,pipetemperature:this.taskBasicForm.pipetemperature,pipepressure:this.taskBasicForm.pipepressure,blindboardmaterial:this.taskBasicForm.blindboardmaterial,blindboardspecification:this.taskBasicForm.blindboardspecification,blindboardnumber:this.taskBasicForm.blindboardnumber,commander:'',blindboardlocation:this.taskBasicForm.blindboardlocation,firetype:'',level:''}) + } + if(this.ifIncludeFire === 1){ + level.push(this.taskBasicForm.firelevel) + addForm.subTaskInfos.push({id:'',taskcode:'',type:'动火作业',category:'',level:'',checked:1,spacecategory:'',spacename:'',spacemedium:'',acibase:'',hoistinglevel:'',hoistingweight:'',soildepth:'',soilarea:'',soilfile:[],breakreason:'',breakfile:[],heightlevel:'',workheight:'',electricityarea:'',voltage:'',power:'',pipename:'',pipemedium:'',pipetemperature:'',pipepressure:'',blindboardmaterial:'',blindboardspecification:'',blindboardnumber:'',commander:'',blindboardlocation:[],firetype:this.taskBasicForm.firetype,level:this.taskBasicForm.firelevel}) + } + + let largeNum = 0 + for(let i in level){ + if(level[i] > largeNum){ + largeNum = level[i] + } + } + addForm.level = largeNum + + this.$delete(addForm,'type') + this.$delete(addForm,'category') + this.$delete(addForm,'firelevel') + this.$delete(addForm,'checked') + this.$delete(addForm,'spacecategory') + this.$delete(addForm,'spacename') + this.$delete(addForm,'spacemedium') + this.$delete(addForm,'acibase') + this.$delete(addForm,'hoistinglevel') + this.$delete(addForm,'hoistingweight') + this.$delete(addForm,'soildepth') + this.$delete(addForm,'soilarea') + this.$delete(addForm,'soilfile') + this.$delete(addForm,'breakreason') + this.$delete(addForm,'breakfile') + this.$delete(addForm,'workheight') + this.$delete(addForm,'heightlevel') + this.$delete(addForm,'electricityarea') + this.$delete(addForm,'voltage') + this.$delete(addForm,'power') + this.$delete(addForm,'pipename') + this.$delete(addForm,'pipemedium') + this.$delete(addForm,'pipetemperature') + this.$delete(addForm,'pipepressure') + this.$delete(addForm,'blindboardmaterial') + this.$delete(addForm,'blindboardspecification') + this.$delete(addForm,'blindboardnumber') + this.$delete(addForm,'commander') + this.$delete(addForm,'blindboardlocation') + this.$delete(addForm,'firetype') + + let res = await addTask(addForm) + if(res.data.code === '200'){ + this.$notify({ + type:'success', + duration:2000, + message:'基本信息新建成功', + title:'成功' + }) + this.$emit('changeCardToSafetyActionEdit',res.data.result) + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + } + }, + async updateTask(){ + if(this.taskBasicForm.soilfile.length === 0 && this.ifBuilding === 1){ + this.$message({ + type:'warning', + message:'请上传动图方案文件' + }) + }else if(this.taskBasicForm.breakfile.length === 0 && this.ifIncludeRoad === 1){ + this.$message({ + type:'warning', + message:'请上传短路地段示意图' + }) + }else if(this.taskBasicForm.blindboardlocation.length === 0 && this.ifIncludePump === 1){ + this.$message({ + type:'warning', + message:'请上传盲板位置图' + }) + }else { + this.taskBasicForm.hazard = this.taskBasicForm.hazard.join('、') + let addForm = JSON.parse(JSON.stringify(this.taskBasicForm)) + let level = [] + if (this.ifIncludeArea === 1) { + level.push(0) + let ifFirst = true + for(let i in addForm.subTaskInfos){ + if(addForm.subTaskInfos[i].type === '受限空间作业'){ + ifFirst = false + addForm.subTaskInfos[i].spacecategory = this.taskBasicForm.spacecategory + addForm.subTaskInfos[i].spacename = this.taskBasicForm.spacename + addForm.subTaskInfos[i].spacemedium = this.taskBasicForm.spacemedium + addForm.subTaskInfos[i].acibase = this.taskBasicForm.acibase + } + } + if(ifFirst === true){ + addForm.subTaskInfos.push({id:'',taskcode:'',type:'受限空间作业',category:'',level:'',checked:1,spacecategory:this.taskBasicForm.spacecategory,spacename:this.taskBasicForm.spacename,spacemedium:this.taskBasicForm.spacemedium,acibase:this.taskBasicForm.acibase,hoistinglevel:'',hoistingweight:'',soildepth:'',soilarea:'',soilfile:[],breakreason:'',breakfile:[],heightlevel:'',workheight:'',electricityarea:'',voltage:'',power:'',pipename:'',pipemedium:'',pipetemperature:'',pipepressure:'',blindboardmaterial:'',blindboardspecification:'',blindboardnumber:'',commander:'',blindboardlocation:[],firetype:'',level:''}) + } + + } + if (this.ifHoisting === 1) { + if (this.taskBasicForm.hoistinglevel === '一级吊装(质量>100吨)') { + level.push(2) + } else if (this.taskBasicForm.hoistinglevel === '二级吊装(40吨<=质量<=100吨)') { + level.push(1) + } else { + level.push(0) + } + let ifFirst = true + for(let i in addForm.subTaskInfos){ + if(addForm.subTaskInfos[i].type === '吊装作业'){ + ifFirst = false + addForm.subTaskInfos[i].hoistinglevel = this.taskBasicForm.hoistinglevel + addForm.subTaskInfos[i].hoistingweight = this.taskBasicForm.hoistingweight + } + } + if(ifFirst === true){ + addForm.subTaskInfos.push({ + id: '', + taskcode: '', + type: '吊装作业', + category: '', + level: '', + checked: 1, + spacecategory: '', + spacename: '', + spacemedium: '', + acibase: '', + hoistinglevel: this.taskBasicForm.hoistinglevel, + hoistingweight: this.taskBasicForm.hoistingweight, + soildepth: '', + soilarea: '', + soilfile: [], + breakreason: '', + breakfile: [], + heightlevel: '', + workheight: '', + electricityarea: '', + voltage: '', + power: '', + pipename: '', + pipemedium: '', + pipetemperature: '', + pipepressure: '', + blindboardmaterial: '', + blindboardspecification: '', + blindboardnumber: '', + commander: '', + blindboardlocation: [], + firetype: '', + level: '' + }) + } + + } + if (this.ifBuilding === 1) { + level.push(1) + let ifFirst = true + for(let i in addForm.subTaskInfos){ + if(addForm.subTaskInfos[i].type === '动土作业'){ + ifFirst = false + addForm.subTaskInfos[i].soildepth = this.taskBasicForm.soildepth + addForm.subTaskInfos[i].soilarea = this.taskBasicForm.soilarea + addForm.subTaskInfos[i].soilfile = this.taskBasicForm.soilfile + } + } + if(ifFirst === true){ + addForm.subTaskInfos.push({ + id: '', + taskcode: '', + type: '动土作业', + category: '', + level: '', + checked: 1, + spacecategory: '', + spacename: '', + spacemedium: '', + acibase: '', + hoistinglevel: '', + hoistingweight: '', + soildepth: this.taskBasicForm.soildepth, + soilarea: this.taskBasicForm.soilarea, + soilfile: this.taskBasicForm.soilfile, + breakreason: '', + breakfile: [], + heightlevel: '', + workheight: '', + electricityarea: '', + voltage: '', + power: '', + pipename: '', + pipemedium: '', + pipetemperature: '', + pipepressure: '', + blindboardmaterial: '', + blindboardspecification: '', + blindboardnumber: '', + commander: '', + blindboardlocation: [], + firetype: '', + level: '' + }) + } + } + if (this.ifIncludeRoad === 1) { + level.push(1) + let ifFirst = true + for(let i in addForm.subTaskInfos){ + if(addForm.subTaskInfos[i].type === '断路作业'){ + ifFirst = false + addForm.subTaskInfos[i].breakreason = this.taskBasicForm.breakreason + addForm.subTaskInfos[i].breakfile = this.taskBasicForm.breakfile + } + } + if(ifFirst === true){ + addForm.subTaskInfos.push({ + id: '', + taskcode: '', + type: '断路作业', + category: '', + level: '', + checked: 1, + spacecategory: '', + spacename: '', + spacemedium: '', + acibase: '', + hoistinglevel: '', + hoistingweight: '', + soildepth: '', + soilarea: '', + soilfile: [], + breakreason: this.taskBasicForm.breakreason, + breakfile: this.taskBasicForm.breakfile, + heightlevel: '', + workheight: '', + electricityarea: '', + voltage: '', + power: '', + pipename: '', + pipemedium: '', + pipetemperature: '', + pipepressure: '', + blindboardmaterial: '', + blindboardspecification: '', + blindboardnumber: '', + commander: '', + blindboardlocation: [], + firetype: '', + level: '' + }) + } + + } + if (this.ifIncludeHigh === 1) { + if (this.taskBasicForm.heightlevel = '特级高处作业(高度≥30米)') { + level.push(2) + } else if (this.taskBasicForm.heightlevel = '三级高处作业(15米≤高度<30米)' || this.taskBasicForm.heightlevel === '二级高处作业(5米≤高度<15米)') { + level.push(1) + } else { + level.push(0) + } + let ifFirst = true + for(let i in addForm.subTaskInfos){ + if(addForm.subTaskInfos[i].type === '高处作业'){ + ifFirst = false + addForm.subTaskInfos[i].breakreason = this.taskBasicForm.breakreason + addForm.subTaskInfos[i].breakfile = this.taskBasicForm.breakfile + } + } + if(ifFirst === true){ + addForm.subTaskInfos.push({ + id: '', + taskcode: '', + type: '高处作业', + category: '', + level: '', + checked: 1, + spacecategory: '', + spacename: '', + spacemedium: '', + acibase: '', + hoistinglevel: '', + hoistingweight: '', + soildepth: '', + soilarea: '', + soilfile: [], + breakreason: '', + breakfile: [], + heightlevel: this.taskBasicForm.heightlevel, + workheight: this.taskBasicForm.workheight, + electricityarea: '', + voltage: '', + power: '', + pipename: '', + pipemedium: '', + pipetemperature: '', + pipepressure: '', + blindboardmaterial: '', + blindboardspecification: '', + blindboardnumber: '', + commander: '', + blindboardlocation: [], + firetype: '', + level: '' + }) + } + + } + if (this.ifIncludeElectricity === 1) { + level.push(1) + let ifFirst = true + for(let i in addForm.subTaskInfos){ + if(addForm.subTaskInfos[i].type === '临时用电作业'){ + ifFirst = false + addForm.subTaskInfos[i].electricityarea = this.taskBasicForm.electricityarea + addForm.subTaskInfos[i].voltage = this.taskBasicForm.voltage + addForm.subTaskInfos[i].power = this.taskBasicForm.power + } + } + if(ifFirst === true){ + addForm.subTaskInfos.push({ + id: '', + taskcode: '', + type: '临时用电作业', + category: '', + level: '', + checked: 1, + spacecategory: '', + spacename: '', + spacemedium: '', + acibase: '', + hoistinglevel: '', + hoistingweight: '', + soildepth: '', + soilarea: '', + soilfile: [], + breakreason: '', + breakfile: [], + heightlevel: '', + workheight: '', + electricityarea: this.taskBasicForm.electricityarea, + voltage: this.taskBasicForm.voltage, + power: this.taskBasicForm.power, + pipename: '', + pipemedium: '', + pipetemperature: '', + pipepressure: '', + blindboardmaterial: '', + blindboardspecification: '', + blindboardnumber: '', + commander: '', + blindboardlocation: [], + firetype: '', + level: '' + }) + } + + } + if (this.ifIncludePump === 1) { + level.push(0) + let ifFirst = true + for(let i in addForm.subTaskInfos){ + if(addForm.subTaskInfos[i].type === '盲板抽堵作业'){ + ifFirst = false + addForm.subTaskInfos[i].pipename = this.taskBasicForm.pipename + addForm.subTaskInfos[i].pipemedium = this.taskBasicForm.pipemedium + addForm.subTaskInfos[i].pipetemperature = this.taskBasicForm.pipetemperature + addForm.subTaskInfos[i].pipepressure = this.taskBasicForm.pipepressure + addForm.subTaskInfos[i].blindboardmaterial = this.taskBasicForm.blindboardmaterial + addForm.subTaskInfos[i].blindboardspecification = this.taskBasicForm.blindboardspecification + addForm.subTaskInfos[i].blindboardlocation = this.taskBasicForm.blindboardlocation + } + } + if(ifFirst === true){ + addForm.subTaskInfos.push({ + id: '', + taskcode: '', + type: '盲板抽堵作业', + category: '', + level: '', + checked: 1, + spacecategory: '', + spacename: '', + spacemedium: '', + acibase: '', + hoistinglevel: '', + hoistingweight: '', + soildepth: '', + soilarea: '', + soilfile: [], + breakreason: '', + breakfile: [], + heightlevel: '', + workheight: '', + electricityarea: '', + voltage: '', + power: '', + pipename: this.taskBasicForm.pipename, + pipemedium: this.taskBasicForm.pipemedium, + pipetemperature: this.taskBasicForm.pipetemperature, + pipepressure: this.taskBasicForm.pipepressure, + blindboardmaterial: this.taskBasicForm.blindboardmaterial, + blindboardspecification: this.taskBasicForm.blindboardspecification, + blindboardnumber: this.taskBasicForm.blindboardnumber, + commander: '', + blindboardlocation: this.taskBasicForm.blindboardlocation, + firetype: '', + level: '' + }) + } + + } + if (this.ifIncludeFire === 1) { + level.push(this.taskBasicForm.firelevel) + let ifFirst = true + for(let i in addForm.subTaskInfos){ + if(addForm.subTaskInfos[i].type === '动火作业'){ + ifFirst = false + addForm.subTaskInfos[i].firetype = this.taskBasicForm.firetype + addForm.subTaskInfos[i].level = this.taskBasicForm.firelevel + } + } + if(ifFirst === true){ + addForm.subTaskInfos.push({ + id: '', + taskcode: '', + type: '动火作业', + category: '', + level: '', + checked: 1, + spacecategory: '', + spacename: '', + spacemedium: '', + acibase: '', + hoistinglevel: '', + hoistingweight: '', + soildepth: '', + soilarea: '', + soilfile: [], + breakreason: '', + breakfile: [], + heightlevel: '', + workheight: '', + electricityarea: '', + voltage: '', + power: '', + pipename: '', + pipemedium: '', + pipetemperature: '', + pipepressure: '', + blindboardmaterial: '', + blindboardspecification: '', + blindboardnumber: '', + commander: '', + blindboardlocation: [], + firetype: this.taskBasicForm.firetype, + level: this.taskBasicForm.firelevel + }) + } + + } + + let largeNum = 0 + for (let i in level) { + if (level[i] > largeNum) { + largeNum = level[i] + } + } + if(largeNum === 2){ + largeNum = 2 + }else{ + largeNum += 1 + } + addForm.level = largeNum + + this.$delete(addForm,'type') + this.$delete(addForm,'category') + this.$delete(addForm,'firelevel') + this.$delete(addForm,'checked') + this.$delete(addForm,'spacecategory') + this.$delete(addForm,'spacename') + this.$delete(addForm,'spacemedium') + this.$delete(addForm,'acibase') + this.$delete(addForm,'hoistinglevel') + this.$delete(addForm,'hoistingweight') + this.$delete(addForm,'soildepth') + this.$delete(addForm,'soilarea') + this.$delete(addForm,'soilfile') + this.$delete(addForm,'breakreason') + this.$delete(addForm,'breakfile') + this.$delete(addForm,'workheight') + this.$delete(addForm,'heightlevel') + this.$delete(addForm,'electricityarea') + this.$delete(addForm,'voltage') + this.$delete(addForm,'power') + this.$delete(addForm,'pipename') + this.$delete(addForm,'pipemedium') + this.$delete(addForm,'pipetemperature') + this.$delete(addForm,'pipepressure') + this.$delete(addForm,'blindboardmaterial') + this.$delete(addForm,'blindboardspecification') + this.$delete(addForm,'blindboardnumber') + this.$delete(addForm,'commander') + this.$delete(addForm,'blindboardlocation') + this.$delete(addForm,'firetype') + + let res = await updateTask(addForm) + if(res.data.code === '200'){ + this.$notify({ + type:'success', + duration:2000, + message:'基本信息编辑成功', + title:'成功' + }) + this.$emit('changeCardToSafetyActionEdit',addForm) + }else{ + this.$message({ + type:'warning', + message:res.data.message + }) + } + } + }, + handleSpaceCategory(value){ + if(value === '密闭设备'){ + this.taskBasicForm.spacename = '' + this.spaceNameList = [{id:0,name:'如船舱'},{id:1,name:'贮罐'},{id:2,name:'车载槽罐'},{id:4,name:'反应塔(釜)'},{id:5,name:'冷藏箱'},{id:6,name:'压力容器'},{id:7,name:'管道'},{id:8,name:'烟道'},{id:9,name:'锅炉'},{id:10,name:'其他'}] + }else if(value === '地下有限空间'){ + this.taskBasicForm.spacename = '' + this.spaceNameList = [{id:0,name:'地下管道'},{id:1,name:'地下室'},{id:2,name:'地下仓库'},{id:4,name:'地下工程'},{id:5,name:'暗沟'},{id:6,name:'隧道'},{id:7,name:'涵洞'},{id:8,name:'地坑'},{id:9,name:'废井'},{id:10,name:'地窖'},{id:11,name:'污水池(井)'},{id:12,name:'沼气池'},{id:13,name:'化粪池'},{id:14,name:'下水道'},{id:15,name:'其他'}] + }else{ + this.taskBasicForm.spacename = '' + this.spaceNameList = [{id:0,name:'储藏室'},{id:1,name:'酒糟池'},{id:2,name:'发酵池'},{id:4,name:'垃圾站'},{id:5,name:'温室'},{id:6,name:'冷库'},{id:7,name:'粮仓'},{id:8,name:'料仓'},{id:9,name:'其他'}] + } + }, + resetFormRules(){ + this.$nextTick(() =>{ + this.$refs["form"].clearValidate() + }) + }, + async getCompany(){ + let params = {} + params['pageIndex'] = this.currentPage + params['pageSize'] = this.pageSize + params['company'] = this.company + params['code'] = this.code + let res = await getUnitList(params) + if(res.data.code === '200'){ + this.companyList = res.data.result.result + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + }, + async getFireTypeList(){ + const params = {} + params['dictionaryType'] = '动火方式' + let res = await dictionaryAllItems(params) + if (res.data.code === '200') { + this.fireTypeList = res.data.result + } else { + this.$message({ + type:'warning', + message:res.data.message + }) + } + }, + async getHazardList(){ + let params = {} + params['dictionaryType'] = '危害辨识' + let res = await dictionaryAllItems(params) + if(res.data.code === '200'){ + this.hazardList = res.data.result + }else{ + this.$message({ + type:'warning', + message:res.data.message + }) + } + }, + handleChangeBuildingFile(file,fileList){ + this.uploadForm.name = file.name + this.header.Authorization = Cookies.get('token') + }, + onSoilFileSuccess(response){ + if(response.code === '200'){ + this.taskBasicForm.soilfile.push({url:process.env.IMG_API + response.result.path,name:response.result.name,fileurl:response.result.path}) + this.$notify({ + type:'success', + duration:2000, + message:'上传成功', + title:'成功', + }) + } + }, + handleChangeRoadFile(){ + this.header.Authorization = Cookies.get('token') + }, + onBreakFileSuccess(response){ + if(response.code === '200'){ + this.taskBasicForm.breakfile.push({url:process.env.IMG_API + response.result.path,name:response.result.name,fileurl:response.result.path}) + this.$notify({ + type:'success', + duration:2000, + message:'上传成功', + title:'成功', + }) + } + }, + handleChangePumpFile(){ + this.header.Authorization = Cookies.get('token') + }, + onPumpFileSuccess(response){ + if(response.code === '200'){ + this.taskBasicForm.blindboardlocation.push({url:process.env.IMG_API + response.result.path,name:response.result.name,fileurl:response.result.path}) + this.$notify({ + type:'success', + duration:2000, + message:'上传成功', + title:'成功', + }) + } + }, + handleFile(file){ + this.dialogImageUrl = file.url; + this.dialogVisible = true; + }, + handleRemove(file,value) { + return this.$confirm(`确定移除 ${ file.name }?`,'提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(()=> { + switch (value) { + case 'one':this.taskBasicForm.soilfile.splice(this.taskBasicForm.soilfile.findIndex(item =>item.name === file.name),1); + break; + case 'two':this.taskBasicForm.breakfile.splice(this.taskBasicForm.breakfile.findIndex(item =>item.name === file.name),1); + break; + case 'three':this.taskBasicForm.blindboardlocation.splice(this.taskBasicForm.blindboardlocation.findIndex(item =>item.name === file.name),1); + break; + } + }) + }, + } + } +</script> + +<style scoped> +.taskBasic_title{ + font-weight: bolder; + font-size: large; + text-align: center; + margin-top: 24px; +} +/deep/.el-collapse-item__header{ + margi:0 auto; + width:100%; + font-weight: bolder; + font-size: large; + text-align: center; + padding-left: 45%; +} +.taskBasic_select{ + width: 100%; +} +</style> diff --git a/src/views/specialWorkManage/specialWork/taskCreate/components/taskCreate.vue b/src/views/specialWorkManage/specialWork/taskCreate/components/taskCreate.vue new file mode 100644 index 0000000..0215494 --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskCreate/components/taskCreate.vue @@ -0,0 +1,1336 @@ +<template> + <div> + <el-dialog :title="title" :visible.sync="taskCreateDialog" :modal-append-to-body="false" :close-on-click-modal="false" width="70%"> + <el-tabs type="border-card" class="active" v-model="activeName"> + <el-tab-pane label="作业基本信息" name="taskBasic" v-if="ifHotFireBasic"> + <task-basic ref="taskBasic" :title="title" @changeCardToSafetyActionEdit="changeToSecond" @changeToConstructionConfirm="constructionConfirm"></task-basic> + </el-tab-pane> + <el-tab-pane label="安全措施" name="safetyAction" v-if="ifSafetyAction"> + <safety-action ref="safetyAction" :basicInformation="basicForm" :title="title" @changeToCardFile="changeToThird" @changeToConstructionConfirm="constructionConfirm" @confirmConstruction="confirmConstruction"></safety-action> + </el-tab-pane> + <el-tab-pane label="安全交底和风险告知确认卡" name="safetyAndRiskConfirm" v-if="ifSafetyAndRisk"> + <safety-and-risk-confirm ref="safetyAndRiskConfirm" :title="title" :basicInformation="basicForm" @changeToCardFile="changeToThird" @changeToConstructionConfirm="constructionConfirm"></safety-and-risk-confirm> + </el-tab-pane> + <el-tab-pane label="设备" name="equipment" v-if="ifSafetyAction"> + <equipment ref="equipment" :basicInformation="basicForm" :title="title" @changeToCardFile="changeToThird" @changeToConstructionConfirm="constructionConfirm" @confirmConstruction="confirmConstruction"></equipment> + </el-tab-pane> + <el-tab-pane label="作业人" name="fireMan" v-if="ifFireMan"> + <fire-man ref="fireMan" :basicInformation="basicForm" :title="title" @confirmConstruction="confirmConstruction"></fire-man> + </el-tab-pane> + <el-tab-pane label="文件" name="fileAndEquipment" v-if="ifFile"> + <file ref="fileAndEquipment" :basicInformation="basicForm" :title="title" @confirm="confirmFile" @changeToConstructionConfirm="constructionConfirm"></file> + </el-tab-pane> + <el-tab-pane label="文件" name="constructionFile" v-if="ifConstructionFile"> + <construction-file ref="constructionFile" :basicInformation="basicForm" :title="title" @changeToConstructionConfirm="constructionConfirm" @confirmConstruction="confirmConstruction"></construction-file> + </el-tab-pane> + <el-tab-pane label="文件" name="allFile" v-if="ifAllFile"> + <all-file ref="allFile" :basicInformation="basicForm" :title="title" @changeToConstructionConfirm="constructionConfirm" @confirmConstruction="confirmConstruction"></all-file> + </el-tab-pane> + </el-tabs> + <div align="center" style="padding-top: 20px" v-if="title === '动火部位审批' || title === '相关部门审批' || title=== '安全部门审批'"> + <el-button type="danger" @click="refuse">拒绝</el-button> + <el-button type="primary" @click="agree">同意</el-button> + </div> + <el-dialog :visible.sync="supervisorAndAnalystAgree" :modal-append-to-body="false" :close-on-click-modal="false" width="25%"> + <div align="center"> + <span>监火人:</span> + <el-input v-model="basicForm.analyst" style="width:200px"> + </el-input> + </div> + <div align="center" style="padding-top: 20px"> + <span>分析人:</span> + <el-input v-model="basicForm.approversupervisor" style="width:200px"> + </el-input> + <div align="center" style="padding-top: 20px"> + <el-button type="primary" @click="submitAgreeTaskByFireDepartment()">确定</el-button> + </div> + </div> + </el-dialog> + <el-dialog title="驳回意见" :visible.sync="supervisorAndAnalystRefuse" :modal-append-to-body="false" :close-on-click-modal="false" width="40%"> + <div align="center"> + <el-input type="textarea" :row="2" v-model="basicForm.applyunitopinion" style="width:400px"> + </el-input> + </div> + <div align="center" style="padding-top: 20px"> + <el-button type="primary" @click="submitRefuseTaskByFireDepartment()">确定</el-button> + </div> + </el-dialog> + <el-dialog title="驳回意见" :visible.sync="relevantRefuse" :modal-append-to-body="false" :close-on-click-modal="false" width="40%"> + <div align="center"> + <el-input type="textarea" :row="2" v-model="basicForm.relevantopinion" style="width:400px"> + </el-input> + </div> + <div align="center" style="padding-top: 20px"> + <el-button type="primary" @click="submitRefuseTaskByFireDepartment()">确定</el-button> + </div> + </el-dialog> + <el-dialog title="驳回意见" :visible.sync="securityRefuse" :modal-append-to-body="false" :close-on-click-modal="false" width="40%"> + <div align="center"> + <el-input type="textarea" :row="2" v-model="basicForm.securityopinion" style="width:400px"> + </el-input> + </div> + <div align="center" style="padding-top: 20px"> + <el-button type="primary" @click="submitRefuseTaskByFireDepartment()">确定</el-button> + </div> + </el-dialog> + </el-dialog> + </div> +</template> + +<script> +import allFile from './file/allFire' +import constructionFile from './file/constructionFile' +import file from './file/index' +import fireMan from './fireMan/index' +import equipment from './equipment/index' +import safetyAndRiskConfirm from './safetyAndRiskConfirm/index' +import safetyAction from './safetyAction/index' +import taskBasic from './taskBasic/index' +import { + addTaskSecond, + involveReview, partReview, + securityReview, + submitConstruction, + updateTaskSecond +} from '../../../../../api/task' +import { parseError } from '../../../../../utils/messageDialog' +export default { + name: 'taskCreate', + data(){ + return{ + taskCreateDialog:false, + activeName:'taskBasic', + title:'', + basicForm:{}, + constructionForm:{}, + ifHotFireBasic:false, + ifSafetyAction:false, + ifSafetyAndRisk:false, + ifFireMan:false, + ifFile:false, + ifConstructionFile:false, + ifAllFile:false, + supervisorAndAnalystAgree:false, + supervisorAndAnalystRefuse:false, + relevantRefuse:false, + securityRefuse:false, + } + }, + components:{ + taskBasic, + safetyAction, + safetyAndRiskConfirm, + equipment, + fireMan, + file, + constructionFile, + allFile + }, + methods:{ + openTaskInfo(value,title){ + this.title = title + this.taskCreateDialog = true + this.activeName = 'taskBasic' + if(title === '新增'){ + this.ifHotFireBasic = true + this.ifSafetyAction = false + this.ifSafetyAndRisk = false + this.ifFireMan = false + this.ifFile = false + this.ifAllFile = false + this.ifConstructionFile = false + setTimeout(()=>{ + this.$refs.taskBasic.type = 1 + this.$refs.taskBasic.activeNames = ['0'] + this.$refs.taskBasic.taskBasicForm = { + unit:sessionStorage.getItem('company'), + department:sessionStorage.getItem('department'), + applicant:sessionStorage.getItem('realname'), + applyunitname: "", + applyunitopinion: "", + applyunittime: "", + approverprofession: "", + approversupervisor: "", + area: "", + code: "", + completedconfirm: "", + completedname: "", + completedtime: "", + constructionname: "", + constructionopinion: "", + constructiontime: "", + constructionunit: "", + createdat: "", + createdby: "", + director: "", + endtime: "", + enterprisename: "", + enterpriseopinion: "", + enterprisetime: "", + flag: 0, + hazard: [], + id: 0, + isdel: 0, + isholiday: null, + level:'', + modifiedat: "", + modifiedby: "", + othertask: "", + partdirector: "", + profession: "", + relevantname: "", + relevantopinion: "", + relevanttime: "", + resources: [ + ], + securityname: "", + securityopinion: "", + securitytime: "", + securitydep: "", + shiftleadername: "", + shiftleaderopinion: "", + shiftleadertime: "", + starttime: "", + status: 0, + supervisor: "", + taskAnalyses: [ + ], + taskEquipments: [ + ], + taskRisk: { + confirmat: "", + content: "", + createdat: "", + createdby: "", + director: "", + emergency: "", + environment: "", + flag: 0, + id: 0, + modifiedat: "", + modifiedby: "", + other: "", + preventive: "", + taskcode: "", + taskdirector: "" + }, + taskSecurities: [ + ], + taskWorkers: [ + ], + subTaskInfos:[], + type:'', + category:'', + firelevel:'', + checked:'', + spacecategory:'', + spacename:'', + spacemedium:'', + acibase:'', + hoistinglevel:'', + hoistingweight:'', + soildepth:'', + soilarea:'', + soilfile:[], + breakreason:'', + breakfile:[], + workheight:'', + heightlevel:'', + electricityarea:'', + voltage:'', + power:'', + pipename:'', + pipemedium:'', + pipetemperature:'', + pipepressure:'', + blindboardmaterial:'', + blindboardspecification:'', + blindboardnumber:'', + commander:'', + blindboardlocation:[], + firetype:'', + description:'', + isanalysis:'', + analysisarea:'', + analysismedium:'' + } + this.$refs.taskBasic.ifIncludeArea = null + this.$refs.taskBasic.ifHoisting = null + this.$refs.taskBasic.ifBuliding = null + this.$refs.taskBasic.ifIncludeRoad = null + this.$refs.taskBasic.ifIncludeHigh = null + this.$refs.taskBasic.ifIncludeElectricity = null + this.$refs.taskBasic.ifIncludePump = null + this.$refs.taskBasic.ifIncludeFire = null + this.$refs.taskBasic.resetFormRules() + }) + } + else if(title === '编辑'){ + this.ifSafetyAction = false + this.ifSafetyAndRisk = false + this.ifFireMan = false + this.ifFile = false + this.ifConstructionFile = false + this.ifAllFile = false + this.ifHotFireBasic = true + this.basicForm = JSON.parse(JSON.stringify(value)) + setTimeout(()=>{ + this.$refs.taskBasic.type = 2 + this.$refs.taskBasic.resetFormRules() + this.$refs.taskBasic.taskBasicForm = JSON.parse(JSON.stringify(value)) + this.$refs.taskBasic.taskBasicForm.hazard = this.$refs.taskBasic.taskBasicForm.hazard.split('、') + let form = JSON.parse(JSON.stringify(value)).subTaskInfos + this.$refs.taskBasic.taskBasicForm.type = '' + this.$refs.taskBasic.taskBasicForm.category = '' + this.$refs.taskBasic.taskBasicForm.firelevel = '' + this.$refs.taskBasic.taskBasicForm.checked = '' + this.$refs.taskBasic.taskBasicForm.spacecategory = '' + this.$refs.taskBasic.taskBasicForm.spacename = '' + this.$refs.taskBasic.taskBasicForm.spacemedium = '' + this.$refs.taskBasic.taskBasicForm.acibase = '' + this.$refs.taskBasic.taskBasicForm.hoistinglevel = '' + this.$refs.taskBasic.taskBasicForm.hoistingweight = '' + this.$refs.taskBasic.taskBasicForm.soildepth = '' + this.$refs.taskBasic.taskBasicForm.soilarea = '' + this.$refs.taskBasic.taskBasicForm.soilfile = [] + this.$refs.taskBasic.taskBasicForm.breakreason = '' + this.$refs.taskBasic.taskBasicForm.breakfile = [] + this.$refs.taskBasic.taskBasicForm.workheight = '' + this.$refs.taskBasic.taskBasicForm.heightlevel = '' + this.$refs.taskBasic.taskBasicForm.electricityarea = '' + this.$refs.taskBasic.taskBasicForm.voltage = '' + this.$refs.taskBasic.taskBasicForm.power = '' + this.$refs.taskBasic.taskBasicForm.pipename = '' + this.$refs.taskBasic.taskBasicForm.pipemedium = '' + this.$refs.taskBasic.taskBasicForm.pipetemperature = '' + this.$refs.taskBasic.taskBasicForm.pipepressure = '' + this.$refs.taskBasic.taskBasicForm.blindboardmaterial = '' + this.$refs.taskBasic.taskBasicForm.blindboardspecification = '' + this.$refs.taskBasic.taskBasicForm.blindboardnumber = '' + this.$refs.taskBasic.taskBasicForm.commander = '' + this.$refs.taskBasic.taskBasicForm.blindboardlocation = [] + this.$refs.taskBasic.taskBasicForm.firetype = '' + for(let i in form){ + if(form[i].type === '受限空间作业'){ + this.$refs.taskBasic.activeNames.push('1') + this.$refs.taskBasic.ifIncludeArea = 1 + this.$refs.taskBasic.taskBasicForm.spacecategory = form[i].spacecategory + this.$refs.taskBasic.taskBasicForm.spacename = form[i].spacename + this.$refs.taskBasic.taskBasicForm.spacemedium = form[i].spacemedium + this.$refs.taskBasic.taskBasicForm.acibase = form[i].acibase + } + else if(form[i].type === '吊装作业'){ + this.$refs.taskBasic.activeNames.push('2') + this.$refs.taskBasic.ifHoisting = 1 + this.$refs.taskBasic.taskBasicForm.hoistinglevel = form[i].hoistinglevel + this.$refs.taskBasic.taskBasicForm.hoistingweight = form[i].hoistingweight + } + else if(form[i].type === '动土作业'){ + this.$refs.taskBasic.activeNames.push('3') + this.$refs.taskBasic.ifBuilding = 1 + this.$refs.taskBasic.taskBasicForm.soildepth = form[i].soildepth + this.$refs.taskBasic.taskBasicForm.soilarea = form[i].soilarea + this.$refs.taskBasic.taskBasicForm.soilfile = form[i].soilfile.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else if(form[i].type === '断路作业'){ + this.$refs.taskBasic.activeNames.push('4') + this.$refs.taskBasic.ifIncludeRoad = 1 + this.$refs.taskBasic.taskBasicForm.breakreason = form[i].breakreason + this.$refs.taskBasic.taskBasicForm.breakfile = form[i].breakfile.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else if(form[i].type === '高处作业'){ + this.$refs.taskBasic.activeNames.push('5') + this.$refs.taskBasic.ifIncludeHigh = 1 + this.$refs.taskBasic.taskBasicForm.heightlevel = form[i].heightlevel + this.$refs.taskBasic.taskBasicForm.workheight = form[i].workheight + } + else if(form[i].type === '临时用电作业'){ + this.$refs.taskBasic.activeNames.push('6') + this.$refs.taskBasic.ifIncludeElectricity = 1 + this.$refs.taskBasic.taskBasicForm.electricityarea = form[i].electricityarea + this.$refs.taskBasic.taskBasicForm.voltage = form[i].voltage + this.$refs.taskBasic.taskBasicForm.power = form[i].power + } + else if(form[i].type === '盲板抽堵作业'){ + this.$refs.taskBasic.activeNames.push('7') + this.$refs.taskBasic.ifIncludePump = 1 + this.$refs.taskBasic.taskBasicForm.pipename = form[i].pipename + this.$refs.taskBasic.taskBasicForm.pipemedium = form[i].pipemedium + this.$refs.taskBasic.taskBasicForm.pipetemperature = form[i].pipetemperature + this.$refs.taskBasic.taskBasicForm.pipepressure = form[i].pipepressure + this.$refs.taskBasic.taskBasicForm.blindboardmaterial = form[i].blindboardmaterial + this.$refs.taskBasic.taskBasicForm.blindboardspecification = form[i].blindboardspecification + this.$refs.taskBasic.taskBasicForm.blindboardnumber = form[i].blindboardnumber + this.$refs.taskBasic.taskBasicForm.blindboardlocation = form[i].blindboardlocation.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else{ + this.$refs.taskBasic.activeNames.push('8') + this.$refs.taskBasic.ifIncludeFire = 1 + this.$refs.taskBasic.taskBasicForm.firelevel = form[i].level + this.$refs.taskBasic.taskBasicForm.firetype = form[i].firetype + } + } + this.$refs.taskBasic.giveTaskBasic(this.$refs.taskBasic.taskBasicForm) + }) + } + else if(title === '复制'){ + this.ifSafetyAction = false + this.ifSafetyAndRisk = false + this.ifFireMan = false + this.ifFile = false + this.ifConstructionFile = false + this.ifAllFile = false + this.ifHotFireBasic = true + this.basicForm = JSON.parse(JSON.stringify(value)) + setTimeout(()=>{ + this.$refs.taskBasic.type = 1 + this.$refs.taskBasic.resetFormRules() + this.$refs.taskBasic.taskBasicForm = JSON.parse(JSON.stringify(value)) + this.$refs.taskBasic.taskBasicForm.hazard = this.$refs.taskBasic.taskBasicForm.hazard.split('、') + let form = JSON.parse(JSON.stringify(value)).subTaskInfos + this.$refs.taskBasic.taskBasicForm.type = '' + this.$refs.taskBasic.taskBasicForm.category = '' + this.$refs.taskBasic.taskBasicForm.firelevel = '' + this.$refs.taskBasic.taskBasicForm.checked = '' + this.$refs.taskBasic.taskBasicForm.spacecategory = '' + this.$refs.taskBasic.taskBasicForm.spacename = '' + this.$refs.taskBasic.taskBasicForm.spacemedium = '' + this.$refs.taskBasic.taskBasicForm.acibase = '' + this.$refs.taskBasic.taskBasicForm.hoistinglevel = '' + this.$refs.taskBasic.taskBasicForm.hoistingweight = '' + this.$refs.taskBasic.taskBasicForm.soildepth = '' + this.$refs.taskBasic.taskBasicForm.soilarea = '' + this.$refs.taskBasic.taskBasicForm.soilfile = [] + this.$refs.taskBasic.taskBasicForm.breakreason = '' + this.$refs.taskBasic.taskBasicForm.breakfile = [] + this.$refs.taskBasic.taskBasicForm.workheight = '' + this.$refs.taskBasic.taskBasicForm.heightlevel = '' + this.$refs.taskBasic.taskBasicForm.electricityarea = '' + this.$refs.taskBasic.taskBasicForm.voltage = '' + this.$refs.taskBasic.taskBasicForm.power = '' + this.$refs.taskBasic.taskBasicForm.pipename = '' + this.$refs.taskBasic.taskBasicForm.pipemedium = '' + this.$refs.taskBasic.taskBasicForm.pipetemperature = '' + this.$refs.taskBasic.taskBasicForm.pipepressure = '' + this.$refs.taskBasic.taskBasicForm.blindboardmaterial = '' + this.$refs.taskBasic.taskBasicForm.blindboardspecification = '' + this.$refs.taskBasic.taskBasicForm.blindboardnumber = '' + this.$refs.taskBasic.taskBasicForm.commander = '' + this.$refs.taskBasic.taskBasicForm.blindboardlocation = [] + this.$refs.taskBasic.taskBasicForm.firetype = '' + for(let i in form){ + if(form[i].type === '受限空间作业'){ + this.$refs.taskBasic.activeNames.push('1') + this.$refs.taskBasic.ifIncludeArea = 1 + this.$refs.taskBasic.taskBasicForm.spacecategory = form[i].spacecategory + this.$refs.taskBasic.taskBasicForm.spacename = form[i].spacename + this.$refs.taskBasic.taskBasicForm.spacemedium = form[i].spacemedium + this.$refs.taskBasic.taskBasicForm.acibase = form[i].acibase + } + else if(form[i].type === '吊装作业'){ + this.$refs.taskBasic.activeNames.push('2') + this.$refs.taskBasic.ifHoisting = 1 + this.$refs.taskBasic.taskBasicForm.hoistinglevel = form[i].hoistinglevel + this.$refs.taskBasic.taskBasicForm.hoistingweight = form[i].hoistingweight + } + else if(form[i].type === '动土作业'){ + this.$refs.taskBasic.activeNames.push('3') + this.$refs.taskBasic.ifBuilding = 1 + this.$refs.taskBasic.taskBasicForm.soildepth = form[i].soildepth + this.$refs.taskBasic.taskBasicForm.soilarea = form[i].soilarea + this.$refs.taskBasic.taskBasicForm.soilfile = form[i].soilfile.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else if(form[i].type === '断路作业'){ + this.$refs.taskBasic.activeNames.push('4') + this.$refs.taskBasic.ifIncludeRoad = 1 + this.$refs.taskBasic.taskBasicForm.breakreason = form[i].breakreason + this.$refs.taskBasic.taskBasicForm.breakfile = form[i].breakfile.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else if(form[i].type === '高处作业'){ + this.$refs.taskBasic.activeNames.push('5') + this.$refs.taskBasic.ifIncludeHigh = 1 + this.$refs.taskBasic.taskBasicForm.heightlevel = form[i].heightlevel + this.$refs.taskBasic.taskBasicForm.workheight = form[i].workheight + } + else if(form[i].type === '临时用电作业'){ + this.$refs.taskBasic.activeNames.push('6') + this.$refs.taskBasic.ifIncludeElectricity = 1 + this.$refs.taskBasic.taskBasicForm.electricityarea = form[i].electricityarea + this.$refs.taskBasic.taskBasicForm.voltage = form[i].voltage + this.$refs.taskBasic.taskBasicForm.power = form[i].power + } + else if(form[i].type === '盲板抽堵作业'){ + this.$refs.taskBasic.activeNames.push('7') + this.$refs.taskBasic.ifIncludePump = 1 + this.$refs.taskBasic.taskBasicForm.pipename = form[i].pipename + this.$refs.taskBasic.taskBasicForm.pipemedium = form[i].pipemedium + this.$refs.taskBasic.taskBasicForm.pipetemperature = form[i].pipetemperature + this.$refs.taskBasic.taskBasicForm.pipepressure = form[i].pipepressure + this.$refs.taskBasic.taskBasicForm.blindboardmaterial = form[i].blindboardmaterial + this.$refs.taskBasic.taskBasicForm.blindboardspecification = form[i].blindboardspecification + this.$refs.taskBasic.taskBasicForm.blindboardnumber = form[i].blindboardnumber + this.$refs.taskBasic.taskBasicForm.blindboardlocation = form[i].blindboardlocation.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else{ + this.$refs.taskBasic.activeNames.push('8') + this.$refs.taskBasic.ifIncludeFire = 1 + this.$refs.taskBasic.taskBasicForm.firelevel = form[i].level + this.$refs.taskBasic.taskBasicForm.firetype = form[i].firetype + } + } + this.$refs.taskBasic.giveTaskBasic(this.$refs.taskBasic.taskBasicForm) + }) + } + else if(title === '施工单位确认'){ + this.title = '施工单位确认' + this.ifHotFireBasic = true + this.ifSafetyAction = true + this.ifSafetyAndRisk = true + this.ifFireMan = false + this.ifFile = false + this.ifConstructionFile = true + this.basicForm = JSON.parse(JSON.stringify(value)) + setTimeout(()=>{ + this.$refs.taskBasic.taskBasicForm = JSON.parse(JSON.stringify(value)) + this.$refs.taskBasic.taskBasicForm.hazard = this.$refs.taskBasic.taskBasicForm.hazard.split(',') + let form = JSON.parse(JSON.stringify(value)).subTaskInfos + this.$refs.taskBasic.taskBasicForm.type = '' + this.$refs.taskBasic.taskBasicForm.category = '' + this.$refs.taskBasic.taskBasicForm.firelevel = '' + this.$refs.taskBasic.taskBasicForm.checked = '' + this.$refs.taskBasic.taskBasicForm.spacecategory = '' + this.$refs.taskBasic.taskBasicForm.spacename = '' + this.$refs.taskBasic.taskBasicForm.spacemedium = '' + this.$refs.taskBasic.taskBasicForm.acibase = '' + this.$refs.taskBasic.taskBasicForm.hoistinglevel = '' + this.$refs.taskBasic.taskBasicForm.hoistingweight = '' + this.$refs.taskBasic.taskBasicForm.soildepth = '' + this.$refs.taskBasic.taskBasicForm.soilarea = '' + this.$refs.taskBasic.taskBasicForm.soilfile = [] + this.$refs.taskBasic.taskBasicForm.breakreason = '' + this.$refs.taskBasic.taskBasicForm.breakfile = [] + this.$refs.taskBasic.taskBasicForm.workheight = '' + this.$refs.taskBasic.taskBasicForm.heightlevel = '' + this.$refs.taskBasic.taskBasicForm.electricityarea = '' + this.$refs.taskBasic.taskBasicForm.voltage = '' + this.$refs.taskBasic.taskBasicForm.power = '' + this.$refs.taskBasic.taskBasicForm.pipename = '' + this.$refs.taskBasic.taskBasicForm.pipemedium = '' + this.$refs.taskBasic.taskBasicForm.pipetemperature = '' + this.$refs.taskBasic.taskBasicForm.pipepressure = '' + this.$refs.taskBasic.taskBasicForm.blindboardmaterial = '' + this.$refs.taskBasic.taskBasicForm.blindboardspecification = '' + this.$refs.taskBasic.taskBasicForm.blindboardnumber = '' + this.$refs.taskBasic.taskBasicForm.commander = '' + this.$refs.taskBasic.taskBasicForm.blindboardlocation = [] + this.$refs.taskBasic.taskBasicForm.firetype = '' + for(let i in form){ + if(form[i].type === '受限空间作业'){ + this.$refs.taskBasic.activeNames.push('1') + this.$refs.taskBasic.ifIncludeArea = 1 + this.$refs.taskBasic.taskBasicForm.spacecategory = form[i].spacecategory + this.$refs.taskBasic.taskBasicForm.spacename = form[i].spacename + this.$refs.taskBasic.taskBasicForm.spacemedium = form[i].spacemedium + this.$refs.taskBasic.taskBasicForm.acibase = form[i].acibase + } + else if(form[i].type === '吊装作业'){ + this.$refs.taskBasic.activeNames.push('2') + this.$refs.taskBasic.ifHoisting = 1 + this.$refs.taskBasic.taskBasicForm.hoistinglevel = form[i].hoistinglevel + this.$refs.taskBasic.taskBasicForm.hoistingweight = form[i].hoistingweight + } + else if(form[i].type === '动土作业'){ + this.$refs.taskBasic.activeNames.push('3') + this.$refs.taskBasic.ifBuilding = 1 + this.$refs.taskBasic.taskBasicForm.soildepth = form[i].soildepth + this.$refs.taskBasic.taskBasicForm.soilarea = form[i].soilarea + this.$refs.taskBasic.taskBasicForm.soilfile = form[i].soilfile.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else if(form[i].type === '断路作业'){ + this.$refs.taskBasic.activeNames.push('4') + this.$refs.taskBasic.ifIncludeRoad = 1 + this.$refs.taskBasic.taskBasicForm.breakreason = form[i].breakreason + this.$refs.taskBasic.taskBasicForm.breakfile = form[i].breakfile.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else if(form[i].type === '高处作业'){ + this.$refs.taskBasic.activeNames.push('5') + this.$refs.taskBasic.ifIncludeHigh = 1 + this.$refs.taskBasic.taskBasicForm.heightlevel = form[i].heightlevel + this.$refs.taskBasic.taskBasicForm.workheight = form[i].workheight + } + else if(form[i].type === '临时用电作业'){ + this.$refs.taskBasic.activeNames.push('6') + this.$refs.taskBasic.ifIncludeElectricity = 1 + this.$refs.taskBasic.taskBasicForm.electricityarea = form[i].electricityarea + this.$refs.taskBasic.taskBasicForm.voltage = form[i].voltage + this.$refs.taskBasic.taskBasicForm.power = form[i].power + } + else if(form[i].type === '盲板抽堵作业'){ + this.$refs.taskBasic.activeNames.push('7') + this.$refs.taskBasic.ifIncludePump = 1 + this.$refs.taskBasic.taskBasicForm.pipename = form[i].pipename + this.$refs.taskBasic.taskBasicForm.pipemedium = form[i].pipemedium + this.$refs.taskBasic.taskBasicForm.pipetemperature = form[i].pipetemperature + this.$refs.taskBasic.taskBasicForm.pipepressure = form[i].pipepressure + this.$refs.taskBasic.taskBasicForm.blindboardmaterial = form[i].blindboardmaterial + this.$refs.taskBasic.taskBasicForm.blindboardspecification = form[i].blindboardspecification + this.$refs.taskBasic.taskBasicForm.blindboardnumber = form[i].blindboardnumber + this.$refs.taskBasic.taskBasicForm.blindboardlocation = form[i].blindboardlocation.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else{ + this.$refs.taskBasic.activeNames.push('8') + this.$refs.taskBasic.ifIncludeFire = 1 + this.$refs.taskBasic.taskBasicForm.firelevel = form[i].level + this.$refs.taskBasic.taskBasicForm.firetype = form[i].firetype + } + } + this.$refs.safetyAction.tasksecurity = JSON.parse(JSON.stringify(value)).taskSecurities + this.$refs.safetyAndRiskConfirm.taskRiskForm = JSON.parse(JSON.stringify(value)).taskRisk + this.$refs.equipment.equipmentData = JSON.parse(JSON.stringify(value)).taskEquipments + this.$refs.constructionFile.ifCompany = true + this.$refs.constructionFile.ifConstruction = false + this.$refs.constructionFile.getFileList() + this.$refs.taskBasic.resetFormRules() + }) + } + else if(title === '动火部位审批'){ + this.ifHotFireBasic = true + this.ifSafetyAction = true + this.ifSafetyAndRisk = true + this.ifFireMan = true + this.ifAllFile = true + this.basicForm = JSON.parse(JSON.stringify(value)) + setTimeout(()=>{ + this.$refs.taskBasic.taskBasicForm = JSON.parse(JSON.stringify(value)) + let form = JSON.parse(JSON.stringify(value)).subTaskInfos + this.$refs.taskBasic.taskBasicForm.type = '' + this.$refs.taskBasic.taskBasicForm.category = '' + this.$refs.taskBasic.taskBasicForm.firelevel = '' + this.$refs.taskBasic.taskBasicForm.checked = '' + this.$refs.taskBasic.taskBasicForm.spacecategory = '' + this.$refs.taskBasic.taskBasicForm.spacename = '' + this.$refs.taskBasic.taskBasicForm.spacemedium = '' + this.$refs.taskBasic.taskBasicForm.acibase = '' + this.$refs.taskBasic.taskBasicForm.hoistinglevel = '' + this.$refs.taskBasic.taskBasicForm.hoistingweight = '' + this.$refs.taskBasic.taskBasicForm.soildepth = '' + this.$refs.taskBasic.taskBasicForm.soilarea = '' + this.$refs.taskBasic.taskBasicForm.soilfile = [] + this.$refs.taskBasic.taskBasicForm.breakreason = '' + this.$refs.taskBasic.taskBasicForm.breakfile = [] + this.$refs.taskBasic.taskBasicForm.workheight = '' + this.$refs.taskBasic.taskBasicForm.heightlevel = '' + this.$refs.taskBasic.taskBasicForm.electricityarea = '' + this.$refs.taskBasic.taskBasicForm.voltage = '' + this.$refs.taskBasic.taskBasicForm.power = '' + this.$refs.taskBasic.taskBasicForm.pipename = '' + this.$refs.taskBasic.taskBasicForm.pipemedium = '' + this.$refs.taskBasic.taskBasicForm.pipetemperature = '' + this.$refs.taskBasic.taskBasicForm.pipepressure = '' + this.$refs.taskBasic.taskBasicForm.blindboardmaterial = '' + this.$refs.taskBasic.taskBasicForm.blindboardspecification = '' + this.$refs.taskBasic.taskBasicForm.blindboardnumber = '' + this.$refs.taskBasic.taskBasicForm.commander = '' + this.$refs.taskBasic.taskBasicForm.blindboardlocation = [] + this.$refs.taskBasic.taskBasicForm.firetype = '' + for(let i in form){ + if(form[i].type === '受限空间作业'){ + this.$refs.taskBasic.activeNames.push('1') + this.$refs.taskBasic.ifIncludeArea = 1 + this.$refs.taskBasic.taskBasicForm.spacecategory = form[i].spacecategory + this.$refs.taskBasic.taskBasicForm.spacename = form[i].spacename + this.$refs.taskBasic.taskBasicForm.spacemedium = form[i].spacemedium + this.$refs.taskBasic.taskBasicForm.acibase = form[i].acibase + } + else if(form[i].type === '吊装作业'){ + this.$refs.taskBasic.activeNames.push('2') + this.$refs.taskBasic.ifHoisting = 1 + this.$refs.taskBasic.taskBasicForm.hoistinglevel = form[i].hoistinglevel + this.$refs.taskBasic.taskBasicForm.hoistingweight = form[i].hoistingweight + } + else if(form[i].type === '动土作业'){ + this.$refs.taskBasic.activeNames.push('3') + this.$refs.taskBasic.ifBuilding = 1 + this.$refs.taskBasic.taskBasicForm.soildepth = form[i].soildepth + this.$refs.taskBasic.taskBasicForm.soilarea = form[i].soilarea + this.$refs.taskBasic.taskBasicForm.soilfile = form[i].soilfile.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else if(form[i].type === '断路作业'){ + this.$refs.taskBasic.activeNames.push('4') + this.$refs.taskBasic.ifIncludeRoad = 1 + this.$refs.taskBasic.taskBasicForm.breakreason = form[i].breakreason + this.$refs.taskBasic.taskBasicForm.breakfile = form[i].breakfile.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else if(form[i].type === '高处作业'){ + this.$refs.taskBasic.activeNames.push('5') + this.$refs.taskBasic.ifIncludeHigh = 1 + this.$refs.taskBasic.taskBasicForm.heightlevel = form[i].heightlevel + this.$refs.taskBasic.taskBasicForm.workheight = form[i].workheight + } + else if(form[i].type === '临时用电作业'){ + this.$refs.taskBasic.activeNames.push('6') + this.$refs.taskBasic.ifIncludeElectricity = 1 + this.$refs.taskBasic.taskBasicForm.electricityarea = form[i].electricityarea + this.$refs.taskBasic.taskBasicForm.voltage = form[i].voltage + this.$refs.taskBasic.taskBasicForm.power = form[i].power + } + else if(form[i].type === '盲板抽堵作业'){ + this.$refs.taskBasic.activeNames.push('7') + this.$refs.taskBasic.ifIncludePump = 1 + this.$refs.taskBasic.taskBasicForm.pipename = form[i].pipename + this.$refs.taskBasic.taskBasicForm.pipemedium = form[i].pipemedium + this.$refs.taskBasic.taskBasicForm.pipetemperature = form[i].pipetemperature + this.$refs.taskBasic.taskBasicForm.pipepressure = form[i].pipepressure + this.$refs.taskBasic.taskBasicForm.blindboardmaterial = form[i].blindboardmaterial + this.$refs.taskBasic.taskBasicForm.blindboardspecification = form[i].blindboardspecification + this.$refs.taskBasic.taskBasicForm.blindboardnumber = form[i].blindboardnumber + this.$refs.taskBasic.taskBasicForm.blindboardlocation = form[i].blindboardlocation.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else{ + this.$refs.taskBasic.activeNames.push('8') + this.$refs.taskBasic.ifIncludeFire = 1 + this.$refs.taskBasic.taskBasicForm.firelevel = form[i].level + this.$refs.taskBasic.taskBasicForm.firetype = form[i].firetype + } + } + this.$refs.safetyAction.tasksecurity = JSON.parse(JSON.stringify(value)).taskSecurities + this.$refs.safetyAndRiskConfirm.taskRiskForm = JSON.parse(JSON.stringify(value)).taskRisk + this.$refs.equipment.equipmentData = JSON.parse(JSON.stringify(value)).taskEquipments + this.$refs.fireMan.taskWorkers = JSON.parse(JSON.stringify(value)).taskWorkers + this.$refs.taskBasic.resetFormRules() + }) + } + else if(title === '相关部门审批'){ + this.ifHotFireBasic = true + this.ifSafetyAction = true + this.ifSafetyAndRisk = true + this.ifFireMan = true + this.ifAllFile = true + this.basicForm = JSON.parse(JSON.stringify(value)) + setTimeout(()=>{ + this.$refs.taskBasic.taskBasicForm = JSON.parse(JSON.stringify(value)) + let form = JSON.parse(JSON.stringify(value)).subTaskInfos + this.$refs.taskBasic.taskBasicForm.type = '' + this.$refs.taskBasic.taskBasicForm.category = '' + this.$refs.taskBasic.taskBasicForm.firelevel = '' + this.$refs.taskBasic.taskBasicForm.checked = '' + this.$refs.taskBasic.taskBasicForm.spacecategory = '' + this.$refs.taskBasic.taskBasicForm.spacename = '' + this.$refs.taskBasic.taskBasicForm.spacemedium = '' + this.$refs.taskBasic.taskBasicForm.acibase = '' + this.$refs.taskBasic.taskBasicForm.hoistinglevel = '' + this.$refs.taskBasic.taskBasicForm.hoistingweight = '' + this.$refs.taskBasic.taskBasicForm.soildepth = '' + this.$refs.taskBasic.taskBasicForm.soilarea = '' + this.$refs.taskBasic.taskBasicForm.soilfile = [] + this.$refs.taskBasic.taskBasicForm.breakreason = '' + this.$refs.taskBasic.taskBasicForm.breakfile = [] + this.$refs.taskBasic.taskBasicForm.workheight = '' + this.$refs.taskBasic.taskBasicForm.heightlevel = '' + this.$refs.taskBasic.taskBasicForm.electricityarea = '' + this.$refs.taskBasic.taskBasicForm.voltage = '' + this.$refs.taskBasic.taskBasicForm.power = '' + this.$refs.taskBasic.taskBasicForm.pipename = '' + this.$refs.taskBasic.taskBasicForm.pipemedium = '' + this.$refs.taskBasic.taskBasicForm.pipetemperature = '' + this.$refs.taskBasic.taskBasicForm.pipepressure = '' + this.$refs.taskBasic.taskBasicForm.blindboardmaterial = '' + this.$refs.taskBasic.taskBasicForm.blindboardspecification = '' + this.$refs.taskBasic.taskBasicForm.blindboardnumber = '' + this.$refs.taskBasic.taskBasicForm.commander = '' + this.$refs.taskBasic.taskBasicForm.blindboardlocation = [] + this.$refs.taskBasic.taskBasicForm.firetype = '' + for(let i in form){ + if(form[i].type === '受限空间作业'){ + this.$refs.taskBasic.activeNames.push('1') + this.$refs.taskBasic.ifIncludeArea = 1 + this.$refs.taskBasic.taskBasicForm.spacecategory = form[i].spacecategory + this.$refs.taskBasic.taskBasicForm.spacename = form[i].spacename + this.$refs.taskBasic.taskBasicForm.spacemedium = form[i].spacemedium + this.$refs.taskBasic.taskBasicForm.acibase = form[i].acibase + } + else if(form[i].type === '吊装作业'){ + this.$refs.taskBasic.activeNames.push('2') + this.$refs.taskBasic.ifHoisting = 1 + this.$refs.taskBasic.taskBasicForm.hoistinglevel = form[i].hoistinglevel + this.$refs.taskBasic.taskBasicForm.hoistingweight = form[i].hoistingweight + } + else if(form[i].type === '动土作业'){ + this.$refs.taskBasic.activeNames.push('3') + this.$refs.taskBasic.ifBuilding = 1 + this.$refs.taskBasic.taskBasicForm.soildepth = form[i].soildepth + this.$refs.taskBasic.taskBasicForm.soilarea = form[i].soilarea + this.$refs.taskBasic.taskBasicForm.soilfile = form[i].soilfile.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else if(form[i].type === '断路作业'){ + this.$refs.taskBasic.activeNames.push('4') + this.$refs.taskBasic.ifIncludeRoad = 1 + this.$refs.taskBasic.taskBasicForm.breakreason = form[i].breakreason + this.$refs.taskBasic.taskBasicForm.breakfile = form[i].breakfile.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else if(form[i].type === '高处作业'){ + this.$refs.taskBasic.activeNames.push('5') + this.$refs.taskBasic.ifIncludeHigh = 1 + this.$refs.taskBasic.taskBasicForm.heightlevel = form[i].heightlevel + this.$refs.taskBasic.taskBasicForm.workheight = form[i].workheight + } + else if(form[i].type === '临时用电作业'){ + this.$refs.taskBasic.activeNames.push('6') + this.$refs.taskBasic.ifIncludeElectricity = 1 + this.$refs.taskBasic.taskBasicForm.electricityarea = form[i].electricityarea + this.$refs.taskBasic.taskBasicForm.voltage = form[i].voltage + this.$refs.taskBasic.taskBasicForm.power = form[i].power + } + else if(form[i].type === '盲板抽堵作业'){ + this.$refs.taskBasic.activeNames.push('7') + this.$refs.taskBasic.ifIncludePump = 1 + this.$refs.taskBasic.taskBasicForm.pipename = form[i].pipename + this.$refs.taskBasic.taskBasicForm.pipemedium = form[i].pipemedium + this.$refs.taskBasic.taskBasicForm.pipetemperature = form[i].pipetemperature + this.$refs.taskBasic.taskBasicForm.pipepressure = form[i].pipepressure + this.$refs.taskBasic.taskBasicForm.blindboardmaterial = form[i].blindboardmaterial + this.$refs.taskBasic.taskBasicForm.blindboardspecification = form[i].blindboardspecification + this.$refs.taskBasic.taskBasicForm.blindboardnumber = form[i].blindboardnumber + this.$refs.taskBasic.taskBasicForm.blindboardlocation = form[i].blindboardlocation.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else{ + this.$refs.taskBasic.activeNames.push('8') + this.$refs.taskBasic.ifIncludeFire = 1 + this.$refs.taskBasic.taskBasicForm.firelevel = form[i].level + this.$refs.taskBasic.taskBasicForm.firetype = form[i].firetype + } + } + this.$refs.safetyAction.tasksecurity = JSON.parse(JSON.stringify(value)).taskSecurities + this.$refs.safetyAndRiskConfirm.taskRiskForm = JSON.parse(JSON.stringify(value)).taskRisk + this.$refs.equipment.equipmentData = JSON.parse(JSON.stringify(value)).taskEquipments + this.$refs.fireMan.taskWorkers = JSON.parse(JSON.stringify(value)).taskWorkers + this.$refs.taskBasic.resetFormRules() + }) + } + else if(title === '安全部门审批'){ + this.ifHotFireBasic = true + this.ifSafetyAction = true + this.ifSafetyAndRisk = true + this.ifFireMan = true + this.ifAllFile = true + this.basicForm = JSON.parse(JSON.stringify(value)) + setTimeout(()=>{ + this.$refs.taskBasic.taskBasicForm = JSON.parse(JSON.stringify(value)) + let form = JSON.parse(JSON.stringify(value)).subTaskInfos + this.$refs.taskBasic.taskBasicForm.type = '' + this.$refs.taskBasic.taskBasicForm.category = '' + this.$refs.taskBasic.taskBasicForm.firelevel = '' + this.$refs.taskBasic.taskBasicForm.checked = '' + this.$refs.taskBasic.taskBasicForm.spacecategory = '' + this.$refs.taskBasic.taskBasicForm.spacename = '' + this.$refs.taskBasic.taskBasicForm.spacemedium = '' + this.$refs.taskBasic.taskBasicForm.acibase = '' + this.$refs.taskBasic.taskBasicForm.hoistinglevel = '' + this.$refs.taskBasic.taskBasicForm.hoistingweight = '' + this.$refs.taskBasic.taskBasicForm.soildepth = '' + this.$refs.taskBasic.taskBasicForm.soilarea = '' + this.$refs.taskBasic.taskBasicForm.soilfile = [] + this.$refs.taskBasic.taskBasicForm.breakreason = '' + this.$refs.taskBasic.taskBasicForm.breakfile = [] + this.$refs.taskBasic.taskBasicForm.workheight = '' + this.$refs.taskBasic.taskBasicForm.heightlevel = '' + this.$refs.taskBasic.taskBasicForm.electricityarea = '' + this.$refs.taskBasic.taskBasicForm.voltage = '' + this.$refs.taskBasic.taskBasicForm.power = '' + this.$refs.taskBasic.taskBasicForm.pipename = '' + this.$refs.taskBasic.taskBasicForm.pipemedium = '' + this.$refs.taskBasic.taskBasicForm.pipetemperature = '' + this.$refs.taskBasic.taskBasicForm.pipepressure = '' + this.$refs.taskBasic.taskBasicForm.blindboardmaterial = '' + this.$refs.taskBasic.taskBasicForm.blindboardspecification = '' + this.$refs.taskBasic.taskBasicForm.blindboardnumber = '' + this.$refs.taskBasic.taskBasicForm.commander = '' + this.$refs.taskBasic.taskBasicForm.blindboardlocation = [] + this.$refs.taskBasic.taskBasicForm.firetype = '' + for(let i in form){ + if(form[i].type === '受限空间作业'){ + this.$refs.taskBasic.activeNames.push('1') + this.$refs.taskBasic.ifIncludeArea = 1 + this.$refs.taskBasic.taskBasicForm.spacecategory = form[i].spacecategory + this.$refs.taskBasic.taskBasicForm.spacename = form[i].spacename + this.$refs.taskBasic.taskBasicForm.spacemedium = form[i].spacemedium + this.$refs.taskBasic.taskBasicForm.acibase = form[i].acibase + } + else if(form[i].type === '吊装作业'){ + this.$refs.taskBasic.activeNames.push('2') + this.$refs.taskBasic.ifHoisting = 1 + this.$refs.taskBasic.taskBasicForm.hoistinglevel = form[i].hoistinglevel + this.$refs.taskBasic.taskBasicForm.hoistingweight = form[i].hoistingweight + } + else if(form[i].type === '动土作业'){ + this.$refs.taskBasic.activeNames.push('3') + this.$refs.taskBasic.ifBuilding = 1 + this.$refs.taskBasic.taskBasicForm.soildepth = form[i].soildepth + this.$refs.taskBasic.taskBasicForm.soilarea = form[i].soilarea + this.$refs.taskBasic.taskBasicForm.soilfile = form[i].soilfile.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else if(form[i].type === '断路作业'){ + this.$refs.taskBasic.activeNames.push('4') + this.$refs.taskBasic.ifIncludeRoad = 1 + this.$refs.taskBasic.taskBasicForm.breakreason = form[i].breakreason + this.$refs.taskBasic.taskBasicForm.breakfile = form[i].breakfile.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else if(form[i].type === '高处作业'){ + this.$refs.taskBasic.activeNames.push('5') + this.$refs.taskBasic.ifIncludeHigh = 1 + this.$refs.taskBasic.taskBasicForm.heightlevel = form[i].heightlevel + this.$refs.taskBasic.taskBasicForm.workheight = form[i].workheight + } + else if(form[i].type === '临时用电作业'){ + this.$refs.taskBasic.activeNames.push('6') + this.$refs.taskBasic.ifIncludeElectricity = 1 + this.$refs.taskBasic.taskBasicForm.electricityarea = form[i].electricityarea + this.$refs.taskBasic.taskBasicForm.voltage = form[i].voltage + this.$refs.taskBasic.taskBasicForm.power = form[i].power + } + else if(form[i].type === '盲板抽堵作业'){ + this.$refs.taskBasic.activeNames.push('7') + this.$refs.taskBasic.ifIncludePump = 1 + this.$refs.taskBasic.taskBasicForm.pipename = form[i].pipename + this.$refs.taskBasic.taskBasicForm.pipemedium = form[i].pipemedium + this.$refs.taskBasic.taskBasicForm.pipetemperature = form[i].pipetemperature + this.$refs.taskBasic.taskBasicForm.pipepressure = form[i].pipepressure + this.$refs.taskBasic.taskBasicForm.blindboardmaterial = form[i].blindboardmaterial + this.$refs.taskBasic.taskBasicForm.blindboardspecification = form[i].blindboardspecification + this.$refs.taskBasic.taskBasicForm.blindboardnumber = form[i].blindboardnumber + this.$refs.taskBasic.taskBasicForm.blindboardlocation = form[i].blindboardlocation.map(item =>{ + return Object.assign(item,{url:process.env.IMG_API + item.fileurl}) + }) + } + else{ + this.$refs.taskBasic.activeNames.push('8') + this.$refs.taskBasic.ifIncludeFire = 1 + this.$refs.taskBasic.taskBasicForm.firelevel = form[i].level + this.$refs.taskBasic.taskBasicForm.firetype = form[i].firetype + } + } + this.$refs.safetyAction.tasksecurity = JSON.parse(JSON.stringify(value)).taskSecurities + this.$refs.safetyAndRiskConfirm.taskRiskForm = JSON.parse(JSON.stringify(value)).taskRisk + this.$refs.equipment.equipmentData = JSON.parse(JSON.stringify(value)).taskEquipments + this.$refs.fireMan.taskWorkers = JSON.parse(JSON.stringify(value)).taskWorkers + this.$refs.taskBasic.resetFormRules() + }) + } + }, + changeToSecond(val){ + if(val.isanalysis === 1){ + this.taskCreateDialog = false + }else if(this.title === '新增' || this.title === '编辑' || this.title === '复制'){ + this.ifHotFireBasic = false + this.ifSafetyAction = true + this.ifSafetyAndRisk = true + this.activeName = 'safetyAction' + this.basicForm = val + this.$emit('getinfo') + setTimeout(()=>{ + if(val.taskSecurities.length === 0){ + this.$refs.safetyAction.getSafeTyAction() + }else{ + this.$refs.safetyAction.tasksecurity = val.taskSecurities + } + if(val.taskRisk === null){ + this.$refs.safetyAndRiskConfirm.taskRiskForm = { + id:'', + taskcode:'', + content:'', + environment:'', + preventive:'', + emergency:'', + other:'', + director:'', + taskdirector:'', + confirmat:'', + createdat:'', + createdby:'', + modifiedat:'', + modifiedby:'', + flag:'', + } + }else{ + this.$refs.safetyAndRiskConfirm.taskRiskForm = val.taskRisk + } + this.$refs.equipment.equipmentData = val.taskEquipments + }) + }else{ + this.ifHotFireBasic = false + this.ifSafetyAction = true + this.ifSafetyAndRisk = true + this.activeName = 'safetyAction' + this.$emit('getinfo') + setTimeout(()=>{ + this.$refs.safetyAction.tasksecurity = this.basicForm.taskSecurities + this.$refs.equipment.equipmentData = this.basicForm.taskEquipments + this.$refs.safetyAndRiskConfirm.taskRiskForm = this.basicForm.taskRisk + }) + } + }, + async changeToThird(){ + let correct + for(let i in this.$refs.safetyAction.tasksecurity){ + if(this.$refs.safetyAction.tasksecurity[i].checked === null || this.$refs.safetyAction.tasksecurity[i].checked === undefined || this.$refs.safetyAction.tasksecurity[i].checked === ''){ + correct = 0 + this.$message({ + type:'warning', + message:'请完善安全措施' + }) + break + }else{ + correct = 1 + } + } + if(correct === 1){ + if((this.$refs.safetyAndRiskConfirm.taskRiskForm.content === '' || this.$refs.safetyAndRiskConfirm.taskRiskForm.environment === '' || this.$refs.safetyAndRiskConfirm.taskRiskForm.preventive === '' || this.$refs.safetyAndRiskConfirm.taskRiskForm.emergency === '' || this.$refs.safetyAndRiskConfirm.taskRiskForm.other === '') && this.basicForm.level === 2){ + this.$message({ + type:'warning', + message:'请完善安全交底和风险告知确认卡' + }) + }else if(this.$refs.equipment.equipmentData.length === 0){ + this.$message({ + type:'warning', + message:'请完善设备' + }) + } else{ + this.basicForm.taskSecurities = this.$refs.safetyAction.tasksecurity + this.basicForm.taskRisk = this.$refs.safetyAndRiskConfirm.taskRiskForm + this.basicForm.taskRisk.taskcode = this.basicForm.code + this.basicForm.taskEquipments = this.$refs.equipment.equipmentData + if(this.title === '新增' || this.title === '复制') { + let res = await addTaskSecond(this.basicForm) + if (res.data.code === '200') { + this.ifFile = true + this.ifHotFireBasic = false + this.ifSafetyAction = false + this.ifSafetyAndRisk = false + this.activeName = 'fileAndEquipment' + this.$notify({ + title: '成功', + duration: 2000, + message: '信息上传成功', + type: 'success' + }) + this.$emit('getinfo') + } else { + this.$message({ + message: res.data.message, + type: 'warning' + }) + } + }else if(this.title === '编辑'){ + let res = await updateTaskSecond(this.basicForm) + if (res.data.code === '200') { + this.ifFile = true + this.ifHotFireBasic = false + this.ifSafetyAction = false + this.ifSafetyAndRisk = false + this.activeName = 'fileAndEquipment' + this.$notify({ + title: '成功', + duration: 2000, + message: '信息上传成功', + type: 'success' + }) + this.$emit('getinfo') + } else { + this.$message({ + message: res.data.message, + type: 'warning' + }) + } + } + } + } + }, + confirmFile(){ + if(this.$refs.fileAndEquipment.fileListOne.length === 0){ + this.$message({ + type:'warning', + message:'请上传事故救援预案' + }) + }else{ + this.taskCreateDialog = false + this.$notify({ + title: '成功', + duration: 2000, + message: '新建成功', + type: 'success' + }) + } + + }, + constructionConfirm(){ + this.title = '施工单位信息填写' + this.activeName = 'safetyAction' + this.ifHotFireBasic = false + this.ifSafetyAction = true + this.ifSafetyAndRisk = false + this.ifFireMan = true + this.ifFile = false + this.ifConstructionFile = false + this.constructionForm = { + id: this.basicForm.id, + isAgree: 1, + code:this.basicForm.code, + taskEquipments:[], + taskSecurities:[], + taskWorkers:[] + } + setTimeout(()=>{ + this.$refs.equipment.equipmentData = [] + this.$refs.safetyAction.getConstructionAction() + this.$refs.constructionFile.ifCompany = false + this.$refs.constructionFile.ifConstruction = true + }) + }, + confirmConstruction(){ + let correct + for(let i in this.$refs.safetyAction.tasksecurity){ + if(this.$refs.safetyAction.tasksecurity[i].checked === null || this.$refs.safetyAction.tasksecurity[i].checked === undefined || this.$refs.safetyAction.tasksecurity[i].checked === ''){ + correct = 0 + this.$message({ + type:'warning', + message:'请完善安全措施' + }) + break + }else{ + correct = 1 + } + } + if(correct === 1) { + if (this.$refs.equipment.equipmentData.length === 0) { + this.$message({ + type: 'warning', + message: '请完善设备' + }) + }else if(this.$refs.fireMan.taskWorkers.length === 0){ + this.$message({ + type: 'warning', + message: '请完善作业人' + }) + } + // else if(this.$refs.constructionFile.fileListTwo.length === 0 || this.$refs.constructionFile.fileListThree.length === 0){ + // this.$message({ + // type: 'warning', + // message: '请上传作业人员健康和作业资质证书文件' + // }) + // } + else { + this.constructionForm.taskEquipments = this.$refs.equipment.equipmentData + this.constructionForm.taskSecurities = this.$refs.safetyAction.tasksecurity + this.constructionForm.taskWorkers = this.$refs.fireMan.taskWorkers + submitConstruction(this.constructionForm).then(res => { + if (res.data.code === '200') { + this.$emit('getinfo') + this.taskCreateDialog = false + this.$notify({ + type: 'success', + duration: 2000, + message: '施工单位确认成功', + title: '成功' + }) + } else { + this.$message({ + message: res.data.message, + type: 'warning' + }) + } + }).catch(error => { + parseError({ error: error, vm: this }) + }) + } + } + }, + refuse(){ + if(this.title === '动火部位审批'){ + this.basicForm.isAgree = 0 + this.supervisorAndAnalystRefuse = true + }else if(this.title === '相关部门审批'){ + this.basicForm.isAgree = 0 + this.relevantRefuse = true + }else if(this.title === '安全部门审批'){ + this.basicForm.isAgree = 0 + this.securityRefuse = true + } + }, + submitRefuseTaskByFireDepartment(){ + if(this.title === '动火部位审批'){ + partReview(this.basicForm).then(res=>{ + if(res.data.code === '200'){ + this.$emit('getinfo') + this.taskCreateDialog = false + this.supervisorAndAnalystRefuse = false + this.$notify({ + title:'成功', + message:'审核驳回成功', + duration:2000, + type:'success' + }) + }else{ + this.$message({ + type:'warning', + message:res.data.message + }) + } + }).catch(error =>{ + parseError({error:error,vm:this}) + }) + }else if(this.title === '相关部门审批'){ + involveReview(this.basicForm).then(res=>{ + if(res.data.code === '200'){ + this.$emit('getinfo') + this.taskCreateDialog = false + this.relevantRefuse = false + this.$notify({ + title:'成功', + message:'审核驳回成功', + duration:2000, + type:'success' + }) + }else{ + this.$message({ + type:'warning', + message:res.data.message + }) + } + }).catch(error =>{ + parseError({error:error,vm:this}) + }) + }else if(this.title === '安全部门审批'){ + securityReview(this.basicForm).then(res=>{ + if(res.data.code === '200'){ + this.$emit('getinfo') + this.taskCreateDialog = false + this.securityRefuse = false + this.$notify({ + title:'成功', + message:'审核驳回成功', + duration:2000, + type:'success' + }) + }else{ + this.$message({ + type:'warning', + message:res.data.message + }) + } + }).catch(error =>{ + parseError({error:error,vm:this}) + }) + } + + }, + agree(){ + if(this.title === '动火部位审批'){ + this.basicForm.isAgree = 1 + this.supervisorAndAnalystAgree = true + }else if(this.title === '相关部门审批'){ + this.basicForm.isAgree = 1 + involveReview(this.basicForm).then(res=>{ + if(res.data.code === '200'){ + this.$emit('getinfo') + this.taskCreateDialog = false + this.$notify({ + title:'成功', + message:'审核通过成功', + duration:2000, + type:'success' + }) + }else{ + this.$message({ + type:'warning', + message:res.data.message + }) + } + }).catch(error =>{ + parseError({error:error,vm:this}) + }) + }else if(this.title === '安全部门审批'){ + this.basicForm.isAgree = 1 + securityReview(this.basicForm).then(res=>{ + if(res.data.code === '200'){ + this.$emit('getinfo') + this.taskCreateDialog = false + this.$notify({ + title:'成功', + message:'审核通过成功', + duration:2000, + type:'success' + }) + }else{ + this.$message({ + type:'warning', + message:res.data.message + }) + } + }).catch(error =>{ + parseError({error:error,vm:this}) + }) + } + }, + submitAgreeTaskByFireDepartment(){ + partReview(this.basicForm).then(res=>{ + if(res.data.code === '200'){ + this.$emit('getinfo') + this.taskCreateDialog = false + this.supervisorAndAnalystAgree = false + this.$notify({ + title:'成功', + message:'审核通过成功', + duration:2000, + type:'success' + }) + }else{ + this.$message({ + type:'warning', + message:res.data.message + }) + } + }).catch(error =>{ + parseError({error:error,vm:this}) + }) + } + } +} +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/taskCreate/index.vue b/src/views/specialWorkManage/specialWork/taskCreate/index.vue new file mode 100644 index 0000000..c6e3cd5 --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskCreate/index.vue @@ -0,0 +1,344 @@ +<template> + <div class="app-container"> + <div class="filter-container"> + <div class="basic_search"> + <span>开始时间:</span> + <el-date-picker value-format="yyyy-MM-dd HH:mm" placeholder="请选择开始时间" type="datetime" v-model="listQuery.starttime" style="width:200px"> + </el-date-picker> + </div> + <div class="basic_search"> + <span>结束时间:</span> + <el-date-picker value-format="yyyy-MM-dd HH:mm" placeholder="请选择结束时间" type="datetime" v-model="listQuery.endtime" style="width:200px"> + </el-date-picker> + </div> + <div class="basic_search"> + <span>部门:</span> + <el-input v-model="listQuery.department" style="width:200px"> + </el-input> + </div> + <div class="basic_search"> + <span>施工单位:</span> + <el-input v-model="listQuery.constructionunit" style="width:200px"> + </el-input> + </div> + <div class="basic_search"> + <span>作业类型:</span> + <el-select v-model="listQuery.level" clearable style="width:200px"> + <el-option + v-for="item in taskTypeList" + :key="item.id" + :value="item.id" + :label="item.name" + ></el-option> + </el-select> + </div> + <div class="basic_search"> + <span>审批状态:</span> + <el-select v-model="listQuery.status" clearable style="width:200px"> + <el-option + v-for="item in statusList" + :key="item.id" + :value="item.id" + :label="item.name" + ></el-option> + </el-select> + </div> + <div class="basic_search"> + <span>作业状态:</span> + <el-select v-model="listQuery.flag" clearable style="width:200px"> + <el-option + v-for="item in flagList" + :key="item.id" + :value="item.id" + :label="item.name" + ></el-option> + </el-select> + </div> + <el-button style="margin-left: 10px;" type="primary" icon="el-icon-refresh" @click="refreshHandle">搜索</el-button> + <el-button style="margin-left: 10px;" type="primary" icon="el-icon-plus" @click="showTaskInfo('','新增')">新增</el-button> + </div> + <div class="table_content"> + <el-table + v-loading="listLoading" + :key="tableKey" + :data="taskData" + border + fit + highlight-current-row + style="width: 100%;" + @sort-change="sortChange" + > + <el-table-column label="单位名称" prop="unit" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="单位代码" prop="code" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="申请人" prop="applicant" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="施工单位" prop="constructionunit" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="作业内容" prop="area" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="开始时间" prop="starttime" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="结束时间" prop="endtime" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="作业级别" prop="level" align="center" sortable="custom"> + <template slot-scope="scope"> + <div v-for="item in levelList"> + <div v-if="scope.row.level === item.id"> + <span>{{item.name}}</span> + <!-- <el-tag v-if="scope.row.level ===0" type="success">{{item.name}}</el-tag>--> + <!-- <el-tag v-if="scope.row.level ===1" type="warning">{{item.name}}</el-tag>--> + <!-- <el-tag v-if="scope.row.level ===2" type="danger">{{item.name}}</el-tag>--> + </div> + </div> + </template> + </el-table-column> + <el-table-column label="任务审批状态" prop="status" align="center" sortable="custom"> + <template slot-scope="scope"> + <div v-for="item in statusList"> + <div v-if="scope.row.status === item.id"> + <span>{{item.name}}</span> + </div> + </div> + </template> + </el-table-column> + <el-table-column label="作业状态" prop="flag" align="center" sortable="custom"> + <template slot-scope="scope"> + <div v-for="item in flagList"> + <div v-if="scope.row.flag === item.id"> + <span>{{item.name}}</span> + </div> + </div> + </template> + </el-table-column> + <el-table-column label="创建时间" prop="createdat" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="最近修改时间" prop="modifiedat" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="操作" align="center" width="280" class-name="small-padding fixed-width"> + <template slot-scope="scope"> + <el-button type="text" @click="showReviewInfo(scope.row)" v-if="scope.row.status !== 7 && scope.row.taskReviews.length !== 0">查看审批</el-button> + <el-button type="text" @click="downloadFile(scope.row)" v-if="scope.row.status === 7">下载</el-button> +<!-- <el-button type="text" @click="showTaskInfo(scope.row,'主管领导审批')" v-if="scope.row.status === 6 && scope.row.level === 2">主管领导审批</el-button>--> +<!-- <el-button type="text" @click="showTaskInfo(scope.row,'安全部门审批')" v-if="scope.row.status === 5 && (scope.row.level === 1 || scope.row.level === 2)">安全部门审批</el-button>--> +<!-- <el-button type="text" @click="showTaskInfo(scope.row,'相关部门审批')" v-if="scope.row.status === 4 &&(scope.row.level === 1 || scope.row.level === 2)">相关部门审批</el-button>--> +<!-- <el-button type="text" @click="showTaskInfo(scope.row,'动火部位审批')" v-if="scope.row.status === 3">动火部位审批</el-button>--> + <el-button type="text" @click="showTaskInfo(scope.row,'施工单位确认')" v-if="scope.row.status === 2 && loginForm.iscompany === 1">施工单位确认</el-button> + <el-button type="text" @click="submitTask(scope.row)" v-if="scope.row.status === 1 || scope.row.status === 0">提交</el-button> + <el-button type="text" @click="showTaskInfo(scope.row,'编辑')" v-if="scope.row.status === 1 || scope.row.status === 0">编辑</el-button> + <el-button type="text" @click="showTaskInfo(scope.row,'复制')">复制</el-button> + <el-button type="text" style="color: red" @click="deleteById(scope.row)" v-if="(scope.row.applicant === loginForm.realname) && scope.row.status === 2">撤销</el-button> + </template> + </el-table-column> + </el-table> + <br> + <el-pagination + v-show="recordTotal>0" + :current-page="currentPage" + :page-sizes="[10, 20, 30, 50]" + :page-size="pageSize" + :total="recordTotal" + layout="total, sizes, prev, pager, next, jumper" + background + style="float:right;" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> + <br> + </div> + <task-create ref="taskCreate" @getinfo="getTaskData"></task-create> + <review-info ref="reviewInfo"></review-info> + </div> +</template> + +<script> +import { mapGetters } from 'vuex' +import { computePageCount } from '../../../../utils' +import { getTaskList, submitTask } from '../../../../api/task' +import Cookies from 'js-cookie' +import TaskCreate from './components/taskCreate' +import reviewInfo from './components/reviewInfo/index' + +export default { + name: 'index', + filters: { + }, + computed: { + ...mapGetters([ + 'userType' + ]) + }, + data() { + return { + tableKey: 0, + taskData: [], + companyList:[], + listLoading: false, + pageSize: 10, + recordTotal: 0, + currentPage: 1, + pageTotal: 0, + title:'', + orderValue:'', + sortValue:'', + levelList:[{id:2,name:'特级'},{id:1,name:'一级'},{id:0,name:'二级'},], + taskTypeList:[ + {id:0,name:'受限空间作业'}, + {id:1,name:'吊装作业'}, + {id:2,name:'动土作业'}, + {id:3,name:'断路作业'}, + {id:4,name:'高处作业'}, + {id:5,name:'临时用电作业'}, + {id:6,name:'盲板抽堵作业'}, + {id:7,name:'动火作业'}, + ], + statusList:[ + {id:0,name:'已驳回'}, + {id:1,name:'待提交'}, + {id:2,name:'已提交'}, + {id:3,name:'施工单位已确认'}, + {id:4,name:'动火部位负责人审批通过'}, + {id:5,name:'相关部门审批通过'}, + {id:6,name:'安全部门审批通过'}, + {id:7,name:'审批通过'}, + ], + flagList:[ + {id:0,name:'待提交'}, + {id:1,name:'作业中止'}, + {id:2,name:'等待检查'}, + {id:3,name:'等待开始'}, + {id:4,name:'作业中'}, + {id:5,name:'作业完成'}, + ], + listQuery:{ + starttime:'', + endtime:'', + department:'', + constructionunit:'', + level:'', + status:'', + flag:'', + }, + loginForm:{} + } + }, + components:{ + TaskCreate, + reviewInfo + }, + mounted() { + this.getTaskData() + }, + methods: { + async getTaskData(){ + this.loginForm = JSON.parse(Cookies.get('loginForm')) + this.listLoading = true + let params = {} + params['pageIndex'] = this.currentPage + params['pageSize'] = this.pageSize + params['order'] = this.orderValue + params['sort'] = this.sortValue + for (const i in this.listQuery) { + console.log(i) + params[i] = this.listQuery[i] + } + let res = await getTaskList(params) + if(res.data.code === '200'){ + this.recordTotal = res.data.result.totalCount + this.pageSize = res.data.result.pageSize + this.pageTotal = computePageCount(res.data.result.totalCount, res.data.result.pageSize) + this.currentPage = res.data.result.pageIndex + this.taskData = res.data.result.result + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + this.listLoading = false + }, + showTaskInfo(value,title){ + this.$refs.taskCreate.openTaskInfo(value,title) + }, + showReviewInfo(value){ + this.$refs.reviewInfo.openReviewInfo(value) + }, + downloadFile(val){ + if(val.path === null || val.path === ''){ + this.$message({ + type:'warning', + message:'文件未生成' + }) + }else{ + window.open(process.env.IMG_API + val.path,'_blank') + } + }, + submitTask(row){ + this.$confirm('提交此条任务,是否继续','提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(()=> { + submitTask({id:row.id}).then( (res)=>{ + if(res.data.code === '200'){ + this.getTaskData() + this.$notify({ + title:'成功', + message:'提交成功', + type:'success', + duration:2000, + }) + }else{ + this.$message({ + type:'warning', + message:res.data.message + }) + } + + }) + }) + }, + deleteById(val){ + this.$confirm('删除此条信息,是否继续','提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(()=> { + deleteUnit({id:val.id}).then( ()=>{ + this.getUnitForm() + this.$notify({ + title:'成功', + message:'删除成功', + type:'success', + duration:2000, + }) + }) + }) + }, + refreshHandle(){ + this.getTaskData() + }, + handleSizeChange(val){ + this.pageSize = val + this.getTaskData() + }, + handleCurrentChange(val){ + this.currentPage = val + this.getTaskData() + }, + sortChange(params){ + this.sortValue = params.sort + this.orderValue = params.order + this.getTaskData() + } + + } +} +</script> +<style scoped> +.basic_search{ + display:inline-block; + padding-bottom: 10px; +} +</style> diff --git a/src/views/specialWorkManage/specialWork/taskInfo/components/equipment/index.vue b/src/views/specialWorkManage/specialWork/taskInfo/components/equipment/index.vue new file mode 100644 index 0000000..e71c228 --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskInfo/components/equipment/index.vue @@ -0,0 +1,72 @@ +<template> + <div> + <el-table :data="equipmentData" border fit highlight-current-row style="width: 100%;" :header-cell-style="{'text-align':'center'}"> + <el-table-column type="index" label="序号" align="center" width="60"/> + <el-table-column prop="taskcode" label="作业编号" align="left"> + </el-table-column> + <el-table-column prop="name" label="设备名称" align="left"> + <template slot-scope="scope"> + <el-input v-model="scope.row.name"></el-input> + </template> + </el-table-column> + <el-table-column prop="type" label="设备类型" align="left"> + <template slot-scope="scope"> + <el-select v-model="scope.row.type"> + <el-option + v-for="item in typeList" + :key="item.id" + :label="item.name" + :value="item.name" + > + </el-option> + </el-select> + </template> + </el-table-column> + <el-table-column prop="num" label="设备数量" align="left"> + <template slot-scope="scope"> + <el-input v-model="scope.row.num"></el-input> + </template> + </el-table-column> + </el-table> + </div> +</template> + +<script> +import { getSafetyActionList } from '@/api/task' + +export default { + props:['basicInformation'], + name: 'index', + data(){ + return{ + typeList:[{id:1,name:'安全防护设备及工具'},{id:2,name:'安全施工防护用具'},{id:3,name:'有毒有害防护设备'},{id:4,name:'个人防护设备'},{id:5,name:'安全措施设备及工器具'}], + equipmentData:[], + } + }, + created(){ + }, + methods:{ + addEquipment(){ + this.equipmentData.push({ + createdat: "", + createdby: "", + flag: 0, + id: 0, + modifiedat: "", + modifiedby: "", + name: "", + num: "", + taskcode: this.basicInformation.code, + type: "" + }) + }, + deleteEquipment(val){ + this.equipmentData.splice(val,1) + } + } +} +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/taskInfo/components/fileAndEquipment/index.vue b/src/views/specialWorkManage/specialWork/taskInfo/components/fileAndEquipment/index.vue new file mode 100644 index 0000000..ea94f0b --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskInfo/components/fileAndEquipment/index.vue @@ -0,0 +1,207 @@ +<template> + <div> + <el-form ref="form" :model="fileForm" label-width="160px" label-position="right"> + <el-form-item label="事故救援预案:"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + :data="uploadForm" + :on-preview="onPreview" + :file-list="fileListOne"> + </el-upload> + </el-form-item> +<!-- <el-form-item label="作业人员身体健康:">--> +<!-- <el-upload--> +<!-- accept=".pdf,.jpg,.png"--> +<!-- :action="fileRoad"--> +<!-- class="upload-demo"--> +<!-- ref="upload"--> +<!-- :headers="header"--> +<!-- :data="uploadForm"--> +<!-- :on-preview="onPreview"--> +<!-- :file-list="fileListTwo">--> +<!-- </el-upload>--> +<!-- </el-form-item>--> +<!-- <el-form-item label="作业资质证书:">--> +<!-- <el-upload--> +<!-- accept=".pdf,.jpg,.png"--> +<!-- :action="fileRoad"--> +<!-- class="upload-demo"--> +<!-- ref="upload"--> +<!-- :data="uploadForm"--> +<!-- :on-preview="onPreview"--> +<!-- :file-list="fileListThree">--> +<!-- </el-upload>--> +<!-- </el-form-item>--> + </el-form> + <el-dialog :visible.sync="dialogVisible"> + <img width="100%" :src="dialogImageUrl" alt=""> + </el-dialog> + </div> +</template> + +<script> +import Cookies from 'js-cookie' +import { deleteFile, getFileData } from '@/api/task' + +export default { + props:['basicInformation'], + name: 'index', + data(){ + return{ + ifApply:'', + ifCompany:'', + ifApplyButton:'', + ifCompanyButton:'', + disabled:'', + fileForm:{}, + header:{Authorization:''}, + fileRoad:process.env.BASE_API + '/task/upload', + dialogVisible:false, + dialogImageUrl:'', + riskAndDanger:[], + safetyOrganizeAction:[], + workSecurityAction:[], + fileList:[], + fileListOne:[], + fileListTwo:[], + fileListThree:[], + uploadForm:{ + taskcode:'', + type:'', + } + } + }, + mounted(){ + this.getFileList() + }, + methods:{ + async onPreview(file){ + window.open( process.env.IMG_API + file.fileurl,'_blank') + }, + async getFileList(){ + let params = {} + params["taskCode"] = this.basicInformation.code + let res = await getFileData(params) + if(res.data.code === '200'){ + this.fileList = [] + this.fileListOne = [] + this.fileListTwo = [] + this.fileListThree = [] + this.fileList = res.data.result + this.fileList.map(item =>{ + return Object.assign(item,{name:item.originalname}) + }) + for(let i in this.fileList){ + if(this.fileList[i].type === '事故救援预案'){ + this.fileListOne.push(this.fileList[i]) + } + } + for(let i in this.fileList){ + if(this.fileList[i].type === '作业人员身体健康'){ + this.fileListTwo.push(this.fileList[i]) + } + } + for(let i in this.fileList){ + if(this.fileList[i].type === '作业资质证书'){ + this.fileListThree.push(this.fileList[i]) + } + } + } + }, + submit(){ + this.uploadForm.type = "事故救援预案" + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + this.$refs.upload.submit() + }, + handlePictureCardPreview(file) { + this.dialogImageUrl = file.url; + this.dialogVisible = true; + }, + handleChangeOne(file, fileList) { + this.uploadForm.type = '事故救援预案' + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + }, + handleChangeTwo(file, fileList) { + this.uploadForm.type = '作业人员身体健康'; + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + }, + handleChangeThree(file, fileList) { + this.uploadForm.type = '作业资质证书'; + this.uploadForm.taskcode = this.basicInformation.code + this.header.Authorization = Cookies.get('token') + }, + onSuccess(response){ + if(response.code === '200'){ + this.$notify({ + type:'success', + duration:2000, + message:'上传成功', + title:'成功', + }) + this.getFileList() + } + }, + onRemove(file,fileList){ + return this.$confirm(`确定移除 ${ file.name }?`,'提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(() =>{ + let params = {} + params["id"] = file.id + deleteFile(params).then(res =>{ + if(res.data.code === '200'){ + this.$notify({ + type:'success', + duration:2000, + message:'删除成功', + title:'成功', + }) + this.getFileList() + }else{ + this.$message({ + type:'warning', + message:res.data.message + }) + } + }) + }) + }, + handleRemove(file,value) { + return this.$confirm(`确定移除 ${ file.name }?`,'提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(()=> { + switch (value) { + case 'one':this.riskAndDanger.splice(this.riskAndDanger.findIndex(item =>item.name === file.name),1); + break; + case 'two':this.safetyOrganizeAction.splice(this.safetyOrganizeAction.findIndex(item =>item.name === file.name),1); + break; + case 'three':this.workSecurityAction.splice(this.workSecurityAction.findIndex(item =>item.name === file.name),1); + break; + case 'four':this.operationQualification.splice(this.operationQualification.findIndex(item =>item.name === file.name),1); + break; + case 'five':this.escortCompany.splice(this.escortCompany.findIndex(item =>item.name === file.name),1); + break; + case 'six':this.insurance.splice(this.insurance.findIndex(item =>item.name === file.name),1); + break; + case 'seven':this.safetyProduction.splice(this.safetyProduction.findIndex(item =>item.name === file.name),1); + break; + } + }) + }, + } +} +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/taskInfo/components/fireMan/index.vue b/src/views/specialWorkManage/specialWork/taskInfo/components/fireMan/index.vue new file mode 100644 index 0000000..ca064ee --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskInfo/components/fireMan/index.vue @@ -0,0 +1,68 @@ +<template> + <div> + <el-table :data="taskWorkers" border fit highlight-current-row style="width: 100%;" :header-cell-style="{'text-align':'center'}"> + <el-table-column type="index" label="序号" align="center" width="60"/> + <el-table-column prop="taskcode" label="作业编号" align="left"> + </el-table-column> + <el-table-column prop="unit" label="施工单位" align="left"> + <template slot-scope="scope"> + <el-input v-model="scope.row.unit"></el-input> + </template> + </el-table-column> + <el-table-column prop="worker" label="作业人姓名" align="left"> + <template slot-scope="scope"> + <el-input v-model="scope.row.worker"></el-input> + </template> + </el-table-column> + <el-table-column prop="branch" label="特种作业工种" align="left"> + <template slot-scope="scope"> + <el-input v-model="scope.row.branch"></el-input> + </template> + </el-table-column> + <el-table-column prop="number" label="特种作业证号" align="left"> + <template slot-scope="scope"> + <el-input v-model="scope.row.number"></el-input> + </template> + </el-table-column> + </el-table> + </div> +</template> + +<script> + +export default { + props:['basicInformation'], + name: 'index', + data(){ + return{ + taskWorkers:[], + } + }, + created(){ + }, + methods:{ + addTaskWorker(){ + this.taskWorkers.push({ + createdat: "", + createdby: "", + flag: 0, + id: 0, + modifiedat: "", + modifiedby: "", + taskcode: this.basicInformation.code, + unit: "", + worker: "", + branch: 0, + number: "", + }) + }, + deleteWorker(val){ + this.taskWorkers.splice(val,1) + } + } +} +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/taskInfo/components/hotFireBasic/index.vue b/src/views/specialWorkManage/specialWork/taskInfo/components/hotFireBasic/index.vue new file mode 100644 index 0000000..6605867 --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskInfo/components/hotFireBasic/index.vue @@ -0,0 +1,723 @@ +<template> + <div style="padding:20px 50px 0 50px;"> + <el-form ref="form" :rules="taskBasicRules" :model="taskBasicForm" label-position="center" label-width="150px"> + <el-collapse v-model="activeNames"> + <el-collapse-item title="基本信息" name="0"> + + <el-row> + <el-col :span="8"> + <el-form-item label="申请单位:" prop="unit"> + <el-input v-model="taskBasicForm.unit" readonly></el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="申请人:" prop="applicant"> + <el-input v-model="taskBasicForm.applicant" readonly></el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="负责人:" prop="director"> + <el-input v-model="taskBasicForm.director"></el-input> + </el-form-item> + </el-col> + </el-row> + + <el-row> + <el-col :span="8"> + <el-form-item label="危害辨识:" prop="hazard"> + <el-input v-model="taskBasicForm.hazard"> + </el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="开始时间:" style="margin-right: 0px" prop="starttime"> + <el-date-picker value-format="yyyy-MM-dd HH:mm" type="datetime" v-model="taskBasicForm.starttime" placeholder="选择开始日期" class="taskBasic_select"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="结束时间:" prop="endtime"> + <el-date-picker value-format="yyyy-MM-dd HH:mm" type="datetime" v-model="taskBasicForm.endtime" placeholder="选择结束日期" class="taskBasic_select"> + </el-date-picker> + </el-form-item> + </el-col> + </el-row> + + <el-row> + + <el-col :span="8"> + <el-form-item label="施工单位:" prop="constructionunit" > + <el-select v-model="taskBasicForm.constructionunit" clearable class="taskBasic_select"> + <el-option + v-for="item in companyList" + :key="item.id" + :value="item.company" + :label="item.company" + ></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="16"> + <el-form-item label="作业内容:" prop="area"> + <el-input v-model="taskBasicForm.area"></el-input> + </el-form-item> + </el-col> + </el-row> + + </el-collapse-item> + <el-collapse-item title="受限空间作业" name="1"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifIncludeArea" :label="1">是</el-radio> + <el-radio v-model="ifIncludeArea" :label="0">否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifIncludeArea"> + <el-row> + <el-col :span="8"> + <el-form-item label="受限空间分类:" prop="spacecategory"> + <el-select v-model="taskBasicForm.spacecategory" class="taskBasic_select"> + <el-option + v-for="item in spaceCategoryList" + :key="item.id" + :value="item.name" + :label="item.name" + ></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="受限空间名称:" prop="spacename"> + <el-select v-model="taskBasicForm.spacename" class="taskBasic_select"> + <el-option + v-for="item in spaceNameList" + :key="item.id" + :value="item.name" + :label="item.name" + ></el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="8"> + <el-form-item label="受限空间介质名称:" prop="spacemedium"> + <el-input v-model="taskBasicForm.spacemedium" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="是否受酸碱腐蚀:" prop="acibase"> + <el-select v-model="taskBasicForm.acibase" class="taskBasic_select"> + <el-option + v-for="item in acibaseList" + :key="item.id" + :value="item.name" + :label="item.name" + ></el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + </div> + + </el-collapse-item> + <el-collapse-item title="吊装作业" name="2"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifHoisting" :label="1">是</el-radio> + <el-radio v-model="ifHoisting" :label="0">否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifHoisting"> + <el-row> + <el-col :span="8"> + <el-form-item label="吊装重物等级:" prop="hoistinglevel"> + <el-select v-model="taskBasicForm.hoistinglevel" class="taskBasic_select"> + <el-option value="一级吊装(质量>100吨)"></el-option> + <el-option value="二级吊装(40吨<=质量<=100吨)"></el-option> + <el-option value="三级吊装(质量<40吨)"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="吊装重物质量(t):" prop="hoistingweight"> + <el-input v-model="taskBasicForm.hoistingweight" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + </div> + </el-collapse-item> + <el-collapse-item title="动土作业" name="3"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifBuilding" :label="1">是</el-radio> + <el-radio v-model="ifBuilding" :label="0">否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifBuilding"> + <el-row> + <el-col :span="8"> + <el-form-item label="动土作业深度:" prop="soildepth"> + <el-input v-model="taskBasicForm.soildepth" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="动土作业面积:" prop="soilarea"> + <el-input v-model="taskBasicForm.soilarea" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-form-item label="动土方案文件:" prop="soilfile"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + :data="uploadForm" + list-type="picture-card" + :file-list="taskBasicForm.soilfile" + :on-change="handleChangeBuildingFile" + :on-success="onSoilFileSuccess" + :auto-upload="true"> + <i slot="default" class="el-icon-plus"></i> + <div slot="file" slot-scope="{file}"> + <img + class="el-upload-list__item-thumbnail" + :src="file.url" alt="" + > + <span class="el-upload-list__item-actions"> + <span + class="el-upload-list__item-preview" + @click="handleFile(file)" + > + <i class="el-icon-zoom-in"></i> + </span> + <span + v-if="!disabled" + class="el-upload-list__item-delete" + @click="handleRemove(file,'one')" + > + <i class="el-icon-delete"></i> + </span> + </span> + </div> + </el-upload> + </el-form-item> + </el-row> + </div> + </el-collapse-item> + <el-collapse-item title="断路作业" name="4"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifIncludeRoad" :label="1">是</el-radio> + <el-radio v-model="ifIncludeRoad" :label="0">否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifIncludeRoad"> + <el-row> + <el-col :span="16"> + <el-form-item label="断路原因:" prop="breakreason"> + <el-input v-model="taskBasicForm.breakreason" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-form-item label="断路地段示意图:" prop="breakfile"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + list-type="picture-card" + :file-list="taskBasicForm.breakfile" + :on-success="onBreakFileSuccess" + :on-change="handleChangeRoadFile" + :auto-upload="true"> + <i slot="default" class="el-icon-plus"></i> + <div slot="file" slot-scope="{file}"> + <img + class="el-upload-list__item-thumbnail" + :src="file.url" alt="" + > + <span class="el-upload-list__item-actions"> + <span + class="el-upload-list__item-preview" + @click="handleFile(file)" + > + <i class="el-icon-zoom-in"></i> + </span> + <span + v-if="!disabled" + class="el-upload-list__item-delete" + @click="handleRemove(file,'two')" + > + <i class="el-icon-delete"></i> + </span> + </span> + </div> + </el-upload> + </el-form-item> + </el-row> + </div> + </el-collapse-item> + <el-collapse-item title="高处作业" name="5"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifIncludeHigh" :label="1">是</el-radio> + <el-radio v-model="ifIncludeHigh" :label="0">否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifIncludeHigh"> + <el-row> + <el-col :span="8"> + <el-form-item label="作业等级:" prop="heightlevel"> + <el-select v-model="taskBasicForm.heightlevel" class="taskBasic_select"> + <el-option value="一级高处作业(2米≤高度<5米)"></el-option> + <el-option value="二级高处作业(5米≤高度<15米)"></el-option> + <el-option value="三级高处作业(15米≤高度<30米)"></el-option> + <el-option value="特级高处作业(高度≥30米)"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="作业高度:" prop="workheight"> + <el-input type="number" v-model="taskBasicForm.workheight" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + </div> + </el-collapse-item> + <el-collapse-item title="临时用电作业" name="6"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifIncludeElectricity" :label="1">是</el-radio> + <el-radio v-model="ifIncludeElectricity" :label="0">否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifIncludeElectricity"> + <el-row> + <el-col :span="8"> + <el-form-item label="电压接入点:" prop="electricityarea"> + <el-input v-model="taskBasicForm.electricityarea" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="工作电压:" prop="voltage"> + <el-input v-model="taskBasicForm.voltage" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="8"> + <el-form-item label="用电设备及功率:" prop="power"> + <el-input v-model="taskBasicForm.power" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + </div> + </el-collapse-item> + <el-collapse-item title="盲板抽堵作业" name="7"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifIncludePump" :label="1">是</el-radio> + <el-radio v-model="ifIncludePump" :label="0">否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifIncludePump"> + <el-row> + <el-col :span="8"> + <el-form-item label="设备管道名称:" prop="pipename"> + <el-input v-model="taskBasicForm.pipename" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="设备管道介质:" prop="pipemedium"> + <el-input v-model="taskBasicForm.pipemedium" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="8"> + <el-form-item label="设备管道温度:" prop="pipetemperature"> + <el-input v-model="taskBasicForm.pipetemperature" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="设备管道压力:" prop="pipepressure"> + <el-input v-model="taskBasicForm.pipepressure" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="8"> + <el-form-item label="盲板材质:" prop="blindboardmaterial"> + <el-input v-model="taskBasicForm.blindboardmaterial" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="盲板规格11:" prop="blindboardspecification"> + <el-input v-model="taskBasicForm.blindboardspecification" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="8"> + <el-form-item label="盲板编号:" prop="blindboardnumber"> + <el-input v-model="taskBasicForm.blindboardnumber" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-form-item label="盲板位置图:" prop="blindboardlocation"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + list-type="picture-card" + :file-list="taskBasicForm.blindboardlocation" + :on-success="onPumpFileSuccess" + :on-change="handleChangePumpFile" + :auto-upload="true"> + <i slot="default" class="el-icon-plus"></i> + <div slot="file" slot-scope="{file}"> + <img + class="el-upload-list__item-thumbnail" + :src="file.url" alt="" + > + <span class="el-upload-list__item-actions"> + <span + class="el-upload-list__item-preview" + @click="handleFile(file)" + > + <i class="el-icon-zoom-in"></i> + </span> + <span + v-if="!disabled" + class="el-upload-list__item-delete" + @click="handleRemove(file,'three')" + > + <i class="el-icon-delete"></i> + </span> + </span> + </div> + </el-upload> + </el-form-item> + </el-row> + </div> + </el-collapse-item> + <el-collapse-item title="动火作业" name="8"> + <el-row> + <el-col :span="8"> + <el-form-item label="是否涉及:"> + <el-radio v-model="ifIncludeFire" :label="1">是</el-radio> + <el-radio v-model="ifIncludeFire" :label="0">否</el-radio> + </el-form-item> + </el-col> + </el-row> + <div v-if="ifIncludeFire"> + <el-row> + <el-col :span="8"> + <el-form-item label="动火级别:" prop="firelevel"> + <el-select v-model="taskBasicForm.firelevel" class="taskBasic_select"> + <el-option + v-for="item in levelList" + :key="item.id" + :label="item.name" + :value="item.id" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="动火方式:" prop="firetype"> + <el-input v-model="taskBasicForm.firetype" class="taskBasic_select"> + </el-input> + </el-form-item> + </el-col> + </el-row> + </div> + </el-collapse-item> + </el-collapse> + </el-form> + <div align="center" style="padding-top: 20px" v-if="title === '新增' || title === '编辑' || title=== '施工单位确认' || title === '施工单位信息填写'"> + <el-button type="primary" @click="goNext">下一步</el-button> + </div> + <el-dialog :visible.sync="dialogVisible" :append-to-body="true"> + <img width="100%" :src="dialogImageUrl" alt=""> + </el-dialog> + </div> +</template> + +<script> + import { getUnitList } from '@/api/unitManage' + import Cookies from 'js-cookie' + import { addTask, updateTask } from '@/api/task' + + export default { + name: 'index', + props:['title'], + data(){ + return{ + type:'', + fileRoad:process.env.BASE_API + '/task/web/upload', + uploadForm:{ + name:'', + }, + header:{Authorization:''}, + taskBasicForm:{ + isAgree: 0, + applicant: "", + applyunitname: "", + applyunitopinion: "", + applyunittime: "", + approverprofession: "", + approversupervisor: "", + area: "", + code: "", + completedconfirm: "", + completedname: "", + completedtime: "", + constructionname: "", + constructionopinion: "", + constructiontime: "", + constructionunit: "", + createdat: "", + createdby: "", + department: "", + director: "", + endtime: "", + enterprisename: "", + enterpriseopinion: "", + enterprisetime: "", + flag: 0, + hazard: "", + id: 0, + isdel: 0, + isholiday: 0, + level:'', + modifiedat: "", + modifiedby: "", + othertask: "", + partdirector: "", + profession: "", + relevantname: "", + relevantopinion: "", + relevanttime: "", + resources: [ + ], + securityname: "", + securityopinion: "", + securitytime: "", + securitydep: "", + shiftleadername: "", + shiftleaderopinion: "", + shiftleadertime: "", + starttime: "", + status: 0, + supervisor: "", + taskAnalyses: [ + ], + taskEquipments: [ + ], + taskRisk: { + confirmat: "", + content: "", + createdat: "", + createdby: "", + director: "", + emergency: "", + environment: "", + flag: 0, + id: 0, + modifiedat: "", + modifiedby: "", + other: "", + preventive: "", + taskcode: "", + taskdirector: "" + }, + taskSecurities: [ + ], + taskWorkers: [ + ], + unit: "", + subTaskInfos:[], + type:'', + category:'', + firelevel:'', + checked:'', + spacecategory:'', + spacename:'', + spacemedium:'', + acibase:'', + hoistinglevel:'', + hoistingweight:'', + soildepth:'', + soilarea:'', + soilfile:[], + breakreason:'', + breakfile:[], + workheight:'', + heightlevel:'', + electricityarea:'', + voltage:'', + power:'', + pipename:'', + pipemedium:'', + pipetemperature:'', + pipepressure:'', + blindboardmaterial:'', + blindboardspecification:'', + blindboardnumber:'', + commander:'', + blindboardlocation:[], + firetype:'', + }, + activeNames:['0'], + companyList:[], + levelList:[{id:2,name:'特级'},{id:1,name:'一级'},{id:0,name:'二级'},], + spaceCategoryList:[{id:0,name:'密闭设备'},{id:1,name:'地下有限空间'},{id:2,name:'地上有限空间'},], + spaceNameList:[], + acibaseList:[{id:0,name:'酸腐蚀'},{id:1,name:'碱腐蚀'},{id:2,name:'其他腐蚀'},{id:3,name:'没有腐蚀'}], + taskBasicRules:{ + unit: [{ required: true, message: '申请单位不能为空', trigger: 'blur' }], + applicant: [{ required: true, message: '申请人不能为空', trigger: 'blur' }], + level: [{ required: true, message: '动火作业级别不能为空', trigger: 'change' }], + mode: [{ required: true, message: '用户名不能为空', trigger: 'blur' }], + hazard: [{ required: true, message: '危害辨识不能为空', trigger: 'blur' }], + director: [{ required: true, message: '负责人不能为空', trigger: 'blur' }], + area: [{ required: true, message: '动火地点不能为空', trigger: 'blur' }], + constructionunit: [{ required: true, message: '施工部门不能为空', trigger: 'change' }], + starttime: [{ required: true, message: '开始时间不能为空', trigger: 'blur' }], + endtime: [{ required: true, message: '结束时间不能为空', trigger: 'blur' }], + spacecategory: [{ required: true, message: '受限空间分类不能为空', trigger: 'change' }], + spacename: [{ required: true, message: '受限空间名称不能为空', trigger: 'change' }], + spacemedium: [{ required: true, message: '受限空间介质名称不能为空', trigger: 'change' }], + acibase: [{ required: true, message: '是否酸碱腐蚀不能为空', trigger: 'change' }], + hoistinglevel: [{ required: true, message: '吊装重物等级不能为空', trigger: 'change' }], + hoistingweight: [{ required: true, message: '吊装重物质量不能为空', trigger: 'blur' }], + soildepth: [{ required: true, message: '动土作业深度不能为空', trigger: 'blur' }], + soilarea: [{ required: true, message: '动土作业面积不能为空', trigger: 'blur' }], + // soilfile: [{ required: true, message: '动土方案文件不能为空', trigger: 'blur' }], + breakreason: [{ required: true, message: '断路原因不能为空', trigger: 'blur' }], + // breakfile: [{ required: true, message: '断路地段示意图不能为空', trigger: 'blur' }], + heightlevel: [{ required: true, message: '作业等级不能为空', trigger: 'change' }], + workheight: [{ required: true, message: '作业高度不能为空', trigger: 'blur' }], + electricityarea: [{ required: true, message: '电压接入点不能为空', trigger: 'blur' }], + voltage: [{ required: true, message: '工作电压不能为空', trigger: 'blur' }], + power: [{ required: true, message: '用电设备及功率不能为空', trigger: 'blur' }], + pipename: [{ required: true, message: '设备管道名称不能为空', trigger: 'blur' }], + pipemedium: [{ required: true, message: '设备管道介质不能为空', trigger: 'blur' }], + pipetemperature: [{ required: true, message: '设备管道温度不能为空', trigger: 'blur' }], + pipepressure: [{ required: true, message: '设备管道压力不能为空', trigger: 'blur' }], + blindboardmaterial: [{ required: true, message: '盲板材质不能为空', trigger: 'blur' }], + blindboardspecification: [{ required: true, message: '盲板规格不能为空', trigger: 'blur' }], + blindboardnumber: [{ required: true, message: '盲板编号不能为空', trigger: 'blur' }], + // blindboardlocation: [{ required: true, message: '盲板位置图不能为空', trigger: 'blur' }], + firelevel: [{ required: true, message: '动火级别不能为空', trigger: 'blur' }], + firetype: [{ required: true, message: '动火类型不能为空', trigger: 'blur' }], + }, + ifIncludeArea:null, + ifHoisting:null, + ifBuilding:null, + ifIncludeRoad:null, + ifIncludeHigh:null, + ifIncludeElectricity:null, + ifIncludePump:null, + ifIncludeFire:null, + dialogImageUrl:false, + dialogVisible:false, + disabled: false, + } + }, + created(){ + this.getCompany() + }, + methods:{ + giveTaskBasic(){ + this.taskBasicForm = JSON.parse(JSON.stringify(this.taskBasicForm)) + }, + handlePictureCardPreview(file){ + this.dialogImageUrl = file.url; + this.dialogVisible = true; + }, + resetFormRules(){ + this.$nextTick(() =>{ + this.$refs["form"].clearValidate() + }) + }, + async getCompany(){ + let params = {} + params['pageIndex'] = this.currentPage + params['pageSize'] = this.pageSize + params['company'] = this.company + params['code'] = this.code + let res = await getUnitList(params) + if(res.data.code === '200'){ + this.companyList = res.data.result.result + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + }, + } + } +</script> + +<style scoped> + .taskBasic_title{ + font-weight: bolder; + font-size: large; + text-align: center; + margin-top: 24px; + } + /deep/.el-collapse-item__header{ + margi:0 auto; + width:100%; + font-weight: bolder; + font-size: large; + text-align: center; + padding-left: 45%; + } + .taskBasic_select{ + width: 100%; + } +</style> diff --git a/src/views/specialWorkManage/specialWork/taskInfo/components/reviewInfo/index.vue b/src/views/specialWorkManage/specialWork/taskInfo/components/reviewInfo/index.vue new file mode 100644 index 0000000..e08804e --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskInfo/components/reviewInfo/index.vue @@ -0,0 +1,72 @@ +<template> + <el-dialog title="审批" :visible.sync="reviewInfoDialog" :modal-append-to-body="false" :close-on-click-modal="false" width="50%"> + <div class="block"> + <el-timeline> + <el-timeline-item + v-for="(activity, index) in activities" + :key="index" + :color="'#0bbd87'" + :size="activity.size" + :timestamp="activity.reviewat"> + <div style="padding-bottom: 10px;font-weight: bolder">{{activity.level}}</div> + <el-card> + <el-row> + <el-col :span="2"> + <div>签字:</div> + </el-col> + <el-col :span="22"> + <img :src="activity.autograph" style="width:40px;height:40px;margin-left:10px;cursor:pointer" @click="showPic(activity.autograph)"></img> + </el-col> + </el-row> + <el-row> + <span>现场图:</span> + <img slot="reference" v-for="(item,index) in activity.pictures" :src="item.url" :key="index" style="width:40px;height:40px;margin-left:10px;cursor:pointer" @click="showPic()"></img> + </el-row> + + </el-card> + </el-timeline-item> + </el-timeline> + </div> + <el-dialog :visible.sync="dialogVisible" :append-to-body="true"> + <img width="100%" :src="dialogImageUrl" alt=""> + </el-dialog> + </el-dialog> +</template> + +<script> + export default { + name: 'index', + data(){ + return{ + reviewInfoDialog:false, + dialogVisible:false, + dialogImageUrl:'', + activities: [] + } + }, + methods:{ + openReviewInfo(value){ + this.reviewInfoDialog = true + this.activities = JSON.parse(JSON.stringify(value.taskReviews)) + for(let i in this.activities){ + if(this.activities[i].pictures !== null && this.activities[i].pictures.length !== 0){ + this.activities[i].pictures = this.activities[i].pictures.map( item =>{ + return process.env.IMG_API + item + }) + } + this.activities[i].autograph = process.env.IMG_API + this.activities[i].autograph + } + + + }, + showPic(value){ + this.dialogVisible = true + this.dialogImageUrl = value + }, + } + } +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/taskInfo/components/safetyAction/index.vue b/src/views/specialWorkManage/specialWork/taskInfo/components/safetyAction/index.vue new file mode 100644 index 0000000..fd9bbea --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskInfo/components/safetyAction/index.vue @@ -0,0 +1,118 @@ +<template> + <div> + <el-table :data="tasksecurity" border fit highlight-current-row style="width: 100%;" :header-cell-style="{'text-align':'center'}"> + <el-table-column type="index" label="序号" align="center" width="60"/> + <el-table-column prop="content" label="安全措施" align="left"> + <template slot-scope="scope"> + <div v-if="scope.row.checktype === '判断'"> + {{scope.row.content}} + </div> + <div v-if="scope.row.checktype === '填空'"> + <span>{{scope.row.content.split('_')[0]}}</span> + <el-input style="width:50px" v-model="scope.row.num"></el-input> + <span>{{scope.row.content.split('_')[1]}}</span> + </div> + </template> + </el-table-column> + <el-table-column prop="checked" label="选项" align="center" width="300"> + <template slot-scope="scope"> + <el-radio v-model="scope.row.checked" :label="1">是</el-radio> + <el-radio v-model="scope.row.checked" :label="0">否</el-radio> + <el-radio v-model="scope.row.checked" :label="2">不涉及</el-radio> + </template> + </el-table-column> + </el-table> + </div> +</template> + +<script> +import { getSafetyActionList } from '@/api/task' + +export default { + props:['basicInformation'], + name: 'index', + data(){ + return{ + currentPage:0, + pageSize:1000, + tasksecurity:[], + safetyActionData:[ + // {id:0,selected:true,action:'动火设备内部构件清理干净,蒸汽吹扫或水洗合格,达到用火条件。',type:0}, + // {id:1,selected:null,actionOne:'',actionTwo:'',type:1}, + // {id:2,selected:null,action:'动火点10m范围内及动火点下部区域严禁同时进行可燃溶剂清洗和喷漆等作业。在受限空间内进行动火作业、临时用电作业时,不得同时进行刷漆、喷漆作业或使用可燃溶剂清洗等其他可能散发易燃气体、可燃液体的作业。',type:0}, + // {id:3,selected:null,action:'动火点周围的下水井、地漏、地沟、电缆沟等已清除易燃物,并已采取覆盖、铺沙、水封等手段进行隔离。',type:0}, + // {id:4,selected:null,action:'动火点周围易燃物已清除。',type:0}, + // {id:5,selected:null,action:'罐区内动火点同一围堰内和防火间距内的储罐不同时进行脱水作业,排凝等作业。',type:0}, + // {id:6,selected:null,action:'距动火点30m内严禁排放可燃气体,15m内严禁排放各类可燃液体。',type:0}, + // {id:7,selected:null,action:'电焊回路线已接在焊件上,把线未穿过下水井或其它设备搭接。',type:0}, + // {id:8,selected:null,action:'高处作业已采取防火花飞溅措施。',type:0}, + // {id:9,selected:null,action:'乙炔气瓶(直立放置)、氧气瓶与火源间的距离大于10m,二者间距不应小于5m。',type:0}, + // {id:10,selected:null,actionOne:'',actionTwo:'',actionThree:'',actionFour:'',type:2}, + // {id:11,selected:null,actionOne:'',type:3}, + ], + } + }, + methods:{ + async getSafeTyAction(){ + let params = {} + params['pageIndex'] = this.currentPage + params['pageSize'] = this.pageSize + params['type'] = '动火作业负责检查项' + this.safetyActionData = [] + this.tasksecurity = [] + let res = await getSafetyActionList(params) + if(res.data.code === '200'){ + this.safetyActionData = res.data.result + this.tasksecurity = this.safetyActionData.map(item =>{ + return { + id:item.id, + taskcode: this.basicInformation.code, + content: item.content, + checked: item.check, + num: item.number, + confirmedby: "test", + checktype:item.checktype, + } + }) + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + }, + async getConstructionAction(){ + let params = {} + params['pageIndex'] = this.currentPage + params['pageSize'] = this.pageSize + params['type'] = '施工单位负责检查项' + this.safetyActionData = [] + this.tasksecurity = [] + let res = await getSafetyActionList(params) + if(res.data.code === '200'){ + this.safetyActionData = res.data.result + this.tasksecurity = this.safetyActionData.map(item =>{ + return { + id:item.id, + taskcode: this.basicInformation.code, + content: item.content, + checked: item.check, + num: item.number, + confirmedby: "test", + checktype:item.checktype, + } + }) + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + } + } +} +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/taskInfo/components/safetyAndRiskConfirm/index.vue b/src/views/specialWorkManage/specialWork/taskInfo/components/safetyAndRiskConfirm/index.vue new file mode 100644 index 0000000..578b348 --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskInfo/components/safetyAndRiskConfirm/index.vue @@ -0,0 +1,277 @@ +<template> + <div class="safetyAndRiskConfirm"> + <div class="safetyAndRiskConfirm_title"> + <span>{{"安全交底和风险告知确认卡"}}</span> + </div> + <el-descriptions class="margin-top" :column="2" border> + <el-descriptions-item :span="1"> + <template slot="label"> + <i class="el-icon-office-building"></i> + 作业单位 + </template> + <div class="safetyAndRiskConfirm_input">{{constructionUnit}}</div> + </el-descriptions-item> + <el-descriptions-item :span="1" class="test"> + <template slot="label"> + <i class="el-icon-user-solid"></i> + 车间项目负责人 + </template> + <div class="safetyAndRiskConfirm_input">{{director}}</div> + </el-descriptions-item> + <el-descriptions-item :span="2"> + <template slot="label" > + <i class="el-icon-notebook-2"></i> + 作业内容 + </template> + <el-input class="safetyAndRiskConfirm_input" v-model="taskRiskForm.content"></el-input> + </el-descriptions-item> + <el-descriptions-item :span="2"> + <template slot="label" > + <i class="el-icon-time"></i> + 作业时间 + </template> + <div class="safetyAndRiskConfirm_input">{{startTime + '-' + endTime}}</div> + </el-descriptions-item> + <el-descriptions-item :span="2"> + <template slot="label" > + <i class="el-icon-user"></i> + 作业人员 + </template> + <el-input class="safetyAndRiskConfirm_input"></el-input> + </el-descriptions-item> + </el-descriptions> + <el-descriptions title="基本要求" direction="vertical" :column="4" border> + </el-descriptions> + <div class="safetyAndRiskConfirm_top"> + <div class="safetyAndRiskConfirm_top_title"> + {{"作业前,项目负责人应对施工作业人员进行安全交底和风险告知,内容包括作业许可范围及作业环境、作业风险、防范措施(工艺、设备、个体防护等)、应急措施及其他注意事项。作业人员应按照风险告知内容,逐条对接确认,落实到位后方可作业。"}} + </div> + </div> + <div class="safetyAndRiskConfirm_middle"> + <div class="safetyAndRiskConfirm_middle_left"> + <div class="safetyAndRiskConfirm_middle_left_title">{{'安全交底和风险告知内容'}}</div> + </div> + <div class="safetyAndRiskConfirm_middle_right"> + <div class="safetyAndRiskConfirm_middle_right_one"> + <div class="safetyAndRiskConfirm_middle_right_one_top"> + {{"作业许可范围及作业环境:"}} + </div> + <div class="safetyAndRiskConfirm_middle_right_one_text"> + <el-input type="textarea" :row="2" class="safetyAndRiskConfirm_middle_right_one_textarea" v-model="taskRiskForm.environment"></el-input> + </div> + </div> + <div class="safetyAndRiskConfirm_middle_right_one"> + <div class="safetyAndRiskConfirm_middle_right_one_top"> + {{"作业风险:"}} + </div> + <div class="safetyAndRiskConfirm_middle_right_one_text"> + <el-input type="textarea" :row="2" class="safetyAndRiskConfirm_middle_right_one_textarea" v-model="hazard" readonly></el-input> + </div> + </div> + <div class="safetyAndRiskConfirm_middle_right_one"> + <div class="safetyAndRiskConfirm_middle_right_one_top"> + {{"防范措施(工艺、设备、个体防护等):"}} + </div> + <div class="safetyAndRiskConfirm_middle_right_one_text"> + <el-input type="textarea" :row="2" class="safetyAndRiskConfirm_middle_right_one_textarea" v-model="taskRiskForm.preventive"></el-input> + + </div> + </div> + <div class="safetyAndRiskConfirm_middle_right_one"> + <div class="safetyAndRiskConfirm_middle_right_one_top"> + {{"应急措施:"}} + </div> + <div class="safetyAndRiskConfirm_middle_right_one_text"> + <el-input type="textarea" :row="2" class="safetyAndRiskConfirm_middle_right_one_textarea" v-model="taskRiskForm.emergency"></el-input> + </div> + </div> + <div class="safetyAndRiskConfirm_middle_right_one"> + <div class="safetyAndRiskConfirm_middle_right_one_top"> + {{"其他注意事项:"}} + </div> + <div calss="safetyAndRiskConfirm_middle_right_one_text"> + <el-input type="textarea" :row="2" class="safetyAndRiskConfirm_middle_right_one_textarea" v-model="taskRiskForm.other"></el-input> + </div> + </div> + <div class="safetyAndRiskConfirm_middle_right_two"> + <div class="safetyAndRiskConfirm_middle_right_one_top"> + {{"企业负责人确认:"}} + </div> + <div calss="safetyAndRiskConfirm_middle_right_one_text"> + <el-input type="textarea" :row="2" class="safetyAndRiskConfirm_middle_right_one_textarea"></el-input> + </div> + </div> + </div> + </div> + <div class="safetyAndRiskConfirm_bottom"> + <div class="safetyAndRiskConfirm_bottom_title"> + {{"我方所有施工作业人员已明确该项目的风险并清楚了危害、防范措施和其它注意事项。"}} + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'index', + props:['basicInformation'], + data(){ + return{ + director:'', + startTime:'', + endTime:'', + constructionUnit:'', + hazard:'', + taskRiskForm:{ + id:'', + taskcode:'', + content:'', + environment:'', + preventive:'', + emergency:'', + other:'', + director:'', + taskdirector:'', + confirmat:'', + createdat:'', + createdby:'', + modifiedat:'', + modifiedby:'', + flag:'', + }, + } + }, + created(){ + this.getBasic() + }, + methods:{ + getBasic(){ + this.constructionUnit = this.basicInformation.constructionunit + this.director = this.basicInformation.director + this.startTime = this.basicInformation.starttime + this.endTime = this.basicInformation.endtime + this.hazard = this.basicInformation.hazard + this.taskRiskForm.taskcode = this.basicInformation.code + } + } +} +</script> + +<style scoped> +.safetyAndRiskConfirm{ + width:60%; + margin:0 auto; +} +.safetyAndRiskConfirm_title{ + padding-bottom: 15px; + font-weight: bold; + font-size: 25px; + text-align: center; +} +/deep/.el-descriptions__header{ + border-left: 1px solid #EBEEF5; + border-right: 1px solid #EBEEF5; + border-bottom: 1px solid #EBEEF5; + margin: 0px auto; + height:30px; + text-align: center; +} +/deep/.el-descriptions__title{ + text-align: center; + width:100%; + margin: 0px auto; +} +.safetyAndRiskConfirm_top{ + border-left: 1px solid #EBEEF5; + border-right: 1px solid #EBEEF5; + border-bottom: 1px solid #EBEEF5; + margin: 0px auto; + height:80px; + font-size: 18px; + text-indent: 2em; +} +.safetyAndRiskConfirm_top_title{ + position: relative; + top: 50%; /*偏移*/ + transform: translateY(-50%); +} +/*.safetyAndRiskConfirm_basic{*/ +/* border-left: 1px solid #EBEEF5;*/ +/* border-right: 1px solid #EBEEF5;*/ +/* border-bottom: 1px solid #EBEEF5;*/ +/* margin: 0px auto;*/ +/* height:80px;*/ +/* font-size: 18px;*/ +/* text-indent: 2em;*/ +/*}*/ +.safetyAndRiskConfirm_middle{ + border-left: 1px solid #EBEEF5; + border-right: 1px solid #EBEEF5; + border-bottom: 1px solid #EBEEF5; + margin: 0px auto; + height:550px; + font-size: 18px; +} +.safetyAndRiskConfirm_middle_left{ + height:100%; + width:10%; + border-right: 1px solid #EBEEF5; + display:inline-block; + float: left; +} +.safetyAndRiskConfirm_middle_left_title{ + padding-left: 12px; + padding-right: 12px; + text-align: center; + position: relative; + top: 50%; /*偏移*/ + transform: translateY(-50%); +} +.safetyAndRiskConfirm_middle_right{ + float: left; + height:100%; + width:90%; +} +.safetyAndRiskConfirm_middle_right_one{ + height:16.6%; + width:100%; + border-bottom: 1px solid #EBEEF5; +} +.safetyAndRiskConfirm_middle_right_two{ + height:16.6%; + width:100%; +} +.safetyAndRiskConfirm_middle_right_one_top{ + height:30%; + width:100%; + padding-top:5px; + padding-left: 5px; +} +.safetyAndRiskConfirm_middle_right_one_textarea{ + padding-left: 5px; + padding-right:5px ; + padding-top: 2px; +} +.safetyAndRiskConfirm_middle_right_one_text{ + height:70%; + width:100%; +} + +.safetyAndRiskConfirm_bottom{ + border-left: 1px solid #EBEEF5; + border-right: 1px solid #EBEEF5; + border-bottom: 1px solid #EBEEF5; + margin: 0px auto; + height:100px; + font-size: 18px; +} +.safetyAndRiskConfirm_bottom_title{ + text-align: center; + position: relative; + top: 50%; /*偏移*/ + transform: translateY(-50%); +} +.test{ + /*border: 0px;*/ +} +</style> diff --git a/src/views/specialWorkManage/specialWork/taskInfo/components/taskInfo.vue b/src/views/specialWorkManage/specialWork/taskInfo/components/taskInfo.vue new file mode 100644 index 0000000..5a05d11 --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskInfo/components/taskInfo.vue @@ -0,0 +1,179 @@ +<template> + <div> + <el-dialog :title="title" :visible.sync="taskInfoDialog" :modal-append-to-body="false" :close-on-click-modal="false" width="70%"> + <el-tabs type="border-card" class="active" v-model="activeName"> + <el-tab-pane label="作业基本信息" name="hotFireBasic" v-if="ifHotFireBasic"> + <hot-fire-basic ref="hotFireBasic"></hot-fire-basic> + </el-tab-pane> + <el-tab-pane label="安全措施" name="safetyAction" v-if="ifSafetyAction"> + <safety-action ref="safetyAction" :basicInformation="basicForm"></safety-action> + </el-tab-pane> + <el-tab-pane label="安全交底和风险告知确认卡" name="safetyAndRiskConfirm" v-if="ifSafetyAndRisk"> + <safety-and-risk-confirm ref="safetyAndRiskConfirm" :basicInformation="basicForm"></safety-and-risk-confirm> + </el-tab-pane> + <el-tab-pane label="设备" name="equipment" v-if="ifSafetyAction"> + <equipment ref="equipment" :basicInformation="basicForm"></equipment> + </el-tab-pane> + <el-tab-pane label="作业人" name="fireMan" v-if="ifFireMan"> + <fire-man ref="fireMan" :basicInformation="basicForm"></fire-man> + </el-tab-pane> + <el-tab-pane label="文件" name="fileAndEquipment" v-if="ifFile"> + <file-and-equipment ref="fileAndEquipment" :basicInformation="basicForm"></file-and-equipment> + </el-tab-pane> + </el-tabs> + </el-dialog> + </div> + +</template> + +<script> +import fireMan from './fireMan/index' +import equipment from './equipment/index' +import fileAndEquipment from './fileAndEquipment/index' +import safetyAndRiskConfirm from './safetyAndRiskConfirm/index' +import safetyAction from './safetyAction/index' +import hotFireBasic from './hotFireBasic/index' + +export default { + name: 'taskInfo', + data(){ + return{ + title:'', + taskInfoDialog:false, + supervisorAndAnalystAgree:false, + supervisorAndAnalystRefuse:false, + relevantRefuse:false, + securityRefuse:false, + activeName:'hotFireBasic', + ifFile:false, + ifFireMan:false, + ifSafetyAction:false, + ifSafetyAndRisk:false, + ifHotFireBasic:true, + ifConstruction:false, + basicForm:{}, + constructionForm:{}, + } + }, + components:{ + hotFireBasic, + safetyAction, + safetyAndRiskConfirm, + fileAndEquipment, + equipment, + fireMan, + }, + methods:{ + openTaskInfo(value,title){ + this.taskInfoDialog = true + this.activeName = 'hotFireBasic' + if(title === '查看'){ + this.title = '查看' + this.ifSafetyAction = true + this.ifSafetyAndRisk = true + this.ifFireMan = true + this.ifFile = true + this.ifHotFireBasic = true + this.basicForm = JSON.parse(JSON.stringify(value)) + setTimeout(()=> { + this.$refs.hotFireBasic.resetFormRules() + this.$refs.hotFireBasic.taskBasicForm = JSON.parse(JSON.stringify(value)) + this.$refs.safetyAction.tasksecurity = JSON.parse(JSON.stringify(value)).taskSecurities + this.$refs.safetyAndRiskConfirm.taskRiskForm = JSON.parse(JSON.stringify(value)).taskRisk + this.$refs.equipment.equipmentData = JSON.parse(JSON.stringify(value)).taskEquipments + this.$refs.fireMan.taskWorkers = JSON.parse(JSON.stringify(value)).taskWorkers + let form = JSON.parse(JSON.stringify(value)).subTaskInfos + this.$refs.hotFireBasic.taskBasicForm.type = '' + this.$refs.hotFireBasic.taskBasicForm.category = '' + this.$refs.hotFireBasic.taskBasicForm.firelevel = '' + this.$refs.hotFireBasic.taskBasicForm.checked = '' + this.$refs.hotFireBasic.taskBasicForm.spacecategory = '' + this.$refs.hotFireBasic.taskBasicForm.spacename = '' + this.$refs.hotFireBasic.taskBasicForm.spacemedium = '' + this.$refs.hotFireBasic.taskBasicForm.acibase = '' + this.$refs.hotFireBasic.taskBasicForm.hoistinglevel = '' + this.$refs.hotFireBasic.taskBasicForm.hoistingweight = '' + this.$refs.hotFireBasic.taskBasicForm.soildepth = '' + this.$refs.hotFireBasic.taskBasicForm.soilarea = '' + this.$refs.hotFireBasic.taskBasicForm.soilfile = [] + this.$refs.hotFireBasic.taskBasicForm.breakreason = '' + this.$refs.hotFireBasic.taskBasicForm.breakfile = [] + this.$refs.hotFireBasic.taskBasicForm.workheight = '' + this.$refs.hotFireBasic.taskBasicForm.heightlevel = '' + this.$refs.hotFireBasic.taskBasicForm.electricityarea = '' + this.$refs.hotFireBasic.taskBasicForm.voltage = '' + this.$refs.hotFireBasic.taskBasicForm.power = '' + this.$refs.hotFireBasic.taskBasicForm.pipename = '' + this.$refs.hotFireBasic.taskBasicForm.pipemedium = '' + this.$refs.hotFireBasic.taskBasicForm.pipetemperature = '' + this.$refs.hotFireBasic.taskBasicForm.pipepressure = '' + this.$refs.hotFireBasic.taskBasicForm.blindboardmaterial = '' + this.$refs.hotFireBasic.taskBasicForm.blindboardspecification = '' + this.$refs.hotFireBasic.taskBasicForm.blindboardnumber = '' + this.$refs.hotFireBasic.taskBasicForm.commander = '' + this.$refs.hotFireBasic.taskBasicForm.blindboardlocation = [] + this.$refs.hotFireBasic.taskBasicForm.firetype = '' + for (let i in form) { + if (form[i].type === '受限空间作业') { + this.$refs.hotFireBasic.activeNames.push('1') + this.$refs.hotFireBasic.ifIncludeArea = 1 + this.$refs.hotFireBasic.taskBasicForm.spacecategory = form[i].spacecategory + this.$refs.hotFireBasic.taskBasicForm.spacename = form[i].spacename + this.$refs.hotFireBasic.taskBasicForm.spacemedium = form[i].spacemedium + this.$refs.hotFireBasic.taskBasicForm.acibase = form[i].acibase + } else if (form[i].type === '吊装作业') { + this.$refs.hotFireBasic.activeNames.push('2') + this.$refs.hotFireBasic.ifHoisting = 1 + this.$refs.hotFireBasic.taskBasicForm.hoistinglevel = form[i].hoistinglevel + this.$refs.hotFireBasic.taskBasicForm.hoistingweight = form[i].hoistingweight + } else if (form[i].type === '动土作业') { + this.$refs.hotFireBasic.activeNames.push('3') + this.$refs.hotFireBasic.ifBuilding = 1 + this.$refs.hotFireBasic.taskBasicForm.soildepth = form[i].soildepth + this.$refs.hotFireBasic.taskBasicForm.soilarea = form[i].soilarea + this.$refs.hotFireBasic.taskBasicForm.soilfile = form[i].soilfile + } else if (form[i].type === '断路作业') { + this.$refs.hotFireBasic.activeNames.push('4') + this.$refs.hotFireBasic.ifIncludeRoad = 1 + this.$refs.hotFireBasic.taskBasicForm.breakreason = form[i].breakreason + this.$refs.hotFireBasic.taskBasicForm.breakfile = form[i].breakfile + } else if (form[i].type === '高处作业') { + this.$refs.hotFireBasic.activeNames.push('5') + this.$refs.hotFireBasic.ifIncludeHigh = 1 + this.$refs.hotFireBasic.taskBasicForm.heightlevel = form[i].heightlevel + this.$refs.hotFireBasic.taskBasicForm.workheight = form[i].workheight + } else if (form[i].type === '临时用电作业') { + this.$refs.hotFireBasic.activeNames.push('6') + this.$refs.hotFireBasic.ifIncludeElectricity = 1 + this.$refs.hotFireBasic.taskBasicForm.electricityarea = form[i].electricityarea + this.$refs.hotFireBasic.taskBasicForm.voltage = form[i].voltage + this.$refs.hotFireBasic.taskBasicForm.power = form[i].power + } else if (form[i].type === '盲板抽堵作业') { + this.$refs.hotFireBasic.activeNames.push('7') + this.$refs.hotFireBasic.ifIncludePump = 1 + this.$refs.hotFireBasic.taskBasicForm.pipename = form[i].pipename + this.$refs.hotFireBasic.taskBasicForm.pipemedium = form[i].pipemedium + this.$refs.hotFireBasic.taskBasicForm.pipetemperature = form[i].pipetemperature + this.$refs.hotFireBasic.taskBasicForm.pipepressure = form[i].pipepressure + this.$refs.hotFireBasic.taskBasicForm.blindboardmaterial = form[i].blindboardmaterial + this.$refs.hotFireBasic.taskBasicForm.blindboardspecification = form[i].blindboardspecification + this.$refs.hotFireBasic.taskBasicForm.blindboardnumber = form[i].blindboardnumber + this.$refs.hotFireBasic.taskBasicForm.blindboardlocation = form[i].blindboardlocation + } else { + this.$refs.hotFireBasic.activeNames.push('8') + this.$refs.hotFireBasic.ifIncludeFire = 1 + this.$refs.hotFireBasic.taskBasicForm.firelevel = form[i].level + this.$refs.hotFireBasic.taskBasicForm.firetype = form[i].firetype + } + } + this.$refs.hotFireBasic.giveTaskBasic(this.$refs.hotFireBasic.taskBasicForm) + }) + } + }, + } +} +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/specialWork/taskInfo/index.vue b/src/views/specialWorkManage/specialWork/taskInfo/index.vue new file mode 100644 index 0000000..7dc60ad --- /dev/null +++ b/src/views/specialWorkManage/specialWork/taskInfo/index.vue @@ -0,0 +1,528 @@ +<template> + <div class="app-container"> + <div class="filter-container"> + <div class="basic_search"> + <span>开始时间:</span> + <el-date-picker value-format="yyyy-MM-dd HH:mm" placeholder="请选择开始时间" type="datetime" v-model="listQuery.starttime" style="width:200px"> + </el-date-picker> + </div> + <div class="basic_search"> + <span>结束时间:</span> + <el-date-picker value-format="yyyy-MM-dd HH:mm" placeholder="请选择结束时间" type="datetime" v-model="listQuery.endtime" style="width:200px"> + </el-date-picker> + </div> + <div class="basic_search"> + <span>部门:</span> + <el-input v-model="listQuery.department" style="width:200px"> + </el-input> + </div> + <div class="basic_search"> + <span>施工单位:</span> + <el-input v-model="listQuery.constructionunit" style="width:200px"> + </el-input> + </div> + <div class="basic_search"> + <span>作业类型:</span> + <el-select v-model="listQuery.level" clearable style="width:200px"> + <el-option + v-for="item in taskTypeList" + :key="item.id" + :value="item.id" + :label="item.name" + ></el-option> + </el-select> + </div> + <div class="basic_search"> + <span>审批状态:</span> + <el-select v-model="listQuery.status" clearable style="width:200px"> + <el-option + v-for="item in statusList" + :key="item.id" + :value="item.id" + :label="item.name" + ></el-option> + </el-select> + </div> + <div class="basic_search"> + <span>作业状态:</span> + <el-select v-model="listQuery.flag" clearable style="width:200px"> + <el-option + v-for="item in flagList" + :key="item.id" + :value="item.id" + :label="item.name" + ></el-option> + </el-select> + </div> + <el-button style="margin-left: 10px;" type="primary" icon="el-icon-refresh" @click="refreshHandle">搜索</el-button> + </div> + <div class="table_content"> + <el-table + v-loading="listLoading" + :key="tableKey" + :data="taskData" + border + fit + highlight-current-row + style="width: 100%;" + @sort-change="sortChange" + > + <el-table-column label="单位名称" prop="unit" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="单位代码" prop="code" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="申请人" prop="applicant" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="施工单位" prop="constructionunit" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="作业内容" prop="area" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="开始时间" prop="starttime" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="结束时间" prop="endtime" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="作业级别" prop="level" align="center" sortable="custom"> + <template slot-scope="scope"> + <div v-for="item in levelList"> + <div v-if="scope.row.level === item.id"> + <span>{{item.name}}</span> +<!-- <el-tag v-if="scope.row.level ===2" type="success">{{item.name}}</el-tag>--> +<!-- <el-tag v-if="scope.row.level ===1" type="warning">{{item.name}}</el-tag>--> +<!-- <el-tag v-if="scope.row.level ===0" type="danger">{{item.name}}</el-tag>--> + </div> + </div> + </template> + </el-table-column> + <el-table-column label="任务审批状态" prop="status" align="center" sortable="custom"> + <template slot-scope="scope"> + <div v-for="item in statusList"> + <div v-if="scope.row.status === item.id"> + <span>{{item.name}}</span> + </div> + </div> + </template> + </el-table-column> + <el-table-column label="作业状态" prop="flag" align="center" sortable="custom"> + <template slot-scope="scope"> + <div v-for="item in flagList"> + <div v-if="scope.row.flag === item.id"> + <span>{{item.name}}</span> + </div> + </div> + </template> + </el-table-column> + <el-table-column label="创建时间" prop="createdat" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="最近修改时间" prop="modifiedat" align="center" sortable="custom"> + </el-table-column> + <el-table-column label="操作" align="center" width="280" class-name="small-padding fixed-width"> + <template slot-scope="scope"> + <el-button type="text" @click="showReviewInfo(scope.row)" v-if="scope.row.taskReviews.length !== 0">查看审批</el-button> + <el-button type="text" @click="editWatch(scope.row,'监护人')" v-if="scope.row.approversupervisor !== '' && scope.row.approversupervisor !== null && applicant === scope.row.applicant">监护人</el-button> + <el-button type="text" @click="editWorker(scope.row,'作业人')" v-if="scope.row.taskWorkers.length !== 0 && applicant === scope.row.applicant">作业人</el-button> + <el-button type="text" @click="showTaskInfo(scope.row,'查看')">查看</el-button> + <el-button type="text" @click="downloadFile(scope.row)" v-if="scope.row.status === 7">下载</el-button> + <el-tooltip class="item" effect="dark" content="点击重新生成票证" placement="top-end"> + <el-button type="text" @click="regenerateWorkCertHandler(scope.row)" icon="el-icon-refresh" v-if="scope.row.status === 7"></el-button> + </el-tooltip> + </template> + </el-table-column> + </el-table> + <br> + <el-pagination + v-show="recordTotal>0" + :current-page="currentPage" + :page-sizes="[10, 20, 30, 50]" + :page-size="pageSize" + :total="recordTotal" + layout="total, sizes, prev, pager, next, jumper" + background + style="float:right;" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> + <br> + </div> + <task-info ref="taskInfo" @getinfo="getTaskData"></task-info> + <el-dialog :visible.sync="watchDialog" :modal-append-to-body="false" :close-on-click-modal="false" width="25%"> + <div align="center"> + <span>原监护人:</span> + <el-input v-model="supervisor" style="width:200px" readonly> + </el-input> + </div> + <div align="center" style="padding-top: 20px"> + <span>现监护人:</span> + <el-select v-model="supervisorForm.approversupervisor"> + <el-option + v-for="item in workerList" + :key="item.id" + :value="item.realname" + :label="item.realname" + > + </el-option> + </el-select> + <div align="center" style="padding-top: 20px"> + <el-button type="primary" @click="submitEditSupervisor()">确定</el-button> + </div> + </div> + </el-dialog> + <el-dialog :visible.sync="workerDialog" :modal-append-to-body="false" :close-on-click-modal="false" width="70%"> + <div style="padding-bottom: 10px"> + <el-button type="primary" @click="addTaskWorker">添加作业人</el-button> + </div> + <el-table :data="taskWorkers" border fit highlight-current-row style="width: 100%;" :header-cell-style="{'text-align':'center'}"> + <el-table-column type="index" label="序号" align="center" width="60"/> + <el-table-column prop="taskcode" label="作业编号" align="left"> + </el-table-column> + <el-table-column prop="unit" label="作业类型" align="left"> + <template slot-scope="scope"> + <el-select v-model="scope.row.tasktype"> + <el-option + v-for="item in taskTypeList" + :key="item.id" + :label="item.name" + :value="item.name" + > + </el-option> + </el-select> + </template> + </el-table-column> + <el-table-column prop="unit" label="施工单位" align="left"> + <template slot-scope="scope"> + <el-input v-model="scope.row.unit"></el-input> + </template> + </el-table-column> + <el-table-column prop="worker" label="作业人姓名" align="left"> + <template slot-scope="scope"> + <el-select v-model="scope.row.worker"> + <el-option + v-for="item in workerList" + :key="item.id" + :value="item.realname" + :label="item.realname" + > + </el-option> + </el-select> + </template> + </el-table-column> + <el-table-column prop="branch" label="特种作业工种" align="left"> + <template slot-scope="scope"> + <el-input v-model="scope.row.branch"></el-input> + </template> + </el-table-column> + <el-table-column prop="number" label="特种作业证号" align="left"> + <template slot-scope="scope"> + <el-input v-model="scope.row.number"></el-input> + </template> + </el-table-column> + <el-table-column label="操作" align="center"> + <template slot-scope="scope"> + <el-button type="text" @click="deleteWorker(scope.$index)">删除</el-button> + </template> + </el-table-column> + </el-table> + <div align="center" style="padding-top: 20px"> + <el-button type="primary" @click="submitWorker">确定</el-button> + </div> + </el-dialog> + <review-info ref="reviewInfo"></review-info> + </div> +</template> + +<script> +import taskInfo from './components/taskInfo' +import { mapGetters } from 'vuex' +import { computePageCount } from '../../../../utils' +import { changeSupervisor, changeWorker, lookTaskList, submitTask ,regenerateWorkCert} from '../../../../api/task' +import { getUnitList } from '../../../../api/unitManage' +import { concreteUser, userList } from '@/api/user' +import { parseError } from '../../../../utils/messageDialog' +import reviewInfo from './components/reviewInfo/index' + +export default { + name: 'index', + filters: { + }, + computed: { + ...mapGetters([ + 'userType' + ]) + }, + data() { + return { + tableKey: 0, + applicant:'', + taskData: [], + workerList:[], + companyList:[], + taskWorkers:[], + listLoading: false, + watchDialog:false, + workerDialog:false, + pageSize: 10, + recordTotal: 0, + currentPage: 1, + pageTotal: 0, + title:'', + supervisor:'', + code:'', + supervisorForm:{ + taskcode:'', + approversupervisor:'' + }, + taskTypeList:[ + {id:0,name:'受限空间作业'}, + {id:1,name:'吊装作业'}, + {id:2,name:'动土作业'}, + {id:3,name:'断路作业'}, + {id:4,name:'高处作业'}, + {id:5,name:'临时用电作业'}, + {id:6,name:'盲板抽堵作业'}, + {id:7,name:'动火作业'}, + ], + levelList:[{id:2,name:'特级'},{id:1,name:'一级'},{id:0,name:'二级'},], + statusList:[ + {id:0,name:'已驳回'}, + {id:1,name:'未提交'}, + {id:2,name:'已提交'}, + {id:3,name:'施工单位已确认'}, + {id:4,name:'动火部位负责人审批通过'}, + {id:5,name:'相关部门审批通过'}, + {id:6,name:'安全部门审批通过'}, + {id:7,name:'审批通过'}, + ], + flagList:[ + {id:0,name:'等待整改'}, + {id:1,name:'作业中止'}, + {id:2,name:'等待检查'}, + {id:3,name:'等待开始'}, + {id:4,name:'作业中'}, + {id:5,name:'作业完成'}, + ], + listQuery:{ + starttime:'', + endtime:'', + department:'', + constructionunit:'', + level:'', + status:'', + flag:'', + }, + } + }, + components:{ + taskInfo, + reviewInfo + }, + created() { + this.getTaskData() + this.getWorker() + }, + methods: { + async getTaskData(){ + this.applicant = sessionStorage.getItem('realname') + this.listLoading = true + let params = {} + params['pageIndex'] = this.currentPage + params['pageSize'] = this.pageSize + params['order'] = this.orderValue + params['sort'] = this.sortValue + for (const i in this.listQuery) { + console.log(i) + params[i] = this.listQuery[i] + } + let res = await lookTaskList(params) + if(res.data.code === '200'){ + this.recordTotal = res.data.result.totalCount + this.pageSize = res.data.result.pageSize + this.pageTotal = computePageCount(res.data.result.totalCount, res.data.result.pageSize) + this.currentPage = res.data.result.pageIndex + this.taskData = res.data.result.result + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + this.listLoading = false + }, + showReviewInfo(value){ + this.$refs.reviewInfo.openReviewInfo(value) + }, + editWatch(value){ + this.watchDialog = true + this.supervisor = value.approversupervisor + this.supervisorForm.taskcode = value.code + this.supervisorForm.approversupervisor = '' + }, + editWorker(value){ + this.workerDialog = true + this.code = value.code + this.taskWorkers = value.taskWorkers + }, + addTaskWorker(){ + this.taskWorkers.push({ + createdat: "", + createdby: "", + flag: 0, + id: 0, + modifiedat: "", + modifiedby: "", + taskcode: this.code, + unit: "", + worker: "", + branch: "", + number: "", + tasktype:'', + }) + }, + deleteWorker(val){ + this.taskWorkers.splice(val,1) + }, + submitWorker(){ + this.$confirm('更换监护人,是否继续','提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(()=> { + changeWorker(this.taskWorkers).then( (res)=>{ + if(res.data.code === '200'){ + this.workerDialog = false + this.getTaskData() + this.$notify({ + title:'成功', + message:'提交成功', + type:'success', + duration:2000, + }) + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + }) + }).catch(error =>{ + parseError({ error: error, vm: this }) + }) + }, + + submitEditSupervisor(){ + this.$confirm('更换监护人,是否继续','提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(()=> { + changeSupervisor(this.supervisorForm).then( (res)=>{ + if(res.data.code === '200'){ + this.watchDialog = false + this.getTaskData() + this.$notify({ + title:'成功', + message:'提交成功', + type:'success', + duration:2000, + }) + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + }) + }).catch(error =>{ + parseError({ error: error, vm: this }) + }) + }, + showTaskInfo(value,title){ + this.$refs.taskInfo.openTaskInfo(value,title) + }, + submitTask(row){ + this.$confirm('提交此条任务,是否继续','提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(()=> { + submitTask({id:row.id}).then( ()=>{ + this.getTaskData() + this.$notify({ + title:'成功', + message:'提交成功', + type:'success', + duration:2000, + }) + }) + }) + }, + + + downloadFile(val){ + if(val.path === null || val.path === ''){ + this.$message({ + type:'warning', + message:'文件未生成' + }) + }else{ + window.open(process.env.IMG_API + val.path,'_blank') + } + }, + regenerateWorkCertHandler(row){ + this.$confirm('是否确认重新生成票证','提示',{ + confirmButtonText:'确认', + cancelButtonText:'取消', + type:'warning', + }).then(()=>{ + regenerateWorkCert(row.code).then(res=>{ + if (res.data.code === '200') { + this.$message({ + type:'success', + message:'重新生成成功' + }) + }else{ + this.$message({ + type:'warning', + message:res.data.message, + }) + } + + }) + }) + }, + + + + refreshHandle(){ + this.getTaskData() + }, + handleSizeChange(val){ + this.pageSize = val + this.getTaskData() + }, + handleCurrentChange(val){ + this.currentPage = val + this.getTaskData() + }, + async getWorker(){ + let params = {} + params['company'] = sessionStorage.getItem('company') + params['department'] = sessionStorage.getItem('department') + let res = await concreteUser(params) + if(res.data.code === '200'){ + this.workerList = res.data.result + } + }, + sortChange(params){ + this.sortValue = params.sort + this.orderValue = params.order + this.getTaskData() + } + + } +} +</script> +<style scoped> +.basic_search{ + display:inline-block; + padding-bottom: 10px; +} +</style> diff --git a/src/views/specialWorkManage/workPlan/form/dialog.vue b/src/views/specialWorkManage/workPlan/form/dialog.vue new file mode 100644 index 0000000..64d04b0 --- /dev/null +++ b/src/views/specialWorkManage/workPlan/form/dialog.vue @@ -0,0 +1,224 @@ +<template> + <el-dialog :title="title" :visible.sync="dialogVisible" :modal-append-to-body="false" :close-on-click-modal="false" width="650px"> + <el-form :model="dataForm" label-position="right" label-width="100px" style="margin-left:50px;width:600px;"> + <el-row > + <el-col :span="20"> + <el-form-item label="预约时间:" > + <el-date-picker + v-model="dataForm.appointment" + value-format="yyyy-MM-dd" + align="right" + type="date" + placeholder="选择日期" + :disabled="isView" + :picker-options="pickerOptions"> + </el-date-picker> + </el-form-item> + </el-col> + + </el-row> + <el-row > + <el-col :span="10"> + <el-form-item label="动火作业:" > + <el-input-number :controls="false" :disabled="isView" :min="0" v-model="dataForm.fire" style="width: 100px" ></el-input-number> + </el-form-item> + </el-col> + <el-col :span="10"> + <el-form-item label="受限空间:" > + <el-input-number :controls="false" :disabled="isView" :min="0" v-model="dataForm.space" style="width: 100px"></el-input-number> + </el-form-item> + </el-col> + </el-row> + <el-row > + <el-col :span="10"> + <el-form-item label="吊装作业:" > + <el-input-number :controls="false" :disabled="isView" :min="0" v-model="dataForm.hoisting" style="width: 100px"></el-input-number> + </el-form-item> + </el-col> + <el-col :span="10"> + <el-form-item label="动土作业:" > + <el-input-number :controls="false" :disabled="isView" :min="0" v-model="dataForm.soild" style="width: 100px"></el-input-number> + </el-form-item> + </el-col> + </el-row> + <el-row > + <el-col :span="10"> + <el-form-item label="断路作业:" > + <el-input-number :controls="false" :disabled="isView" :min="0" v-model="dataForm.breaks" style="width: 100px"></el-input-number> + </el-form-item> + </el-col> + <el-col :span="10"> + <el-form-item label="高处作业:" > + <el-input-number :controls="false" :disabled="isView" :min="0" v-model="dataForm.high" style="width: 100px"></el-input-number> + </el-form-item> + </el-col> + </el-row> + <el-row > + <el-col :span="10"> + <el-form-item label="临时用电:" > + <el-input-number :controls="false" :disabled="isView" :min="0" v-model="dataForm.electricity" style="width: 100px"></el-input-number> + </el-form-item> + </el-col> + <el-col :span="10"> + <el-form-item label="盲板作业:" > + <el-input-number :controls="false" :disabled="isView" :min="0" v-model="dataForm.blindboard" style="width: 100px"></el-input-number> + </el-form-item> + </el-col> + </el-row> + + </el-form> + <div align="right" style="padding-right: 30px;margin-top: 10px;" v-if="!isView"> + <el-button @click="dialogVisible=false">取消</el-button> + <el-button type="primary" @click="submit(title)" :disabled="isSending">确认</el-button> + </div> + </el-dialog> +</template> + +<script> +import {reserveAdd,reserveMod} from '../../../../api/workPlan' + +export default { + name: 'index', + data() { + return { + appointment: '', + dialogVisible: false, + isSending: false, + title: '', + isView: '', + dataForm: { + id: '', + fire: '', + space: '', + hoisting: '', + soild: '', + breaks: '', + high: '', + electricity: '', + blindboard: '', + appointment: '' + + }, + pickerOptions: { + shortcuts: [ + { + text: '明天', + onClick(picker) { + const date = new Date() + date.setTime(date.getTime() + 3600 * 1000 * 24) + picker.$emit('pick', date) + } + }, + { + text: '后天', + onClick(picker) { + const date = new Date() + date.setTime(date.getTime() + 2 * 3600 * 1000 * 24) + picker.$emit('pick', date) + } + }, + { + text: '大后天', + onClick(picker) { + const date = new Date() + date.setTime(date.getTime() + 3 * 3600 * 1000 * 24) + picker.$emit('pick', date) + } + } + + ] + } + + } + }, + methods: { + showAddDialog(title) { + this.title = title + this.isView = false + this.dialogVisible = true + }, + showViewDialog(row, title) { + this.title = title + this.isView = true + this.dataForm.fire = row.fire + this.dataForm.space = row.space + this.dataForm.hoisting = row.hoisting + this.dataForm.soild = row.soild + this.dataForm.breaks = row.breaks + this.dataForm.high = row.high + this.dataForm.electricity = row.electricity + this.dataForm.blindboard = row.blindboard + this.dataForm.appointment = row.appointment + this.dialogVisible = true + + }, + showUpdateDialog(row, title) { + this.title = title + this.isView = false + this.dataForm.id = row.id + this.dataForm.fire = row.fire + this.dataForm.space = row.space + this.dataForm.hoisting = row.hoisting + this.dataForm.soild = row.soild + this.dataForm.breaks = row.breaks + this.dataForm.high = row.high + this.dataForm.electricity = row.electricity + this.dataForm.blindboard = row.blindboard + this.dataForm.appointment = row.appointment + this.dialogVisible = true + + }, + submit(title) { + if ('新增' === title) + this.post(reserveAdd) + if ('编辑' === title) + this.post(reserveMod) + }, + + post(func) { + this.isSending = true + func(this.dataForm) + .then(res => { + if (res.data.code === '200') { + this.dialogVisible = false + this.$emit('refresh') + this.$message({ + message: '操作成功', + type: 'success' + }) + } else { + this.$message({ + message: res.data.message, + type: 'warning' + }) + } + }) + .finally(res => { + this.isSending = false + } + ) + }, + reset() { + this.dataForm = { + id: '', + fire: '', + space: '', + hoisting: '', + soild: '', + breaks: '', + high: '', + electricity: '', + blindboard: '', + appointment: '' + + } + } + } +} +</script> +<style scoped> +.basic_search{ + display:inline-block; + padding-bottom: 10px; +} +</style> diff --git a/src/views/specialWorkManage/workPlan/index.vue b/src/views/specialWorkManage/workPlan/index.vue new file mode 100644 index 0000000..ea834ff --- /dev/null +++ b/src/views/specialWorkManage/workPlan/index.vue @@ -0,0 +1,13 @@ +<template> + <router-view></router-view> +</template> + +<script> + export default { + name: "index" + } +</script> + +<style scoped> + +</style> diff --git a/src/views/specialWorkManage/workPlan/reserve.vue b/src/views/specialWorkManage/workPlan/reserve.vue new file mode 100644 index 0000000..f9b1510 --- /dev/null +++ b/src/views/specialWorkManage/workPlan/reserve.vue @@ -0,0 +1,238 @@ +<template> + <div class="app-container"> + <div class="filter-container"> + <div class="basic_search" v-if="userDepartment !== 'null' && userDepartment != null && userDepartment !== ''"> + <span class="span-filter-label">部门</span> + <el-input v-model="userDepartment" disabled style="width:200px"> + </el-input> + </div> + + <div class="basic_search"> + <span class="span-filter-label">预约日期</span> + <el-date-picker + v-model="appointment" + value-format="yyyy-MM-dd" + align="right" + type="date" + placeholder="选择日期" + :picker-options="pickerOptions"> + </el-date-picker> + </div> + <div class="basic_search"> + <el-button style="margin-left: 10px;" type="primary" icon="el-icon-refresh" @click="refreshHandle">搜索</el-button> + <el-button style="margin-left: 10px;" type="primary" icon="el-icon-plus" v-if="isDepartment === '1'" @click="openAddDialog('新增')">新增</el-button> + </div> + </div> + <div class="table_content"> + <el-table + v-loading="listLoading" + :key="tableKey" + :data="taskData" + border + fit + highlight-current-row + style="width: 100%;" + > + <el-table-column style="width: 200px;" label="预约时间" prop="appointment" align="center"> + </el-table-column> + <el-table-column label="动火" prop="fire" align="center"> + </el-table-column> + <el-table-column label="受限空间" prop="space" align="center"> + </el-table-column> + <el-table-column label="吊装作业" prop="hoisting" align="center"> + </el-table-column> + <el-table-column label="动土作业" prop="soild" align="center"> + </el-table-column> + <el-table-column label="断路作业" prop="breaks" align="center"> + </el-table-column> + <el-table-column label="高处作业" prop="high" align="center"> + </el-table-column> + <el-table-column label="临时用电" prop="electricity" align="center"> + </el-table-column> + <el-table-column label="盲板作业" prop="blindboard" align="center"> + </el-table-column> + + <el-table-column label="操作" align="center" width="280" class-name="small-padding fixed-width"> + <template slot-scope="scope"> + <el-button v-if="isDepartment === '1'" type="text" @click="openUpdateDialog(scope.row,'编辑')" >编辑</el-button> + <el-button type="text" @click='openViewDialog(scope.row,"查看")'>查看</el-button> + </template> + </el-table-column> + </el-table> + <br> + <el-pagination + v-show="recordTotal>0" + :current-page="filter.pageIndex" + :page-sizes="[10, 20, 30, 50]" + :page-size="filter.pageSize" + :total="recordTotal" + layout="total, sizes, prev, pager, next, jumper" + background + style="float:right;" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> + <br> + </div> + <dialogs ref="dialogs" @refresh="getPageList"></dialogs> + </div> +</template> + +<script> +import { mapGetters } from 'vuex' +import { computePageCount } from '../../../utils' +import {reservePageList ,reserveAdd} from '../../../api/workPlan' +import { getAllDepartment } from '@/api/departmentManage' +import Cookies from 'js-cookie' +import dialogs from './form/dialog' + +export default { + name: 'index', + filters: {}, + computed: { + ...mapGetters([ + 'userType' + ]) + }, + components: { + dialogs + }, + data() { + return { + tableKey: 0, + taskData: [], + department: [], + isDepartment:'', + userDepartment:'', + appointment: '', + listLoading: false, + recordTotal: 0, + isSending: false, + filter: { + pageIndex: 1, + pageSize: 10, + filter: { + department: '', + starttime: '', + endtime: '' + } + }, + dataForm: { + id: '', + fire: '', + space: '', + hoisting: '', + soild: '', + breaks: '', + high: '', + electricity: '', + blindboard: '', + appointment: '' + + }, + pickerOptions: { + shortcuts: [{ + text: '今天', + onClick(picker) { + picker.$emit('pick', new Date()) + } + }, { + text: '昨天', + onClick(picker) { + const date = new Date() + date.setTime(date.getTime() - 3600 * 1000 * 24) + picker.$emit('pick', date) + } + }, { + text: '明天', + onClick(picker) { + const date = new Date() + date.setTime(date.getTime() + 3600 * 1000 * 24) + picker.$emit('pick', date) + } + }] + } + + } + }, + created(){ + this.initDepartmentFlag() + }, + mounted() { + this.getPageList() + this.getDepartmentList() + }, + methods: { + async getPageList() { + this.listLoading = true + this.filter.filter.starttime = '' + this.filter.filter.endtime = '' + if (this.appointment != null && this.appointment !== '') { + this.filter.filter.starttime = this.appointment + ' 00:00:00' + this.filter.filter.endtime = this.appointment + ' 23:59:59' + } + let res = await reservePageList(this.filter) + if (res.data.code === '200') { + this.recordTotal = res.data.result.total + this.pageSize = res.data.result.pageSize + this.currentPage = res.data.result.pageIndex + this.taskData = res.data.result.records + } else { + this.$message({ + message: res.data.message, + type: 'warning' + }) + } + this.listLoading = false + }, + async getDepartmentList() { + getAllDepartment() + .then(res => { + if (res.data.code === '200') + this.department = res.data.result + else + this.$message({message: res.data.message,type: 'warning'}) + }) + }, + + openAddDialog(title) { + this.$refs.dialogs.showAddDialog(title) + }, + openViewDialog(row, title) { + this.$refs.dialogs.showViewDialog(row, title) + }, + openUpdateDialog(row, title) { + this.$refs.dialogs.showUpdateDialog(row, title) + }, + refreshHandle() { + this.getPageList() + }, + handleSizeChange(val) { + this.filter.pageSize = val + this.getPageList() + }, + handleCurrentChange(val) { + this.filter.pageIndex = val + this.getPageList() + }, + initDepartmentFlag(){ + this.isDepartment = sessionStorage.getItem('isdepartment') + this.userDepartment = Cookies.get('department') + } + + } +} +</script> +<style scoped> +.basic_search{ + display:inline-block; + padding-bottom: 10px; +} + +.span-filter-label { + font-size: 15px; + color: #606266; + margin-right: 4px; + margin-left: 7px; +} +</style> diff --git a/src/views/specialWorkManage/workPlan/statistics.vue b/src/views/specialWorkManage/workPlan/statistics.vue new file mode 100644 index 0000000..b737e5e --- /dev/null +++ b/src/views/specialWorkManage/workPlan/statistics.vue @@ -0,0 +1,216 @@ +<template> + <div class="app-container"> + <div class="filter-container"> + <div class="basic_search"> + <span class="span-filter-label">部门</span> + <el-select v-model="filter.filter.department" filterable placeholder="请选择" style="width:200px"> + <el-option + v-for="item in department" + :key="item.department" + :label="item.department" + :value="item.department"> + </el-option> + </el-select> + </div> + + <div class="basic_search"> + <span class="span-filter-label">预约日期</span> + <el-date-picker + v-model="filter.filter.appointment" + value-format="yyyy-MM-dd" + align="right" + type="date" + placeholder="选择日期" + :picker-options="pickerOptions"> + </el-date-picker> + </div> + + <el-button style="margin-left: 10px;" type="primary" icon="el-icon-refresh" @click="refreshHandle">搜索</el-button> + </div> + <div class="table_content"> + <el-table + v-loading="listLoading" + :key="tableKey" + :data="tableData" + border + fit + highlight-current-row + style="width: 100%;" + > + + <el-table-column style="width: 200px;" prop="appointment" align="center"> + </el-table-column> + <el-table-column style="width: 200px;" label="部门" prop="department" align="center"> + </el-table-column> + <el-table-column label="动火" prop="fire" align="center"> + </el-table-column> + <el-table-column label="受限空间" prop="space" align="center"> + </el-table-column> + <el-table-column label="吊装作业" prop="hoisting" align="center"> + </el-table-column> + <el-table-column label="动土作业" prop="soild" align="center"> + </el-table-column> + <el-table-column label="断路作业" prop="breaks" align="center"> + </el-table-column> + <el-table-column label="高处作业" prop="high" align="center"> + </el-table-column> + <el-table-column label="临时用电" prop="electricity" align="center"> + </el-table-column> + <el-table-column label="盲板作业" prop="blindboard" align="center"> + </el-table-column> + + </el-table> + <br> + <el-pagination + v-show="recordTotal>0" + :current-page="filter.pageIndex" + :page-sizes="[10, 20, 30, 50]" + :page-size="filter.pageSize" + :total="recordTotal" + layout="total, sizes, prev, pager, next, jumper" + background + style="float:right;" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> + <br> + </div> + + </div> +</template> + +<script> +import { mapGetters } from 'vuex' +import { computePageCount } from '../../../utils' +import {reserveStatistics} from '../../../api/workPlan' +import Cookies from 'js-cookie' +import { getAllDepartment } from '@/api/departmentManage' + +export default { + name: 'index', + filters: {}, + computed: { + ...mapGetters([ + 'userType' + ]), + tableData() { + const tbody = this.statisticsData + return tbody.length ? [...tbody, ...this.tableFoot] : [] + } + }, + data() { + return { + tableKey: 0, + statisticsData: [], + department: [], + appointment: '', + listLoading: false, + recordTotal: 0, + isSending: false, + filter: { + pageIndex: 1, + pageSize: 10, + filter: { + department: '', + appointment: '' + } + }, + tableFoot: [], + dataForm: { + id: '', + fire: '', + space: '', + hoisting: '', + soild: '', + breaks: '', + high: '', + electricity: '', + blindboard: '', + appointment: '' + + }, + pickerOptions: { + shortcuts: [{ + text: '今天', + onClick(picker) { + picker.$emit('pick', new Date()) + } + }, { + text: '昨天', + onClick(picker) { + const date = new Date() + date.setTime(date.getTime() - 3600 * 1000 * 24) + picker.$emit('pick', date) + } + }, { + text: '明天', + onClick(picker) { + const date = new Date() + date.setTime(date.getTime() + 3600 * 1000 * 24) + picker.$emit('pick', date) + } + }] + } + + } + }, + mounted() { + this.getDepartmentList() + this.getPageList() + }, + methods: { + async getPageList() { + this.listLoading = true + let res = await reserveStatistics(this.filter) + if (res.data.code === '200') { + this.recordTotal = res.data.result.total + this.pageSize = res.data.result.pageSize + this.currentPage = res.data.result.pageIndex + this.statisticsData = res.data.result.records + res.data.result.extension.appointment = '总计' + this.tableFoot = [res.data.result.extension] + } else { + this.$message({ + message: res.data.message, + type: 'warning' + }) + } + this.listLoading = false + }, + async getDepartmentList() { + getAllDepartment() + .then(res => { + if (res.data.code === '200') + this.department = res.data.result + else + this.$message({ message: res.data.message,type: 'warning'}) + + }) + }, + refreshHandle() { + this.getPageList() + }, + handleSizeChange(val) { + this.filter.pageSize = val + this.getPageList() + }, + handleCurrentChange(val) { + this.filter.pageIndex = val + this.getPageList() + }, + + } +} +</script> +<style scoped> +.basic_search{ + display:inline-block; + padding-bottom: 10px; +} +.span-filter-label { + font-size: 15px; + color: #606266; + margin-right: 4px; + margin-left: 7px; +} +</style> -- Gitblit v1.9.2