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