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