From 374c78f1791b7693f7c5c2e6d7e064d946df290e Mon Sep 17 00:00:00 2001 From: Admin <978517621@qq.com> Date: 星期四, 13 十月 2022 14:41:26 +0800 Subject: [PATCH] Default Changelist --- /dev/null | 815 ------------------------------------------------------ src/views/specialWorkSystem/workTicket/wdsqjl/index.vue | 16 src/views/specialWorkSystem/workTicket/wdsq/index.vue | 16 src/views/specialWorkSystem/workTicket/wdsp/index.vue | 16 src/views/specialWorkSystem/workTicket/zysq/index.vue | 16 5 files changed, 32 insertions(+), 847 deletions(-) diff --git a/src/views/specialWorkSystem/workTicket/apply/components/broken.vue b/src/views/specialWorkSystem/workTicket/apply/components/broken.vue deleted file mode 100644 index 17a7dcb..0000000 --- a/src/views/specialWorkSystem/workTicket/apply/components/broken.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/apply/components/fire.vue b/src/views/specialWorkSystem/workTicket/apply/components/fire.vue deleted file mode 100644 index a62a7ec..0000000 --- a/src/views/specialWorkSystem/workTicket/apply/components/fire.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/apply/components/ground.vue b/src/views/specialWorkSystem/workTicket/apply/components/ground.vue deleted file mode 100644 index fa98456..0000000 --- a/src/views/specialWorkSystem/workTicket/apply/components/ground.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/apply/components/height.vue b/src/views/specialWorkSystem/workTicket/apply/components/height.vue deleted file mode 100644 index 9923e25..0000000 --- a/src/views/specialWorkSystem/workTicket/apply/components/height.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/apply/components/hoist.vue b/src/views/specialWorkSystem/workTicket/apply/components/hoist.vue deleted file mode 100644 index c7cf511..0000000 --- a/src/views/specialWorkSystem/workTicket/apply/components/hoist.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/apply/components/plate.vue b/src/views/specialWorkSystem/workTicket/apply/components/plate.vue deleted file mode 100644 index 75ec19a..0000000 --- a/src/views/specialWorkSystem/workTicket/apply/components/plate.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/apply/components/power.vue b/src/views/specialWorkSystem/workTicket/apply/components/power.vue deleted file mode 100644 index 8e37b90..0000000 --- a/src/views/specialWorkSystem/workTicket/apply/components/power.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/apply/components/space.vue b/src/views/specialWorkSystem/workTicket/apply/components/space.vue deleted file mode 100644 index 5bc5bba..0000000 --- a/src/views/specialWorkSystem/workTicket/apply/components/space.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/apply/index.vue b/src/views/specialWorkSystem/workTicket/apply/index.vue deleted file mode 100644 index fafc906..0000000 --- a/src/views/specialWorkSystem/workTicket/apply/index.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/approve/components/brokenLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/brokenLog.vue deleted file mode 100644 index dcb6adc..0000000 --- a/src/views/specialWorkSystem/workTicket/approve/components/brokenLog.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/approve/components/fireLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/fireLog.vue deleted file mode 100644 index ed30241..0000000 --- a/src/views/specialWorkSystem/workTicket/approve/components/fireLog.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/approve/components/groundLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/groundLog.vue deleted file mode 100644 index 244330e..0000000 --- a/src/views/specialWorkSystem/workTicket/approve/components/groundLog.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/approve/components/heightLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/heightLog.vue deleted file mode 100644 index 0fb8a7a..0000000 --- a/src/views/specialWorkSystem/workTicket/approve/components/heightLog.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/approve/components/hoistLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/hoistLog.vue deleted file mode 100644 index 3b4dc2a..0000000 --- a/src/views/specialWorkSystem/workTicket/approve/components/hoistLog.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/approve/components/plateLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/plateLog.vue deleted file mode 100644 index f307fc0..0000000 --- a/src/views/specialWorkSystem/workTicket/approve/components/plateLog.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/approve/components/powerLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/powerLog.vue deleted file mode 100644 index f3c893c..0000000 --- a/src/views/specialWorkSystem/workTicket/approve/components/powerLog.vue +++ /dev/null @@ -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/src/views/specialWorkSystem/workTicket/approve/components/spaceLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/spaceLog.vue deleted file mode 100644 index d9feabc..0000000 --- a/src/views/specialWorkSystem/workTicket/approve/components/spaceLog.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/approve/index.vue b/src/views/specialWorkSystem/workTicket/approve/index.vue deleted file mode 100644 index 13eec8e..0000000 --- a/src/views/specialWorkSystem/workTicket/approve/index.vue +++ /dev/null @@ -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> diff --git a/src/views/specialWorkSystem/workTicket/wdsp/index.vue b/src/views/specialWorkSystem/workTicket/wdsp/index.vue index 13eec8e..39b7ba9 100644 --- a/src/views/specialWorkSystem/workTicket/wdsp/index.vue +++ b/src/views/specialWorkSystem/workTicket/wdsp/index.vue @@ -238,14 +238,14 @@ 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')) + fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/fireLog.vue')), + space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/spaceLog.vue')), + hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/hoistLog.vue')), + ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/groundLog.vue')), + broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/brokenLog.vue')), + height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/heightLog.vue')), + power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/powerLog.vue')), + plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/plateLog.vue')) }, setup() { const userInfo = useUserInfo(); diff --git a/src/views/specialWorkSystem/workTicket/wdsq/index.vue b/src/views/specialWorkSystem/workTicket/wdsq/index.vue index 57d399e..25c6286 100644 --- a/src/views/specialWorkSystem/workTicket/wdsq/index.vue +++ b/src/views/specialWorkSystem/workTicket/wdsq/index.vue @@ -255,14 +255,14 @@ export default defineComponent({ name: 'myApply', components: { - fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/fireLog.vue')), - space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/spaceLog.vue')), - hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/hoistLog.vue')), - ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/groundLog.vue')), - broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/brokenLog.vue')), - height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/heightLog.vue')), - power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/powerLog.vue')), - plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/plateLog.vue')) + fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/fireLog.vue')), + space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/spaceLog.vue')), + hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/hoistLog.vue')), + ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/groundLog.vue')), + broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/brokenLog.vue')), + height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/heightLog.vue')), + power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/powerLog.vue')), + plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/plateLog.vue')) }, setup() { const userInfo = useUserInfo(); diff --git a/src/views/specialWorkSystem/workTicket/wdsqjl/index.vue b/src/views/specialWorkSystem/workTicket/wdsqjl/index.vue index 7c5661e..2de816c 100644 --- a/src/views/specialWorkSystem/workTicket/wdsqjl/index.vue +++ b/src/views/specialWorkSystem/workTicket/wdsqjl/index.vue @@ -267,14 +267,14 @@ export default defineComponent({ name: 'myApply', components: { - fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/fireLog.vue')), - space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/spaceLog.vue')), - hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/hoistLog.vue')), - ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/groundLog.vue')), - broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/brokenLog.vue')), - height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/heightLog.vue')), - power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/powerLog.vue')), - plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myJobApply/components/plateLog.vue')) + fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/fireLog.vue')), + space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/spaceLog.vue')), + hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/hoistLog.vue')), + ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/groundLog.vue')), + broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/brokenLog.vue')), + height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/heightLog.vue')), + power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/powerLog.vue')), + plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/plateLog.vue')) }, setup() { const userInfo = useUserInfo(); diff --git a/src/views/specialWorkSystem/workTicket/zysq/index.vue b/src/views/specialWorkSystem/workTicket/zysq/index.vue index fafc906..6a6906b 100644 --- a/src/views/specialWorkSystem/workTicket/zysq/index.vue +++ b/src/views/specialWorkSystem/workTicket/zysq/index.vue @@ -48,14 +48,14 @@ 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')) + fireForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/fire.vue')), + spaceForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/space.vue')), + hoistForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/hoist.vue')), + groundForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/ground.vue')), + brokenForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/broken.vue')), + heightForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/height.vue')), + powerForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/power.vue')), + plateForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/plate.vue')) }, setup() { const userInfo = useUserInfo() -- Gitblit v1.9.2