From 596a6831ceb5417e2f4fb71f9e2dd1d2e2bcb6f8 Mon Sep 17 00:00:00 2001 From: Your Name <123456> Date: 星期五, 14 十月 2022 10:25:26 +0800 Subject: [PATCH] lct --- src/views/specialWorkSystem/flow/basicApprove/components/approveBasicDialog.vue | 10 src/views/specialWorkSystem/flow/basicApprove/index.vue | 10 .idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41__Default_Changelist_.xml | 4 .idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41_[Default_Changelist]/shelved.patch | 6817 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 6,827 insertions(+), 14 deletions(-) diff --git "a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41_\133Default_Changelist\135/shelved.patch" "b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41_\133Default_Changelist\135/shelved.patch" new file mode 100644 index 0000000..57c319d --- /dev/null +++ "b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41_\133Default_Changelist\135/shelved.patch" @@ -0,0 +1,6817 @@ +Index: src/views/specialWorkSystem/workTicket/approve/components/brokenLog.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/approve/components/brokenLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/brokenLog.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/approve/components/brokenLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,152 +0,0 @@ +-<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" :preview-src-list="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.stepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="上一层级">--> +-<!-- <el-input v-model="details.preStepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="下一层级">--> +-<!-- <el-input v-model="details.nextStepId" readonly />--> +-<!-- </el-form-item>--> +- <el-form-item label="层级审批类型"> +- <el-input v-model="details.stepTypeDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> +- <el-input v-model="details.stepSerial" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> +- <el-input v-model="details.stepStartApprovalTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> +- <el-input v-model="details.stepFinishApprovalTime" readonly /> +- </el-form-item> +- <el-form-item label="审批人姓名"> +- <el-input v-model="details.unitApprovalUname" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> +- <el-input v-model="details.unitApprovalStartTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> +- <el-input v-model="details.unitApprovalEndTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> +- <el-input v-model="details.unitResultDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> +- <el-input v-model="details.statusDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> +- <el-input v-model="details.stepApprovalResultDesc" readonly /> +- </el-form-item> +- </el-form> +- </div> +-</template> +- +-<script lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage } from 'element-plus' +- import type { FormInstance, FormRules } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- +- +- interface stateType { +- form: Object, +- workerList: Array<any>, +- workTypeList: Array<any>, +- workLevelList: Array<any>, +- otherWorkList: Array<any> +- } +- export default defineComponent({ +- name: 'space', +- components: {}, +- props:['details'], +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- return { +- Search +- }; +- }, +- }); +-</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> +Index: src/views/specialWorkSystem/workTicket/apply/components/ground.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/apply/components/ground.vue b/src/views/specialWorkSystem/workTicket/apply/components/ground.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/apply/components/ground.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,689 +0,0 @@ +- <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="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="hazardIdentification"> +- <el-input +- v-model="form.hazardIdentification" +- placeholder="请输入危害辨识" +- /> +- </el-form-item> +- </el-col> +- </el-row> +- <el-divider border-style="dashed"/> +- <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-cascader v-model="form.workDetail.operationDepId" :options="departList" :props="casProps" :show-all-levels="false" @change="handleChange" /> +- </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,最多可上传3张</div> +- </template> +- </el-upload> +- </el-form-item> +- </el-col> +- </el-row> +- <el-row> +- <el-col :span="12"> +- <el-form-item label="选择关联物资"> +- <el-button type="primary" @click="getMaList">选择物资标准</el-button> +- </el-form-item> +- </el-col> +- </el-row> +- </div> +- </el-form> +- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial"> +- <el-tabs tab-position="left" class="demo-tabs" type="border-card"> +- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index"> +- <div style="margin-bottom: 20px"> +- <el-form label-width="150px" label-position="top"> +- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div> +- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]"> +- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.mustList[x].stock}}</template> +- </el-input> +- </el-form-item> +- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div> +- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'"> +- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.unList[x].stock}}</template> +- </el-input> +- </el-form-item> +- </el-form> +- </div> +- </el-tab-pane> +- </el-tabs> +- <template #footer> +- <span class="dialog-footer"> +- <el-button @click="equipmentDialog = false" size="default">取消</el-button> +- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button> +- </span> +- </template> +- </el-dialog> +- <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 lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search,Plus } from '@element-plus/icons-vue' +- import { ElMessage, ElMessageBox } from 'element-plus' +- import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- import axios from 'axios'; +- +- +- interface stateType { +- equipmentDialog: boolean, +- form: Object, +- csDepList: Array<any>, +- otherWorkList: Array<any>, +- fileList: Array<file>, +- uploadUrl: string, +- dialogVisible: Boolean, +- dialogImageUrl: string | null, +- imgLimit: number, +- casProps: {}, +- isOverSize: Boolean, +- materialList: Array<any> +- } +- interface file { +- url: string; +- } +- export default { +- name: 'groundForm', +- components: {}, +- props:['workerList','departList'], +- setup(props: any, context: any) { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- const state = reactive<stateType>({ +- equipmentDialog: false, +- form: { +- operatorUids: [], +- workType: 4, +- workLevel: 0, +- workContent: '', +- workLocation: '', +- hazardIdentification: '', +- workDetail:{ +- operationDepId: null, +- gbScope: '', +- gbMethod: '', +- gbPath: [], +- otherSpecialWork: [] +- }, +- wmAddReqDTOList: [], +- workTimeLine: [], +- expStartTime: '', +- expEndTime: '' +- }, +- isOverSize: false, +- fileList: [], +- materialList: [], +- imgLimit: 3, +- 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 +- } +- ], +- casProps: { +- emitPath: false, +- value: 'depId', +- label: 'depName', +- multiple: false, +- expandTrigger: 'hover', +- checkStrictly: true +- } +- }); +- const ruleFormRef = ref<FormInstance>() +- const applyRules = reactive<FormRules>({ +- operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], +- workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], +- workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], +- workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], +- hazardIdentification: [{ 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' }] +- }); +- const toZero = (value: string | number,index: number,name: string,x:number) =>{ +- if(!value){ +- state.materialList[index][name][x].value = 0 +- } +- } +- const submitForm = async (formEl: FormInstance | undefined) => { +- if (!formEl) return +- await formEl.validate(async (valid, fields) => { +- if (valid) { +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList] +- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList] +- } +- 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 +- }); +- } +- state.materialList = [] +- } else { +- console.log('error submit!', fields) +- } +- }) +- } +- +- const handlePreview: UploadProps['onPreview'] = (uploadFile) => { +- console.log(uploadFile); +- }; +- +- const handlePictureCardPreview = (uploadFile: { url: string }) => { +- state.dialogImageUrl = uploadFile.url!; +- state.dialogVisible = true; +- }; +- +- const getUploadUrl = async (rawFile: any) => { +- const fileSize = rawFile.size / 1024 < 500 ? '1' : '0' +- if(fileSize === '0'){ +- ElMessage({ +- type: 'warning', +- message: '文件大小不能超过500k。' +- }); +- state.isOverSize = true +- return false +- }else{ +- const res = await workApplyApi().getUploadUrl(rawFile.name); +- state.form.workDetail.gbPath.push(res.data.data.fileName) +- state.uploadUrl = res.data.data.uploadUrl; +- } +- }; +- +- const upload = async (params: any) => { +- // const formData = new FormData(); +- // formData.append('file', state.fileList[0].raw); +- let reader = new FileReader(); +- reader.readAsArrayBuffer(params.file); +- reader.onload = async () => { +- axios +- .put(state.uploadUrl, reader.result, { +- header: { 'Content-Type': 'multipart/form-data' } +- }) +- .then(() => { +- // if (state.fileList.length === 2) { +- // state.fileList.splice(0, 1); +- // } +- // console.log(state.form.workDetail.gbPath,'gbpath') +- }); +- }; +- }; +- +- const beforeRemove = (file: {}, fileList: []) => { +- const result = new Promise((resolve, reject) => { +- if(!state.isOverSize){ +- ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', { +- confirmButtonText: '确定', +- cancelButtonText: '取消', +- type: 'warning' +- }) +- .then(() => { +- // console.log(state.workDetail.gbPath,'path') +- const list = JSON.parse(JSON.stringify(state.form.workDetail.gbPath)) +- fileList.map((item,index)=>{ +- if(item.uid === file.uid){ +- fileList.splice(index,1) +- state.form.workDetail.gbPath.splice(index,1) +- // 请求删除接口 +- deletePic(false,list[index]) +- } +- }) +- }) +- .catch(() => { +- reject(false); +- }); +- }else{ +- const list = JSON.parse(JSON.stringify(state.form.workDetail.gbPath)) +- fileList.map((item,index)=>{ +- if(item.uid === file.uid){ +- fileList.splice(index,1) +- state.form.workDetail.gbPath.splice(index,1) +- deletePic(true,list[index]) +- } +- }) +- state.isOverSize = false +- } +- }); +- return result; +- }; +- +- +- // 删除图片接口 +- const deletePic = async(isOverSize:boolean,fileName:string)=>{ +- const res = await workApplyApi().deleteFile({fileName: fileName}) +- if (res.data.code === '200') { +- ElMessage({ +- type: isOverSize ? 'error' : 'success', +- message: isOverSize ? '上传失败':'删除成功!' +- }); +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- } +- +- const showTip =()=>{ +- ElMessage({ +- type: 'warning', +- message: '超出文件上传数量' +- }); +- } +- +- // const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => { +- // console.log('2111111111111') +- // }; +- +- // 确认物资标准 +- const getMaList = async() =>{ +- if(state.materialList.length == 0){ +- const data = {workType: 4,workLevel: null} +- const res = await workApplyApi().getMaterial(data) +- if (res.data.code === '200') { +- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){ +- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList)) +- for(let i in state.materialList){ +- state.materialList[i].mustList = [] +- state.materialList[i].unList = [] +- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => { +- if(item.configurationLevel == 0){ +- state.materialList[i].mustList.push(item) +- return +- }else{ +- state.materialList[i].unList.push(item) +- return +- } +- }) +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- } +- state.equipmentDialog = true +- }else{ +- ElMessage({ +- type: 'warning', +- message: '暂时查询不到物资标准信息' +- }); +- } +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- }else{ +- state.materialList = state.materialList +- state.equipmentDialog = true +- } +- } +- const conFirmDevices = ()=>{ +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- +- } +- ElMessageBox.confirm('是否确认物资及数量配置?') +- .then(() => { +- state.equipmentDialog = false +- }) +- .catch(() => { +- // catch error +- }) +- } +- +- const closeMaterial = ()=>{ +- +- } +- // 折线图 +- const renderMenu = async (value: string) => { +- Session.set('projectId',value) +- userInfos.value.projectId = value +- await initBackEndControlRoutes(); +- }; +- return { +- renderMenu, +- Search, +- Plus, +- ruleFormRef, +- applyRules, +- toZero, +- getMaList, +- conFirmDevices, +- closeMaterial, +- handlePreview, +- getUploadUrl, +- beforeRemove, +- upload, +- showTip, +- submitForm, +- handlePictureCardPreview, +- ...toRefs(state), +- }; +- }, +- }; +-</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%; +- } +- :deep(.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> +Index: src/views/specialWorkSystem/workTicket/apply/index.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/apply/index.vue b/src/views/specialWorkSystem/workTicket/apply/index.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/apply/index.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,149 +0,0 @@ +-<template> +- <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 :departList = departmentList></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 :departList = departmentList></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 :departList = departmentList></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 lang="ts"> +- import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted} from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage } from 'element-plus' +- import type { FormInstance, FormRules } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage"; +- +- interface stateType { +- allWorkers: Array<any> +- departmentList: Array<any> +- } +- export default defineComponent({ +- name: 'apply', +- components: { +- fireForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/fire.vue')), +- spaceForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/space.vue')), +- hoistForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/hoist.vue')), +- groundForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/ground.vue')), +- brokenForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/broken.vue')), +- heightForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/height.vue')), +- powerForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/power.vue')), +- plateForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/plate.vue')) +- }, +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- const state = reactive<stateType>({ +- allWorkers: [], +- departmentList: [] +- }); +- +- // 获取用户列表 +- const getAll = async ()=>{ +- const res = await workApplyApi().getAllUsers() +- if (res.data.code === '200') { +- state.allWorkers = JSON.parse(JSON.stringify(res.data.data)) +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- }; +- +- // 获取部门列表 +- const getAllDepartment = async () => { +- let res = await teamManageApi().getAllDepartment(); +- if (res.data.code === '200') { +- state.departmentList = JSON.parse(JSON.stringify(res.data.data)) +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- }; +- +- // 页面载入时执行方法 +- onMounted(() => { +- getAll(); +- getAllDepartment(); +- }); +- +- return { +- ...toRefs(state), +- }; +- }, +- }); +-</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; +- 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> +Index: src/views/specialWorkSystem/workTicket/apply/components/height.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/apply/components/height.vue b/src/views/specialWorkSystem/workTicket/apply/components/height.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/apply/components/height.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,547 +0,0 @@ +-<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="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="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="workContent"> +- <el-input +- v-model="form.workContent" +- autosize +- type="textarea" +- placeholder="请输入作业内容" +- /> +- </el-form-item> +- </el-col> +- </el-row> +- <el-row> +- <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-col :span="12"> +- <el-form-item label="危害辨识" prop="hazardIdentification"> +- <el-input +- v-model="form.hazardIdentification" +- placeholder="请输入危害辨识" +- /> +- </el-form-item> +- </el-col> +- </el-row> +- <el-divider border-style="dashed"/> +- <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-cascader v-model="form.workDetail.operationDepId" :options="departList" :props="casProps" :show-all-levels="false" @change="handleChange" /> +- </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-col :span="12"> +- <el-form-item label="选择关联物资"> +- <el-button type="primary" @click="getMaList">选择物资标准</el-button> +- </el-form-item> +- </el-col> +- </el-row> +- </div> +- </el-form> +- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial"> +- <el-tabs tab-position="left" class="demo-tabs" type="border-card"> +- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index"> +- <div style="margin-bottom: 20px"> +- <el-form label-width="150px" label-position="top"> +- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div> +- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]"> +- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.mustList[x].stock}}</template> +- </el-input> +- </el-form-item> +- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div> +- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'"> +- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.unList[x].stock}}</template> +- </el-input> +- </el-form-item> +- </el-form> +- </div> +- </el-tab-pane> +- </el-tabs> +- <template #footer> +- <span class="dialog-footer"> +- <el-button @click="equipmentDialog = false" size="default">取消</el-button> +- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button> +- </span> +- </template> +- </el-dialog> +- <div class="applyBtn"> +- <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> +- </div> +- </div> +- </div> +-</template> +- +-<script lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage, ElMessageBox } from 'element-plus' +- import type { FormInstance, FormRules } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- +- +- interface stateType { +- equipmentDialog: boolean, +- form: Object, +- workTypeList: Array<any>, +- workLevelList: Array<any>, +- heDepList: Array<any>, +- otherWorkList: Array<any>, +- casProps:{}, +- materialList: Array<any> +- } +- export default defineComponent({ +- name: 'heightForm', +- components: {}, +- props:['workerList','departList'], +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- const state = reactive<stateType>({ +- equipmentDialog: false, +- form: { +- operatorUids: [], +- workType: 6, +- workLevel: null, +- workContent: '', +- workLocation: '', +- hazardIdentification: '', +- workDetail:{ +- operationDepId: '', +- operationHeight: null, +- otherSpecialWork: [] +- }, +- wmAddReqDTOList: [], +- workTimeLine: [], +- expStartTime: '', +- expEndTime: '' +- }, +- heDepList: [ +- { +- label: "单位一", +- value: 1 +- }, +- { +- label: "单位二", +- value: 2 +- }, +- { +- label: "单位三", +- value: 3 +- }, +- { +- label: "单位四", +- value: 4 +- }, +- { +- label: "单位五", +- value: 5 +- }, +- { +- label: "单位六", +- value: 6 +- } +- ], +- materialList: [], +- casProps: { +- emitPath: false, +- value: 'depId', +- label: 'depName', +- multiple: false, +- expandTrigger: 'hover', +- checkStrictly: true +- }, +- 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 +- } +- ] +- }); +- const ruleFormRef = ref<FormInstance>() +- const applyRules = reactive<FormRules>({ +- 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' }], +- hazardIdentification: [{ 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' }] +- }); +- +- const toZero = (value: string | number,index: number,name: string,x:number) =>{ +- if(!value){ +- state.materialList[index][name][x].value = 0 +- } +- } +- +- const submitForm = async (formEl: FormInstance | undefined) => { +- if (!formEl) return +- await formEl.validate(async (valid, fields) => { +- if (valid) { +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList] +- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList] +- } +- 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(',') +- const res = await workApplyApi().postHeightApply(data) +- if (res.data.code === '200') { +- ElMessage({ +- type: 'success', +- message: '提交成功!' +- }); +- formEl.resetFields() +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- state.materialList = [] +- } else { +- console.log('error submit!', fields) +- } +- }) +- } +- +- // 确认物资标准 +- const getMaList = async() =>{ +- if(state.materialList.length == 0){ +- const data = {workType: 6,workLevel: state.form.workLevel} +- const res = await workApplyApi().getMaterial(data) +- if (res.data.code === '200') { +- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){ +- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList)) +- for(let i in state.materialList){ +- state.materialList[i].mustList = [] +- state.materialList[i].unList = [] +- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => { +- if(item.configurationLevel == 0){ +- state.materialList[i].mustList.push(item) +- return +- }else{ +- state.materialList[i].unList.push(item) +- return +- } +- }) +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- } +- state.equipmentDialog = true +- }else{ +- ElMessage({ +- type: 'warning', +- message: '暂时查询不到物资标准信息' +- }); +- } +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- }else{ +- state.materialList = state.materialList +- state.equipmentDialog = true +- } +- } +- const conFirmDevices = ()=>{ +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- +- } +- ElMessageBox.confirm('是否确认物资及数量配置?') +- .then(() => { +- state.equipmentDialog = false +- }) +- .catch(() => { +- // catch error +- }) +- } +- +- const closeMaterial = ()=>{ +- +- } +- +- // 折线图 +- const renderMenu = async (value: string) => { +- Session.set('projectId',value) +- userInfos.value.projectId = value +- await initBackEndControlRoutes(); +- }; +- return { +- renderMenu, +- Search, +- ruleFormRef, +- applyRules, +- toZero, +- getMaList, +- conFirmDevices, +- closeMaterial, +- submitForm, +- ...toRefs(state), +- }; +- }, +- }); +-</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%; +- } +- :deep(.el-cascader){ +- width: 100% !important; +- } +- } +-</style> +Index: src/views/specialWorkSystem/workTicket/apply/components/space.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/apply/components/space.vue b/src/views/specialWorkSystem/workTicket/apply/components/space.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/apply/components/space.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,513 +0,0 @@ +-<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="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="hazardIdentification"> +- <el-input +- v-model="form.hazardIdentification" +- placeholder="请输入危害辨识" +- /> +- </el-form-item> +- </el-col> +- </el-row> +- <el-divider border-style="dashed" /> +- <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-cascader v-model="form.workDetail.csDepId" :options="departList" :props="casProps" :show-all-levels="false" @change="handleChange" /> +- </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> +- <el-row> +- <el-col :span="12"> +- <el-form-item label="选择关联物资"> +- <el-button type="primary" @click="getMaList">选择物资标准</el-button> +- </el-form-item> +- </el-col> +- </el-row> +- </div> +- </el-form> +- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial"> +- <el-tabs tab-position="left" class="demo-tabs" type="border-card"> +- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index"> +- <div style="margin-bottom: 20px"> +- <el-form label-width="150px" label-position="top"> +- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div> +- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]"> +- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.mustList[x].stock}}</template> +- </el-input> +- </el-form-item> +- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div> +- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'"> +- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.unList[x].stock}}</template> +- </el-input> +- </el-form-item> +- </el-form> +- </div> +- </el-tab-pane> +- </el-tabs> +- <template #footer> +- <span class="dialog-footer"> +- <el-button @click="equipmentDialog = false" size="default">取消</el-button> +- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button> +- </span> +- </template> +- </el-dialog> +- <div class="applyBtn"> +- <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> +- </div> +- </div> +- </div> +-</template> +- +-<script lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage, ElMessageBox } from 'element-plus' +- import type { FormInstance, FormRules } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- +- +- interface stateType { +- form: Object, +- csDepList: Array<any>, +- otherWorkList: Array<any>, +- casProps: {}, +- equipmentDialog: boolean, +- materialList: Array<any> +- } +- export default defineComponent({ +- name: 'spaceForm', +- components: {}, +- props:['workerList','departList'], +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- const state = reactive<stateType>({ +- equipmentDialog: false, +- materialList: [], +- form: { +- operatorUids: [], +- workType: 2, +- workLevel: 0, +- workContent: '', +- workLocation: '', +- hazardIdentification: '', +- workDetail:{ +- csDepId: null, +- csName: '', +- csOriginalName: '', +- otherSpecialWork: [] +- }, +- wmAddReqDTOList: [], +- workTimeLine: [], +- expStartTime: '', +- expEndTime: '' +- }, +- 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: false, +- expandTrigger: 'hover', +- checkStrictly: true +- }, +- 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 +- } +- ] +- }); +- const ruleFormRef = ref<FormInstance>() +- const applyRules = reactive<FormRules>({ +- operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], +- workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], +- workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], +- workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], +- hazardIdentification: [{ 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' }] +- }); +- +- const toZero = (value: string | number,index: number,name: string,x:number) =>{ +- if(!value){ +- state.materialList[index][name][x].value = 0 +- } +- } +- +- const submitForm = async (formEl: FormInstance | undefined) => { +- if (!formEl) return +- await formEl.validate(async (valid, fields) => { +- if (valid) { +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList] +- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList] +- } +- 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') { +- ElMessage({ +- type: 'success', +- message: '提交成功!' +- }); +- formEl.resetFields() +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- state.materialList = [] +- } else { +- console.log('error submit!', fields) +- } +- }) +- } +- +- // 确认物资标准 +- const getMaList = async() =>{ +- if(state.materialList.length == 0){ +- const data = {workType: 2,workLevel: null} +- const res = await workApplyApi().getMaterial(data) +- if (res.data.code === '200') { +- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){ +- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList)) +- for(let i in state.materialList){ +- state.materialList[i].mustList = [] +- state.materialList[i].unList = [] +- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => { +- if(item.configurationLevel == 0){ +- state.materialList[i].mustList.push(item) +- return +- }else{ +- state.materialList[i].unList.push(item) +- return +- } +- }) +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- } +- state.equipmentDialog = true +- }else{ +- ElMessage({ +- type: 'warning', +- message: '暂时查询不到物资标准信息' +- }); +- } +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- }else{ +- state.materialList = state.materialList +- state.equipmentDialog = true +- } +- } +- const conFirmDevices = ()=>{ +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- +- } +- ElMessageBox.confirm('是否确认物资及数量配置?') +- .then(() => { +- state.equipmentDialog = false +- }) +- .catch(() => { +- // catch error +- }) +- } +- +- const closeMaterial = ()=>{ +- +- } +- +- // 折线图 +- const renderMenu = async (value: string) => { +- Session.set('projectId',value) +- userInfos.value.projectId = value +- await initBackEndControlRoutes(); +- }; +- return { +- renderMenu, +- Search, +- ruleFormRef, +- applyRules, +- toZero, +- getMaList, +- conFirmDevices, +- closeMaterial, +- submitForm, +- ...toRefs(state), +- }; +- }, +- }); +-</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%; +- } +- :deep(.el-cascader){ +- width: 100% !important; +- } +- } +-</style> +Index: src/views/specialWorkSystem/workTicket/apply/components/plate.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/apply/components/plate.vue b/src/views/specialWorkSystem/workTicket/apply/components/plate.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/apply/components/plate.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,755 +0,0 @@ +-<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="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="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="workContent"> +- <el-input +- v-model="form.workContent" +- autosize +- type="textarea" +- placeholder="请输入作业内容" +- /> +- </el-form-item> +- </el-col> +- </el-row> +- <el-row> +- <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-col :span="12"> +- <el-form-item label="危害辨识" prop="hazardIdentification"> +- <el-input +- v-model="form.hazardIdentification" +- placeholder="请输入危害辨识" +- /> +- </el-form-item> +- </el-col> +- </el-row> +- <el-divider border-style="dashed"/> +- <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,最多可上传3张</div> +- </template> +- </el-upload> +- </el-form-item> +- </el-col> +- </el-row> +- <el-row> +- <el-col :span="12"> +- <el-form-item label="选择关联物资"> +- <el-button type="primary" @click="getMaList">选择物资标准</el-button> +- </el-form-item> +- </el-col> +- </el-row> +- </div> +- </el-form> +- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial"> +- <el-tabs tab-position="left" class="demo-tabs" type="border-card"> +- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index"> +- <div style="margin-bottom: 20px"> +- <el-form label-width="150px" label-position="top"> +- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div> +- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]"> +- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.mustList[x].stock}}</template> +- </el-input> +- </el-form-item> +- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div> +- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'"> +- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.unList[x].stock}}</template> +- </el-input> +- </el-form-item> +- </el-form> +- </div> +- </el-tab-pane> +- </el-tabs> +- <template #footer> +- <span class="dialog-footer"> +- <el-button @click="equipmentDialog = false" size="default">取消</el-button> +- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button> +- </span> +- </template> +- </el-dialog> +- <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 lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage, ElMessageBox } from 'element-plus' +- import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- import axios from 'axios'; +- +- interface stateType { +- form: Object, +- csDepList: Array<any>, +- otherWorkList: Array<any>, +- workLevelList: Array<any>, +- fileList: Array<file>, +- uploadUrl: string, +- dialogVisible: Boolean, +- dialogImageUrl: string | null, +- imgLimit: number, +- isOverSize: boolean, +- equipmentDialog: boolean, +- materialList: Array<any> +- } +- interface file { +- url: string; +- } +- export default defineComponent({ +- name: 'plateForm', +- components: {}, +- props:['workerList'], +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- const state = reactive<stateType>({ +- equipmentDialog: false, +- materialList: [], +- form: { +- operatorUids: [], +- workType: 8, +- workLevel: null, +- workContent: '', +- workLocation: '', +- hazardIdentification: '', +- workDetail:{ +- bpCode: '', +- mainMedia: '', +- temperature: null, +- pressure: null, +- bpMaterialQuality: '', +- bpSpecification: '', +- bpLocation: '', +- bpLocationMapPath: [], +- installLine: [], +- installBpTime: '', +- uninstallBpTime: '', +- otherSpecialWork: [] +- }, +- wmAddReqDTOList: [], +- workTimeLine: [], +- expStartTime: '', +- expEndTime: '' +- }, +- isOverSize: false, +- fileList: [], +- imgLimit: 3, +- 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 +- } +- ] +- }); +- const ruleFormRef = ref<FormInstance>() +- const applyRules = reactive<FormRules>({ +- 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' }], +- hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], +- workTimeLine: [{ 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' }] +- }); +- +- const toZero = (value: string | number,index: number,name: string,x:number) =>{ +- if(!value){ +- state.materialList[index][name][x].value = 0 +- } +- } +- +- const submitForm = async (formEl: FormInstance | undefined) => { +- if (!formEl) return +- await formEl.validate(async (valid, fields) => { +- if (valid) { +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList] +- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList] +- } +- 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 +- }); +- } +- state.materialList = [] +- } else { +- console.log('error submit!', fields) +- } +- }) +- } +- const handlePreview: UploadProps['onPreview'] = (uploadFile) => { +- console.log(uploadFile); +- }; +- +- const handlePictureCardPreview = (uploadFile: { url: string }) => { +- state.dialogImageUrl = uploadFile.url!; +- state.dialogVisible = true; +- }; +- +- const getUploadUrl = async (rawFile: any) => { +- const fileSize = rawFile.size / 1024 < 500 ? '1' : '0' +- if(fileSize === '0'){ +- ElMessage({ +- type: 'warning', +- message: '文件大小不能超过500k。' +- }); +- state.isOverSize = true +- return false +- }else{ +- const res = await workApplyApi().getUploadUrl(rawFile.name); +- state.form.workDetail.bpLocationMapPath.push(res.data.data.fileName) +- state.uploadUrl = res.data.data.uploadUrl; +- console.log(res.data.data.fileName,'name') +- } +- }; +- +- const upload = async (params: any) => { +- // const formData = new FormData(); +- // formData.append('file', state.fileList[0].raw); +- let reader = new FileReader(); +- reader.readAsArrayBuffer(params.file); +- reader.onload = async () => { +- axios +- .put(state.uploadUrl, reader.result, { +- header: { 'Content-Type': 'multipart/form-data' } +- }) +- .then(() => { +- // if (state.fileList.length === 2) { +- // state.fileList.splice(0, 1); +- // } +- // console.log(state.form.workDetail.bpLocationMapPath,'bpLocationMapPath') +- }); +- }; +- }; +- +- const beforeRemove = (file: {}, fileList: []) => { +- const result = new Promise((resolve, reject) => { +- if(!state.isOverSize){ +- ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', { +- confirmButtonText: '确定', +- cancelButtonText: '取消', +- type: 'warning' +- }) +- .then(() => { +- // console.log(state.workDetail.bpLocationMapPath,'path') +- const list = JSON.parse(JSON.stringify(state.form.workDetail.bpLocationMapPath)) +- fileList.map((item,index)=>{ +- if(item.uid === file.uid){ +- fileList.splice(index,1) +- state.form.workDetail.bpLocationMapPath.splice(index,1) +- deletePic(false,list[index]) +- } +- }) +- // 请求删除接口 +- }) +- .catch(() => { +- reject(false); +- }); +- }else{ +- const list = JSON.parse(JSON.stringify(state.form.workDetail.bpLocationMapPath)) +- fileList.map((item,index)=>{ +- if(item.uid === file.uid){ +- fileList.splice(index,1) +- state.form.workDetail.bpLocationMapPath.splice(index,1) +- deletePic(true,list[index]) +- } +- }) +- state.isOverSize = false +- } +- }); +- return result; +- }; +- +- +- // 删除图片接口 +- const deletePic = async(isOverSize:boolean,fileName:string)=>{ +- console.log(fileName,'fileName') +- const res = await workApplyApi().deleteFile({fileName: fileName}) +- if (res.data.code === '200') { +- ElMessage({ +- type: isOverSize ? 'error' : 'success', +- message: isOverSize ? '上传失败':'删除成功!' +- }); +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- } +- const showTip =()=>{ +- ElMessage({ +- type: 'warning', +- message: '超出文件上传数量' +- }); +- } +- +- // 确认物资标准 +- const getMaList = async() =>{ +- if(state.materialList.length == 0){ +- const data = {workType: 8,workLevel: state.form.workLevel} +- const res = await workApplyApi().getMaterial(data) +- if (res.data.code === '200') { +- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){ +- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList)) +- for(let i in state.materialList){ +- state.materialList[i].mustList = [] +- state.materialList[i].unList = [] +- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => { +- if(item.configurationLevel == 0){ +- state.materialList[i].mustList.push(item) +- return +- }else{ +- state.materialList[i].unList.push(item) +- return +- } +- }) +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- } +- state.equipmentDialog = true +- }else{ +- ElMessage({ +- type: 'warning', +- message: '暂时查询不到物资标准信息' +- }); +- } +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- }else{ +- state.materialList = state.materialList +- state.equipmentDialog = true +- } +- } +- const conFirmDevices = ()=>{ +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- +- } +- ElMessageBox.confirm('是否确认物资及数量配置?') +- .then(() => { +- state.equipmentDialog = false +- }) +- .catch(() => { +- // catch error +- }) +- } +- +- const closeMaterial = ()=>{ +- +- } +- +- // 折线图 +- const renderMenu = async (value: string) => { +- Session.set('projectId',value) +- userInfos.value.projectId = value +- await initBackEndControlRoutes(); +- }; +- return { +- renderMenu, +- Search, +- ruleFormRef, +- applyRules, +- toZero, +- getMaList, +- conFirmDevices, +- closeMaterial, +- handlePreview, +- getUploadUrl, +- beforeRemove, +- upload, +- showTip, +- submitForm, +- handlePictureCardPreview, +- ...toRefs(state), +- }; +- }, +- }); +-</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> +Index: src/views/specialWorkSystem/workTicket/apply/components/fire.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/apply/components/fire.vue b/src/views/specialWorkSystem/workTicket/apply/components/fire.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/apply/components/fire.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,502 +0,0 @@ +-<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="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="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="workContent"> +- <el-input +- v-model="form.workContent" +- autosize +- type="textarea" +- placeholder="请输入作业内容" +- /> +- </el-form-item> +- </el-col> +- </el-row> +- <el-row> +- <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-col :span="12"> +- <el-form-item label="危害辨识" prop="hazardIdentification"> +- <el-input +- v-model="form.hazardIdentification" +- placeholder="请输入危害辨识" +- /> +- </el-form-item> +- </el-col> +- </el-row> +- <el-divider border-style="dashed"/> +- <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> +- <el-row> +- <el-col :span="12"> +- <el-form-item label="选择关联物资"> +- <el-button type="primary" @click="getMaList">选择物资标准</el-button> +- </el-form-item> +- </el-col> +- </el-row> +- </div> +- </el-form> +- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial"> +- <el-tabs tab-position="left" class="demo-tabs" type="border-card"> +- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index"> +- <div style="margin-bottom: 20px"> +- <el-form label-width="150px" label-position="top"> +- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div> +- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]"> +- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.mustList[x].stock}}</template> +- </el-input> +- </el-form-item> +- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div> +- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'"> +- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.unList[x].stock}}</template> +- </el-input> +- </el-form-item> +- </el-form> +- </div> +- </el-tab-pane> +- </el-tabs> +- <template #footer> +- <span class="dialog-footer"> +- <el-button @click="equipmentDialog = false" size="default">取消</el-button> +- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button> +- </span> +- </template> +- </el-dialog> +- <div class="applyBtn"> +- <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> +- </div> +- </div> +- </div> +-</template> +- +-<script lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage, ElMessageBox } from 'element-plus' +- import type { FormInstance, FormRules } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- +- +- interface stateType { +- form: Object, +- workLevelList: Array<any>, +- otherWorkList: Array<any>, +- equipmentDialog: boolean, +- materialList: Array<any> +- } +- export default defineComponent({ +- name: 'fireForm', +- components: {}, +- props:['workerList'], +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- const state = reactive<stateType>({ +- equipmentDialog: false, +- materialList: [], +- form: { +- operatorUids: [], +- workType: 1, +- workLevel: null, +- workContent: '', +- workLocation: '', +- hazardIdentification: '', +- workDetail:{ +- hotMethod: '', +- otherSpecialWork: [] +- }, +- wmAddReqDTOList: [], +- workTimeLine: [], +- expStartTime: '', +- expEndTime: '' +- }, +- 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 +- } +- ] +- }); +- const ruleFormRef = ref<FormInstance>() +- const applyRules = reactive<FormRules>({ +- 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' }], +- hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], +- workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], +- "workDetail.hotMethod": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] +- }); +- +- // 页面载入时执行方法 +- onMounted(() => { +- +- }); +- const toZero = (value: string | number,index: number,name: string,x:number) =>{ +- if(!value){ +- state.materialList[index][name][x].value = 0 +- } +- } +- const submitForm = async (formEl: FormInstance | undefined) => { +- if (!formEl) return +- await formEl.validate(async (valid, fields) => { +- if (valid) { +- if (state.materialList.length == 0){ +- ElMessage({ +- type: 'warning', +- message: '请确认关联物资的配置' +- }); +- return +- } +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList] +- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList] +- } +- 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(',') +- const res = await workApplyApi().postFireApply(data) +- if (res.data.code === '200') { +- ElMessage({ +- type: 'success', +- message: '提交成功!' +- }); +- formEl.resetFields() +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- state.materialList = [] +- } else { +- console.log('error submit!', fields) +- } +- }) +- } +- +- // 确认物资标准 +- const getMaList = async() =>{ +- if(state.materialList.length == 0){ +- const data = {workType: 1,workLevel: state.form.workLevel} +- const res = await workApplyApi().getMaterial(data) +- if (res.data.code === '200') { +- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){ +- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList)) +- for(let i in state.materialList){ +- state.materialList[i].mustList = [] +- state.materialList[i].unList = [] +- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => { +- if(item.configurationLevel == 0){ +- state.materialList[i].mustList.push(item) +- return +- }else{ +- state.materialList[i].unList.push(item) +- return +- } +- }) +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- } +- state.equipmentDialog = true +- }else{ +- ElMessage({ +- type: 'warning', +- message: '暂时查询不到物资标准信息' +- }); +- } +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- }else{ +- state.materialList = state.materialList +- state.equipmentDialog = true +- } +- } +- +- const conFirmDevices = ()=>{ +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- } +- ElMessageBox.confirm('是否确认物资及数量配置?') +- .then(() => { +- state.equipmentDialog = false +- }) +- .catch(() => { +- // catch error +- }) +- } +- +- const closeMaterial = ()=>{ +- +- } +- // 折线图 +- const renderMenu = async (value: string) => { +- Session.set('projectId',value) +- userInfos.value.projectId = value +- await initBackEndControlRoutes(); +- }; +- return { +- renderMenu, +- Search, +- ruleFormRef, +- applyRules, +- toZero, +- getMaList, +- conFirmDevices, +- closeMaterial, +- submitForm, +- ...toRefs(state), +- }; +- }, +- }); +-</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; +- } +- } +- +- .tab-i{ +- margin-bottom: 15px; +- +- &:last-of-type{ +- margin-bottom: 0; +- } +- ::v-deep(.el-form-item){ +- .el-form-item__label{ +- margin-bottom: 4px; +- } +- } +- } +-</style> +Index: src/views/specialWorkSystem/workTicket/apply/components/hoist.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/apply/components/hoist.vue b/src/views/specialWorkSystem/workTicket/apply/components/hoist.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/apply/components/hoist.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,445 +0,0 @@ +-<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="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="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="workContent"> +- <el-input +- v-model="form.workContent" +- autosize +- type="textarea" +- placeholder="请输入作业内容" +- /> +- </el-form-item> +- </el-col> +- </el-row> +- <el-row> +- <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-col :span="12"> +- <el-form-item label="危害辨识" prop="hazardIdentification"> +- <el-input +- v-model="form.hazardIdentification" +- placeholder="请输入危害辨识" +- /> +- </el-form-item> +- </el-col> +- </el-row> +- <el-divider border-style="dashed"/> +- <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> +- <el-row> +- <el-col :span="12"> +- <el-form-item label="选择关联物资"> +- <el-button type="primary" @click="getMaList">选择物资标准</el-button> +- </el-form-item> +- </el-col> +- </el-row> +- </div> +- </el-form> +- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial"> +- <el-tabs tab-position="left" class="demo-tabs" type="border-card"> +- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index"> +- <div style="margin-bottom: 20px"> +- <el-form label-width="150px" label-position="top"> +- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div> +- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]"> +- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.mustList[x].stock}}</template> +- </el-input> +- </el-form-item> +- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div> +- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'"> +- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.unList[x].stock}}</template> +- </el-input> +- </el-form-item> +- </el-form> +- </div> +- </el-tab-pane> +- </el-tabs> +- <template #footer> +- <span class="dialog-footer"> +- <el-button @click="equipmentDialog = false" size="default">取消</el-button> +- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button> +- </span> +- </template> +- </el-dialog> +- <div class="applyBtn"> +- <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> +- </div> +- </div> +- </div> +-</template> +- +-<script lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage, ElMessageBox } from 'element-plus' +- import type { FormInstance, FormRules } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- +- +- interface stateType { +- equipmentDialog: boolean, +- form: Object, +- workLevelList: Array<any>, +- materialList: Array<any> +- } +- export default defineComponent({ +- name: 'hoistForm', +- components: {}, +- props:['workerList'], +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- const state = reactive<stateType>({ +- equipmentDialog: false, +- form: { +- operatorUids: [], +- workType: 3, +- workLevel: null, +- workContent: '', +- workLocation: '', +- hazardIdentification: '', +- workDetail:{ +- hoistingToolName: '', +- weightMass: null +- }, +- wmAddReqDTOList: [], +- workTimeLine: [], +- expStartTime: '', +- expEndTime: '' +- }, +- materialList: [], +- workLevelList: [ +- { +- label: "一级吊装作业", +- value: 8 +- }, +- { +- label: "二级吊装作业", +- value: 9 +- }, +- { +- label: "三级吊装作业", +- value: 10 +- } +- ] +- }); +- const ruleFormRef = ref<FormInstance>() +- const applyRules = reactive<FormRules>({ +- 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' }], +- hazardIdentification: [{ 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' }] +- }); +- +- const toZero = (value: string | number,index: number,name: string,x:number) =>{ +- if(!value){ +- state.materialList[index][name][x].value = 0 +- } +- } +- +- const submitForm = async (formEl: FormInstance | undefined) => { +- if (!formEl) return +- await formEl.validate(async (valid, fields) => { +- if (valid) { +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList] +- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList] +- } +- 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 +- }); +- } +- state.materialList = [] +- } else { +- console.log('error submit!', fields) +- } +- }) +- } +- +- // 确认物资标准 +- const getMaList = async() =>{ +- if(state.materialList.length == 0){ +- const data = {workType: 3,workLevel: state.form.workLevel} +- const res = await workApplyApi().getMaterial(data) +- if (res.data.code === '200') { +- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){ +- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList)) +- for(let i in state.materialList){ +- state.materialList[i].mustList = [] +- state.materialList[i].unList = [] +- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => { +- if(item.configurationLevel == 0){ +- state.materialList[i].mustList.push(item) +- return +- }else{ +- state.materialList[i].unList.push(item) +- return +- } +- }) +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- } +- state.equipmentDialog = true +- }else{ +- ElMessage({ +- type: 'warning', +- message: '暂时查询不到物资标准信息' +- }); +- } +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- }else{ +- state.materialList = state.materialList +- state.equipmentDialog = true +- } +- } +- const conFirmDevices = ()=>{ +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- +- } +- ElMessageBox.confirm('是否确认物资及数量配置?') +- .then(() => { +- state.equipmentDialog = false +- }) +- .catch(() => { +- // catch error +- }) +- } +- +- const closeMaterial = ()=>{ +- +- } +- +- // 折线图 +- const renderMenu = async (value: string) => { +- Session.set('projectId',value) +- userInfos.value.projectId = value +- await initBackEndControlRoutes(); +- }; +- return { +- renderMenu, +- Search, +- ruleFormRef, +- applyRules, +- toZero, +- getMaList, +- conFirmDevices, +- closeMaterial, +- submitForm, +- ...toRefs(state), +- }; +- }, +- }); +-</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> +Index: src/views/specialWorkSystem/workTicket/approve/components/fireLog.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/approve/components/fireLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/fireLog.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/approve/components/fireLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,137 +0,0 @@ +-<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.applyTime" readonly /> +- </el-form-item> +-<!-- <el-form-item label="当前层级">--> +-<!-- <el-input v-model="details.stepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="上一层级">--> +-<!-- <el-input v-model="details.preStepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="下一层级">--> +-<!-- <el-input v-model="details.nextStepId" readonly />--> +-<!-- </el-form-item>--> +- <el-form-item label="层级审批类型"> +- <el-input v-model="details.stepTypeDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> +- <el-input v-model="details.stepSerial" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> +- <el-input v-model="details.stepStartApprovalTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> +- <el-input v-model="details.stepFinishApprovalTime" readonly /> +- </el-form-item> +- <el-form-item label="审批人姓名"> +- <el-input v-model="details.unitApprovalUname" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> +- <el-input v-model="details.unitApprovalStartTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> +- <el-input v-model="details.unitApprovalEndTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> +- <el-input v-model="details.unitResultDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> +- <el-input v-model="details.statusDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> +- <el-input v-model="details.stepApprovalResultDesc" readonly /> +- </el-form-item> +- </el-form> +- </div> +-</template> +- +-<script lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage } from 'element-plus' +- import type { FormInstance, FormRules } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- +- +- interface stateType { +- form: Object, +- workerList: Array<any>, +- workTypeList: Array<any>, +- workLevelList: Array<any>, +- otherWorkList: Array<any> +- } +- export default defineComponent({ +- name: 'fire', +- components: {}, +- props:['details'], +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- return { +- Search +- }; +- }, +- }); +-</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> +Index: src/views/specialWorkSystem/workTicket/approve/components/hoistLog.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/approve/components/hoistLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/hoistLog.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/approve/components/hoistLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,146 +0,0 @@ +-<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.stepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="上一层级">--> +-<!-- <el-input v-model="details.preStepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="下一层级">--> +-<!-- <el-input v-model="details.nextStepId" readonly />--> +-<!-- </el-form-item>--> +- <el-form-item label="层级审批类型"> +- <el-input v-model="details.stepTypeDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> +- <el-input v-model="details.stepSerial" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> +- <el-input v-model="details.stepStartApprovalTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> +- <el-input v-model="details.stepFinishApprovalTime" readonly /> +- </el-form-item> +- <el-form-item label="审批人姓名"> +- <el-input v-model="details.unitApprovalUname" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> +- <el-input v-model="details.unitApprovalStartTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> +- <el-input v-model="details.unitApprovalEndTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> +- <el-input v-model="details.unitResultDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> +- <el-input v-model="details.statusDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> +- <el-input v-model="details.stepApprovalResultDesc" readonly /> +- </el-form-item> +- </el-form> +- </div> +-</template> +- +-<script lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage } from 'element-plus' +- import type { FormInstance, FormRules } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- +- +- interface stateType { +- form: Object, +- workerList: Array<any>, +- workTypeList: Array<any>, +- workLevelList: Array<any>, +- otherWorkList: Array<any> +- } +- export default defineComponent({ +- name: 'space', +- components: {}, +- props:['details'], +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- return { +- Search +- }; +- }, +- }); +-</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> +Index: src/views/specialWorkSystem/workTicket/apply/components/power.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/apply/components/power.vue b/src/views/specialWorkSystem/workTicket/apply/components/power.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/apply/components/power.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,443 +0,0 @@ +-<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="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="hazardIdentification"> +- <el-input +- v-model="form.hazardIdentification" +- placeholder="请输入危害辨识" +- /> +- </el-form-item> +- </el-col> +- </el-row> +- <el-divider border-style="dashed"/> +- <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-col :span="12"> +- <el-form-item label="选择关联物资"> +- <el-button type="primary" @click="getMaList">选择物资标准</el-button> +- </el-form-item> +- </el-col> +- </el-row> +- </div> +- </el-form> +- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial"> +- <el-tabs tab-position="left" class="demo-tabs" type="border-card"> +- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index"> +- <div style="margin-bottom: 20px"> +- <el-form label-width="150px" label-position="top"> +- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div> +- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]"> +- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.mustList[x].stock}}</template> +- </el-input> +- </el-form-item> +- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div> +- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'"> +- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.unList[x].stock}}</template> +- </el-input> +- </el-form-item> +- </el-form> +- </div> +- </el-tab-pane> +- </el-tabs> +- <template #footer> +- <span class="dialog-footer"> +- <el-button @click="equipmentDialog = false" size="default">取消</el-button> +- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button> +- </span> +- </template> +- </el-dialog> +- <div class="applyBtn"> +- <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> +- </div> +- </div> +- </div> +-</template> +- +-<script lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage, ElMessageBox } from 'element-plus' +- import type { FormInstance, FormRules } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- +- +- interface stateType { +- form: Object, +- workLevelList: Array<any>, +- equipmentDialog: boolean, +- materialList: Array<any> +- } +- export default defineComponent({ +- name: 'powerForm', +- components: {}, +- props:['workerList'], +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- const state = reactive<stateType>({ +- equipmentDialog: false, +- materialList: [], +- form: { +- operatorUids: [], +- workType: 7, +- workLevel: 0, +- workContent: '', +- workLocation: '', +- hazardIdentification: '', +- workDetail:{ +- powerAccessPoint: '', +- workingVoltage: null, +- equipmentAndPower: '' +- }, +- wmAddReqDTOList: [], +- workTimeLine: [], +- expStartTime: '', +- expEndTime: '' +- }, +- workLevelList: [ +- { +- label: "一级吊装作业", +- value: 8 +- }, +- { +- label: "二级吊装作业", +- value: 9 +- }, +- { +- label: "三级吊装作业", +- value: 10 +- } +- ] +- }); +- const ruleFormRef = ref<FormInstance>() +- const applyRules = reactive<FormRules>({ +- 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' }], +- hazardIdentification: [{ 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' }] +- }); +- +- const toZero = (value: string | number,index: number,name: string,x:number) =>{ +- if(!value){ +- state.materialList[index][name][x].value = 0 +- } +- } +- +- const submitForm = async (formEl: FormInstance | undefined) => { +- if (!formEl) return +- await formEl.validate(async (valid, fields) => { +- if (valid) { +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList] +- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList] +- } +- 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 +- }); +- } +- state.materialList = [] +- } else { +- console.log('error submit!', fields) +- } +- }) +- } +- // 确认物资标准 +- const getMaList = async() =>{ +- if(state.materialList.length == 0){ +- const data = {workType: 7,workLevel: null} +- const res = await workApplyApi().getMaterial(data) +- if (res.data.code === '200') { +- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){ +- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList)) +- for(let i in state.materialList){ +- state.materialList[i].mustList = [] +- state.materialList[i].unList = [] +- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => { +- if(item.configurationLevel == 0){ +- state.materialList[i].mustList.push(item) +- return +- }else{ +- state.materialList[i].unList.push(item) +- return +- } +- }) +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- } +- state.equipmentDialog = true +- }else{ +- ElMessage({ +- type: 'warning', +- message: '暂时查询不到物资标准信息' +- }); +- } +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- }else{ +- state.materialList = state.materialList +- state.equipmentDialog = true +- } +- } +- const conFirmDevices = ()=>{ +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- +- } +- ElMessageBox.confirm('是否确认物资及数量配置?') +- .then(() => { +- state.equipmentDialog = false +- }) +- .catch(() => { +- // catch error +- }) +- } +- +- const closeMaterial = ()=>{ +- +- } +- // 折线图 +- const renderMenu = async (value: string) => { +- Session.set('projectId',value) +- userInfos.value.projectId = value +- await initBackEndControlRoutes(); +- }; +- return { +- renderMenu, +- Search, +- ruleFormRef, +- applyRules, +- toZero, +- getMaList, +- conFirmDevices, +- closeMaterial, +- submitForm, +- ...toRefs(state), +- }; +- }, +- }); +-</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> +Index: src/views/specialWorkSystem/workTicket/approve/components/heightLog.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/approve/components/heightLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/heightLog.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/approve/components/heightLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,146 +0,0 @@ +-<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.stepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="上一层级">--> +-<!-- <el-input v-model="details.preStepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="下一层级">--> +-<!-- <el-input v-model="details.nextStepId" readonly />--> +-<!-- </el-form-item>--> +- <el-form-item label="层级审批类型"> +- <el-input v-model="details.stepTypeDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> +- <el-input v-model="details.stepSerial" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> +- <el-input v-model="details.stepStartApprovalTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> +- <el-input v-model="details.stepFinishApprovalTime" readonly /> +- </el-form-item> +- <el-form-item label="审批人姓名"> +- <el-input v-model="details.unitApprovalUname" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> +- <el-input v-model="details.unitApprovalStartTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> +- <el-input v-model="details.unitApprovalEndTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> +- <el-input v-model="details.unitResultDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> +- <el-input v-model="details.statusDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> +- <el-input v-model="details.stepApprovalResultDesc" readonly /> +- </el-form-item> +- </el-form> +- </div> +-</template> +- +-<script lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage } from 'element-plus' +- import type { FormInstance, FormRules } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- +- +- interface stateType { +- form: Object, +- workerList: Array<any>, +- workTypeList: Array<any>, +- workLevelList: Array<any>, +- otherWorkList: Array<any> +- } +- export default defineComponent({ +- name: 'space', +- components: {}, +- props:['details'], +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- return { +- Search +- }; +- }, +- }); +-</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> +Index: src/views/specialWorkSystem/workTicket/approve/components/plateLog.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/approve/components/plateLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/plateLog.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/approve/components/plateLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,170 +0,0 @@ +-<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" :preview-src-list="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.stepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="上一层级">--> +-<!-- <el-input v-model="details.preStepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="下一层级">--> +-<!-- <el-input v-model="details.nextStepId" readonly />--> +-<!-- </el-form-item>--> +- <el-form-item label="层级审批类型"> +- <el-input v-model="details.stepTypeDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> +- <el-input v-model="details.stepSerial" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> +- <el-input v-model="details.stepStartApprovalTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> +- <el-input v-model="details.stepFinishApprovalTime" readonly /> +- </el-form-item> +- <el-form-item label="审批人姓名"> +- <el-input v-model="details.unitApprovalUname" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> +- <el-input v-model="details.unitApprovalStartTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> +- <el-input v-model="details.unitApprovalEndTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> +- <el-input v-model="details.unitResultDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> +- <el-input v-model="details.statusDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> +- <el-input v-model="details.stepApprovalResultDesc" readonly /> +- </el-form-item> +- </el-form> +- </div> +-</template> +- +-<script lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage } from 'element-plus' +- import type { FormInstance, FormRules } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- +- +- interface stateType { +- form: Object, +- workerList: Array<any>, +- workTypeList: Array<any>, +- workLevelList: Array<any>, +- otherWorkList: Array<any> +- } +- export default defineComponent({ +- name: 'space', +- components: {}, +- props:['details'], +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- return { +- Search +- }; +- }, +- }); +-</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> +Index: src/views/specialWorkSystem/workTicket/approve/components/groundLog.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/approve/components/groundLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/groundLog.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/approve/components/groundLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,152 +0,0 @@ +-<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.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" :preview-src-list="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.stepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="上一层级">--> +-<!-- <el-input v-model="details.preStepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="下一层级">--> +-<!-- <el-input v-model="details.nextStepId" readonly />--> +-<!-- </el-form-item>--> +- <el-form-item label="层级审批类型"> +- <el-input v-model="details.stepTypeDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> +- <el-input v-model="details.stepSerial" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> +- <el-input v-model="details.stepStartApprovalTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> +- <el-input v-model="details.stepFinishApprovalTime" readonly /> +- </el-form-item> +- <el-form-item label="审批人姓名"> +- <el-input v-model="details.unitApprovalUname" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> +- <el-input v-model="details.unitApprovalStartTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> +- <el-input v-model="details.unitApprovalEndTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> +- <el-input v-model="details.unitResultDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> +- <el-input v-model="details.statusDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> +- <el-input v-model="details.stepApprovalResultDesc" readonly /> +- </el-form-item> +- </el-form> +- </div> +-</template> +- +-<script lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage } from 'element-plus' +- import type { FormInstance, FormRules } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- +- +- interface stateType { +- form: Object, +- workerList: Array<any>, +- workTypeList: Array<any>, +- workLevelList: Array<any>, +- otherWorkList: Array<any> +- } +- export default defineComponent({ +- name: 'space', +- components: {}, +- props:['details'], +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- return { +- Search +- }; +- }, +- }); +-</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> +Index: src/views/specialWorkSystem/workTicket/approve/index.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/approve/index.vue b/src/views/specialWorkSystem/workTicket/approve/index.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/approve/index.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,815 +0,0 @@ +-<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="12" class="mainCardBtn"> +- <el-button type="primary" :icon="Plus" 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-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" /> +- </el-row> +- <el-table ref="multipleTableRef" :data="applyData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }"> +- <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 #default="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 #default="scope"> +- <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button> +- <el-button link type="success" size="small" :icon="Finished" @click="viewStatus(scope.row)">进度</el-button> +-<!-- <el-button link type="warning" size="small" :icon="Delete" @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]" small="false" 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="作业审批进度" center 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 class="bold-text">{{ item.approvalResultDesc }}</span> +- </div> +- <div class="text"> +- 审批层级:<span class="bold-text">{{ item.typeDesc }}</span> +- </div> +- <div class="text" v-if="item.auditTypeDesc"> +- 审批类型:<span class="bold-text">{{ item.auditTypeDesc }}</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 @close="indexClear"> +- <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 #default="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 lang="ts"> +-import {toRefs, reactive, defineComponent, ref, onMounted, defineAsyncComponent} from 'vue'; +-import { storeToRefs } from 'pinia'; +-import { initBackEndControlRoutes } from '/@/router/backEnd'; +-import { useUserInfo } from '/@/stores/userInfo'; +-import { Session } from '/@/utils/storage'; +-import { useRouter } from 'vue-router'; +-import { Edit, View, Plus, Delete, Refresh, Search, Finished } from '@element-plus/icons-vue'; +-import { ElTable } from 'element-plus'; +-import { FormInstance, FormRules, ElMessage } from 'element-plus'; +-import { workApprovalApi } from '/@/api/specialWorkSystem/workApproval'; +-import type { TabsPaneContext } from 'element-plus'; +-import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage"; +- +-// 定义接口来定义对象的类型 +-interface stateType { +- applyData: Array<string>; +- workTimeList: Array<string>; +- multipleSelection: Array<any>; +- deleteArr: Array<any>; +- approveInfo: Object; +- dialogDetails: boolean; +- dialogStatus: boolean; +- deleteDialog: boolean; +- pageIndex1: number; +- pageSize1: number; +- chosenIndex: null | number; +- deleteId: null | number; +- searchWord: string; +- totalSize1: number; +- activeName: string; +- addRecord: {}; +- details: {}; +- statusInfo: {}; +- workType: Array<type>; +- dialogType: number | null; +- departmentList: Array<any>; +- departmentRecursionList: Array<DepartmentState>; +-} +-interface type { +- id: number; +- name: string; +-} +-interface DepartmentState { +- depId: number; +- depName: string; +-} +-export default defineComponent({ +- name: 'myApproval', +- components: { +- fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/fireLog.vue')), +- space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/spaceLog.vue')), +- hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/hoistLog.vue')), +- ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/groundLog.vue')), +- broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/brokenLog.vue')), +- height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/heightLog.vue')), +- power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/powerLog.vue')), +- plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/plateLog.vue')) +- }, +- setup() { +- const userInfo = useUserInfo(); +- const { userInfos } = storeToRefs(userInfo); +- const router = useRouter(); +- const state = reactive<stateType>({ +- 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: '盲板抽堵作业' } +- ] +- }); +- interface User { +- name: string; +- list: []; +- info: string; +- } +- +- // 刷新 +- const reLoadData = async () => { +- getListByPage(); +- }; +- +- // 填写表单 +- const toApply = () => { +- router.push({ +- path: 'apply' +- }); +- }; +- +- const handleClick = (tab: TabsPaneContext, event: Event) => { +- console.log(tab, event); +- }; +- +- // 获取部门列表 +- const getAllDepartment = async () => { +- let res = await teamManageApi().getAllDepartment(); +- if (res.data.code === '200') { +- state.departmentList = JSON.parse(JSON.stringify(res.data.data)) +- recursion(state.departmentList); +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- }; +- +- // 获取层级审批数据 +- // const getApprovalData = async (id) => { +- // let res = await workApprovalApi().getApprovalData({workApplyId: id}); +- // if (res.data.code === '200') { +- // console.log(res.data.data,'层级数据') +- // // state.departmentList = JSON.parse(JSON.stringify(res.data.data)) +- // // recursion(state.departmentList); +- // } else { +- // ElMessage({ +- // type: 'warning', +- // message: res.data.msg +- // }); +- // } +- // }; +- +- const recursion = (value: any) => { +- for (let i of value) { +- if (i.children.length !== 0) { +- state.departmentRecursionList.push(i); +- recursion(i.children); +- } else { +- state.departmentRecursionList.push(i); +- } +- } +- }; +- +- // 分页获取工作时间组列表 +- const getListByPage = async () => { +- const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord } }; +- let res = await workApprovalApi().getApprovalListPage(data); +- if (res.data.code === '200') { +- state.applyData = JSON.parse(JSON.stringify(res.data.data)); +- state.applyData = state.applyData.map((item) => { +- if (item.operators == null || item.operators == []) { +- item.operators = []; +- } else { +- item.operators = Array.from(item.operators, ({ operatorUname }) => operatorUname); +- } +- return item; +- }); +- state.totalSize1 = res.data.total; +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- }; +- +- // 关键词查询记录 +- const searchRecord = async () => { +- if (state.searchWord == '') { +- ElMessage({ +- type: 'warning', +- message: '请输入查询关键词' +- }); +- } else { +- getListByPage(); +- } +- }; +- // 重置搜索 +- const clearSearch = async () => { +- state.searchWord = ''; +- getListByPage(); +- }; +- +- // 查看进度 +- const viewStatus = (row) => { +- getStatus({ workApplyId: row.workApplyId }); +- state.dialogStatus = true; +- }; +- +- // 查询进度方法 +- const getStatus = async (data: any) => { +- let res = await workApprovalApi().getApprovalStatus(data); +- if (res.data.code === '200') { +- state.approveInfo = JSON.parse(JSON.stringify(res.data.data)); +- state.approveInfo.operators = Array.from(state.approveInfo.operators, ({ operatorUname }) => operatorUname); +- console.log(state.approveInfo, '我的审批'); +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- }; +- +- const deleteRecordBtn = (row) => { +- state.deleteId = row.workApplyId; +- state.deleteDialog = true; +- }; +- +- // 取消申请方法 +- const deleteRecord = async (data: any) => { +- let res = await workApprovalApi().postAbord(data); +- if (res.data.code === '200') { +- ElMessage({ +- type: 'success', +- message: '取消成功!' +- }); +- getListByPage(); +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- }; +- +- const conFirmDelete = () => { +- deleteRecord({ workApplyId: state.deleteId }); +- state.deleteDialog = false; +- }; +- +- const handleSizeChange1 = (val: number) => { +- state.pageSize1 = val; +- getListByPage(); +- }; +- const handleCurrentChange1 = (val: number) => { +- state.pageIndex1 = val; +- getListByPage(); +- }; +- +- // 查看记录 +- const viewRecord = (row: any) => { +- state.dialogType = row.workType +- state.details = JSON.parse(JSON.stringify(row)); +- console.log(state.details,'details') +- // getApprovalData(state.details.workApplyId) +- if(state.details.workDetail.otherSpecialWork == '' || !state.details.workDetail.otherSpecialWork){ +- state.details.workDetail.otherSpecialWork=[] +- } +- else { +- console.log(state.details.workDetail.otherSpecialWork,'split') +- const a = state.details.workDetail.otherSpecialWork +- state.details.workDetail.otherSpecialWork = a.split(',').map((item) => { +- return state.workType.find((i: { id: number }) => i.id === Number(item))?.name; +- }); +- } +- if(state.details.workDetail.involvedDepIds == '' || !state.details.workDetail.involvedDepIds){ +- state.details.workDetail.involvedDepIds=[] +- } +- else { +- const a = state.details.workDetail.involvedDepIds +- state.details.workDetail.involvedDepIds = a.split(',').map((item) => { +- return state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(item))?.depName; +- }); +- } +- if(state.details.workDetail.csDepId){ +- state.details.workDetail.csDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.csDepId))?.depName; +- } +- if(state.details.workDetail.operationDepId){ +- state.details.workDetail.operationDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.operationDepId))?.depName; +- } +- if(state.details.workDetail.gbPath){ +- state.details.workDetail.gbPath = state.details.workDetail.gbPath.split(',') +- } +- if(state.details.workDetail.bcPath){ +- state.details.workDetail.bcPath = state.details.workDetail.bcPath.split(',') +- } +- if(state.details.workDetail.bpLocationMapPath){ +- state.details.workDetail.bpLocationMapPath = state.details.workDetail.bpLocationMapPath.split(',') +- } +- state.dialogDetails = true; +- }; +- +- // 折线图 +- const renderMenu = async (value: string) => { +- Session.set('projectId', value); +- userInfos.value.projectId = value; +- await initBackEndControlRoutes(); +- }; +- +- // 页面载入时执行方法 +- onMounted(() => { +- getListByPage(); +- getAllDepartment() +- }); +- +- return { +- View, +- Edit, +- Delete, +- Refresh, +- Plus, +- Finished, +- reLoadData, +- toApply, +- handleClick, +- searchRecord, +- clearSearch, +- viewRecord, +- viewStatus, +- deleteRecordBtn, +- conFirmDelete, +- getListByPage, +- handleSizeChange1, +- handleCurrentChange1, +- ...toRefs(state) +- }; +- } +-}); +-</script> +- +-<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 { +- color: #409eff; +- } +- +- .bold-text{ +- font-weight: bolder; +- } +- +- &: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> +Index: src/views/specialWorkSystem/workTicket/approve/components/spaceLog.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/approve/components/spaceLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/spaceLog.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/approve/components/spaceLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,149 +0,0 @@ +-<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.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.stepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="上一层级">--> +-<!-- <el-input v-model="details.preStepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="下一层级">--> +-<!-- <el-input v-model="details.nextStepId" readonly />--> +-<!-- </el-form-item>--> +- <el-form-item label="层级审批类型"> +- <el-input v-model="details.stepTypeDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> +- <el-input v-model="details.stepSerial" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> +- <el-input v-model="details.stepStartApprovalTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> +- <el-input v-model="details.stepFinishApprovalTime" readonly /> +- </el-form-item> +- <el-form-item label="审批人姓名"> +- <el-input v-model="details.unitApprovalUname" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> +- <el-input v-model="details.unitApprovalStartTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> +- <el-input v-model="details.unitApprovalEndTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> +- <el-input v-model="details.unitResultDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> +- <el-input v-model="details.statusDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> +- <el-input v-model="details.stepApprovalResultDesc" readonly /> +- </el-form-item> +- </el-form> +- </div> +-</template> +- +-<script lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage } from 'element-plus' +- import type { FormInstance, FormRules } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- +- +- interface stateType { +- form: Object, +- workerList: Array<any>, +- workTypeList: Array<any>, +- workLevelList: Array<any>, +- otherWorkList: Array<any> +- } +- export default defineComponent({ +- name: 'space', +- components: {}, +- props:['details'], +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- return { +- Search +- }; +- }, +- }); +-</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> +Index: src/views/specialWorkSystem/workTicket/apply/components/broken.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/apply/components/broken.vue b/src/views/specialWorkSystem/workTicket/apply/components/broken.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/apply/components/broken.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,632 +0,0 @@ +-<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="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="hazardIdentification"> +- <el-input +- v-model="form.hazardIdentification" +- placeholder="请输入危害辨识" +- /> +- </el-form-item> +- </el-col> +- </el-row> +- <el-divider border-style="dashed"/> +- <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-cascader v-model="form.workDetail.operationDepId" :options="departList" :props="casProps2" :show-all-levels="false" @change="handleChange2" /> +- </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,最多可上传3张</div> +- </template> +- </el-upload> +- </el-form-item> +- </el-col> +- </el-row> +- <el-row> +- <el-col :span="12"> +- <el-form-item label="选择关联物资"> +- <el-button type="primary" @click="getMaList">选择物资标准</el-button> +- </el-form-item> +- </el-col> +- </el-row> +- </div> +- </el-form> +- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial"> +- <el-tabs tab-position="left" class="demo-tabs" type="border-card"> +- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index"> +- <div style="margin-bottom: 20px"> +- <el-form label-width="150px" label-position="top"> +- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div> +- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]"> +- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.mustList[x].stock}}</template> +- </el-input> +- </el-form-item> +- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div> +- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'"> +- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0"> +- <template #append>{{'库存:' + item.unList[x].stock}}</template> +- </el-input> +- </el-form-item> +- </el-form> +- </div> +- </el-tab-pane> +- </el-tabs> +- <template #footer> +- <span class="dialog-footer"> +- <el-button @click="equipmentDialog = false" size="default">取消</el-button> +- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button> +- </span> +- </template> +- </el-dialog> +- <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 lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage, ElMessageBox } from 'element-plus' +- import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- import axios from 'axios'; +- +- interface stateType { +- equipmentDialog: boolean, +- form: Object, +- csDepList: Array<any>, +- fileList: Array<file>, +- uploadUrl: string, +- dialogVisible: Boolean, +- dialogImageUrl: string | null, +- imgLimit: number, +- casProps: {}, +- casProps2: {}, +- isOverSize: boolean, +- materialList: Array<any> +- } +- interface file { +- url: string; +- } +- export default defineComponent({ +- name: 'brokenForm', +- components: {}, +- props:['workerList','departList'], +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- const state = reactive<stateType>({ +- equipmentDialog: false, +- form: { +- operatorUids: [], +- workType: 5, +- workLevel: 0, +- workContent: '', +- workLocation: '', +- hazardIdentification: '', +- workDetail:{ +- operationDepId: null, +- bcReason: '', +- bcExplain: '', +- bcPath: [], +- involvedDepIds: [] +- }, +- wmAddReqDTOList: [], +- workTimeLine: [], +- expStartTime: '', +- expEndTime: '' +- }, +- materialList: [], +- isOverSize: false, +- fileList: [], +- imgLimit: 3, +- 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 +- }, +- casProps2: { +- emitPath: false, +- value: 'depId', +- label: 'depName', +- multiple: false, +- expandTrigger: 'hover', +- checkStrictly: true +- } +- }); +- const ruleFormRef = ref<FormInstance>() +- const applyRules = reactive<FormRules>({ +- operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], +- workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], +- workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], +- workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], +- hazardIdentification: [{ 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' }], +- "workDetail.involvedDepIds": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] +- }); +- +- const toZero = (value: string | number,index: number,name: string,x:number) =>{ +- if(!value){ +- state.materialList[index][name][x].value = 0 +- } +- } +- +- const submitForm = async (formEl: FormInstance | undefined) => { +- if (!formEl) return +- await formEl.validate(async (valid, fields) => { +- if (valid) { +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- defaultVal: item.value, +- id: item.id +- } +- return {...obj} +- }) +- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList] +- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList] +- } +- 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 +- }); +- } +- state.materialList = [] +- } else { +- console.log('error submit!', fields) +- } +- }) +- } +- +- const handlePreview: UploadProps['onPreview'] = (uploadFile) => { +- console.log(uploadFile); +- }; +- +- const handlePictureCardPreview = (uploadFile: { url: string }) => { +- state.dialogImageUrl = uploadFile.url!; +- state.dialogVisible = true; +- }; +- +- const getUploadUrl = async (rawFile: any) => { +- const fileSize = rawFile.size / 1024 < 500 ? '1' : '0' +- if(fileSize === '0'){ +- ElMessage({ +- type: 'warning', +- message: '文件大小不能超过500k。' +- }); +- state.isOverSize = true +- return false +- }else{ +- const res = await workApplyApi().getUploadUrl(rawFile.name); +- state.form.workDetail.bcPath.push(res.data.data.fileName) +- state.uploadUrl = res.data.data.uploadUrl; +- console.log(res.data.data.fileName,'name') +- } +- }; +- +- const upload = async (params: any) => { +- // const formData = new FormData(); +- // formData.append('file', state.fileList[0].raw); +- let reader = new FileReader(); +- reader.readAsArrayBuffer(params.file); +- reader.onload = async () => { +- axios +- .put(state.uploadUrl, reader.result, { +- header: { 'Content-Type': 'multipart/form-data' } +- }) +- .then(() => { +- // if (state.fileList.length === 2) { +- // state.fileList.splice(0, 1); +- // } +- // console.log(state.form.workDetail.bcPath,'bcPath') +- }); +- }; +- }; +- +- const beforeRemove = (file: {}, fileList: []) => { +- const result = new Promise((resolve, reject) => { +- if(!state.isOverSize){ +- ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', { +- confirmButtonText: '确定', +- cancelButtonText: '取消', +- type: 'warning' +- }) +- .then(() => { +- // console.log(state.workDetail.bcPath,'path') +- const list = JSON.parse(JSON.stringify(state.form.workDetail.bcPath)) +- fileList.map((item,index)=>{ +- if(item.uid === file.uid){ +- fileList.splice(index,1) +- state.form.workDetail.bcPath.splice(index,1) +- deletePic(false,list[index]) +- } +- }) +- // 请求删除接口 +- }) +- .catch(() => { +- reject(false); +- }); +- }else{ +- const list = JSON.parse(JSON.stringify(state.form.workDetail.bcPath)) +- fileList.map((item,index)=>{ +- if(item.uid === file.uid){ +- fileList.splice(index,1) +- state.form.workDetail.bcPath.splice(index,1) +- deletePic(true,list[index]) +- } +- }) +- state.isOverSize = false +- } +- }); +- return result; +- }; +- +- +- // 删除图片接口 +- const deletePic = async(isOverSize:boolean,fileName:string)=>{ +- console.log(fileName,'fileName') +- const res = await workApplyApi().deleteFile({fileName: fileName}) +- if (res.data.code === '200') { +- ElMessage({ +- type: isOverSize ? 'error' : 'success', +- message: isOverSize ? '上传失败':'删除成功!' +- }); +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- } +- +- const showTip =()=>{ +- ElMessage({ +- type: 'warning', +- message: '超出文件上传数量' +- }); +- } +- +- // 确认物资标准 +- const getMaList = async() =>{ +- if(state.materialList.length == 0){ +- const data = {workType: 5,workLevel: null} +- const res = await workApplyApi().getMaterial(data) +- if (res.data.code === '200') { +- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){ +- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList)) +- for(let i in state.materialList){ +- state.materialList[i].mustList = [] +- state.materialList[i].unList = [] +- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => { +- if(item.configurationLevel == 0){ +- state.materialList[i].mustList.push(item) +- return +- }else{ +- state.materialList[i].unList.push(item) +- return +- } +- }) +- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{ +- const obj = { +- value: item.defaultVal, +- materialName: item.materialName, +- configurationLevel: item.configurationLevel, +- id: item.id, +- stock: item.stock +- } +- return {...obj} +- }) +- } +- state.equipmentDialog = true +- }else{ +- ElMessage({ +- type: 'warning', +- message: '暂时查询不到物资标准信息' +- }); +- } +- } else { +- ElMessage({ +- type: 'warning', +- message: res.data.msg +- }); +- } +- }else{ +- state.materialList = state.materialList +- state.equipmentDialog = true +- } +- } +- const conFirmDevices = ()=>{ +- for(let i in state.materialList){ +- for(let j in state.materialList[i].mustList){ +- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- for(let j in state.materialList[i].unList){ +- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){ +- ElMessage({ +- type: 'warning', +- message: '部分物资库存不足,请重新配置数量。' +- }); +- return +- } +- } +- +- } +- ElMessageBox.confirm('是否确认物资及数量配置?') +- .then(() => { +- state.equipmentDialog = false +- }) +- .catch(() => { +- // catch error +- }) +- } +- +- const closeMaterial = ()=>{ +- +- } +- +- // 折线图 +- const renderMenu = async (value: string) => { +- Session.set('projectId',value) +- userInfos.value.projectId = value +- await initBackEndControlRoutes(); +- }; +- return { +- renderMenu, +- Search, +- ruleFormRef, +- applyRules, +- toZero, +- getMaList, +- conFirmDevices, +- closeMaterial, +- handlePreview, +- getUploadUrl, +- beforeRemove, +- upload, +- showTip, +- submitForm, +- handlePictureCardPreview, +- ...toRefs(state), +- }; +- }, +- }); +-</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%; +- } +- :deep(.el-cascader){ +- width: 100% !important; +- } +- } +-</style> +Index: src/views/specialWorkSystem/workTicket/approve/components/powerLog.vue +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/approve/components/powerLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/powerLog.vue +deleted file mode 100644 +--- a/src/views/specialWorkSystem/workTicket/approve/components/powerLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) ++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25) +@@ -1,149 +0,0 @@ +-<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.stepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="上一层级">--> +-<!-- <el-input v-model="details.preStepId" readonly />--> +-<!-- </el-form-item>--> +-<!-- <el-form-item label="下一层级">--> +-<!-- <el-input v-model="details.nextStepId" readonly />--> +-<!-- </el-form-item>--> +- <el-form-item label="层级审批类型"> +- <el-input v-model="details.stepTypeDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> +- <el-input v-model="details.stepSerial" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> +- <el-input v-model="details.stepStartApprovalTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> +- <el-input v-model="details.stepFinishApprovalTime" readonly /> +- </el-form-item> +- <el-form-item label="审批人姓名"> +- <el-input v-model="details.unitApprovalUname" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> +- <el-input v-model="details.unitApprovalStartTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> +- <el-input v-model="details.unitApprovalEndTime" readonly /> +- </el-form-item> +- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> +- <el-input v-model="details.unitResultDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> +- <el-input v-model="details.statusDesc" readonly /> +- </el-form-item> +- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> +- <el-input v-model="details.stepApprovalResultDesc" readonly /> +- </el-form-item> +- </el-form> +- </div> +-</template> +- +-<script lang="ts"> +- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; +- import { storeToRefs } from 'pinia'; +- import { initBackEndControlRoutes } from '/@/router/backEnd'; +- import {useUserInfo} from "/@/stores/userInfo"; +- import { Session } from '/@/utils/storage'; +- import { Search } from '@element-plus/icons-vue' +- import { ElMessage } from 'element-plus' +- import type { FormInstance, FormRules } from 'element-plus' +- import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; +- +- +- interface stateType { +- form: Object, +- workerList: Array<any>, +- workTypeList: Array<any>, +- workLevelList: Array<any>, +- otherWorkList: Array<any> +- } +- export default defineComponent({ +- name: 'space', +- components: {}, +- props:['details'], +- setup() { +- const userInfo = useUserInfo() +- const { userInfos } = storeToRefs(userInfo); +- return { +- Search +- }; +- }, +- }); +-</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/.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41__Default_Changelist_.xml b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41__Default_Changelist_.xml new file mode 100644 index 0000000..946ad0f --- /dev/null +++ b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41__Default_Changelist_.xml @@ -0,0 +1,4 @@ +<changelist name="Uncommitted_changes_before_Update_at_2022_10_13_14_41_[Default_Changelist]" date="1665643313431" recycled="true" deleted="true"> + <option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41_[Default_Changelist]/shelved.patch" /> + <option name="DESCRIPTION" value="Uncommitted changes before Update at 2022/10/13 14:41 [Default Changelist]" /> +</changelist> \ No newline at end of file diff --git a/src/views/specialWorkSystem/flow/basicApprove/components/approveBasicDialog.vue b/src/views/specialWorkSystem/flow/basicApprove/components/approveBasicDialog.vue index 1f29501..9cd39ee 100644 --- a/src/views/specialWorkSystem/flow/basicApprove/components/approveBasicDialog.vue +++ b/src/views/specialWorkSystem/flow/basicApprove/components/approveBasicDialog.vue @@ -125,13 +125,9 @@ departmentList: [], isShowApproveBasicDialog: false, ruleStandTypeList: [ - { id: 1, name: '可燃气浓度' }, - { id: 2, name: '氧气浓度' }, - { id: 3, name: '一氧化碳浓度' }, - { id: 4, name: '硫化氢浓度' }, - { id: 5, name: '温度' }, - { id: 6, name: '压力' }, - { id: 7, name: '震动' } + { id: 1, name: '可燃气体' }, + { id: 3, name: '有毒有害气体' }, + { id: 2, name: '氧气' }, ], typeList: [ { id: 1, name: '大于' }, diff --git a/src/views/specialWorkSystem/flow/basicApprove/index.vue b/src/views/specialWorkSystem/flow/basicApprove/index.vue index 021a4d1..87af29a 100644 --- a/src/views/specialWorkSystem/flow/basicApprove/index.vue +++ b/src/views/specialWorkSystem/flow/basicApprove/index.vue @@ -141,13 +141,9 @@ } }, ruleStandTypeList: [ - { id: 1, name: '可燃气浓度' }, - { id: 2, name: '氧气浓度' }, - { id: 3, name: '一氧化碳浓度' }, - { id: 4, name: '硫化氢浓度' }, - { id: 5, name: '温度' }, - { id: 6, name: '压力' }, - { id: 7, name: '震动' } + { id: 1, name: '可燃气体' }, + { id: 3, name: '有毒有害气体' }, + { id: 2, name: '氧气' }, ], typeList: [ { id: 1, name: '大于' }, -- Gitblit v1.9.2