| | |
| | | }); |
| | | }, |
| | | |
| | | getPieCountExcepOrder: (data: object) => { |
| | | return request({ |
| | | url: import.meta.env.VITE_API_URL + `/SafeCheckSmartScreen/select/countExcepOrderByPieChart`, |
| | | method: 'post', |
| | | data: data |
| | | }); |
| | | }, |
| | | |
| | | // |
| | | getListExcepOrderByPage: (data: object) => { |
| | | return request({ |
| | |
| | | <span class="tit">异常区域设备统计</span> |
| | | <div class="filter-part2"> |
| | | <el-switch |
| | | v-model="chartStatus" |
| | | v-model="searchQuery.regionType" |
| | | inline-prompt |
| | | style="--el-switch-on-color: #13ce66; --el-switch-off-color: #13ce66" |
| | | active-text="区域" |
| | | inactive-text="设备" |
| | | :active-value="2" |
| | | :inactive-value="3" |
| | | /> |
| | | </div> |
| | | </div> |
| | | <div class="chart" :id="sbtj"></div> |
| | | <el-radio-group v-model="period" size="small"> |
| | | <el-radio border label="week">近7天</el-radio> |
| | | <el-radio border label="month">近30天</el-radio> |
| | | <el-radio border label="season">近90天</el-radio> |
| | | <el-radio border label="year">近一年</el-radio> |
| | | <el-radio-group v-model="searchQuery.timeType" size="small"> |
| | | <el-radio border :label="1">近7天</el-radio> |
| | | <el-radio border :label="2">近30天</el-radio> |
| | | <el-radio border :label="3">近90天</el-radio> |
| | | <el-radio border :label="4">近一年</el-radio> |
| | | </el-radio-group> |
| | | </div> |
| | | </div> |
| | |
| | | classGroupList: Array<classGroup>; |
| | | quotaList: []; |
| | | inspectPointAllList: []; |
| | | chartStatus:boolean; |
| | | period: string; |
| | | searchQuery:{ |
| | | regionType:number; |
| | | timeType: number; |
| | | } |
| | | dialogVisible:boolean; |
| | | workNum: string; |
| | | beImgs: []; |
| | |
| | | unusualData: [], |
| | | unchecked: null, |
| | | unusual: null, |
| | | chartStatus: true, |
| | | period: 'month', |
| | | searchQuery:{ |
| | | regionType: 2, |
| | | timeType: 2, |
| | | }, |
| | | uncheckedList: [], |
| | | abnormalList: [], |
| | | workTypeList: [ |
| | |
| | | expandTrigger: 'hover', |
| | | emitPath: false, |
| | | value: 'depId', |
| | | label: 'depName', |
| | | label: 'name', |
| | | checkStrictly: true |
| | | }, |
| | | classGroupList: [], |
| | |
| | | |
| | | // 页面载入时执行方法 |
| | | onMounted(() => { |
| | | getDepartmentData(); |
| | | // getDepartmentData(); |
| | | // getCountExcepOrder(); |
| | | // getPieCountExcepOrder(); |
| | | getInspectRecord(); |
| | | getListExcepOrder(); |
| | | getDayData(); |
| | |
| | | }); |
| | | } |
| | | } |
| | | const getPieCountExcepOrder = async ()=>{ |
| | | let res = await inspectIndexApi().getPieCountExcepOrder(state.searchQuery); |
| | | if (res.data.code === '200') { |
| | | console.log('饼状图趋势数据>>>', res.data.data) |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | } |
| | | const acceptance =(row:object)=>{ |
| | | ElMessageBox.confirm( |
| | | '确认完成验收并结束工单?', |
对比新文件 |
| | |
| | | <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> |
对比新文件 |
| | |
| | | <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> |
对比新文件 |
| | |
| | | <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> |
对比新文件 |
| | |
| | | <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> |
对比新文件 |
| | |
| | | <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> |
对比新文件 |
| | |
| | | <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> |
对比新文件 |
| | |
| | | <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> |
对比新文件 |
| | |
| | | <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> |
对比新文件 |
| | |
| | | <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/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(); |
| | | 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: 'zysq' |
| | | }); |
| | | }; |
| | | |
| | | 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> |
对比新文件 |
| | |
| | | <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.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="物资状态"> |
| | | <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="关联物资" v-if="details.workMaterial.length>0"> |
| | | <el-table :data="details.workMaterial" style="width: 100%" border> |
| | | <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> |
| | | <el-table-column prop="materialName" label="物资名称" align="center"/> |
| | | <el-table-column prop="configurationLevel" label="配置级别" align="center"> |
| | | <template #default="scope"> |
| | | {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="useCount" label="配置数量" align="center"/> |
| | | </el-table> |
| | | </el-form-item> |
| | | <el-form-item label="期望开始时间"> |
| | | <el-input v-model="details.expStartTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="期望结束时间"> |
| | | <el-input v-model="details.expEndTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="申请时间"> |
| | | <el-input v-model="details.applyTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="当前状态"> |
| | | <el-input v-model="details.statusDesc" readonly /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </template> |
| | | |
| | | <script 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> |
对比新文件 |
| | |
| | | <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="物资状态"> |
| | | <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0"> |
| | | <el-table :data="details.workMaterial" style="width: 100%" border> |
| | | <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> |
| | | <el-table-column prop="materialName" label="物资名称" align="center"/> |
| | | <el-table-column prop="configurationLevel" label="配置级别" align="center"> |
| | | <template #default="scope"> |
| | | {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="useCount" label="配置数量" align="center"/> |
| | | </el-table> |
| | | </el-form-item> |
| | | <el-form-item label="关联其他作业"> |
| | | <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea" /> |
| | | </el-form-item> |
| | | <el-form-item label="期望开始时间"> |
| | | <el-input v-model="details.expStartTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="期望结束时间"> |
| | | <el-input v-model="details.expEndTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="申请时间"> |
| | | <el-input v-model="details.applyTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="当前状态"> |
| | | <el-input v-model="details.statusDesc" readonly /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </template> |
| | | |
| | | <script 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> |
对比新文件 |
| | |
| | | <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="物资状态"> |
| | | <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0"> |
| | | <el-table :data="details.workMaterial" style="width: 100%" border> |
| | | <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> |
| | | <el-table-column prop="materialName" label="物资名称" align="center"/> |
| | | <el-table-column prop="configurationLevel" label="配置级别" align="center"> |
| | | <template #default="scope"> |
| | | {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="useCount" label="配置数量" align="center"/> |
| | | </el-table> |
| | | </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.statusDesc" 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> |
对比新文件 |
| | |
| | | <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.operationHeight" readonly type="textarea"><template #append>米(m)</template></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="物资状态"> |
| | | <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0"> |
| | | <el-table :data="details.workMaterial" style="width: 100%" border> |
| | | <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> |
| | | <el-table-column prop="materialName" label="物资名称" align="center"/> |
| | | <el-table-column prop="configurationLevel" label="配置级别" align="center"> |
| | | <template #default="scope"> |
| | | {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="useCount" label="配置数量" align="center"/> |
| | | </el-table> |
| | | </el-form-item> |
| | | <el-form-item label="关联其他作业"> |
| | | <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> |
| | | </el-form-item> |
| | | <el-form-item label="期望开始时间"> |
| | | <el-input v-model="details.expStartTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="期望结束时间"> |
| | | <el-input v-model="details.expEndTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="申请时间"> |
| | | <el-input v-model="details.applyTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="当前状态"> |
| | | <el-input v-model="details.statusDesc" readonly /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </template> |
| | | |
| | | <script 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> |
对比新文件 |
| | |
| | | <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="物资状态"> |
| | | <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0"> |
| | | <el-table :data="details.workMaterial" style="width: 100%" border> |
| | | <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> |
| | | <el-table-column prop="materialName" label="物资名称" align="center"/> |
| | | <el-table-column prop="configurationLevel" label="配置级别" align="center"> |
| | | <template #default="scope"> |
| | | {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="useCount" label="配置数量" align="center"/> |
| | | </el-table> |
| | | </el-form-item> |
| | | <el-form-item label="关联其他作业"> |
| | | <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> |
| | | </el-form-item> |
| | | <el-form-item label="期望开始时间"> |
| | | <el-input v-model="details.expStartTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="期望结束时间"> |
| | | <el-input v-model="details.expEndTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="申请时间"> |
| | | <el-input v-model="details.applyTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="当前状态"> |
| | | <el-input v-model="details.statusDesc" readonly /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </template> |
| | | |
| | | <script 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> |
对比新文件 |
| | |
| | | <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="物资状态"> |
| | | <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0"> |
| | | <el-table :data="details.workMaterial" style="width: 100%" border> |
| | | <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> |
| | | <el-table-column prop="materialName" label="物资名称" align="center"/> |
| | | <el-table-column prop="configurationLevel" label="配置级别" align="center"> |
| | | <template #default="scope"> |
| | | {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="useCount" label="配置数量" align="center"/> |
| | | </el-table> |
| | | </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.statusDesc" 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> |
对比新文件 |
| | |
| | | <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="物资状态"> |
| | | <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0"> |
| | | <el-table :data="details.workMaterial" style="width: 100%" border> |
| | | <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> |
| | | <el-table-column prop="materialName" label="物资名称" align="center"/> |
| | | <el-table-column prop="configurationLevel" label="配置级别" align="center"> |
| | | <template #default="scope"> |
| | | {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="useCount" label="配置数量" align="center"/> |
| | | </el-table> |
| | | </el-form-item> |
| | | <el-form-item label="关联其他作业"> |
| | | <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> |
| | | </el-form-item> |
| | | <el-form-item label="期望开始时间"> |
| | | <el-input v-model="details.expStartTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="期望结束时间"> |
| | | <el-input v-model="details.expEndTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="申请时间"> |
| | | <el-input v-model="details.applyTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="当前状态"> |
| | | <el-input v-model="details.statusDesc" readonly /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </template> |
| | | |
| | | <script 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> |
对比新文件 |
| | |
| | | <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="物资状态"> |
| | | <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0"> |
| | | <el-table :data="details.workMaterial" style="width: 100%" border> |
| | | <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> |
| | | <el-table-column prop="materialName" label="物资名称" align="center"/> |
| | | <el-table-column prop="configurationLevel" label="配置级别" align="center"> |
| | | <template #default="scope"> |
| | | {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="useCount" label="配置数量" align="center"/> |
| | | </el-table> |
| | | </el-form-item> |
| | | <el-form-item label="关联其他作业"> |
| | | <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea" /> |
| | | </el-form-item> |
| | | <el-form-item label="期望开始时间"> |
| | | <el-input v-model="details.expStartTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="期望结束时间"> |
| | | <el-input v-model="details.expEndTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="申请时间"> |
| | | <el-input v-model="details.applyTime" readonly /> |
| | | </el-form-item> |
| | | <el-form-item label="当前状态"> |
| | | <el-input v-model="details.statusDesc" readonly /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </template> |
| | | |
| | | <script 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> |
对比新文件 |
| | |
| | | <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="workPermitNo" label="作业申请单号" width="180" /> |
| | | <el-table-column property="applyUname" label="申请人" /> |
| | | <el-table-column property="depName" label="部门名称" /> |
| | | <el-table-column property="operators" label="作业人" /> |
| | | <el-table-column property="workTypeDesc" label="作业类型" /> |
| | | <el-table-column property="workLevelDesc" label="作业等级" /> |
| | | <el-table-column property="materialStatus" label="物资状态" align="center" width="180"> |
| | | <template #default="scope"> |
| | | <span>{{ scope.row.materialStatus==0?'未关联物资':(scope.row.materialStatus==1?'必选物资配备不足':(scope.row.materialStatus==2?'必选物资配备齐全':(scope.row.materialStatus==3?'物资配置专业':(scope.row.materialStatus==4?'物资配置高端':'-')))) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <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="300"> |
| | | <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> |
| | | <el-button :disabled="scope.row.status == 7 ? false : true" link type="primary" size="small" :icon="Download" @click="downLoadBtn(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="作业申请进度" 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 && item.expFinishApprovalTime != null"> |
| | | 期望结束时间:<span>{{ item.expFinishApprovalTime }}</span> |
| | | </div> |
| | | <div class="text" v-show="item.finishApprovalTime != null"> |
| | | 结束时间:<span>{{ item.finishApprovalTime }}</span> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog v-model="deleteDialog" title="提示" width="30%" center> |
| | | <span>您确定要取消该条申请吗?</span> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="deleteDialog = false" size="default">取消</el-button> |
| | | <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | <el-dialog v-model="downLoadDialog" title="提示" width="30%" center> |
| | | <span>您确定要导出该条记录吗?</span> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="downLoadDialog = false" size="default">取消</el-button> |
| | | <el-button type="primary" @click="conFirmDownLoad" 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, Download } from '@element-plus/icons-vue'; |
| | | import { ElTable } from 'element-plus'; |
| | | import { FormInstance, FormRules, ElMessage } from 'element-plus'; |
| | | import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; |
| | | import type { TabsPaneContext } from 'element-plus'; |
| | | import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage"; |
| | | import Cookies from 'js-cookie'; |
| | | import axios from 'axios'; |
| | | |
| | | // 定义接口来定义对象的类型 |
| | | interface stateType { |
| | | applyData: Array<string>; |
| | | workTimeList: Array<string>; |
| | | multipleSelection: Array<any>; |
| | | deleteArr: Array<any>; |
| | | approveInfo: Object; |
| | | dialogDetails: boolean; |
| | | dialogStatus: boolean; |
| | | deleteDialog: boolean; |
| | | downLoadDialog: boolean; |
| | | pageIndex1: number; |
| | | pageSize1: number; |
| | | chosenIndex: null | number; |
| | | deleteId: null | number; |
| | | downLoadId: null | number; |
| | | downLoadName: string; |
| | | 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: 'myApply', |
| | | components: { |
| | | 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(); |
| | | 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, |
| | | downLoadDialog: false, |
| | | addRecord: {}, |
| | | details: {}, |
| | | statusInfo: {}, |
| | | deleteId: null, |
| | | downLoadId: null, |
| | | downLoadName: '', |
| | | 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: 'zysq' |
| | | }); |
| | | }; |
| | | |
| | | const handleClick = (tab: TabsPaneContext, event: 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 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 workApplyApi().getApplyListPage(data); |
| | | if (res.data.code === '200') { |
| | | state.applyData = JSON.parse(JSON.stringify(res.data.data)); |
| | | console.log(state.applyData,'applyData') |
| | | 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 toNames = (row, column, cellValue, index) => { |
| | | if (row.list == []) { |
| | | return []; |
| | | } else { |
| | | const nameList = []; |
| | | for (let i = 0; i < row.list.length; i++) { |
| | | for (let t = 0; t < state.workTimeList.length; t++) { |
| | | if (row.list[i] == state.workTimeList[t].id) { |
| | | nameList.push(state.workTimeList[t].name); |
| | | } |
| | | } |
| | | } |
| | | return nameList.join(); |
| | | } |
| | | }; |
| | | |
| | | // 关键词查询记录 |
| | | 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 workApplyApi().getStatus(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); |
| | | } 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 workApplyApi().cancelApply(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 downLoadBtn = (row:any) =>{ |
| | | state.downLoadId = row.workApplyId; |
| | | state.downLoadName = row.workTypeDesc + row.workPermitNo |
| | | state.downLoadDialog = true; |
| | | } |
| | | |
| | | // 导出方法 |
| | | const downLoadRecord = async (data: any) => { |
| | | // let res = await workApplyApi().postPrinting(data); |
| | | axios.post(import.meta.env.VITE_API_URL + `/work/apply/printingPdf`,data,{headers:{'Content-Type': 'application/json','Authorization': `${Cookies.get('token')}`,'uid':`${Cookies.get('uid')}`},responseType: 'blob'}).then(res=>{ |
| | | if (res) { |
| | | const link = document.createElement('a') |
| | | let blob = new Blob([res.data],{type: 'application/pdf'}) |
| | | link.style.display = "none"; |
| | | link.href = URL.createObjectURL(blob); // 创建URL |
| | | link.setAttribute("download", state.downLoadName + "作业证.pdf"); |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | document.body.removeChild(link); |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | }) |
| | | |
| | | }; |
| | | |
| | | const conFirmDownLoad = () => { |
| | | downLoadRecord({ applyWorkId: state.downLoadId }); |
| | | state.downLoadDialog = 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)); |
| | | if(state.details.workDetail.otherSpecialWork == '' || !state.details.workDetail.otherSpecialWork){ |
| | | state.details.workDetail.otherSpecialWork=[] |
| | | } |
| | | else { |
| | | 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, |
| | | Download, |
| | | reLoadData, |
| | | toApply, |
| | | handleClick, |
| | | toNames, |
| | | searchRecord, |
| | | clearSearch, |
| | | viewRecord, |
| | | viewStatus, |
| | | deleteRecordBtn, |
| | | downLoadBtn, |
| | | conFirmDelete, |
| | | conFirmDownLoad, |
| | | 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> |
对比新文件 |
| | |
| | | <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"> |
| | | <el-col :span="5" style="display:flex;align-items: center"> |
| | | <span style="white-space: nowrap">作业类型:</span> |
| | | <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> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="5" style="display:flex;align-items: center"> |
| | | <span style="white-space: nowrap">申请部门:</span> |
| | | <div class="grid-content topInfo"> |
| | | <el-cascader v-model="searchDep" :options="departmentList" :props="casProps" :show-all-levels="false"/> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="display:flex;align-items: center;"> |
| | | <span style="white-space: nowrap;margin-left: 20px">申请时间:</span> |
| | | <div class="grid-content topInfo"> |
| | | <el-date-picker |
| | | v-model="searchDate" |
| | | type="daterange" |
| | | unlink-panels |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" |
| | | /> |
| | | </div> |
| | | </el-col> |
| | | <el-button type="primary" style="margin-left: 20px" @click="searchRecord">查询</el-button> |
| | | <el-button plain @click="clearSearch">重置</el-button> |
| | | </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="workPermitNo" label="作业申请单号" width="180" align="center"/> |
| | | <el-table-column property="applyUname" label="申请人" align="center"/> |
| | | <el-table-column property="depName" label="部门名称" align="center"/> |
| | | <el-table-column property="operators" label="作业人" align="center"/> |
| | | <el-table-column property="workTypeDesc" label="作业类型" align="center"/> |
| | | <el-table-column property="workLevelDesc" label="作业等级" align="center"/> |
| | | <el-table-column property="materialStatus" label="物资状态" align="center" width="180"> |
| | | <template #default="scope"> |
| | | <span>{{ scope.row.materialStatus==0?'未关联物资':(scope.row.materialStatus==1?'必选物资配备不足':(scope.row.materialStatus==2?'必选物资配备齐全':(scope.row.materialStatus==3?'物资配置专业':(scope.row.materialStatus==4?'物资配置高端':'-')))) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column property="applyTime" label="申请时间" width="180" align="center"/> |
| | | <el-table-column label="申请状态" align="center" width="140"> |
| | | <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 label="作业状态" align="center"> |
| | | <template #default="scope"> |
| | | <el-tag :type="scope.row.working == null? 'danger':scope.row.working.workStatus==2?'success':scope.row.working.workStatus==1?'warning':'danger'">{{ scope.row.working==null?'未开始':scope.row.working.workStatus == 1?'开始': scope.row.working.workStatus == 2?'结束':'未开始'}}</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="验收状态" align="center"> |
| | | <template #default="scope"> |
| | | <el-tag :type="scope.row.working == null? 'danger':scope.row.working.workAcceptStatus==2?'success':scope.row.working.workAcceptStatus== 1?'warning':'danger'">{{ scope.row.working==null?'未开始':scope.row.working.workAcceptStatus == 1?'等待验收': scope.row.working.workAcceptStatus == 2? '已验收':'未开始'}}</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 :disabled="scope.row.working && scope.row.working.workAcceptStatus == 2 ? false : true" link type="primary" size="small" :icon="Download" @click="downLoadBtn(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="作业申请进度" width="60%"> |
| | | <el-form v-if="approveInfo.operators.length > 0" style="margin-bottom: 40px"> |
| | | <el-form-item label="申请作业人"> |
| | | <el-input v-model="approveInfo.operators" readonly type="textarea" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div style="display: flex; flex-direction: column-reverse"> |
| | | <div v-for="(item, index) in approveInfo.approvalSteps" class="stepItem"> |
| | | <div class="stepNum">{{ item.stepSerial }}</div> |
| | | <div class="stepCard"> |
| | | <el-card class="box-card" shadow="always"> |
| | | <div class="text"> |
| | | 审批结果:<span>{{ item.approvalResultDesc }}</span> |
| | | </div> |
| | | <div class="text" v-if="item.approvalTypeDesc"> |
| | | 层级类型:<span>{{ item.approvalTypeDesc }}</span> |
| | | </div> |
| | | <div class="text" v-if="item.auditTypeDesc"> |
| | | 审批类型:<span>{{ item.auditTypeDesc }}</span> |
| | | </div> |
| | | <div class="text" v-if="item.personTypeDesc"> |
| | | 人员类型:<span>{{ item.personTypeDesc }}</span> |
| | | </div> |
| | | <div class="text" v-if="item.contentTypeDesc"> |
| | | 内容类型:<span>{{ item.contentTypeDesc }}</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" v-if="item.contentType==1"> |
| | | <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="downLoadDialog" title="提示" width="30%" center> |
| | | <span>您确定要导出该条记录吗?</span> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="downLoadDialog = false" size="default">取消</el-button> |
| | | <el-button type="primary" @click="conFirmDownLoad" 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, Download } from '@element-plus/icons-vue'; |
| | | import { ElTable } from 'element-plus'; |
| | | import { FormInstance, FormRules, ElMessage } from 'element-plus'; |
| | | import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; |
| | | import type { TabsPaneContext } from 'element-plus'; |
| | | import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage"; |
| | | import Cookies from 'js-cookie'; |
| | | import axios from 'axios'; |
| | | |
| | | // 定义接口来定义对象的类型 |
| | | interface stateType { |
| | | applyData: Array<string>; |
| | | workTimeList: Array<string>; |
| | | multipleSelection: Array<any>; |
| | | deleteArr: Array<any>; |
| | | casProps: {}; |
| | | approveInfo: Object; |
| | | dialogDetails: boolean; |
| | | dialogStatus: boolean; |
| | | deleteDialog: boolean; |
| | | downLoadDialog: boolean; |
| | | pageIndex1: number; |
| | | pageSize1: number; |
| | | chosenIndex: null | number; |
| | | deleteId: null | number; |
| | | downLoadId: null | number; |
| | | downLoadName: string; |
| | | searchWord: number | null; |
| | | searchDep: number | null; |
| | | searchDate: Array<any>, |
| | | 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: 'myApply', |
| | | components: { |
| | | 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(); |
| | | 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: null, |
| | | searchDep: null, |
| | | searchDate: [], |
| | | applyData: [], |
| | | workTimeList: [], |
| | | multipleSelection: [], |
| | | approveInfo: { |
| | | approvalSteps: [], |
| | | operators: [] |
| | | }, |
| | | casProps: { |
| | | expandTrigger: 'hover', |
| | | emitPath: false, |
| | | value: 'depId', |
| | | label: 'depName', |
| | | checkStrictly: true |
| | | }, |
| | | dialogDetails: false, |
| | | dialogStatus: false, |
| | | deleteDialog: false, |
| | | downLoadDialog: false, |
| | | addRecord: {}, |
| | | details: {}, |
| | | statusInfo: {}, |
| | | deleteId: null, |
| | | downLoadId: null, |
| | | downLoadName: '', |
| | | 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: 'zysq' |
| | | }); |
| | | }; |
| | | |
| | | const handleClick = (tab: TabsPaneContext, event: 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 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 dateRange = JSON.parse(JSON.stringify(state.searchDate)) |
| | | if(dateRange[1]){dateRange[1] = dateRange[1].replace('00:00:00','23:59:59')} |
| | | const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord, applyDepId: state.searchDep,applyStartTime: dateRange[0],applyEndTime: dateRange[1]} }; |
| | | let res = await workApplyApi().getApplyList(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 toNames = (row, column, cellValue, index) => { |
| | | if (row.list == []) { |
| | | return []; |
| | | } else { |
| | | const nameList = []; |
| | | for (let i = 0; i < row.list.length; i++) { |
| | | for (let t = 0; t < state.workTimeList.length; t++) { |
| | | if (row.list[i] == state.workTimeList[t].id) { |
| | | nameList.push(state.workTimeList[t].name); |
| | | } |
| | | } |
| | | } |
| | | return nameList.join(); |
| | | } |
| | | }; |
| | | |
| | | // 关键词查询记录 |
| | | const searchRecord = async () => { |
| | | if (state.searchWord == null && state.searchDep == null && state.searchDate == []) { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '请输入查询关键词' |
| | | }); |
| | | } else { |
| | | getListByPage(); |
| | | } |
| | | }; |
| | | // 重置搜索 |
| | | const clearSearch = async () => { |
| | | state.searchWord = null; |
| | | state.searchDep = null; |
| | | state.searchDate = [] |
| | | getListByPage(); |
| | | }; |
| | | |
| | | // 查看进度 |
| | | const viewStatus = (row) => { |
| | | getStatus({ workApplyId: row.workApplyId }); |
| | | }; |
| | | |
| | | // 查询进度方法 |
| | | const getStatus = async (data: any) => { |
| | | let res = await workApplyApi().getAllStatus(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); |
| | | state.dialogStatus = true; |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | const deleteRecordBtn = (row) => { |
| | | state.deleteId = row.workApplyId; |
| | | state.deleteDialog = true; |
| | | }; |
| | | |
| | | // 导出图表 |
| | | const downLoadBtn = (row:any) =>{ |
| | | state.downLoadId = row.workApplyId; |
| | | state.downLoadName = row.workTypeDesc + row.workPermitNo |
| | | state.downLoadDialog = true; |
| | | } |
| | | |
| | | // 导出方法 |
| | | const downLoadRecord = async (data: any) => { |
| | | // let res = await workApplyApi().postPrinting(data); |
| | | axios.post(import.meta.env.VITE_API_URL + `/work/apply/printingPdf`,data,{headers:{'Content-Type': 'application/json','Authorization': `${Cookies.get('token')}`,'uid':`${Cookies.get('uid')}`},responseType: 'blob'}).then(res=>{ |
| | | if (res) { |
| | | const link = document.createElement('a') |
| | | let blob = new Blob([res.data],{type: 'application/pdf'}) |
| | | link.style.display = "none"; |
| | | link.href = URL.createObjectURL(blob); // 创建URL |
| | | link.setAttribute("download", state.downLoadName + "作业证.pdf"); |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | document.body.removeChild(link); |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '导出失败' |
| | | }); |
| | | } |
| | | }) |
| | | |
| | | }; |
| | | |
| | | const conFirmDownLoad = () => { |
| | | downLoadRecord({ applyWorkId: state.downLoadId }); |
| | | state.downLoadDialog = 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)); |
| | | if(state.details.workDetail.otherSpecialWork == '' || !state.details.workDetail.otherSpecialWork){ |
| | | state.details.workDetail.otherSpecialWork=[] |
| | | } |
| | | else { |
| | | 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, |
| | | Download, |
| | | reLoadData, |
| | | toApply, |
| | | handleClick, |
| | | toNames, |
| | | searchRecord, |
| | | clearSearch, |
| | | viewRecord, |
| | | viewStatus, |
| | | deleteRecordBtn, |
| | | downLoadBtn, |
| | | conFirmDownLoad, |
| | | 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 { |
| | | font-weight: bolder; |
| | | color: #409eff; |
| | | } |
| | | |
| | | &:last-of-type { |
| | | margin-bottom: 0; |
| | | } |
| | | } |
| | | .approveUnit { |
| | | width: 100%; |
| | | font-size: 14px; |
| | | margin-bottom: 20px; |
| | | padding: 10px 15px; |
| | | border: 1px solid #fff; |
| | | background: #ecf8ff; |
| | | border-radius: 6px; |
| | | .item-tit { |
| | | width: 100%; |
| | | display: flex; |
| | | color: #409eff; |
| | | align-items: flex-start; |
| | | justify-content: space-between; |
| | | padding-bottom: 10px; |
| | | border-bottom: 1px solid #a0cfff; |
| | | |
| | | & > span { |
| | | flex: 1; |
| | | &:last-of-type{ |
| | | text-align: center; |
| | | } |
| | | } |
| | | & > div { |
| | | flex: 1; |
| | | text-align: center; |
| | | } |
| | | } |
| | | .item-cont { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | padding: 10px 0; |
| | | border-bottom: 1px solid #c6e2ff; |
| | | |
| | | & > span { |
| | | flex: 1; |
| | | &:last-of-type{ |
| | | text-align: center; |
| | | } |
| | | } |
| | | & > div { |
| | | flex: 1; |
| | | text-align: center; |
| | | |
| | | & > div { |
| | | text-align: left; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | span { |
| | | width: 45%; |
| | | &:first-of-type { |
| | | width: 30%; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | &:last-of-type { |
| | | border-bottom: 0; |
| | | } |
| | | } |
| | | } |
| | | .approveItem { |
| | | width: 100%; |
| | | font-size: 14px; |
| | | margin-bottom: 20px; |
| | | padding: 10px 15px; |
| | | background: #ecf8ff; |
| | | border: 1px solid #fff; |
| | | border-radius: 6px; |
| | | .item-tit { |
| | | width: 100%; |
| | | display: flex; |
| | | color: #409eff; |
| | | align-items: flex-start; |
| | | justify-content: space-between; |
| | | padding-bottom: 10px; |
| | | border-bottom: 1px solid #a0cfff; |
| | | |
| | | & > span { |
| | | flex: 1; |
| | | } |
| | | & > div { |
| | | flex: 2; |
| | | text-align: center; |
| | | } |
| | | } |
| | | .item-cont { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | padding: 10px 0; |
| | | border-bottom: 1px solid #c6e2ff; |
| | | |
| | | & > span { |
| | | flex: 1; |
| | | } |
| | | & > div { |
| | | flex: 2; |
| | | text-align: center; |
| | | |
| | | & > div { |
| | | text-align: left; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: flex-start; |
| | | margin-bottom: 10px; |
| | | span { |
| | | width: 50%; |
| | | &:first-of-type { |
| | | width: 25%; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | &:last-of-type { |
| | | border-bottom: 0; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | &:hover .card-header { |
| | | color: #0098f5; |
| | | } |
| | | &:hover .stepNum { |
| | | border: 2px solid #0098f5; |
| | | color: #0098f5; |
| | | } |
| | | } |
| | | .el-row { |
| | | display: flex; |
| | | align-items: center; |
| | | margin-bottom: 20px; |
| | | &:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | .grid-content { |
| | | align-items: center; |
| | | min-height: 36px; |
| | | } |
| | | |
| | | .topInfo { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | |
| | | & > div { |
| | | white-space: nowrap; |
| | | margin-right: 20px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .el-card { |
| | | border: 0; |
| | | } |
| | | .el-input{ |
| | | width: 100% !important; |
| | | } |
| | | ::v-deep(.el-date-editor){ |
| | | width: 100%; |
| | | } |
| | | .el-select{ |
| | | width: 100%; |
| | | } |
| | | :deep(.el-cascader){ |
| | | width: 100% !important; |
| | | } |
| | | </style> |
对比新文件 |
| | |
| | | <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="workDetail.involvedDepIds"> |
| | | <el-cascader v-model="form.workDetail.involvedDepIds" :options="departList" :show-all-levels="false"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <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-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业内容" prop="workContent"> |
| | | <el-input |
| | | v-model="form.workContent" |
| | | :autosize="{ minRows: 1 }" |
| | | type="textarea" |
| | | placeholder="请输入作业内容" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业地点及动火部位" prop="workLocation"> |
| | | <el-input |
| | | v-model="form.workContent" |
| | | :autosize="{ minRows: 1 }" |
| | | type="textarea" |
| | | placeholder="请输入作业内容" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="动火方式" prop="workDetail.hotMethod"> |
| | | <el-input |
| | | v-model="form.workDetail.hotMethod" |
| | | :autosize="{ minRows: 1 }" |
| | | type="textarea" |
| | | placeholder="请输入动火方式" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="动火人级证书编号" prop="operatorUids"> |
| | | <el-select v-model="form.operatorUids" multiple> |
| | | <el-option |
| | | v-for="item in workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业单位" prop="workDetail.involvedDepIds"> |
| | | <el-cascader v-model="form.workDetail.involvedDepIds" :options="departList" :show-all-levels="false"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业负责人" prop="operatorUids"> |
| | | <el-select v-model="form.operatorUids" multiple> |
| | | <el-option |
| | | v-for="item in workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="分析人" prop="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="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.label" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <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="cameraIds"> |
| | | <el-select v-model="form.cameraIds" multiple> |
| | | <el-option |
| | | v-for="item in deviceList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="动火作业实施时间" prop="workTimeLine"> |
| | | <el-date-picker |
| | | v-model="form.workTimeLine" |
| | | format="YYYY-MM-DD HH:mm" |
| | | value-format="YYYY-MM-DD HH:mm:00" |
| | | type="datetimerange" |
| | | range-separator="至" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-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="datetime" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </el-form> |
| | | <el-table :data="tableData" style="width: 100%"> |
| | | <el-table-column type="index" label="序号"/> |
| | | <el-table-column prop="name" label="安全措施"/> |
| | | <el-table-column prop="address" label="确认人" /> |
| | | </el-table> |
| | | <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 |
| | | } |
| | | export default defineComponent({ |
| | | name: 'fireForm', |
| | | components: { |
| | | |
| | | }, |
| | | props:['departList','workerList','deviceList'], |
| | | setup(props: any, context: any) { |
| | | const userInfo = useUserInfo() |
| | | const { userInfos } = storeToRefs(userInfo); |
| | | const state = reactive<stateType>({ |
| | | equipmentDialog: false, |
| | | form: { |
| | | operatorUids: [], |
| | | workType: 1, |
| | | workLevel: null, |
| | | workContent: '', |
| | | workLocation: '', |
| | | maBaseId: null, |
| | | hazardIdentification: '', |
| | | cameraIds: [], |
| | | workDetail:{ |
| | | hotMethod: '', |
| | | otherSpecialWork: [] |
| | | }, |
| | | receiveUids: [], |
| | | 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' }], |
| | | cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.hotMethod": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] |
| | | }); |
| | | |
| | | // 页面载入时执行方法 |
| | | onMounted(() => { |
| | | |
| | | }); |
| | | |
| | | |
| | | // 折线图 |
| | | const renderMenu = async (value: string) => { |
| | | Session.set('projectId',value) |
| | | userInfos.value.projectId = value |
| | | await initBackEndControlRoutes(); |
| | | }; |
| | | return { |
| | | renderMenu, |
| | | Search, |
| | | ruleFormRef, |
| | | applyRules, |
| | | ...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> |
对比新文件 |
| | |
| | | <template> |
| | | <div class="home-container"> |
| | | <el-tabs type="border-card" @tab-change="switchTab"> |
| | | <el-tab-pane label="动火作业"> |
| | | <fire-form ref="fire" :workerList = allWorkers :deviceList = allDevices :departList = departmentList></fire-form> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="受限空间作业"> |
| | | <!-- <space-form ref="space" :workerList = allWorkers :departList = departmentList :deviceList = allDevices></space-form>--> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="吊装作业"> |
| | | <!-- <hoist-form ref="hoist" :workerList = allWorkers :deviceList = allDevices></hoist-form>--> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="动土作业"> |
| | | <!-- <ground-form ref="ground" :workerList = allWorkers :departList = departmentList :deviceList = allDevices></ground-form>--> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="断路作业"> |
| | | <!-- <broken-form ref="broken" :workerList = allWorkers :departList = departmentList :deviceList = allDevices></broken-form>--> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="高处作业"> |
| | | <!-- <height-form ref="height" :workerList = allWorkers :departList = departmentList :deviceList = allDevices></height-form>--> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="临时用电作业"> |
| | | <!-- <power-form ref="power" :workerList = allWorkers :deviceList = allDevices></power-form>--> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="盲板抽堵作业"> |
| | | <!-- <plate-form ref="plate" :workerList = allWorkers :deviceList = allDevices></plate-form>--> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | <!-- <material-dialog ref="material"></material-dialog>--> |
| | | </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> |
| | | allDevices: Array<any> |
| | | } |
| | | export default defineComponent({ |
| | | name: 'apply', |
| | | components: { |
| | | fireForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue')), |
| | | // spaceForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue')), |
| | | // hoistForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue')), |
| | | // groundForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue')), |
| | | // brokenForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue')), |
| | | // heightForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue')), |
| | | // powerForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue')), |
| | | // plateForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue')), |
| | | }, |
| | | setup() { |
| | | const userInfo = useUserInfo() |
| | | const { userInfos } = storeToRefs(userInfo); |
| | | const state = reactive<stateType>({ |
| | | allWorkers: [], |
| | | departmentList: [], |
| | | allDevices: [] |
| | | }); |
| | | const fire = ref() |
| | | const space = ref() |
| | | const hoist = ref() |
| | | const ground = ref() |
| | | const broken = ref() |
| | | const height = ref() |
| | | const power = ref() |
| | | const plate = ref() |
| | | const material = ref() |
| | | // 获取用户列表 |
| | | 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 |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | // 获取设备列表 |
| | | const getAllDevice = async ()=>{ |
| | | const res = await workApplyApi().getAllDevices() |
| | | if (res.data.code === '200') { |
| | | state.allDevices = JSON.parse(JSON.stringify(res.data.data)) |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | const switchTab = (name)=>{ |
| | | console.log(name,'name') |
| | | fire.value.form.resetFields() |
| | | material.value.maBaseId = null |
| | | material.value.receiveUids = [] |
| | | } |
| | | |
| | | |
| | | // 页面载入时执行方法 |
| | | onMounted(() => { |
| | | getAll(); |
| | | getAllDepartment(); |
| | | getAllDevice() |
| | | }); |
| | | |
| | | return { |
| | | ...toRefs(state), |
| | | fire, |
| | | space, |
| | | broken, |
| | | ground, |
| | | height, |
| | | hoist, |
| | | plate, |
| | | power, |
| | | material, |
| | | switchTab |
| | | }; |
| | | }, |
| | | }); |
| | | </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> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column property="applyTime" label="申请时间" width="180" align="center"/> |
| | | <el-table-column label="申请状态" align="center" width="180"> |
| | | <el-table-column label="申请状态" align="center" width="140"> |
| | | <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 label="作业状态" align="center"> |
| | | <template #default="scope"> |
| | | <el-tag :type="scope.row.working == null? 'danger':scope.row.working.workStatus==2?'success':scope.row.working.workStatus==1?'warning':'danger'">{{ scope.row.working==null?'未开始':scope.row.working.workStatus == 1?'开始': scope.row.working.workStatus == 2?'结束':'未开始'}}</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="验收状态" align="center"> |
| | | <template #default="scope"> |
| | | <el-tag :type="scope.row.working == null? 'danger':scope.row.working.workAcceptStatus==2?'success':scope.row.working.workAcceptStatus== 1?'warning':'danger'">{{ scope.row.working==null?'未开始':scope.row.working.workAcceptStatus == 1?'等待验收': scope.row.working.workAcceptStatus == 2? '已验收':'未开始'}}</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 :disabled="scope.row.status == 7 ? false : true" link type="primary" size="small" :icon="Download" @click="downLoadBtn(scope.row)">导出作业票</el-button> |
| | | <el-button :disabled="scope.row.working && scope.row.working.workAcceptStatus == 2 ? false : true" link type="primary" size="small" :icon="Download" @click="downLoadBtn(scope.row)">导出作业票</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
| | | <el-form-item label="真实姓名" prop="realName"> |
| | | <el-input v-model.trim="userForm.realName" placeholder="请输入真实姓名" clearable></el-input> |
| | | <el-input v-model.trim="userForm.realName" :disabled="allDisabled" placeholder="请输入真实姓名" clearable></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
| | | <el-form-item label="关联角色" prop="roleId"> |
| | | <el-select v-model="userForm.roleId" placeholder="请选择" clearable class="w100"> |
| | | <el-form-item label="关联角色" prop="roleIds"> |
| | | <el-select v-model="userForm.roleIds" placeholder="请选择" clearable class="w100" multiple :disabled="allDisabled"> |
| | | <el-option v-for="item in roleData" :key="item.roleId" :label="item.roleName" :value="item.roleId"> </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
| | | <el-form-item label="部门" prop="depId"> |
| | | <el-cascader :options="departmentData" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable class="w100" v-model="userForm.depId"> </el-cascader> |
| | | <el-cascader :options="departmentData" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable class="w100" v-model="userForm.depId" :disabled="allDisabled"> </el-cascader> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
| | | <el-form-item label="职务" prop="positionId"> |
| | | <el-select v-model="userForm.positionId" placeholder="请选择" clearable class="w100"> |
| | | <el-form-item label="职务" prop="positionIds"> |
| | | <el-select v-model="userForm.positionIds" placeholder="请选择" clearable class="w100" multiple :disabled="allDisabled"> |
| | | <el-option v-for="item in dutyData" :key="item.positionId" :label="item.positionName" :value="item.positionId"> </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
| | | <el-form-item label="手机号" prop="phone"> |
| | | <el-input v-model.trim="userForm.phone" placeholder="请输入手机号" clearable></el-input> |
| | | <el-input v-model.trim="userForm.phone" placeholder="请输入手机号" clearable :disabled="allDisabled"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
| | | <el-form-item label="身份证"> |
| | | <el-input v-model.trim="userForm.identify" placeholder="请输入身份证" clearable></el-input> |
| | | <el-input v-model.trim="userForm.identify" placeholder="请输入身份证" clearable :disabled="allDisabled"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
| | | <el-form-item label="邮箱"> |
| | | <el-input v-model.trim="userForm.email" placeholder="请输入" clearable></el-input> |
| | | <el-input v-model.trim="userForm.email" placeholder="请输入" clearable :disabled="allDisabled"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
| | | <el-form-item label="性别" prop="gender"> |
| | | <el-select v-model="userForm.gender" placeholder="请选择" clearable class="w100"> |
| | | <el-select v-model="userForm.gender" placeholder="请选择" clearable class="w100" :disabled="allDisabled"> |
| | | <el-option v-for="item in sexList" :key="item.id" :value="item.id" :label="item.name"> </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
| | | <el-form-item label="账户过期" prop="expireTime"> |
| | | <el-date-picker v-model="userForm.expireTime" type="date" placeholder="请选择" class="w100"> </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">--> |
| | | <!-- <el-form-item label="账户过期" prop="expireTime">--> |
| | | <!-- <el-date-picker v-model="userForm.expireTime" type="date" placeholder="请选择" class="w100"> </el-date-picker>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" v-if="!disabled"> |
| | | <el-form-item label="账户密码" prop="password"> |
| | | <el-input v-model.trim="userForm.password" placeholder="请输入" type="password" show-password> |
| | |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
| | | <el-form-item label="用户类型" prop="type"> |
| | | <el-select v-model="userForm.type" placeholder="请选择" clearable class="w100"> |
| | | <el-select v-model="userForm.type" placeholder="请选择" clearable class="w100" :disabled="allDisabled"> |
| | | <el-option v-for="item in userTypeList.filter(item => userForm.type === 1 ? item.id === 1 : item.id !== 1)" :key="item.id" :label="item.name" :value="item.id"> </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="isShowUserDialog = !isShowUserDialog" size="default">取 消</el-button> |
| | | <el-button type="primary" v-throttle @click="onSubmit" size="default">确 定</el-button> |
| | | <el-button type="primary" v-throttle @click="onSubmit" size="default" v-if="!allDisabled">确 定</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | |
| | | interface UserState { |
| | | title: string; |
| | | disabled: boolean; |
| | | allDisabled: boolean; |
| | | isShowUserDialog: boolean; |
| | | userForm: { |
| | | username: string; |
| | | realName: string; |
| | | roleId: number | null; |
| | | roleIds: Array<number> |
| | | depId: number | null; |
| | | positionId: number | null; |
| | | positionIds: Array<number> |
| | | phone: string; |
| | | email: string; |
| | | gender: number | null; |
| | | type: number | null; |
| | | password: string; |
| | | expireTime: string; |
| | | status: number; |
| | | identify: string; |
| | | }; |
| | |
| | | const state = reactive<UserState>({ |
| | | title: '', |
| | | disabled: false, |
| | | allDisabled: false, |
| | | isShowUserDialog: false, |
| | | userForm: { |
| | | username: '', // 账户名称 |
| | | realName: '', // 用户昵称 |
| | | roleId: null, // 关联角色 |
| | | roleIds: [], // 关联角色 |
| | | depId: null, // 部门 |
| | | phone: '', // 手机号 |
| | | email: '', // 邮箱 |
| | | identify: '', |
| | | gender: null, // 性别 |
| | | password: '', // 账户密码 |
| | | positionId: null, // 岗位 |
| | | positionIds: [], // 岗位 |
| | | type: null, // 用户类型 |
| | | expireTime: '', // 账户过期 |
| | | status: 1 // 用户状态 |
| | | }, |
| | | userFormRules:{ |
| | | username: [{ required: true, message: '请填写用户名', trigger: 'blur' }], |
| | | realName: [{ required: true, message: '请填写真实姓名', trigger: 'blur' }], |
| | | roleId: [{ required: true, message: '请选择用户角色', trigger: 'change' }], |
| | | roleIds: [{ required: true, message: '请选择用户角色', trigger: 'change' }], |
| | | depId: [{ required: true, message: '请选择部门', trigger: 'change' }], |
| | | positionId: [{ required: true, message: '请选择职务', trigger: 'change' }], |
| | | positionIds: [{ required: true, message: '请选择职务', trigger: 'change' }], |
| | | phone: [{ required: true, message: '请填写手机号', trigger: 'blur' }], |
| | | type: [{ required: true, message: '请填写用户类型', trigger: 'blur' }], |
| | | gender: [{ required: true, message: '请选择性别', trigger: 'change' }], |
| | | expireTime: [{ required: true, message: '请输入账户过期时间', trigger: 'blur' }], |
| | | password: [{ required: true, message: '请输入账户密码', trigger: 'blur' }], |
| | | }, |
| | | departmentData: [], // 部门数据 |
| | |
| | | state.dutyData = dutyList |
| | | if (type === '新增') { |
| | | state.disabled = false |
| | | state.allDisabled = false |
| | | state.title = '新增用户'; |
| | | state.userForm = { |
| | | username: '', |
| | | realName: '', |
| | | roleId: null, |
| | | roleIds: [], |
| | | depId: null, |
| | | phone: '', |
| | | email: '', |
| | | identify: '', |
| | | positionId: null, |
| | | positionIds: [], |
| | | gender: null, |
| | | type: null, |
| | | password: '', |
| | | expireTime: '', |
| | | status: 1 |
| | | }; |
| | | } else { |
| | | } else{ |
| | | if(type === '修改'){ |
| | | state.disabled = true |
| | | state.allDisabled = false |
| | | state.title = '修改用户'; |
| | | state.userForm = JSON.parse(JSON.stringify(value)); |
| | | state.userForm.roleIds = JSON.parse(JSON.stringify(value)).roles?.map(obj=>obj.roleId) |
| | | state.userForm.positionIds = JSON.parse(JSON.stringify(value)).positions?.map(obj=>obj.positionId) |
| | | }else{ |
| | | state.disabled = true |
| | | state.allDisabled = true |
| | | state.title = '查看'; |
| | | state.userForm = JSON.parse(JSON.stringify(value)); |
| | | state.userForm.roleIds = JSON.parse(JSON.stringify(value)).roles?.map(obj=>obj.roleId) |
| | | state.userForm.positionIds = JSON.parse(JSON.stringify(value)).positions?.map(obj=>obj.positionId) |
| | | } |
| | | } |
| | | }; |
| | | |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="positionId" label="职务" show-overflow-tooltip> |
| | | <template #default="scope"> |
| | | {{ parseNumber(scope.row.positionId) }} |
| | | {{ scope.row.positions?.map(i=>i.positionName).join('、') }} |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column prop="type" label="职务" show-overflow-tooltip>--> |
| | |
| | | <!-- {{ `${userTypeList.find(item => item.id === scope.row.type)?.name}` }}--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <el-table-column prop="department.depName" label="部门" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="depName" label="部门" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="phone" label="手机号" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="email" label="邮箱" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="status" label="用户状态" show-overflow-tooltip> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="操作" width="100"> |
| | | <el-table-column label="操作" width="140"> |
| | | <template #default="scope"> |
| | | <el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenUserDialog('查看', scope.row)">查看</el-button> |
| | | <el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenUserDialog('修改', scope.row)">修改</el-button> |
| | | <el-button style="color: red" :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onRowDel(scope.row)">删除</el-button> |
| | | </template> |