From 30e36368e54581fcc0c581a004f1f68873c1e819 Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: 星期二, 10 五月 2022 08:37:34 +0800
Subject: [PATCH] 地图
---
src/components/Tab/Plot.vue | 63
src/views/majorHazardSourceMonitoring/productionEquipment/index.vue | 1
src/views/specialWorkManage/specialWork/taskCreate/components/taskCreate.vue | 1336 +++++++
src/views/specialWorkManage/workPlan/reserve.vue | 238 +
src/views/doublePreventAction/hiddenDanger/inspectionRecord/index.vue | 64
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 | 9
src/views/doublePreventAction/hiddenDanger/inspectionStatistics/components/inspectionUnusual/index.vue | 8
src/views/doublePreventAction/hiddenDanger/inspectionTask/components/inpectionPoint.vue | 7
src/views/specialWorkManage/specialWork/taskCreate/components/equipment/index.vue | 91
src/views/specialWorkManage/specialWork/taskCreate/components/taskBasic/index.vue | 1552 ++++++++
src/components/Tab/Model.vue | 6
src/views/doublePreventAction/riskLevelManage/fourColorMap/oneHundredAndThirty/index.vue | 288 +
src/views/specialWorkManage/specialWork/index.vue | 13
src/views/specialWorkManage/specialWork/taskCreate/components/file/constructionFile.vue | 247 +
src/views/login/register.vue | 1139 -----
src/views/specialWorkManage/workPlan/form/dialog.vue | 224 +
src/views/specialWorkManage/specialWork/taskInfo/components/equipment/index.vue | 72
src/permission.js | 2
src/api/login.js | 2
src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue | 40
src/views/specialWorkManage/specialWork/taskInfo/components/taskInfo.vue | 179
src/views/specialWorkManage/specialWork/taskInfo/components/hotFireBasic/index.vue | 723 +++
src/api/user.js | 9
src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue | 277 -
src/router/index.js | 10
src/views/doublePreventAction/hiddenDanger/inspectionRecord/components/detail.vue | 160
src/views/specialWorkManage/specialWork/taskInfo/components/safetyAndRiskConfirm/index.vue | 277 +
public/data/plots_namisuo.geojson | 4
src/assets/tileset.json | 1
src/views/login/pwdChange.vue | 174
src/views/specialWorkManage/specialWork/taskInfo/components/fireMan/index.vue | 68
src/views/systemManage/appFile/index.vue | 469 ++
src/views/specialWorkManage/workPlan/statistics.vue | 216 +
src/views/specialWorkManage/specialWork/taskCreate/components/fireMan/index.vue | 127
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/systemManage/userManage/index.vue | 106
src/views/specialWorkManage/specialWork/taskInfo/index.vue | 528 ++
src/views/specialWorkManage/specialWork/taskCreate/index.vue | 344 +
src/views/specialWorkManage/specialWork/taskCreate/components/reviewInfo/index.vue | 73
src/views/doublePreventAction/hiddenDanger/inspectionStatistics/index.vue | 6
src/views/layout/components/Navbar.vue | 19
src/views/specialWorkManage/specialWork/taskCreate/components/safetyAction/index.vue | 170
public/wutu3d/cesium-wutu/wutu3d.js | 2
src/views/login/components/login-form.vue | 26
src/views/specialWorkManage/specialWork/taskInfo/components/safetyAction/index.vue | 118
src/views/doublePreventAction/riskLevelManage/fourColorMap/sixty/index.vue | 302 +
src/views/specialWorkManage/index.vue | 13
src/views/specialWorkManage/specialWork/taskCreate/components/file/allFire.vue | 244 +
src/views/specialWorkManage/workPlan/index.vue | 13
src/api/fourColorMap.js | 24
55 files changed, 9,565 insertions(+), 1,359 deletions(-)
diff --git a/config/dev.env.js b/config/dev.env.js
index 548512a..d475b72 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"',
@@ -16,11 +16,16 @@
// IMG_API: '"https://sinanoaq.com:8100/upload/"',
// BASE_API: '"http://220.171.99.118:4100"',
// 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://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/"',
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/public/data/plots_namisuo.geojson b/public/data/plots_namisuo.geojson
index a19bf6e..9a882b5 100644
--- a/public/data/plots_namisuo.geojson
+++ b/public/data/plots_namisuo.geojson
@@ -8,7 +8,7 @@
"style": { "text": "F号楼", "clampToGround": true },
"attr": {
"name": "F号楼",
- "id": "cabe679c-373b-4890-ae0c-7a7061f89dfd"
+ "id": "1"
}
},
"geometry": {
@@ -57,7 +57,7 @@
"type": "Feature",
"properties": {
"type": "polygon",
- "style": { "text": "E号楼", "clampToGround": true, "color": "#ff0000" },
+ "style": { "text": "E号楼", "clampToGround": true },
"attr": {
"name": "E号楼",
"id": "7a3094db-d227-4b3f-bf35-1ce64c365e42"
diff --git a/public/wutu3d/cesium-wutu/wutu3d.js b/public/wutu3d/cesium-wutu/wutu3d.js
index 990c840..d94fe70 100644
--- a/public/wutu3d/cesium-wutu/wutu3d.js
+++ b/public/wutu3d/cesium-wutu/wutu3d.js
@@ -1961,10 +1961,12 @@
}, o.ScreenSpaceEventType.LEFT_DOUBLE_CLICK)
},
endDraw: function () {
+ debugger
if (!this._enabled) return this;
this._positions_draw.length < this._minPointNum || (this.updateAttrForDrawing(), this.disable())
},
finish: function () {
+ debugger
var e = this.entity;
e.editing = this.getEditClass(e), e._positions_draw = this.getDrawPosition(), e.polyline.positions = new o.CallbackProperty(function (t) {
return e._positions_draw
diff --git a/src/api/fourColorMap.js b/src/api/fourColorMap.js
new file mode 100644
index 0000000..e21e91e
--- /dev/null
+++ b/src/api/fourColorMap.js
@@ -0,0 +1,24 @@
+import {getToken} from "../utils/auth";
+import request from '@/utils/request'
+
+export function addMap(data) {
+ return request({
+ headers:{
+ 'Authorization': getToken()
+ },
+ url: process.env.BASE_API+'/fourColorMap/add2',
+ method: 'post',
+ data
+ });
+}
+
+export function getMap(params) {
+ return request({
+ headers:{
+ 'Authorization': getToken()
+ },
+ url: process.env.BASE_API+'/fourColorMap/get/list2',
+ method: 'post',
+ params:params?params:{}
+ });
+}
\ No newline at end of file
diff --git a/src/api/login.js b/src/api/login.js
index ab903dc..54261e3 100644
--- a/src/api/login.js
+++ b/src/api/login.js
@@ -51,7 +51,7 @@
},
url: process.env.BASE_API+'/register/add',
method: 'post',
- data:data
+ data
})
}
diff --git a/src/api/user.js b/src/api/user.js
index da92fd9..268dd5c 100644
--- a/src/api/user.js
+++ b/src/api/user.js
@@ -244,3 +244,12 @@
data
})
}
+
+
+export function pwdChange(data) {
+ return request({
+ url: process.env.BASE_API + '/pwd-change',
+ method: 'post',
+ data
+ })
+}
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/components/Tab/Model.vue b/src/components/Tab/Model.vue
index 7b613e7..4b62e25 100644
--- a/src/components/Tab/Model.vue
+++ b/src/components/Tab/Model.vue
@@ -101,7 +101,13 @@
return this.timestamp && global.map ? global.map.models : [];
}
},
+ mounted() {
+ this.beginSet()
+ },
methods: {
+ beginSet() {
+ this.focusHandle(this.models[0].id)
+ },
editHandle(model) {
if (!global.map) return;
this.model = {
diff --git a/src/components/Tab/Plot.vue b/src/components/Tab/Plot.vue
index 1082c5a..15a6b1b 100644
--- a/src/components/Tab/Plot.vue
+++ b/src/components/Tab/Plot.vue
@@ -79,6 +79,7 @@
</template>
<script>
+ import { addMap } from '@/api/fourColorMap'
import { global } from '../../global';
// 默认样式
@@ -106,6 +107,35 @@
},
showCreatePanel: false,
showPlot: true,
+ form:{
+ id:'',
+ etype:1,
+ "type": "Feature",
+ "properties": {
+ "type": "polygon",
+ "style": { "text": "D号楼", "clampToGround": true },
+ "attr": {
+ "name": "D号楼",
+ "id": "8a65b4df-2450-4dab-958d-fbd182cfd92d"
+ }
+ },
+ "geometry": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [120.728524, 31.258178, 0],
+ [120.727911, 31.257992, 0],
+ [120.728024, 31.25772, 0],
+ [120.727986, 31.2577, 0],
+ [120.728039, 31.257535, 0],
+ [120.728759, 31.257714, 0],
+ [120.728524, 31.258178, 0],
+ [120.728524, 31.258178, 0],
+ [120.728524, 31.258178, 0]
+ ]
+ ]
+ }
+ },
};
},
computed: {
@@ -149,7 +179,11 @@
name: '',
};
},
- createHandle() {
+ async createHandle() {
+ // debugger
+ // this.form.geometry = JSON.stringify(this.form.geometry)
+ // this.form.properties = JSON.stringify(this.form.properties)
+ // let res = await addMap(this.form)
if (!global.map) return;
let map = global.map;
const { id, name } = this.label;
@@ -169,9 +203,34 @@
name,
},
},
- () => {
+ (entity) => {
this._initLabel();
this.$store.dispatch('map/updateTimestamp');
+ this.form = {
+ id:'',
+ etype:1,
+ "type": "Feature",
+ "properties":
+ JSON.stringify(entity.attribute),
+ "geometry": JSON.stringify({
+ "type": "Polygon",
+ "coordinates": [
+
+ wutu3d.draw.attr.getCoordinates(entity)
+
+ ]
+ })
+ }
+ addMap(this.form).then(res =>{
+ if(res.data.code === '200'){
+ this.$message({
+ type:'success',
+ duration:2000,
+ title:'成功',
+ message:'四色图新增成功',
+ })
+ }
+ })
}
);
}
diff --git a/src/permission.js b/src/permission.js
index 3e68d61..e5247a6 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -17,7 +17,7 @@
return roles.some(role => permissionRoles.indexOf(role) >= 0)
}
-const whiteList = ['/login', '/auth-redirect','/agreement','/register','/productionEquipment','/instrumentData','/equipmentAlarm'] // no redirect whitelist
+const whiteList = ['/login','/pwdChange', '/auth-redirect','/agreement','/register','/productionEquipment','/instrumentData','/equipmentAlarm'] // no redirect whitelist
router.beforeEach((to, from, next) => {
NProgress.start() // start progress bar
diff --git a/src/router/index.js b/src/router/index.js
index 084971d..e545e78 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -53,13 +53,19 @@
hidden: true
},
{
+ path: '/pwdChange',
+ // 密码变更
+ component: () => import('@/views/login/pwdChange'),
+ hidden: true
+ },
+ {
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/components/detail.vue b/src/views/doublePreventAction/hiddenDanger/inspectionRecord/components/detail.vue
new file mode 100644
index 0000000..96ca670
--- /dev/null
+++ b/src/views/doublePreventAction/hiddenDanger/inspectionRecord/components/detail.vue
@@ -0,0 +1,160 @@
+<template>
+ <div class="app-container">
+ <el-dialog title="巡检记录详情" :visible.sync="inspectionRecordFormVisible" append-to-body :close-on-click-modal="false" width="40%">
+ <el-form ref="inspectionRecordForm" :model="inspectionRecordForm" label-position="right" label-width="120px">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="任务名称" prop="title">
+ <el-input v-model="inspectionRecordForm.title" class="analyseUnit_input" :disabled="ifShow">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="检查类型" prop="type">
+ <el-select v-model="inspectionRecordForm.type" class="analyseUnit_input" :disabled="ifShow">
+ <el-option
+ v-for="item in typeList"
+ :key=item.id
+ :label=item.name
+ :value=item.id
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="任务名称" prop="noticeUname">
+ <el-input v-model="inspectionRecordForm.noticeUname" class="analyseUnit_input" :disabled="ifShow">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="检查类型" prop="execUname">
+ <el-input v-model="inspectionRecordForm.execUname" class="analyseUnit_input" :disabled="ifShow">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="巡检开始时间" prop="startTime">
+ <el-date-picker v-model="inspectionRecordForm.execUname" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="周期开始时间" class="analyseUnit_input" :disabled="ifShow" ></el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="巡检结束时间" prop="startTime">
+ <el-date-picker v-model="inspectionRecordForm.execUname" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="周期开始时间" class="analyseUnit_input" :disabled="ifShow"></el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="巡检提交时间" prop="execUname">
+ <el-date-picker v-model="inspectionRecordForm.execUname" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="周期开始时间" class="analyseUnit_input" :disabled="ifShow"></el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="任务状态" prop="status">
+ <el-select v-model="inspectionRecordForm.status" class="analyseUnit_input" :disabled="ifShow">
+ <el-option
+ v-for="item in statusList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ </el-dialog>
+ <el-dialog title="巡检单元详情" :visible.sync="inspectionRecordDetailFormVisible" append-to-body :close-on-click-modal="false" width="30%">
+ <el-form ref="inspectionRecordDetailForm" :model="inspectionRecordDetailForm" label-position="right" label-width="120px">
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="隐患排查内容" prop="content">
+ <el-input v-model="inspectionRecordDetailForm.content" class="input" :disabled="ifShow">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="上报说明" prop="info">
+ <el-input v-model="inspectionRecordDetailForm.info" class="input" :disabled="ifShow">
+ </el-input>
+ </el-form-item>
+ </el-col>
+
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="上报照片" prop="img">
+ <el-input v-model="inspectionRecordDetailForm.img" class="input" :disabled="ifShow">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="状态" prop="status">
+ <el-select v-model="inspectionRecordDetailForm.status" class="input" :disabled="ifShow">
+ <el-option
+ v-for="item in statusList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+ export default {
+ name: "detail",
+ data(){
+ return{
+ inspectionRecordForm:{},
+ inspectionRecordFormVisible:false,
+ inspectionRecordDetailForm:{},
+ inspectionRecordDetailFormVisible:false,
+ ifShow:true,
+ typeList:[{id:1,name:'日常检查'},{id:2,name:'周期检查'}],
+ statusList:[{id:1,name:'待巡检'},{id:2,name:'巡检中'},{id:3,name:'已完成'},{id:4,name:'超时未巡检'},{id:5,name:'已取消'}],
+ }
+ },
+ components:{
+
+ },
+ methods:{
+ showInspectionRecordForm(value) {
+ this.inspectionRecordFormVisible = true
+ this.inspectionRecordForm = JSON.parse(JSON.stringify(value))
+ },
+ showInspectionRecordDetailForm(value) {
+ this.inspectionRecordDetailFormVisible = true
+ this.inspectionRecordDetailForm = value
+ }
+ }
+ }
+</script>
+
+<style scoped>
+/deep/.filter-container{
+ padding-left: 0px !important;
+}
+ .analyseUnit_input{
+ width:200px;
+ }
+ .input{
+ width:400px;
+ }
+</style>
diff --git a/src/views/doublePreventAction/hiddenDanger/inspectionRecord/index.vue b/src/views/doublePreventAction/hiddenDanger/inspectionRecord/index.vue
index 4c61f8c..34e3041 100644
--- a/src/views/doublePreventAction/hiddenDanger/inspectionRecord/index.vue
+++ b/src/views/doublePreventAction/hiddenDanger/inspectionRecord/index.vue
@@ -91,15 +91,18 @@
</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">
- <el-button type="text" @click="showMeasureDetail(scope.row)">详情</el-button>
+ <el-button type="text" @click="showInspectionRecordDetailForm(scope.row)">详情</el-button>
</template>
</el-table-column>
</el-table>
@@ -116,6 +119,12 @@
</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">
{{ scope.row.status | parseStatus}}
@@ -123,7 +132,7 @@
</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="showInspectionRecordForm(scope.row,'编辑')">查看</el-button>
+ <el-button type="text" @click="showInspectionRecordDetailForm(scope.row,'编辑')">查看</el-button>
</template>
</el-table-column>
</el-table>
@@ -168,15 +177,19 @@
<el-button @click="unitFormVisible = false">取消</el-button>
</div>
</el-dialog>
+ <detail ref="detail"></detail>
</div>
</template>
<script>
+ import detail from './components/detail.vue'
import { mapGetters } from 'vuex'
import { computePageCount } from '@/utils'
import { getInspectionRecord } from '@/api/inspectionTask'
import {getAllDepartment, getDepartmentList} from "../../../../api/departmentManage";
+ import {safetyInspectionItemName} from "../../../../api/safetySelfInspection";
export default {
+ components: { detail },
name: 'index',
filters: {
parseType(type){
@@ -193,6 +206,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([
@@ -234,9 +260,13 @@
},
}
},
+ components: {
+ detail
+ },
created() {
this.getInspectionRecordData()
this.getDepartment()
+ this.getUser()
},
methods: {
async getInspectionRecordData(){
@@ -264,21 +294,23 @@
})
}
},
- showAnalyseUnitForm(value,type){
- this.inspectionRecordVisible = true
- this.$nextTick(() =>{
- this.$refs["analyseUnitForm"].clearValidate()
- })
- if(type === '新增'){
- this.title = '新增'
- this.inspectionRecordData = {
-
- }
+ async getUser(){
+ let res = await safetyInspectionItemName()
+ if(res.data.code === '200'){
+ this.userList = res.data.result
}else{
- this.title = '修改'
- this.inspectionRecordData = value
+ this.$message({
+ message:res.data.message,
+ type:'warning'
+ })
}
},
+ showInspectionRecordForm(value){
+ this.$refs.detail.showInspectionRecordForm(value)
+ },
+ showInspectionRecordDetailForm(value) {
+ this.$refs.detail.showInspectionRecordDetailForm(value)
+ },
refreshHandle(){
this.getInspectionRecordData()
},
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..083b51d 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)
@@ -109,7 +111,6 @@
},
deleteById(value){
if(this.title === '新建巡检计划设定'){
- debugger
this.inspectionPointData.splice(value,1)
}else{
this.$confirm('删除此条措施,是否继续','提示',{
diff --git a/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue b/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue
index c72d513..ccebb06 100644
--- a/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue
+++ b/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue
@@ -343,10 +343,14 @@
execDepartment:'',
inspectionTaskVisible:false,
inspectionTaskFormRules:{
- hazardDep: [{ required: true, message: '责任部门不能为空', trigger: 'change' }],
- hazardLiablePerson: [{ required: true, message: '责任人不能为空', trigger: 'blur' }],
- hazardCode: [{ required: true, message: '安全风险分析对象编码不能为空', trigger: 'blur' }],
- riskUnitName: [{ required: true, message: '安全风险分析单元名称不能为空', trigger: 'blur' }],
+ title: [{ required: true, message: '任务名称不能为空', trigger: 'blur' }],
+ type: [{ required: true, message: '检查类型不能为空', trigger: 'change' }],
+ intervalSeconds: [{ required: true, message: '检查频次不能为空', trigger: 'change' }],
+ noticeSeconds: [{ required: true, message: '提前通知时间不能为空', trigger: 'change' }],
+ startTime: [{ required: true, message: '周期开始时间不能为空', trigger: 'change' }],
+ effectSeconds: [{ required: true, message: '任务有效时间不能为空', trigger: 'change' }],
+ noticeUid: [{ required: true, message: '异常通知人员不能为空', trigger: 'change' }],
+ execUid: [{ required: true, message: '执行巡检人员不能为空', trigger: 'change' }],
},
inspectionTaskForm:{
type:null,
@@ -467,7 +471,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
@@ -499,6 +503,11 @@
this.$message({
type:'warning',
message:'任务持续时间不能大于检查频次'
+ })
+ }else if(this.justifyTime(this.inspectionTaskForm.startTime,this.inspectionTaskForm.noticeSeconds)){
+ this.$message({
+ type:'warning',
+ message:'周期开始时间减去当前时间和提前通知时间要大于等于半小时'
})
}else{
if(this.title === '新建巡检计划设定'){
@@ -558,6 +567,18 @@
})
},
+ justifyTime(time,interval) {
+ debugger
+ let timeStr = new Date(time.replace(/-/g,'/'))
+ let date = parseInt(timeStr.getTime()/1000)
+ let newTimeStr = new Date()
+ let newDate = parseInt(newTimeStr.getTime()/1000)
+ if(date - newDate - interval - 1800 >= 0){
+ return false
+ }else{
+ return true
+ }
+ },
deleteById(val){
this.$confirm('删除此条信息,是否继续','提示',{
confirmButtonText:'确定',
@@ -576,10 +597,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..9e73e6b 100644
--- a/src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue
+++ b/src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue
@@ -1,284 +1,9 @@
<template>
- <div class="map-layout">
- <Map @init="init" :option="option" v-if="option" />
- <Tab v-if="loaded" />
- </div>
+ <router-view />
</template>
<script>
- import Map from '../../../../components/Map';
- import Tab from '../../../../components/Tab';
- import { global } from '../../../../global';
- import {
- getCatesian3FromPX,
- Cartesian3_to_WGS84,
- } from '../../../../components/Map/libs/Point';
-
- export default {
- name: 'App',
- components: {
- Map,
- Tab,
- },
- data() {
- return {
- loaded: false,
- map: null,
- option: null,
- heatLayer: null,
- shineishiwai: true,
- };
- },
- mounted() {
- // 地图配置初始化
- this.option = {
- // 初始化视图中心点
- viewpoint: {
- y: 31.254992,
- x: 120.727592,
- z: 289.24,
- heading: 13.8,
- pitch: -37.3,
- roll: 360,
- },
-
- // 显示位置初始化按钮
- homeButton: true,
-
- // 当前时间
- currentTime: '08:30:00',
-
- // 影像底图
- imageryProvider: new Cesium.WebMapTileServiceImageryProvider({
- url:
- 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer',
- layer: '',
- style: 'default',
- tileMatrixSetID: 'w',
- format: 'tiles',
- maximumLevel: 18,
- }),
- };
- window.sss = this;
- },
- methods: {
- init(map) {
- this.loaded = true;
-
- map.addModel({
- link: 'http://222.92.213.21:8006/zhongtaiweb/tileset.json',
- name: '商业园区',
- callback: tileset => {
- var boundingSphere = tileset.boundingSphere;
- var cartographic = Cesium.Cartographic.fromCartesian(
- boundingSphere.center
- );
- var surface = Cesium.Cartesian3.fromRadians(
- cartographic.longitude,
- cartographic.latitude,
- 0.0
- );
- var offset = Cesium.Cartesian3.fromRadians(
- cartographic.longitude,
- cartographic.latitude,
- 102
- );
- var translation = Cesium.Cartesian3.subtract(
- offset,
- surface,
- new Cesium.Cartesian3()
- );
- tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
- },
- });
-
- map.viewer.scene.globe.baseColor = Cesium.Color.fromCssColorString(
- '#050F1F'
- );
- map.viewer.scene.logarithmicDepthBuffer = false;
- map.viewer.scene.globe.enableLighting = true;
- map.viewer.scene.sun.show = false;
- map.viewer.scene.moon.show = false;
- map.viewer.scene.fog.enabled = false;
- map.viewer.scene.skyBox = null;
-
- // 初始化事件
- this.initEvent(map);
-
- this.testLoadedData();
- },
- // 加载测试数据
- testLoadedData() {
- const map = global.map;
- if (!map) return;
- $.get('./public/data/plots_namisuo.geojson', res => {
- map.loadGeoJSON(res);
- });
- },
- initEvent(map) {
- let popup = null;
- const _this = this;
- map.on(
- 'click',
- ({
- position,
- cartesian3,
- latLngPositionGlobe,
- latLngPosition,
- entity,
- attr,
- }) => {
- if (popup) {
- popup.destroy();
- popup = null;
- }
- let type = entity && entity.attribute && entity.attribute.type;
- if (type) {
- popup = new wutu3d.DivPoint(map.viewer, {
- html:
- "<div class='popup-wrapper'>" +
- attr.name +
- '<br/><br/>XXXXXXXX</div>',
- position: cartesian3,
- anchor: [-170, -80],
- });
- popup.visible = true;
- }
- if (attr.name && attr.name === '含内景大楼') {
- _this.changeModel(!_this.shineishiwai);
- _this.shineishiwai = !_this.shineishiwai;
- }
-
- const pos = getCatesian3FromPX(position, map.viewer);
- const pos1 = Cartesian3_to_WGS84(pos);
- console.log(pos1);
-
- var pt = turf.point([Number(pos1.lng), Number(pos1.lat)]);
- var poly = turf.polygon([
- [
- [120.159277, 30.227512],
- [120.158919, 30.227569],
- [120.158777, 30.227431],
- [120.158904, 30.227151],
- [120.15911, 30.227119],
- [120.159339, 30.227347],
- [120.159277, 30.227512],
- ],
- ]);
-
- const inPoly = turf.booleanPointInPolygon(pt, poly);
-
- if (
- //自己测量对应建筑的空间范围
- inPoly &&
- pos1.alt > 0 && //20.562718744748462
- pos1.alt < 121.7
- ) {
- _this.changeModel(!_this.shineishiwai);
- _this.shineishiwai = !_this.shineishiwai;
- }
- }
- );
- // map.on(
- // 'mousemove',
- // ({ cartesian3, latLngPositionGlobe, latLngPosition, entity, attr }) => {
- // if (popup) {
- // popup.destroy();
- // popup = null;
- // }
- // let type = entity && entity.attribute && entity.attribute.type;
- // if (type) {
- // popup = new wutu3d.DivPoint(map.viewer, {
- // html:
- // "<div class='popup-wrapper'>信息内容<br/><br/>XXXXXXXX</div>",
- // position: cartesian3,
- // anchor: [-170, -80],
- // });
- // popup.visible = true;
- // }
- // }
- // );
- },
- changeModel(val) {
- console.log(val);
- if (!val) {
- global.map.models.map(model => {
- if (model.name === '室内') {
- global.map.setModelVisible(model.id, true);
- global.map.flyToModel(model.id);
- } else {
- global.map.setModelVisible(model.id, false);
- }
- });
-
- let viewer = global.map.viewer;
- viewer.scene.skyBox = null;
- viewer.scene.sun.show = false;
- viewer.scene.moon.show = false;
- viewer.scene.globe.show = false;
- viewer.scene.logarithmicDepthBuffer = false;
- viewer.scene.skyAtmosphere.show = false;
- viewer.scene.backgroundColor = Cesium.Color.fromCssColorString(
- 'rgba(0,0,0, 1)'
- );
- } else {
- global.map.models.map(model => {
- if (model.name === '室内') {
- global.map.setModelVisible(model.id, false);
- } else {
- global.map.setModelVisible(model.id, true);
- }
- });
-
- global.map.setViewpoint(
- {
- y: 30.231104,
- x: 120.157372,
- z: 298.45,
- heading: 173,
- pitch: -28.8,
- roll: 6.2,
- },
- { duration: 1.5 }
- );
-
- let viewer = global.map.viewer;
- viewer.scene.skyBox = null;
- viewer.scene.sun.show = true;
- viewer.scene.moon.show = true;
- viewer.scene.globe.show = true;
- viewer.scene.logarithmicDepthBuffer = true;
- viewer.scene.skyAtmosphere.show = true;
- viewer.scene.backgroundColor = Cesium.Color.fromCssColorString(
- 'rgba(0,0,0, 1)'
- );
- }
- },
- },
- };
</script>
<style scoped>
- .map-layout {
- height: 100%;
- position: relative;
- }
-
- .tool-btns {
- position: absolute;
- z-index: 999;
- top: 10px;
- left: 500px;
- }
- .sn-tool {
- position: absolute;
- bottom: 10px;
- right: 10px;
- z-index: 1;
- padding: 3px;
- background: #fff;
- }
- .left-switch {
- margin-right: 10px;
- }
</style>
diff --git a/src/views/doublePreventAction/riskLevelManage/fourColorMap/oneHundredAndThirty/index.vue b/src/views/doublePreventAction/riskLevelManage/fourColorMap/oneHundredAndThirty/index.vue
new file mode 100644
index 0000000..4920741
--- /dev/null
+++ b/src/views/doublePreventAction/riskLevelManage/fourColorMap/oneHundredAndThirty/index.vue
@@ -0,0 +1,288 @@
+<template>
+
+ <div class="map-layout">
+ <Map @init="init" :option="option" v-if="option" />
+ <Tab v-if="loaded" />
+ </div>
+
+
+</template>
+
+<script>
+ import Map from '../../../../../components/Map';
+ import Tab from '../../../../../components/Tab';
+ import { global } from '../../../../../global';
+ import {
+ getCatesian3FromPX,
+ Cartesian3_to_WGS84,
+ } from '../../../../../components/Map/libs/Point';
+
+ export default {
+ name: 'App',
+ components: {
+ Map,
+ Tab,
+ },
+ data() {
+ return {
+ activeName:'first',
+ loaded: false,
+ map: null,
+ option: null,
+ heatLayer: null,
+ shineishiwai: true,
+ };
+ },
+ mounted() {
+ // 地图配置初始化
+ this.option = {
+ // 初始化视图中心点
+ viewpoint: {
+ y: 31.254992,
+ x: 120.727592,
+ z: 289.24,
+ heading: 13.8,
+ pitch: -37.3,
+ roll: 360,
+ },
+
+ // 显示位置初始化按钮
+ homeButton: true,
+
+ // 当前时间
+ currentTime: '08:30:00',
+
+ // 影像底图
+ imageryProvider: new Cesium.WebMapTileServiceImageryProvider({
+ url:
+ 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer',
+ layer: '',
+ style: 'default',
+ tileMatrixSetID: 'w',
+ format: 'tiles',
+ maximumLevel: 18,
+ }),
+ };
+ window.sss = this;
+ },
+ methods: {
+ init(map) {
+ this.loaded = true;
+
+ map.addModel({
+ link: 'http://222.92.213.22:8006/b3dm130/tileset.json',
+ name: '130吨模型图',
+ callback: tileset => {
+ var boundingSphere = tileset.boundingSphere;
+ var cartographic = Cesium.Cartographic.fromCartesian(
+ boundingSphere.center
+ );
+ var surface = Cesium.Cartesian3.fromRadians(
+ cartographic.longitude,
+ cartographic.latitude,
+ 0.0
+ );
+ var offset = Cesium.Cartesian3.fromRadians(
+ cartographic.longitude,
+ cartographic.latitude,
+ 102
+ );
+ var translation = Cesium.Cartesian3.subtract(
+ offset,
+ surface,
+ new Cesium.Cartesian3()
+ );
+ tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
+ },
+ });
+
+ map.viewer.scene.globe.baseColor = Cesium.Color.fromCssColorString(
+ '#050F1F'
+ );
+ map.viewer.scene.logarithmicDepthBuffer = false;
+ map.viewer.scene.globe.enableLighting = true;
+ map.viewer.scene.sun.show = false;
+ map.viewer.scene.moon.show = false;
+ map.viewer.scene.fog.enabled = false;
+ map.viewer.scene.skyBox = null;
+
+ // 初始化事件
+ this.initEvent(map);
+
+ this.testLoadedData();
+ },
+ // 加载测试数据
+ testLoadedData() {
+ const map = global.map;
+ if (!map) return;
+ $.get('./public/data/plots_namisuo.geojson', res => {
+ map.loadGeoJSON(res);
+ });
+ },
+ initEvent(map) {
+ let popup = null;
+ const _this = this;
+ map.on(
+ 'click',
+ ({
+ position,
+ cartesian3,
+ latLngPositionGlobe,
+ latLngPosition,
+ entity,
+ attr,
+ }) => {
+ if (popup) {
+ popup.destroy();
+ popup = null;
+ }
+ let type = entity && entity.attribute && entity.attribute.type;
+ if (type) {
+ popup = new wutu3d.DivPoint(map.viewer, {
+ html:
+ "<div class='popup-wrapper'>" +
+ attr.name +
+ '<br/><br/>XXXXXXXX</div>',
+ position: cartesian3,
+ anchor: [-170, -80],
+ });
+ popup.visible = true;
+ }
+ if (attr.name && attr.name === '含内景大楼') {
+ _this.changeModel(!_this.shineishiwai);
+ _this.shineishiwai = !_this.shineishiwai;
+ }
+
+ const pos = getCatesian3FromPX(position, map.viewer);
+ const pos1 = Cartesian3_to_WGS84(pos);
+ console.log(pos1);
+
+ var pt = turf.point([Number(pos1.lng), Number(pos1.lat)]);
+ var poly = turf.polygon([
+ [
+ [120.159277, 30.227512],
+ [120.158919, 30.227569],
+ [120.158777, 30.227431],
+ [120.158904, 30.227151],
+ [120.15911, 30.227119],
+ [120.159339, 30.227347],
+ [120.159277, 30.227512],
+ ],
+ ]);
+
+ const inPoly = turf.booleanPointInPolygon(pt, poly);
+
+ if (
+ //自己测量对应建筑的空间范围
+ inPoly &&
+ pos1.alt > 0 && //20.562718744748462
+ pos1.alt < 121.7
+ ) {
+ _this.changeModel(!_this.shineishiwai);
+ _this.shineishiwai = !_this.shineishiwai;
+ }
+ }
+ );
+ // map.on(
+ // 'mousemove',
+ // ({ cartesian3, latLngPositionGlobe, latLngPosition, entity, attr }) => {
+ // if (popup) {
+ // popup.destroy();
+ // popup = null;
+ // }
+ // let type = entity && entity.attribute && entity.attribute.type;
+ // if (type) {
+ // popup = new wutu3d.DivPoint(map.viewer, {
+ // html:
+ // "<div class='popup-wrapper'>信息内容<br/><br/>XXXXXXXX</div>",
+ // position: cartesian3,
+ // anchor: [-170, -80],
+ // });
+ // popup.visible = true;
+ // }
+ // }
+ // );
+ },
+ changeModel(val) {
+ console.log(val);
+ if (!val) {
+ global.map.models.map(model => {
+ if (model.name === '室内') {
+ global.map.setModelVisible(model.id, true);
+ global.map.flyToModel(model.id);
+ } else {
+ global.map.setModelVisible(model.id, false);
+ }
+ });
+
+ let viewer = global.map.viewer;
+ viewer.scene.skyBox = null;
+ viewer.scene.sun.show = false;
+ viewer.scene.moon.show = false;
+ viewer.scene.globe.show = false;
+ viewer.scene.logarithmicDepthBuffer = false;
+ viewer.scene.skyAtmosphere.show = false;
+ viewer.scene.backgroundColor = Cesium.Color.fromCssColorString(
+ 'rgba(0,0,0, 1)'
+ );
+ } else {
+ global.map.models.map(model => {
+ if (model.name === '室内') {
+ global.map.setModelVisible(model.id, false);
+ } else {
+ global.map.setModelVisible(model.id, true);
+ }
+ });
+
+ global.map.setViewpoint(
+ {
+ y: 30.231104,
+ x: 120.157372,
+ z: 298.45,
+ heading: 173,
+ pitch: -28.8,
+ roll: 6.2,
+ },
+ { duration: 1.5 }
+ );
+
+ let viewer = global.map.viewer;
+ viewer.scene.skyBox = null;
+ viewer.scene.sun.show = true;
+ viewer.scene.moon.show = true;
+ viewer.scene.globe.show = true;
+ viewer.scene.logarithmicDepthBuffer = true;
+ viewer.scene.skyAtmosphere.show = true;
+ viewer.scene.backgroundColor = Cesium.Color.fromCssColorString(
+ 'rgba(0,0,0, 1)'
+ );
+ }
+ },
+ },
+ };
+</script>
+
+<style scoped>
+ .map-layout {
+ height: 820px;;
+ position: relative;
+ }
+
+ .tool-btns {
+ position: absolute;
+ z-index: 999;
+ top: 10px;
+ left: 500px;
+ }
+ .sn-tool {
+ position: absolute;
+ bottom: 10px;
+ right: 10px;
+ z-index: 1;
+ padding: 3px;
+ background: #fff;
+ }
+ .left-switch {
+ margin-right: 10px;
+ }
+</style>
diff --git a/src/views/doublePreventAction/riskLevelManage/fourColorMap/sixty/index.vue b/src/views/doublePreventAction/riskLevelManage/fourColorMap/sixty/index.vue
new file mode 100644
index 0000000..18f51e6
--- /dev/null
+++ b/src/views/doublePreventAction/riskLevelManage/fourColorMap/sixty/index.vue
@@ -0,0 +1,302 @@
+<template>
+
+ <div class="map-layout">
+ <Map @init="init" :option="option" v-if="option" />
+ <Tab v-if="loaded" />
+ </div>
+
+
+</template>
+
+<script>
+ import Map from '../../../../../components/Map';
+ import Tab from '../../../../../components/Tab';
+ import { global } from '../../../../../global';
+ import {
+ getCatesian3FromPX,
+ Cartesian3_to_WGS84,
+ } from '../../../../../components/Map/libs/Point';
+ import { getMap } from '@/api/fourColorMap'
+ export default {
+ name: 'App',
+ components: {
+ Map,
+ Tab,
+ },
+ data() {
+ return {
+ activeName:'first',
+ loaded: false,
+ map: null,
+ option: null,
+ heatLayer: null,
+ shineishiwai: true,
+ };
+ },
+ mounted() {
+ // 地图配置初始化
+ this.option = {
+ // 初始化视图中心点
+ viewpoint: {
+ y: 31.254992,
+ x: 120.727592,
+ z: 289.24,
+ heading: 13.8,
+ pitch: -37.3,
+ roll: 360,
+ },
+
+ // 显示位置初始化按钮
+ homeButton: true,
+
+ // 当前时间
+ currentTime: '08:30:00',
+
+ // 影像底图
+ imageryProvider: new Cesium.WebMapTileServiceImageryProvider({
+ url:
+ 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer',
+ layer: '',
+ style: 'default',
+ tileMatrixSetID: 'w',
+ format: 'tiles',
+ maximumLevel: 18,
+ }),
+ };
+ window.sss = this;
+ },
+ methods: {
+ init(map) {
+ this.loaded = true;
+
+ map.addModel({
+ link: 'http://222.92.213.22:8006/b3dm60/tileset.json',
+ name: '60吨模型图',
+ callback: tileset => {
+ var boundingSphere = tileset.boundingSphere;
+ var cartographic = Cesium.Cartographic.fromCartesian(
+ boundingSphere.center
+ );
+ var surface = Cesium.Cartesian3.fromRadians(
+ cartographic.longitude,
+ cartographic.latitude,
+ 0.0
+ );
+ var offset = Cesium.Cartesian3.fromRadians(
+ cartographic.longitude,
+ cartographic.latitude,
+ 102
+ );
+ var translation = Cesium.Cartesian3.subtract(
+ offset,
+ surface,
+ new Cesium.Cartesian3()
+ );
+ tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
+ },
+ });
+
+ map.viewer.scene.globe.baseColor = Cesium.Color.fromCssColorString(
+ '#050F1F'
+ );
+ map.viewer.scene.logarithmicDepthBuffer = false;
+ map.viewer.scene.globe.enableLighting = true;
+ map.viewer.scene.sun.show = false;
+ map.viewer.scene.moon.show = false;
+ map.viewer.scene.fog.enabled = false;
+ map.viewer.scene.skyBox = null;
+
+ // 初始化事件
+ this.initEvent(map);
+
+ this.testLoadedData();
+ },
+ // 加载测试数据
+ testLoadedData() {
+ const map = global.map;
+ if (!map) return;
+ let params = {}
+ params['eType'] = 1
+ getMap(params).then(res =>{
+ const list = res.data.result.map(item =>{
+ return{
+ type:item.type,
+ geometry:JSON.parse(item.geometry),
+ properties:JSON.parse(item.properties)
+ }
+ })
+ const fourMapList = {
+ "type": "FeatureCollection",
+ "features": list
+ }
+ debugger
+ map.loadGeoJSON(fourMapList)
+ })
+ },
+ initEvent(map) {
+ let popup = null;
+ const _this = this;
+ map.on(
+ 'click',
+ ({
+ position,
+ cartesian3,
+ latLngPositionGlobe,
+ latLngPosition,
+ entity,
+ attr,
+ }) => {
+ if (popup) {
+ popup.destroy();
+ popup = null;
+ }
+
+ let type = entity && entity.attribute && entity.attribute.type;
+ if (type) {
+ popup = new wutu3d.DivPoint(map.viewer, {
+ html:
+ "<div class='popup-wrapper'>" +
+ attr.name +
+ '<br/><br/>XXXXXXXX</div>',
+ position: cartesian3,
+ anchor: [-170, -80],
+ });
+ popup.visible = true;
+ }
+ if (attr.name && attr.name === '含内景大楼') {
+ _this.changeModel(!_this.shineishiwai);
+ _this.shineishiwai = !_this.shineishiwai;
+ }
+
+ const pos = getCatesian3FromPX(position, map.viewer);
+ const pos1 = Cartesian3_to_WGS84(pos);
+
+ var pt = turf.point([Number(pos1.lng), Number(pos1.lat)]);
+ var poly = turf.polygon([
+ [
+ [120.159277, 30.227512],
+ [120.158919, 30.227569],
+ [120.158777, 30.227431],
+ [120.158904, 30.227151],
+ [120.15911, 30.227119],
+ [120.159339, 30.227347],
+ [120.159277, 30.227512],
+ ],
+ ]);
+
+ const inPoly = turf.booleanPointInPolygon(pt, poly);
+
+ if (
+ //自己测量对应建筑的空间范围
+ inPoly &&
+ pos1.alt > 0 && //20.562718744748462
+ pos1.alt < 121.7
+ ) {
+ _this.changeModel(!_this.shineishiwai);
+ _this.shineishiwai = !_this.shineishiwai;
+ }
+ }
+ );
+ // map.on(
+ // 'mousemove',
+ // ({ cartesian3, latLngPositionGlobe, latLngPosition, entity, attr }) => {
+ // if (popup) {
+ // popup.destroy();
+ // popup = null;
+ // }
+ // let type = entity && entity.attribute && entity.attribute.type;
+ // if (type) {
+ // popup = new wutu3d.DivPoint(map.viewer, {
+ // html:
+ // "<div class='popup-wrapper'>信息内容<br/><br/>XXXXXXXX</div>",
+ // position: cartesian3,
+ // anchor: [-170, -80],
+ // });
+ // popup.visible = true;
+ // }
+ // }
+ // );
+ },
+ changeModel(val) {
+ console.log(val);
+ if (!val) {
+ global.map.models.map(model => {
+ if (model.name === '室内') {
+ global.map.setModelVisible(model.id, true);
+ global.map.flyToModel(model.id);
+ } else {
+ global.map.setModelVisible(model.id, false);
+ }
+ });
+
+ let viewer = global.map.viewer;
+ viewer.scene.skyBox = null;
+ viewer.scene.sun.show = false;
+ viewer.scene.moon.show = false;
+ viewer.scene.globe.show = false;
+ viewer.scene.logarithmicDepthBuffer = false;
+ viewer.scene.skyAtmosphere.show = false;
+ viewer.scene.backgroundColor = Cesium.Color.fromCssColorString(
+ 'rgba(0,0,0, 1)'
+ );
+ } else {
+ global.map.models.map(model => {
+ if (model.name === '室内') {
+ global.map.setModelVisible(model.id, false);
+ } else {
+ global.map.setModelVisible(model.id, true);
+ }
+ });
+
+ global.map.setViewpoint(
+ {
+ y: 30.231104,
+ x: 120.157372,
+ z: 298.45,
+ heading: 173,
+ pitch: -28.8,
+ roll: 6.2,
+ },
+ { duration: 1.5 }
+ );
+
+ let viewer = global.map.viewer;
+ viewer.scene.skyBox = null;
+ viewer.scene.sun.show = true;
+ viewer.scene.moon.show = true;
+ viewer.scene.globe.show = true;
+ viewer.scene.logarithmicDepthBuffer = true;
+ viewer.scene.skyAtmosphere.show = true;
+ viewer.scene.backgroundColor = Cesium.Color.fromCssColorString(
+ 'rgba(0,0,0, 1)'
+ );
+ }
+ },
+ },
+ };
+</script>
+
+<style scoped>
+ .map-layout {
+ height: 850px;;
+ position: relative;
+ }
+
+ .tool-btns {
+ position: absolute;
+ z-index: 999;
+ top: 10px;
+ left: 500px;
+ }
+ .sn-tool {
+ position: absolute;
+ bottom: 10px;
+ right: 10px;
+ z-index: 1;
+ padding: 3px;
+ background: #fff;
+ }
+ .left-switch {
+ margin-right: 10px;
+ }
+</style>
diff --git a/src/views/layout/components/Navbar.vue b/src/views/layout/components/Navbar.vue
index 870bb71..2343d63 100644
--- a/src/views/layout/components/Navbar.vue
+++ b/src/views/layout/components/Navbar.vue
@@ -37,7 +37,7 @@
<el-dialog :visible.sync="appDialogVisible"
:modal-append-to-body="false" :close-on-click-modal="false"
width="320px"
- title="监管APP安卓版浏览器扫码下载">
+ title="APP安卓版浏览器扫码下载">
<div id="appcode" style="height: 200px;width: 200px"/>
</el-dialog>
</div>
@@ -79,6 +79,7 @@
},
data() {
return {
+ prefixUrl:process.env.IMG_API,
warnBJList: [],
warnBJVisible: false,
pageSize: 10,
@@ -124,20 +125,20 @@
methods: {
getAppCode(){
const roles = this.roles
- for (let role in roles){
- if(roles[role].name == '生产企业' ||
- roles[role].name == '销售企业'){
- this.appShow = false;
- }
- }
+ // for (let role in roles){
+ // if(roles[role].name == '生产企业' ||
+ // roles[role].name == '销售企业'){
+ // this.appShow = false;
+ // }
+ // }
const _this = this
const params = {}
- params['filetype'] = "监管"
+ params['filetype'] = "众泰APP"
newAppFile(params).then(response => {
const res = response.data;
if (res.code == 200) {
const result = res.result;
- _this.appCode = result.fileurl
+ _this.appCode = this.prefixUrl + result.fileurl
}
}).catch(error => {
})
diff --git a/src/views/login/components/login-form.vue b/src/views/login/components/login-form.vue
index 1d73ecd..3056ab0 100644
--- a/src/views/login/components/login-form.vue
+++ b/src/views/login/components/login-form.vue
@@ -37,11 +37,18 @@
</div>
</el-form>
</div>
+ <div class="pwd-change-redirect"><el-link :underline="false" type="primary" @click="()=>{ this.$router.push({path:'/pwdChange'})}">忘记密码</el-link></div>
<div class="login-form-button">
<el-button class="login-form-login-button" :loading="logingLoading" type="primary" @click.native.prevent="handleSubmit">
<span>
登录
</span>
+ </el-button>
+ </div>
+
+ <div style="padding-top: 20px" class="login-form-button">
+ <el-button class="register-btn" @click="handleRegister">
+ <span style="color: black">注册</span>
</el-button>
</div>
</div>
@@ -133,6 +140,9 @@
created(){
},
methods: {
+ handleRegister(){
+ this.$router.push({path:'/register'})
+ },
showLoginPwd() {
if (this.loginPasswordType === 'password') {
this.loginPasswordType = ''
@@ -178,7 +188,7 @@
}
.login-form-title{
width: 60px;
- height: 143px;
+ height: 130px;
font-size: 30px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 600;
@@ -232,8 +242,20 @@
}
.login-form-login-button {
width: 364px;
- height: 48px;
+ height: 40px;
background: #4778FF;
border-radius: 4px;
}
+
+ .register-btn{
+ width: 364px;
+ height: 40px;
+ color: white;
+ border-radius: 4px;
+ }
+ .pwd-change-redirect{
+ position: relative;
+ top: 10px;
+ right: 10px;
+ }
</style>
diff --git a/src/views/login/pwdChange.vue b/src/views/login/pwdChange.vue
new file mode 100644
index 0000000..a246398
--- /dev/null
+++ b/src/views/login/pwdChange.vue
@@ -0,0 +1,174 @@
+<template>
+ <div class="register_main">
+ <div class="register_main_body">
+ <span class="register_main_body_span">密码重置</span>
+ </div>
+ <div class="register_main_form">
+ <el-form :model="pwdForm" :rules="rules" ref="ruleForm" label-width="150px">
+ <el-row>
+ <el-col :span="20">
+ <el-form-item label="姓名" prop="username">
+ <el-input v-model="pwdForm.username"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="20">
+ <el-form-item label="手机号(账户)" prop="phone">
+ <el-input v-model="pwdForm.phone" ref="tel"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="20">
+ <el-form-item label="密码" prop="password">
+ <el-input v-model="pwdForm.password"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row>
+ <el-col :span="20">
+ <el-form-item label="确认密码" prop="repassword">
+ <el-input v-model="pwdForm.repassword"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ </el-row>
+ </el-form>
+ <div align="center" style="padding-bottom: 30px">
+ <el-button type="primary" :disabled="submitting" @click="submit()">修改密码</el-button>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import {pwdChange} from "../../api/user";
+import {parseError} from "../../utils/messageDialog";
+
+export default {
+ name: "register",
+ data(){
+ return{
+ submitting: false,
+ pwdForm:{
+ username:'',
+ password:'',
+ repassword:'',
+ phone:'',
+ },
+ rules:{
+ username:[
+ { required: true, message: '请填写姓名', trigger: 'blur' },
+ ],
+ phone:[
+ { required: true, message: '请填写手机号', trigger: 'blur' },
+ ],
+ password:[
+ { required: true, message: '请填写密码', trigger: 'blur' },
+ ],
+ repassword:[
+ { required: true, message: '请填写确认密码', trigger: 'blur' },
+ ],
+
+
+ },
+ }
+ },
+ watch:{
+ },
+ created(){
+
+ },
+ methods:{
+ async submit(){
+ if (this.pwdForm.password !== this.pwdForm.repassword) {
+ this.$message({
+ type:'warning',
+ message:'两次密码输入不一致'
+ })
+ return
+ }
+ if (this.pwdForm.phone.length !== 11) {
+ this.$message({
+ type:'warning',
+ message:'手机号长度不为11'
+ })
+ return
+ }
+ this.$refs["ruleForm"].validate((valid) =>{
+ if(valid){
+ this.register()
+ }else{
+ this.$message({
+ type:'warning',
+ message:'请填写基本信息'
+ })
+ }
+ });
+
+ },
+
+ register(){
+ this.submitting = true
+ pwdChange(this.pwdForm)
+ .then(res=>{
+ if (res.data.code === '200') {
+ this.$message({
+ type:'success',
+ message:'修改成功'
+ })
+ setTimeout(()=>{
+ this.$router.push({path:'/login'})
+ },1000)
+ }else{
+ this.$message({
+ type:'warning',
+ message:res.data.message
+ })
+ }
+ })
+ .catch(err=>{
+ console.log(err)
+ this.$message({
+ type:'warning',
+ message:'请求超时'
+ })
+ })
+ .finally(()=>{
+ this.submitting = false
+ });
+ }
+ }
+}
+</script>
+
+<style rel="stylesheet/scss" lang="scss">
+$dark_gray:#889aa4;
+.register_main{
+ display: block;
+ width: 100%;
+ max-width: 1200px;
+ padding: 0 20px;
+ margin: 30px auto
+}
+.register_main_body{
+ font-size: 24px;
+}
+.register_main_form{
+ padding-top: 70px;
+ margin: 30px auto;
+ max-width: 800px;
+ display: block;
+ width: 100%;
+}
+.register_main_body_span{
+ padding: 6px 5px 6px 15px;
+ color: $dark_gray;
+ vertical-align: middle;
+ width: 30px;
+ display: inline-block;
+}
+</style>
diff --git a/src/views/login/register.vue b/src/views/login/register.vue
index ddf5bd9..c3c8547 100644
--- a/src/views/login/register.vue
+++ b/src/views/login/register.vue
@@ -4,25 +4,12 @@
<span class="register_main_body_span">用户注册</span>
</div>
<div class="register_main_form">
- <el-form :model="registerForm" :rules="rules" ref="ruleForm" label-width="200px">
+ <el-form :model="registerForm" :rules="rules" ref="ruleForm" label-width="150px">
<el-row>
<el-col :span="20">
- <el-form-item label="企业名称" prop="enterprisename">
- <el-input v-model="registerForm.enterprisename" @change="checkNameAndNumber('name')"></el-input>
+ <el-form-item label="姓名" prop="realname">
+ <el-input v-model="registerForm.realname"></el-input>
</el-form-item>
- </el-col>
- <el-col :span="4" style="margin-top:10px;" v-if="showName">
- <span style="margin-left:5px;color: red">企业名称已存在</span>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="20">
- <el-form-item label="企业编号" prop="enterprisenumber">
- <el-input v-model="registerForm.enterprisenumber" @change="checkNameAndNumber('number')"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="4" style="margin-top:10px;" v-if="showNumber">
- <span style="margin-left:5px;color: red">企业编号已存在</span>
</el-col>
</el-row>
<el-row>
@@ -33,943 +20,118 @@
</el-col>
</el-row>
<el-row>
- <el-form-item label="企业类型" prop="type">
- <el-select v-model="registerForm.type" @change="showMaterial">
- <el-option
- v-for="item in typeList"
- :key="item.id"
- :value="item.name"
- :label="item.name"
- ></el-option>
- </el-select>
- </el-form-item>
- </el-row>
- <el-row>
<el-col :span="20">
- <el-form-item label="经营范围" prop="businessrange">
- <el-input v-model="registerForm.businessrange"></el-input>
+ <el-form-item label="手机号(账户)" prop="username">
+ <el-input v-model="registerForm.username" ref="tel"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="20">
- <el-form-item label="负责人" prop="legalperson">
- <el-input v-model="registerForm.legalperson"></el-input>
+ <el-form-item label="身份证" prop="idcard">
+ <el-input v-model="registerForm.idcard" ref="idcard"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
- <el-col :span="20">
- <el-form-item label="负责人手机号" prop="legalpersonphone">
- <el-input v-model="registerForm.legalpersonphone"></el-input>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="10">
- <el-form-item label="许可证开始时间" prop="licensestart">
- <el-date-picker
- value-format="yyyy-MM-dd"
- type="date"
- v-model="registerForm.licensestart"
- placeholder="选择日期时间">
- </el-date-picker>
- </el-form-item>
- </el-col>
- <el-col :span="10">
- <el-form-item label="许可证结束时间" prop="licenseend">
- <el-date-picker
- value-format="yyyy-MM-dd"
- type="date"
- v-model="registerForm.licenseend"
- placeholder="选择日期时间">
- </el-date-picker>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="10">
- <el-form-item label="省:" prop="province">
- <el-select v-model="registerForm.province" clearable filterable @change="changeArea('province')">
- <el-option
- v-for="item in provinceList"
- :key="item.id"
- :label="item.name"
- :value="item.name"
- >
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="10">
- <el-form-item label="市:" prop="city">
- <el-select v-model="registerForm.city" clearable filterable @change="changeArea('city')">
- <el-option
- v-for="item in cityList"
- :key="item.id"
- :label="item.name"
- :value="item.name"
- >
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="10">
- <el-form-item label="区/县:" prop="district">
- <el-select v-model="registerForm.district" clearable filterable @change="changeArea('district')">
- <el-option
- v-for="item in districtList"
- :key="item.id"
- :label="item.name"
- :value="item.name"
- >
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="10">
- <el-form-item label="街道:" prop="street">
- <el-select v-model="registerForm.street" clearable filterable @change="changeArea('street')">
- <el-option
- v-for="item in streetList"
- :key="item.id"
- :label="item.name"
- :value="item.name"
- >
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="10">
- <el-form-item label="居委会:" prop="committee">
- <el-select v-model="registerForm.committee" clearable filterable @change="changeArea('committee')">
- <el-option
- v-for="item in committeeList"
- :key="item.id"
- :label="item.name"
- :value="item.name"
- >
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="20">
- <el-form-item label="详细地址" prop="address">
- <el-input v-model="registerForm.address"></el-input>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row v-if="longMaterial">
- <el-form-item label="企业营业执照、生产许可证:" prop="imgs">
- <el-upload
- action="#"
- list-type="picture-card"
- :file-list="businessLicense"
- :on-change="handleChangeOne"
- :auto-upload="false">
- <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="handlePictureCardPreview(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>
- <el-row v-if="shortMaterial">
- <el-form-item label="法人身份证复印件加盖公章:" prop="imgs">
- <el-upload
- action="#"
- list-type="picture-card"
- :file-list="idCard"
- :on-change="handleChangeTwo"
- :auto-upload="false">
- <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="handlePictureCardPreview(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 v-if="shortMaterial">
- <el-row>
- <el-col :span="10">
- <el-form-item label="有效期开始时间(主要负责人):" prop="legalpersonstart">
- <el-date-picker
- value-format="yyyy-MM-dd"
- type="date"
- v-model="registerForm.legalpersonstart"
- placeholder="选择日期时间">
- </el-date-picker>
- </el-form-item>
- </el-col>
- <el-col :span="10">
- <el-form-item label="结束时间" prop="legalpersonend">
- <el-date-picker
- value-format="yyyy-MM-dd"
- type="date"
- v-model="registerForm.legalpersonend"
- placeholder="选择日期时间">
- </el-date-picker>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row >
- <el-form-item label="主要负责人、安全生产管理人员考核合格的证明材料:" prop="imgs">
- <el-upload
- action="#"
- list-type="picture-card"
- :file-list="legalPerson"
- :on-change="handleChangeThree"
- :auto-upload="false">
- <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=""
+ <el-col :span="11">
+ <el-form-item label="单位:" prop="company">
+ <el-select v-model.trim="registerForm.company" value-key="item" auto-complete="on" style="width:100%;" @change="companyChange">
+ <el-option
+ v-for="item in companyList"
+ :key="item.id"
+ :value="item"
+ :label="item.company"
>
- <span class="el-upload-list__item-actions">
- <span
- class="el-upload-list__item-preview"
- @click="handlePictureCardPreview(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-option>
+ </el-select>
</el-form-item>
- </el-row>
- </div>
- <div v-if="produceMaterial">
- <el-row>
- <el-col :span="10">
- <el-form-item label="有效期开始时间(特种人员):" prop="qualificationstart">
- <el-date-picker
- value-format="yyyy-MM-dd"
- type="date"
- v-model="registerForm.qualificationstart"
- placeholder="选择日期时间">
- </el-date-picker>
- </el-form-item>
- </el-col>
- <el-col :span="10">
- <el-form-item label="结束时间" prop="qualificationend">
- <el-date-picker
- value-format="yyyy-MM-dd"
- type="date"
- v-model="registerForm.qualificationend"
- placeholder="选择日期时间">
- </el-date-picker>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row >
- <el-form-item label="特种作业人员取得操作资格证书的证明材料,从业人员安全生产教育和培训合格的证明材料:" prop="imgs">
- <el-upload
- action="#"
- list-type="picture-card"
- :file-list="operationQualification"
- :on-change="handleChangeFour"
- :auto-upload="false">
- <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="handlePictureCardPreview(file)"
+ </el-col>
+ <el-col :span="9">
+ <el-form-item label="部门:" prop="department" v-if="isMain">
+ <el-select v-model.trim="registerForm.department" auto-complete="on" style="width:100%;">
+ <el-option
+ v-for="item in departmentList"
+ :key="item.id"
+ :value="item.department"
+ :label="item.department"
>
- <i class="el-icon-zoom-in"></i>
- </span>
- <span
- v-if="!disabled"
- class="el-upload-list__item-delete"
- @click="handleRemove(file,'four')"
- >
- <i class="el-icon-delete"></i>
- </span>
- </span>
- </div>
- </el-upload>
+ </el-option>
+ </el-select>
</el-form-item>
- </el-row>
- <el-row>
- <el-col :span="10">
- <el-form-item label="有效期开始时间(押运公司):" prop="escortstart">
- <el-date-picker
- value-format="yyyy-MM-dd"
- type="date"
- v-model="registerForm.escortstart"
- placeholder="选择日期时间">
- </el-date-picker>
- </el-form-item>
- </el-col>
- <el-col :span="10">
- <el-form-item label="结束时间" prop="escortend">
- <el-date-picker
- value-format="yyyy-MM-dd"
- type="date"
- v-model="registerForm.escortend"
- placeholder="选择日期时间">
- </el-date-picker>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-form-item label="押运公司营业执照、道路运输经营许可证、危险品准运证:" prop="imgs">
- <el-upload
- action="#"
- list-type="picture-card"
- :file-list="escortCompany"
- :on-change="handleChangeFive"
- :auto-upload="false">
- <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="handlePictureCardPreview(file)"
- >
- <i class="el-icon-zoom-in"></i>
- </span>
- <span
- v-if="!disabled"
- class="el-upload-list__item-delete"
- @click="handleRemove(file,'five')"
- >
- <i class="el-icon-delete"></i>
- </span>
- </span>
- </div>
- </el-upload>
- </el-form-item>
- </el-row>
- </div>
- <el-row v-if="shortMaterial">
- <el-form-item label="安全责任险、意外险投保材料:" prop="imgs">
- <el-upload
- action="#"
- list-type="picture-card"
- :file-list="insurance"
- :on-change="handleChangeSix"
- :auto-upload="false">
- <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="handlePictureCardPreview(file)"
- >
- <i class="el-icon-zoom-in"></i>
- </span>
- <span
- v-if="!disabled"
- class="el-upload-list__item-delete"
- @click="handleRemove(file,'six')"
- >
- <i class="el-icon-delete"></i>
- </span>
- </span>
- </div>
- </el-upload>
- </el-form-item>
+ </el-col>
</el-row>
- <el-row v-if="buyMaterial">
- <el-form-item label="安全生产标准化证书材料:" prop="imgs">
- <el-upload
- action="#"
- list-type="picture-card"
- :file-list="safetyProduction"
- :on-change="handleChangeSeven"
- :auto-upload="false">
- <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="handlePictureCardPreview(file)"
- >
- <i class="el-icon-zoom-in"></i>
- </span>
- <span
- v-if="!disabled"
- class="el-upload-list__item-delete"
- @click="handleRemove(file,'seven')"
- >
- <i class="el-icon-delete"></i>
- </span>
- </span>
- </div>
- </el-upload>
- </el-form-item>
+ <el-row>
+ </el-row>
+ <el-row>
+ <el-col :span="20">
+ <el-form-item label="职位" prop="job">
+ <el-input v-model="registerForm.job"></el-input>
+ </el-form-item>
+ </el-col>
</el-row>
</el-form>
<div align="center" style="padding-bottom: 30px">
- <el-button type="primary" @click="submit()">同意协议并注册</el-button>
+ <el-button type="primary" :disabled="submitting" @click="submit()">同意协议并注册</el-button>
</div>
- <el-dialog :visible.sync="dialogVisible">
- <img width="100%" :src="dialogImageUrl" alt="">
- </el-dialog>
</div>
</div>
</template>
<script>
import {isNameExist, isNumberExist, register} from "../../api/login";
-import {getCityListData, getProvinceListData} from "../../api/area";
import {parseError} from "../../utils/messageDialog";
+import { getAllCompany } from '@/api/unitManage'
+import { getAllDepartment } from '@/api/departmentManage'
export default {
name: "register",
data(){
return{
- showNumber:false,
- showName:false,
- shortMaterial:false,
- longMaterial:false,
- produceMaterial:false,
- buyMaterial:false,
+ companyList:[],
+ departmentList:[],
+ submitting: false,
+ isMain:false,
registerForm:{
- enterprisename:'',
- enterprisenumber:'',
+ username:'',
+ realname:'',
password:'',
- type:'',
- businessrange:'',
- licensestart:'',
- licenseend:'',
- legalpersonstart:'',
- legalpersonend:'',
- qualificationstart:'',
- qualificationend:'',
- escortstart:'',
- escortend:'',
- legalperson:'',
- legalpersonphone:'',
- province:'',
- city:'',
- district:'',
- street:'',
- committee:'',
- address:'',
+ idcard:'',
+ company:'',
+ department:'',
+ job:''
},
- businessLicense:[],
- idCard:[],
- legalPerson:[],
- operationQualification:[],
- escortCompany:[],
- insurance:[],
- safetyProduction:[],
rules:{
- enterprisename:[
- { required: true, message: '请填写企业名称', trigger: 'blur' },
+ realname:[
+ { required: true, message: '请填写姓名', trigger: 'blur' },
],
- enterprisenumber:[
- { required: true, message: '请填写企业编号', trigger: 'blur' },
+ username:[
+ { required: true, message: '请填写手机号', trigger: 'blur' },
],
password:[
- { required: true, message: '请填写密码', trigger: 'change' },
+ { required: true, message: '请填写密码', trigger: 'blur' },
],
- type:[
- { required: true, message: '请选择企业类型', trigger: 'blur' },
+ idcard:[
+ { required: true, message: '请填写身份证', trigger: 'blur' },
],
- businessrange:[
- { required: true, message: '请填写经营范围', trigger: 'blur' },
- ],
- legalperson:[
- { required: true, message: '请填写负责人', trigger: 'blur' },
- ],
- legalpersonphone:[
- { required: true, message: '请填写负责人电话', trigger: 'blur' },
- ],
- licensestart:[
- { required: true, message: '请填写许可证有效期开始日期', trigger: 'blur' },
- ],
- licenseend:[
- { required: true, message: '请填写许可证有效期结束日期', trigger: 'blur' },
- ],
- province:[
- { required: true, message: '请填写省', trigger: 'change' },
- ],
- city:[
- { required: true, message: '请填写市', trigger: 'change' },
- ],
- district:[
- { required: true, message: '请填写区', trigger: 'change' },
- ],
- address:[
- { required: true, message: '请填写区', trigger: 'blur' },
- ],
- legalpersonstart:[
- { required: true, message: '请填写', trigger: 'change' },
- ],
- legalpersonend:[
- { required: true, message: '请填写', trigger: 'change' },
- ],
- qualificationstart:[
- { required: true, message: '请填写', trigger: 'change' },
- ],
- qualificationend:[
- { required: true, message: '请填写', trigger: 'change' },
- ],
- escortstart:[
- { required: true, message: '请填写', trigger: 'change' },
- ],
- escortend:[
- { required: true, message: '请填写', trigger: 'change' },
+ company:[
+ { required: true, message: '请填写单位', trigger: 'blur' },
],
},
- typeList:[{id:1,name:'烟花爆竹生产'},{id:2,name:'烟花爆竹批发经营'},{id:3,name:'烟花爆竹零售经营(长期)'},{id:4,name:'烟花爆竹零售经营(短期)'}],
- provinceList:[],
- cityList:[],
- districtList: [],
- streetList:[],
- committeeList:[],
- dialogImageUrl: '',
- dialogVisible: false,
- disabled: false
}
},
watch:{
},
created(){
- this.getProvince()
+ //初始化 单位和 部门
+ this.getDepartmentData()
+ this.getCompanyData()
},
methods:{
- handleRemove(file,value) {
- return this.$confirm(`确定移除 ${ file.name }?`,'提示',{
- confirmButtonText:'确定',
- cancelButtonText:'取消',
- type:'warning',
- }).then(()=> {
- switch (value) {
- case 'one':this.businessLicense.splice(this.businessLicense.findIndex(item =>item.name === file.name),1);
- break;
- case 'two':this.idCard.splice(this.idCard.findIndex(item =>item.name === file.name),1);
- break;
- case 'three':this.legalPerson.splice(this.legalPerson.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;
- }
- })
- },
- handlePictureCardPreview(file) {
- this.dialogImageUrl = file.url;
- this.dialogVisible = true;
- },
- handleChangeOne(file, fileList) {
- this.businessLicense = fileList.slice(0);
- },
- handleChangeTwo(file, fileList){
- this.idCard = fileList.slice(0);
- },
- handleChangeThree(file, fileList) {
- this.legalPerson = fileList.slice(0);
- },
- handleChangeFour(file, fileList){
- this.operationQualification = fileList.slice(0);
- },
- handleChangeFive(file, fileList) {
- this.escortCompany = fileList.slice(0);
- },
- handleChangeSix(file, fileList){
- this.insurance = fileList.slice(0);
- },
- handleChangeSeven(file,fileList){
- this.safetyProduction = fileList.slice(0)
- },
- async getProvince(){
- let res = await getProvinceListData()
- if(res.data.code === "200"){
- this.provinceList = res.data.result.provinceList
- }
- },//获取省
async submit(){
this.$refs["ruleForm"].validate((valid) =>{
if(valid){
- if(this.registerForm.type === '烟花爆竹生产' && this.businessLicense.length !== 0 && this.idCard.length !== 0 && this.legalPerson.length !== 0 && this.operationQualification.length !== 0 && this.escortCompany.length !== 0 && this.insurance.length !==0){
- this.businessLicense = this.businessLicense.map((item,index,arr) =>{
- return item.raw
- },this.businessLicense)
- this.idCard = this.idCard.map((item,index,arr) =>{
- return item.raw
- },this.idCard)
- this.legalPerson = this.legalPerson.map((item,index,arr) =>{
- return item.raw
- },this.legalPerson)
- this.operationQualification = this.operationQualification.map((item,index,arr) =>{
- return item.raw
- },this.operationQualification)
- this.escortCompany = this.escortCompany.map((item,index,arr) =>{
- return item.raw
- },this.escortCompany)
- this.insurance = this.insurance.map((item,index,arr) =>{
- return item.raw
- },this.insurance)
- this.safetyProduction = this.safetyProduction.map((item,index,arr) =>{
- return item.raw
- },this.safetyProduction)
- const formData = new FormData();
- for (const i in this.registerForm) {
- if (
- this.registerForm[i] != undefined &&
- this.registerForm[i].toString() != ""
- ) {
- formData.append(i, this.registerForm[i]);
- }
- }
- if (this.businessLicense && this.businessLicense.length > 0) {
- for (let i = 0; i < this.businessLicense.length; i++)
- formData.append("businessLicense", this.businessLicense[i]);
- }
- if (this.idCard && this.idCard.length > 0) {
- for (let i = 0; i < this.idCard.length; i++)
- formData.append("idCard", this.idCard[i]);
- }
- if (this.legalPerson && this.legalPerson.length > 0) {
- for (let i = 0; i < this.legalPerson.length; i++)
- formData.append("legalPersonFile", this.legalPerson[i]);
- }
- if (this.operationQualification && this.operationQualification.length > 0) {
- for (let i = 0; i < this.operationQualification.length; i++)
- formData.append("operationQualification", this.operationQualification[i]);
- }
- if (this.escortCompany && this.escortCompany.length > 0) {
- for (let i = 0; i < this.escortCompany.length; i++)
- formData.append("escortCompany", this.escortCompany[i]);
- }
- if (this.insurance && this.insurance.length > 0) {
- for (let i = 0; i < this.insurance.length; i++)
- formData.append("insurance", this.insurance[i]);
- }
- if (this.safetyProduction && this.safetyProduction.length > 0) {
- for (let i = 0; i < this.safetyProduction.length; i++)
- formData.append("safetyProduction", this.safetyProduction[i]);
- }
- register(formData).then(res =>{
- if(res.data.code === '200'){
- this.$message({
- type:'success',
- message:'注册成功',
- duration:2000,
- title:'成功'
- })
- this.$router.push('/login')
- }else{
- this.$message({
- type:'warning',
- message:res.data.message
- })
- }
- }).catch(error => {
- parseError({error: error, vm: this})
- })
- }else if(this.registerForm.type === '烟花爆竹批发经营'&& this.businessLicense.length !== 0 && this.idCard.length !== 0 && this.legalPerson.length !== 0 && this.operationQualification.length !== 0 && this.escortCompany.length !== 0 && this.insurance.length !== 0 && this.safetyProduction.length !== 0){
- this.businessLicense = this.businessLicense.map((item,index,arr) =>{
- return item.raw
- },this.businessLicense)
- this.idCard = this.idCard.map((item,index,arr) =>{
- return item.raw
- },this.idCard)
- this.legalPerson = this.legalPerson.map((item,index,arr) =>{
- return item.raw
- },this.legalPerson)
- this.operationQualification = this.operationQualification.map((item,index,arr) =>{
- return item.raw
- },this.operationQualification)
- this.escortCompany = this.escortCompany.map((item,index,arr) =>{
- return item.raw
- },this.escortCompany)
- this.insurance = this.insurance.map((item,index,arr) =>{
- return item.raw
- },this.insurance)
- this.safetyProduction = this.safetyProduction.map((item,index,arr) =>{
- return item.raw
- },this.safetyProduction)
- const formData = new FormData();
- for (const i in this.registerForm) {
- if (
- this.registerForm[i] != undefined &&
- this.registerForm[i].toString() != ""
- ) {
- formData.append(i, this.registerForm[i]);
- }
- }
- if (this.businessLicense && this.businessLicense.length > 0) {
- for (let i = 0; i < this.businessLicense.length; i++)
- formData.append("businessLicense", this.businessLicense[i]);
- }
- if (this.idCard && this.idCard.length > 0) {
- for (let i = 0; i < this.idCard.length; i++)
- formData.append("idCard", this.idCard[i]);
- }
- if (this.legalPerson && this.legalPerson.length > 0) {
- for (let i = 0; i < this.legalPerson.length; i++)
- formData.append("legalPersonFile", this.legalPerson[i]);
- }
- if (this.operationQualification && this.operationQualification.length > 0) {
- for (let i = 0; i < this.operationQualification.length; i++)
- formData.append("operationQualification", this.operationQualification[i]);
- }
- if (this.escortCompany && this.escortCompany.length > 0) {
- for (let i = 0; i < this.escortCompany.length; i++)
- formData.append("escortCompany", this.escortCompany[i]);
- }
- if (this.insurance && this.insurance.length > 0) {
- for (let i = 0; i < this.insurance.length; i++)
- formData.append("insurance", this.insurance[i]);
- }
- if (this.safetyProduction && this.safetyProduction.length > 0) {
- for (let i = 0; i < this.safetyProduction.length; i++)
- formData.append("safetyProduction", this.safetyProduction[i]);
- }
- register(formData).then(res =>{
- if(res.data.code === '200'){
- this.$message({
- type:'success',
- message:'注册成功',
- duration:2000,
- title:'成功'
- })
- this.$router.push('/login')
- }else{
- this.$message({
- type:'warning',
- message:res.data.message
- })
- }
- }).catch(error => {
- parseError({error: error, vm: this})
- })
- }else if(this.registerForm.type === '烟花爆竹零售经营(长期)' && this.businessLicense.length !== 0 && this.idCard.length !== 0 && this.legalPerson.length !== 0 && this.insurance.length !== 0){
- this.businessLicense = this.businessLicense.map((item,index,arr) =>{
- return item.raw
- },this.businessLicense)
- this.idCard = this.idCard.map((item,index,arr) =>{
- return item.raw
- },this.idCard)
- this.legalPerson = this.legalPerson.map((item,index,arr) =>{
- return item.raw
- },this.legalPerson)
- this.operationQualification = this.operationQualification.map((item,index,arr) =>{
- return item.raw
- },this.operationQualification)
- this.escortCompany = this.escortCompany.map((item,index,arr) =>{
- return item.raw
- },this.escortCompany)
- this.insurance = this.insurance.map((item,index,arr) =>{
- return item.raw
- },this.insurance)
- this.safetyProduction = this.safetyProduction.map((item,index,arr) =>{
- return item.raw
- },this.safetyProduction)
- const formData = new FormData();
- for (const i in this.registerForm) {
- if (
- this.registerForm[i] != undefined &&
- this.registerForm[i].toString() != ""
- ) {
- formData.append(i, this.registerForm[i]);
- }
- }
- if (this.businessLicense && this.businessLicense.length > 0) {
- for (let i = 0; i < this.businessLicense.length; i++)
- formData.append("businessLicense", this.businessLicense[i]);
- }
- if (this.idCard && this.idCard.length > 0) {
- for (let i = 0; i < this.idCard.length; i++)
- formData.append("idCard", this.idCard[i]);
- }
- if (this.legalPerson && this.legalPerson.length > 0) {
- for (let i = 0; i < this.legalPerson.length; i++)
- formData.append("legalPersonFile", this.legalPerson[i]);
- }
- if (this.operationQualification && this.operationQualification.length > 0) {
- for (let i = 0; i < this.operationQualification.length; i++)
- formData.append("operationQualification", this.operationQualification[i]);
- }
- if (this.escortCompany && this.escortCompany.length > 0) {
- for (let i = 0; i < this.escortCompany.length; i++)
- formData.append("escortCompany", this.escortCompany[i]);
- }
- if (this.insurance && this.insurance.length > 0) {
- for (let i = 0; i < this.insurance.length; i++)
- formData.append("insurance", this.insurance[i]);
- }
- if (this.safetyProduction && this.safetyProduction.length > 0) {
- for (let i = 0; i < this.safetyProduction.length; i++)
- formData.append("safetyProduction", this.safetyProduction[i]);
- }
- register(formData).then(res =>{
- if(res.data.code === '200'){
- this.$message({
- type:'success',
- message:'注册成功',
- duration:2000,
- title:'成功'
- })
- this.$router.push('/login')
- }else{
- this.$message({
- type:'warning',
- message:res.data.message
- })
- }
- }).catch(error => {
- parseError({error: error, vm: this})
- })
- }else if(this.registerForm.type==='烟花爆竹零售经营(短期)' && this.idCard.length !== 0 && this.legalPerson.length !== 0 && this.insurance.length !== 0){
- this.businessLicense = this.businessLicense.map((item,index,arr) =>{
- return item.raw
- },this.businessLicense)
- this.idCard = this.idCard.map((item,index,arr) =>{
- return item.raw
- },this.idCard)
- this.legalPerson = this.legalPerson.map((item,index,arr) =>{
- return item.raw
- },this.legalPerson)
- this.operationQualification = this.operationQualification.map((item,index,arr) =>{
- return item.raw
- },this.operationQualification)
- this.escortCompany = this.escortCompany.map((item,index,arr) =>{
- return item.raw
- },this.escortCompany)
- this.insurance = this.insurance.map((item,index,arr) =>{
- return item.raw
- },this.insurance)
- this.safetyProduction = this.safetyProduction.map((item,index,arr) =>{
- return item.raw
- },this.safetyProduction)
- const formData = new FormData();
- for (const i in this.registerForm) {
- if (
- this.registerForm[i] != undefined &&
- this.registerForm[i].toString() != ""
- ) {
- formData.append(i, this.registerForm[i]);
- }
- }
- if (this.businessLicense && this.businessLicense.length > 0) {
- for (let i = 0; i < this.businessLicense.length; i++)
- formData.append("businessLicense", this.businessLicense[i]);
- }
- if (this.idCard && this.idCard.length > 0) {
- for (let i = 0; i < this.idCard.length; i++)
- formData.append("idCard", this.idCard[i]);
- }
- if (this.legalPerson && this.legalPerson.length > 0) {
- for (let i = 0; i < this.legalPerson.length; i++)
- formData.append("legalPersonFile", this.legalPerson[i]);
- }
- if (this.operationQualification && this.operationQualification.length > 0) {
- for (let i = 0; i < this.operationQualification.length; i++)
- formData.append("operationQualification", this.operationQualification[i]);
- }
- if (this.escortCompany && this.escortCompany.length > 0) {
- for (let i = 0; i < this.escortCompany.length; i++)
- formData.append("escortCompany", this.escortCompany[i]);
- }
- if (this.insurance && this.insurance.length > 0) {
- for (let i = 0; i < this.insurance.length; i++)
- formData.append("insurance", this.insurance[i]);
- }
- if (this.safetyProduction && this.safetyProduction.length > 0) {
- for (let i = 0; i < this.safetyProduction.length; i++)
- formData.append("safetyProduction", this.safetyProduction[i]);
- }
- register(formData).then(res =>{
- if(res.data.code === '200'){
- this.$message({
- type:'success',
- message:'注册成功',
- duration:2000,
- title:'成功'
- })
- this.$router.push('/login')
- }else{
- this.$message({
- type:'warning',
- message:res.data.message
- })
- }
- }).catch(error => {
- parseError({error: error, vm: this})
- })
- }else{
- this.$message({
- type:'warning',
- message:'请提交相关材料'
- })
- }
+ this.register()
}else{
this.$message({
type:'warning',
@@ -979,136 +141,73 @@
})
},
- async changeArea(value){
- if(value === 'province'){
- this.registerForm.city = ''
- this.registerForm.district = ''
- this.registerForm.street = ''
- this.registerForm.committee = ''
- this.areaListQuery = {
- type: 2,
- parenttype: 1,
- parentname: this.registerForm.province,
+ getDepartmentData(){
+ getAllDepartment().then(res=>{
+ if(res.data.code === '200'){
+ this.departmentList = res.data.result
+ }else{
+ this.$message({
+ type:'warning',
+ message:res.data.message
+ })
}
- let res = await getCityListData(this.areaListQuery)
- if(res.data.code === "200"){
- this.cityList = res.data.result
+ }).catch(error =>{
+ parseError({error:error,vm:this})
+ })
+ },
+ getCompanyData(){
+ getAllCompany().then(res=>{
+ if(res.data.code === '200'){
+ this.companyList = res.data.result
+ }else{
+ this.$message({
+ type:'warning',
+ message:res.data.message
+ })
}
- }else if(value === 'city'){
- this.registerForm.district = ''
- this.registerForm.street = ''
- this.registerForm.committee = ''
- this.areaListQuery = {
- type: 3,
- parenttype: 2,
- parentname: this.registerForm.city,
- }
- let res = await getCityListData(this.areaListQuery)
- if(res.data.code === "200"){
- this.districtList = res.data.result
- }
- }else if(value === 'district'){
- this.registerForm.street = ''
- this.registerForm.committee = ''
- this.areaListQuery = {
- type: 4,
- parenttype: 3,
- parentname: this.registerForm.district,
- }
- let res = await getCityListData(this.areaListQuery)
- if(res.data.code === "200"){
- this.streetList = res.data.result
- }
- }else if(value === 'street'){
- this.registerForm.committee = ''
- this.areaListQuery = {
- type: 5,
- parenttype: 4,
- parentname: this.registerForm.street,
- }
- let res = await getCityListData(this.areaListQuery)
- if(res.data.code === "200"){
- this.committeeList = res.data.result
- }
- }
- },//市、镇、街道、委员会
- showMaterial(){
- if(this.registerForm.type === '烟花爆竹生产'){
- this.shortMaterial = true
- this.longMaterial = true
- this.produceMaterial = true
- this.buyMaterial = false
- }else if(this.registerForm.type === '烟花爆竹批发经营'){
- this.shortMaterial = true
- this.longMaterial = true
- this.produceMaterial = true
- this.buyMaterial = true
- }else if(this.registerForm.type === '烟花爆竹零售经营(长期)'){
- this.shortMaterial = true
- this.longMaterial = true
- this.produceMaterial = false
- this.buyMaterial = false
+ }).catch(error =>{
+ parseError({error:error,vm:this})
+ })
+ },
+ companyChange(val){
+ this.registerForm.company = val.company
+ if (val.ismain === 1) {
+ this.isMain = true;
}else{
- this.shortMaterial = true
- this.longMaterial = false
- this.produceMaterial = false
- this.buyMaterial = false
+ this.isMain = false;
+ this.registerForm.department = ''
}
},
- checkNameAndNumber(value){
- if(value === 'name'){
- isNameExist(this.registerForm.enterprisename).then(res =>{
- if(res.data.code === '200'){
- if(res.data.result === true) {
- this.showName = true
- this.$message({
- type: 'warning',
- message: '企业名称已存在',
- })
- }else{
- this.$message({
- type:'success',
- message:'企业名称可以使用'
- })
- this.showName = false
- }
+
+ register(){
+ this.submitting = true
+ register(this.registerForm)
+ .then(res=>{
+ if (res.data.code === '200') {
+ this.$message({
+ type:'success',
+ message:'注册成功'
+ })
+ setTimeout(()=>{
+ this.$router.push({path:'/login'})
+ },1000)
}else{
- this.showName = false
this.$message({
type:'warning',
- message:res.data.message,
+ message:res.data.message
})
}
- }).catch(error => {
- parseError({error: error, vm: this})
})
- }else if(value === 'number'){
- isNumberExist(this.registerForm.enterprisenumber).then(res =>{
- if(res.data.code === '200'){
- if(res.data.result === true) {
- this.showNumber = true
- this.$message({
- type: 'warning',
- message: '企业编号已存在',
- })
- }else{
- this.$message({
- type:'success',
- message:'企业编号可以使用'
- })
- this.showNumber = false
- }
- }else{
- this.showNumber = false
- this.$message({
- type:'warning',
- message:res.data.message,
- })
- }
- }).catch(error => {
- parseError({error: error, vm: this})
+ .catch(err=>{
+ console.log(err)
+ this.$message({
+ type:'warning',
+ message:'请求超时'
+ })
})
- }
+ .finally(()=>{
+ this.submitting = false
+ })
}
}
}
@@ -1129,7 +228,7 @@
.register_main_form{
padding-top: 70px;
margin: 30px auto;
- max-width: 900px;
+ max-width: 800px;
display: block;
width: 100%;
}
diff --git a/src/views/majorHazardSourceMonitoring/productionEquipment/index.vue b/src/views/majorHazardSourceMonitoring/productionEquipment/index.vue
index 46f0476..2949b54 100644
--- a/src/views/majorHazardSourceMonitoring/productionEquipment/index.vue
+++ b/src/views/majorHazardSourceMonitoring/productionEquipment/index.vue
@@ -129,6 +129,7 @@
v-model="form.userId"
placeholder="请选择负责人"
style="width: 100%"
+ filterable
>
<el-option
v-for="item in personInCharge"
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>
diff --git a/src/views/systemManage/appFile/index.vue b/src/views/systemManage/appFile/index.vue
new file mode 100644
index 0000000..cf26ca0
--- /dev/null
+++ b/src/views/systemManage/appFile/index.vue
@@ -0,0 +1,469 @@
+<template>
+ <div class="app-container">
+ <div>
+ <el-select v-model="queryForm.filetype" clearable placeholder="请选择文件类型">
+ <el-option
+ class="filter-item"
+ @keyup.enter.native="queryHandle"
+ v-for="item in fileType"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ <el-button v-if="getBtnPermission('add')" class="filter-item" style="margin-left: 10px;" type="primary"
+ icon="el-icon-plus" @click="showCreateHandle">新增
+ </el-button>
+ <el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-refresh"
+ @click="refreshHandle">刷新
+ </el-button>
+ <el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-search"
+ @click="queryHandle"/>
+ </div>
+ <div class="table_content">
+ <el-table
+ v-loading="listLoading"
+ :key="tableKey"
+ :data="appFileData"
+ border
+ fit
+ highlight-current-row
+ style="width: 100%;"
+ @sort-change="sortChange"
+ >
+ <el-table-column type="index" label="序号" align="center" width="80"/>
+ <el-table-column label="文件类型" prop="filetype" align="center" sortable="custom">
+ <template slot-scope="scope">
+ <span>{{ scope.row.filetype }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="文件名称" prop="filename" align="center" sortable="custom">
+ <template slot-scope="scope">
+ <span>{{ scope.row.filename }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="文件链接" prop="fileurl" align="center" sortable="custom">
+ <template slot-scope="scope">
+ <span style="color:blue;cursor:pointer"
+ @click="downloadHandle(prefixUrl +scope.row.fileurl)"
+ >{{ prefixUrl + scope.row.fileurl }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="版本号" prop="version" align="center" sortable="custom">
+ <template slot-scope="scope">
+ <span>{{ scope.row.version }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="备注" prop="remark" align="center" sortable="custom">
+ <template slot-scope="scope">
+ <span>{{ scope.row.remark }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="创建时间" prop="created" align="center" sortable="custom">
+ <template slot-scope="scope">
+ <span>{{ scope.row.created | parseTime('{y}-{m}-{d}') }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="更新时间" prop="updated" align="center" sortable="custom">
+ <template slot-scope="scope">
+ <span>{{ scope.row.updated | parseTime('{y}-{m}-{d}') }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="操作" align="center" width="240" class-name="small-padding fixed-width">
+ <template slot-scope="scope">
+ <el-button v-if="getBtnPermission('edit')" type="text" @click="showEditHandle(scope.row)">编辑</el-button>
+ <el-button v-if="getBtnPermission('delete')" type="text" style="color:red;" @click="deleteHandle(scope.row)">删除</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"
+ />
+ </div>
+ <el-dialog :title="dialogStatus==='create'?'新增':'编辑'" :visible.sync="dialogFormVisible"
+ :modal-append-to-body="false" :close-on-click-modal="false" width="600px">
+ <el-form ref="dataForm" :rules="dataFormRules" :model="dataForm" label-position="right" label-width="140px"
+ style="margin-left:30px;width:550px;" element-loading-text="保存中...">
+ <el-row>
+ <el-col :span="13">
+ <el-form-item label="文件类型:" prop="filetype">
+ <el-select v-model="dataForm.filetype" clearable placeholder="请选择文件类型">
+ <el-option
+ class="filter-item"
+ @keyup.enter.native="queryHandle"
+ v-for="item in fileType"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="15">
+ <el-form-item label="文件名称:" prop="filename">
+ <el-input v-model.trim="dataForm.filename" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-form-item label="上传文件:">
+ <input id="importFileInput" ref="importFileInput" type="file" accept=""/>
+ </el-form-item>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="版本号:" prop="version">
+ <el-input v-model.trim="dataForm.version" type="number"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="20">
+ <el-form-item label="备注:" prop="remark">
+ <el-input v-model.trim="dataForm.remark" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible = false">取消</el-button>
+ <el-button type="primary" @click="dialogStatus==='create'?createHandle():updateHandle()">确认</el-button>
+ </div>
+ </el-dialog>
+ <div style="clear: both;"></div>
+ </div>
+</template>
+
+<script>
+ import Cookies from 'js-cookie'
+ import { checkBtnPermission} from "@/utils/permission";
+ import { appFileList, addAppFile, editAppFile, delAppFile } from "@/api/appfile";
+ import { parseError} from "@/utils/messageDialog";
+ import { computePageCount} from "@/utils";
+ import { mapGetters} from "vuex";
+ import { dictionaryAllItems } from '@/api/dictionary';
+ import { Message, MessageBox } from 'element-ui'
+
+ export default {
+ name: "appfile",
+ filters : {
+ parseGX(value){
+ let arr = value.split('-');
+ let guanxia='';
+ for (let i = 0; i < arr.length; i++){
+ if (arr[i] == null || arr[i] == '' || arr[i] == 'null'){
+ }else {
+ if (i == 0){
+ guanxia = arr[i];
+ }else {
+ guanxia += '-'+arr[i];
+ }
+ }
+ }
+ return guanxia;
+ }
+ },
+ data() {
+ return {
+ prefixUrl:process.env.IMG_API,
+ pageSize: 10,
+ recordTotal: 0,
+ currentPage: 1,
+ pageTotal: 0,
+ tableKey: 0,
+ appFileData: null,
+ listLoading: true,
+ dataForm: {
+ id: '',
+ filetype: '',
+ filename:'',
+ fileurl:'',
+ version:'',
+ remark:'',
+ file:'',
+ },
+ queryForm: {
+ filetype:'',
+ },
+ dialogFormVisible: false,
+ dialogStatus: '',
+ dataFormRules: {
+ filetype: [{required: true, message: '文件类型不能为空', trigger: 'blur'}],
+ version: [{required: true, message: '版本不能为空', trigger: 'blur'}],
+ },
+ fileType:[],
+ productVoList:[],
+ productVoDialogVisible:false,
+
+ productDialogFormVisible:false,
+ productData:[],
+ pageSizeProduct: 10,
+ currentPageProduct: 1,
+ recordTotalProduct: 0,
+ pageTotalProduct: 0,
+ queryProductForm: {
+ name: '',
+ manufacturer:'',
+ directionCode:'',
+ type:'',
+ },
+
+ manufacturer:'',
+ enterpriseList : [],
+ enterpriseDialogFormVisible:false,
+ pageSizeEnterpise: 10,
+ currentPageEnterpise: 1,
+ recordTotalEnterpise: 0,
+ pageTotalEnterpise: 0,
+ }
+ },
+ created() {
+ this.getAppFileListList();
+ this.getDictionaryStatusList();
+ },
+ computed: {
+ ...mapGetters([
+ 'userType',
+ 'username'
+ ])
+ },
+ methods: {
+ handleSizeChangeProduct: function (val) {
+ this.pageSizeProduct = val
+ this.currentPageProduct = 1
+ this.getProductList()
+ },
+ handleCurrentChangeProduct: function (val) {
+ this.currentPageProduct = val
+ this.getProductList()
+ },
+ getDictionaryStatusList(){
+ const _this = this
+ if (_this.fileType && _this.fileType.length > 0) {
+ return
+ }
+ const params = {}
+ params['dictionaryType'] = 'APP版本'
+ dictionaryAllItems(params).then(response => {
+ const res = response.data
+ if (res.code == 200) {
+ _this.fileType = res.result
+ } else {
+ parseError({ error: res.data.message, vm: _this })
+ }
+ }).catch(error => {
+ parseError({ error: error, vm: _this })
+ })
+ },
+ getAppFileListList() {
+ const _this = this
+ const params = {}
+ params['pageIndex'] = _this.currentPage
+ params['pageSize'] = _this.pageSize
+ params['sort'] = _this.sort
+ params['order'] = _this.order
+ for (const i in _this.queryForm) {
+ if (_this.queryForm[i] != undefined && _this.queryForm[i].toString() != '') {
+ params[i] = _this.queryForm[i]
+ }
+ }
+ _this.listLoading = true
+ appFileList(params).then(response => {
+ const res = response.data;
+ if (res.code == 200) {
+ const result = res.result;
+ _this.recordTotal = result.totalCount;
+ _this.pageSize = result.pageSize;
+ _this.pageTotal = computePageCount(result.totalCount, result.pageSize);
+ _this.currentPage = result.pageIndex;
+ _this.appFileData = result.result
+ } else {
+ parseError({error: res.data.message, vm: _this})
+ }
+ _this.listLoading = false
+ }).catch(error => {
+ _this.listLoading = false
+ parseError({error: error, vm: _this})
+ })
+ },
+ createHandle: function () {
+ const _this = this
+ this.$refs['dataForm'].validate((valid) => {
+ if (valid) {
+ const formData = new FormData();
+ const files = this.$refs["importFileInput"].files;
+ if (files.length > 0){
+ formData.append('file', files[0]);
+ }else {
+ parseError({ error: '请上传文件', vm: this })
+ return
+ }
+ formData.append('filetype', _this.dataForm.filetype);
+ formData.append('filename', _this.dataForm.filename);
+ formData.append('version', _this.dataForm.version);
+ formData.append('remark', _this.dataForm.remark);
+ addAppFile(formData).then(response => {
+ const res = response.data
+ if (res.code == 200) {
+ _this.dialogFormVisible = false
+ _this.$message({
+ message: '创建成功',
+ type: 'success'
+ });
+ _this.getAppFileListList()
+ } else {
+ parseError({error: res.data.message, vm: _this})
+ }
+ }).catch(error => {
+ parseError({error: error, vm: _this})
+ })
+ }
+ })
+ },
+ deleteHandle: function (row) {
+ const _this = this
+ MessageBox.confirm('确定删除信息', '确定删除', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ _this.deleteAction(row)
+ }).catch(() => {
+ console.log('已取消删除')
+ })
+ },
+ deleteAction: function (row) {
+ const _this = this;
+ const params = {}
+ params['id'] = row.id;
+ delAppFile(params).then(response => {
+ const res = response.data
+ if (res.code == 200) {
+ _this.$message({
+ message: '删除成功',
+ type: 'success'
+ })
+ _this.getAppFileListList()
+ } else {
+ parseError({error: res.data.message, vm: _this})
+ }
+ }).catch(error => {
+ parseError({error: error, vm: _this})
+ })
+ },
+ refreshHandle: function () {
+ this.getAppFileListList()
+ },
+ queryHandle: function () {
+ this.currentPage = 1
+ this.getAppFileListList()
+ },
+ resetDataForm() {
+ this.dataForm = {
+ id: '',
+ filetype: '',
+ filename:'',
+ fileurl:'',
+ version:'',
+ remark:'',
+ }
+ },
+ showCreateHandle() {
+ this.resetDataForm()
+ this.dialogStatus = 'create'
+ this.dialogFormVisible = true
+ this.$nextTick(() => {
+ this.$refs['dataForm'].clearValidate()
+ })
+ },
+ updateHandle() {
+ this.$refs['dataForm'].validate((valid) => {
+ const _this = this
+ if (valid) {
+ const formData = new FormData();
+ formData.append('id', _this.dataForm['id']);
+ formData.append('filetype', _this.dataForm['filetype']);
+ formData.append('filename', _this.dataForm.filename);
+ formData.append('version', _this.dataForm.version);
+ formData.append('remark', _this.dataForm.remark);
+ const files = this.$refs["importFileInput"].files;
+ if (files.length > 0){
+ formData.append('file', files[0]);
+ }
+ editAppFile(formData).then(response => {
+ const res = response.data
+ if (res.code == 200) {
+ _this.dialogFormVisible = false
+ _this.$message({
+ message: '更新成功',
+ type: 'success'
+ });
+ _this.getAppFileListList()
+ } else {
+ parseError({error: res.data.message, vm: _this})
+ }
+ }).catch(error => {
+ parseError({error: error, vm: _this})
+ })
+ }
+ })
+ },
+ showEditHandle: function (row) {
+ this.resetDataForm();
+ this.dialogStatus = 'editor';
+ this.dataForm.id = row.id;
+ this.dataForm.filetype = row.filetype;
+ this.dataForm.filename = row.filename;
+ this.dataForm.fileurl = row.fileurl;
+ this.dataForm.version = row.version;
+ this.dataForm.remark = row.remark;
+ this.dialogFormVisible = true;
+ this.$nextTick(() => {
+ this.$refs['dataForm'].clearValidate()
+ })
+ },
+ handleSizeChange: function (val) {
+ this.pageSize = val
+ this.currentPage = 1
+ this.getAppFileListList()
+ },
+ handleCurrentChange: function (val) {
+ this.currentPage = val
+ this.getAppFileListList()
+ },
+ getBtnPermission(btnType) {
+ return checkBtnPermission(this.userType, btnType)
+ },
+ sortChange(param){
+ this.sort = param.prop;
+ this.order = param.order;
+ this.getAppFileListList();
+ },
+ showProductHandle(){
+ this.productDialogFormVisible = true;
+ },
+ showEnterprise(){
+ this.enterpriseDialogFormVisible = true;
+ },
+ downloadHandle(fileurl){
+ window.open(fileurl, '_blank')
+ ;
+ },
+
+ }
+ }
+</script>
+
+<style scoped>
+
+</style>
diff --git a/src/views/systemManage/userManage/index.vue b/src/views/systemManage/userManage/index.vue
index 1dc2708..8db5777 100644
--- a/src/views/systemManage/userManage/index.vue
+++ b/src/views/systemManage/userManage/index.vue
@@ -11,6 +11,15 @@
@keyup.enter.native="queryHandle"
/>
</el-form-item>
+ <el-form-item label="真实姓名">
+ <el-input
+ v-model="queryForm.realname"
+ class="filter-item"
+ placeholder=""
+ style="width: 150px;"
+ @keyup.enter.native="queryHandle"
+ />
+ </el-form-item>
<el-form-item label="单位">
<el-input
v-model="queryForm.company"
@@ -67,6 +76,17 @@
icon="el-icon-upload2"
@click="showImportHandle"
>导入</el-button>
+ </el-form-item>
+ <el-form-item>
+ <el-button
+ v-if="getBtnPermission('export')"
+ v-show="userType != 3"
+ class="filter-item"
+ style="margin-left: 10px;"
+ type="primary"
+ icon="el-icon-upload2"
+ @click="showExportHandle"
+ >导出</el-button>
</el-form-item>
</el-form>
</div>
@@ -328,11 +348,11 @@
<el-row>
<el-col :span="12">
<el-form-item label="单位:" prop="company">
- <el-select v-model.trim="dataForm.company" auto-complete="on" style="width:100%;">
+ <el-select v-model.trim="dataForm.company" value-key="item" auto-complete="on" style="width:100%;" @change="companyChange">
<el-option
v-for="item in companyList"
:key="item.id"
- :value="item.company"
+ :value="item"
:label="item.company"
>
</el-option>
@@ -340,7 +360,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="部门:" prop="department">
+ <el-form-item label="部门:" prop="department" v-if="isMain">
<el-select v-model.trim="dataForm.department" auto-complete="on" style="width:100%;">
<el-option
v-for="item in departmentList"
@@ -634,8 +654,10 @@
tableKey: 0,
userData: null,
listLoading: true,
+ isMain:false,
iscompanyList:[{id:1,name:'否'},{id:0,name:'是'}],
queryForm: {
+ realname:'',
username: '',
company:'',
department:'',
@@ -710,6 +732,7 @@
userRoleDataFormRules: {
userRoles: [{ type: 'array', required: true, message: '角色不能为空', trigger: 'change' }]
},
+ typeList:[{id:1,name:'超级管理员'},{id:2,name:'管理员'},{id:3,name:'普通用户'}],
roleList: [],
passwordType: 'password',
confirmPasswordType: 'password',
@@ -739,6 +762,15 @@
this.order = param.order;
this.getUserList()
},
+ companyChange(val){
+ this.dataForm.company = val.company
+ if (val.ismain === 1) {
+ this.isMain = true;
+ }else{
+ this.isMain = false;
+ this.dataForm.department = ''
+ }
+ },
getUserList() {
const _this = this
const params = {}
@@ -747,6 +779,7 @@
params['pageIndex'] = _this.currentPage
params['pageSize'] = _this.pageSize
params['type'] = _this.userType
+ params['realname'] = _this.realname
params['isMain'] = true
for (const i in _this.queryForm) {
if (_this.queryForm[i] != undefined && _this.queryForm[i].toString() != '') {
@@ -991,6 +1024,8 @@
this.dataForm.password = null
this.dialogStatus = 'update'
this.dialogFormVisible = true
+ let ismain = this.companyList.find(item=>item.company === row.company).ismain
+ this.isMain = ismain === 1;
this.$nextTick(() => {
this.$refs['dataForm'].clearValidate()
})
@@ -1048,6 +1083,70 @@
showImportHandle() {
this.importDisabled = false
this.importDialogFormVisible = true
+ },
+
+
+ showExportHandle() {
+ const _this = this
+ const params = {}
+ params['sort'] = _this.sort
+ params['order'] = _this.order
+ params['pageIndex'] = 0
+ params['pageSize'] = 99999
+ params['type'] = _this.userType
+ params['realname'] = _this.realname
+ params['isMain'] = true
+ for (const i in _this.queryForm) {
+ if (_this.queryForm[i] != undefined && _this.queryForm[i].toString() != '') {
+ params[i] = _this.queryForm[i]
+ }
+ }
+ userList(params)
+ .then((response) => {
+ const res = response.data
+ if (res.code == 200) {
+ const allData = res.result.result
+ if (allData.length == 0) {
+ parseError({ error: '没有录入数据', vm: _this })
+ return
+ }
+ import('@/vendor/Export2Excel').then((excel) => {
+ const tHeader = [
+ '用户名',
+ '真实姓名',
+ '身份证号',
+ '单位',
+ '部门',
+ '职位',
+ '用户类型',
+ '角色',
+ ]
+
+ const data = allData.map(v=>{
+ return [
+ v.username,
+ v.realname,
+ v.idcard,
+ v.company,
+ v.department,
+ v.job,
+ this.typeList.find(item=>item.id === v.type).name,
+ v.roles.map(item=>item.name).join(","),
+ ]
+ })
+ excel.export_json_to_excel({
+ header: tHeader,
+ data,
+ filename: '用户'
+ })
+ })
+ } else {
+ parseError({ error: res.message, vm: _this })
+ }
+ })
+ .catch((error) => {
+ parseError({ error: error, vm: _this })
+ })
},
viewHandle() {
window.open(exampleFile, '_blank')
@@ -1244,7 +1343,6 @@
const _this = this;
bindCard(_this.cardDataForm).then(response => {
const res = response.data
- debugger
if (res.code === '200'){
_this.$message({
message: '绑定成功',
--
Gitblit v1.9.2