From 83bbceeca584500a9902ce1677a3337990d9157a Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期五, 26 五月 2023 17:00:08 +0800 Subject: [PATCH] 新特殊作业 --- src/views/newSpecialWorkSystem/workTicket/sqjl/index.vue | 334 ++++++++++++++++++++++++++++--------------------------- 1 files changed, 170 insertions(+), 164 deletions(-) diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsqjl/index.vue b/src/views/newSpecialWorkSystem/workTicket/sqjl/index.vue similarity index 73% rename from src/views/newSpecialWorkSystem/workTicket/wdsqjl/index.vue rename to src/views/newSpecialWorkSystem/workTicket/sqjl/index.vue index e38b1c2..dcd2db8 100644 --- a/src/views/newSpecialWorkSystem/workTicket/wdsqjl/index.vue +++ b/src/views/newSpecialWorkSystem/workTicket/sqjl/index.vue @@ -4,8 +4,8 @@ <!-- <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> + <span>作业类型:</span> + <el-col :span="10"> <div class="grid-content topInfo"> <el-select v-model="searchWord"> <el-option @@ -15,30 +15,11 @@ :value="item.id" /> </el-select> + + <el-button type="primary" @click="searchRecord">查询</el-button> + <el-button plain @click="clearSearch">重置</el-button> </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"> @@ -51,38 +32,55 @@ <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="seDepName" label="事业部" align="center"/> + <el-table-column property="applyDepName" label="作业所在车间" align="center"/> + <el-table-column property="workContent" 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"> + <el-table-column property="workDepName" label="作业单位" align="center"/> + <el-table-column property="headList" label="负责人及电话" align="center"> <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> + {{scope.row.headList.map(i=>{return i.userName + '(' + i.phone+ ')' }).join(',')}} </template> </el-table-column> - <el-table-column property="applyTime" label="申请时间" width="180" align="center"/> - <el-table-column label="申请状态" align="center" width="140"> + <el-table-column property="operatorList" label="作业人及电话" align="center"> + <template #default="scope"> + {{scope.row.operatorList.map(i=>{return i.userName + '(' + i.phone+ ')' }).join(',')}} + </template> + </el-table-column> + <el-table-column property="guardianList" label="监护人及电话" align="center"> + <template #default="scope"> + {{scope.row.guardianList.map(i=>{return i.userName + '(' + i.phone+ ')' }).join(',')}} + </template> + </el-table-column> + <el-table-column property="expStartTime" label="作业开始时间" align="center"/> + <el-table-column property="expEndTime" label="预计完成时间" align="center"/> + <el-table-column label="执法仪编号" align="center"> + <template #default="scope"> + {{scope.row.workApprovalDeviceList.map(i=>i.deviceNo).join(',')}} + </template> + </el-table-column> + <el-table-column label="作业人数" align="center"> + <template #default="scope"> + {{scope.row.operatorList.length}} + </template> + </el-table-column> + <el-table-column label="监护人数" align="center"> + <template #default="scope"> + {{scope.row.guardianList.length}} + </template> + </el-table-column> + <el-table-column label="风险研判" align="center"> <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> + <el-tag>{{ statusList.find(i=>i.value === scope.row.status)?.label }}</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"> + <el-table-column fixed="right" label="操作" align="center" width="300"> <template #default="scope"> + <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">作废</el-button> <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> + <el-button link type="success" size="small" :icon="Finished">修改</el-button> + <el-button link type="success" size="small" :icon="Download">正式办票</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> @@ -93,14 +91,15 @@ </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> +<!-- <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>--> + <detail-log :type=dialogType :statusList=statusList :details = details></detail-log> <template #footer> <span class="dialog-footer"> <el-button type="primary" @click="dialogDetails = false" @@ -121,19 +120,13 @@ <div class="stepCard"> <el-card class="box-card" shadow="always"> <div class="text"> - 审批结果:<span>{{ item.approvalResultDesc }}</span> + 审批结果:<span class="bold-text">{{ item.approvalResultDesc }}</span> </div> - <div class="text" v-if="item.approvalTypeDesc"> - 层级类型:<span>{{ item.approvalTypeDesc }}</span> + <div class="text"> + 审批类型:<span class="bold-text">{{ item.typeDesc }}</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> + 审批类型:<span class="bold-text">{{ item.auditTypeDesc }}</span> </div> <div class="text" v-show="item.startApprovalTime != null"> 开始时间:<span>{{ item.startApprovalTime }}</span> @@ -145,7 +138,7 @@ ><span>{{ i.resultDesc }}</span> </div> </div> - <div class="approveItem" v-if="item.contentType==1"> + <div class="approveItem"> <div class="item-tit"> <span>审批项目</span> <!-- <span>类型</span>--> @@ -172,7 +165,7 @@ </div> </div> </div> - <div class="text" v-show="item.expFinishApprovalTime != null"> + <div class="text" v-show="item.expFinishApprovalTime && item.expFinishApprovalTime != null"> 期望结束时间:<span>{{ item.expFinishApprovalTime }}</span> </div> <div class="text" v-show="item.finishApprovalTime != null"> @@ -182,6 +175,15 @@ </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> @@ -252,7 +254,6 @@ workTimeList: Array<string>; multipleSelection: Array<any>; deleteArr: Array<any>; - casProps: {}; approveInfo: Object; dialogDetails: boolean; dialogStatus: boolean; @@ -264,9 +265,7 @@ deleteId: null | number; downLoadId: null | number; downLoadName: string; - searchWord: number | null; - searchDep: number | null; - searchDate: Array<any>, + searchWord: string; totalSize1: number; activeName: string; addRecord: {}; @@ -276,6 +275,7 @@ dialogType: number | null; departmentList: Array<any>; departmentRecursionList: Array<DepartmentState>; + statusList: Array<any>; } interface type { id: number; @@ -286,16 +286,9 @@ depName: string; } export default defineComponent({ - name: 'myApply', + name: 'applys', 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')) + detailLog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/detailLog.vue')) }, setup() { const userInfo = useUserInfo(); @@ -310,22 +303,13 @@ departmentList: [], departmentRecursionList: [], chosenIndex: null, - searchWord: null, - searchDep: null, - searchDate: [], + searchWord: '', applyData: [], workTimeList: [], multipleSelection: [], approveInfo: { approvalSteps: [], operators: [] - }, - casProps: { - expandTrigger: 'hover', - emitPath: false, - value: 'depId', - label: 'depName', - checkStrictly: true }, dialogDetails: false, dialogStatus: false, @@ -347,7 +331,53 @@ { id: 6, name: '高处作业' }, { id: 7, name: '临时用电作业' }, { id: 8, name: '盲板抽堵作业' } - ] + ], + statusList: [ + { + value: -1, + label: '废止' + }, + { + value: 0, + label: '风险研判中' + }, + { + value: 1, + label: '票证办理中' + }, + { + value: 2, + label: '安全措施确认中' + }, + { + value: 3, + label: '培训交底中' + }, + { + value: 4, + label: '气体分析中' + }, + { + value: 5, + label: '作业开始' + }, + { + value: 6, + label: '作业监护' + }, + { + value: 7, + label: '作业结束' + }, + { + value: 8, + label: '作业验收' + }, + { + value: 9, + label: '安全措施确认,培训交底中' + } + ] }); interface User { name: string; @@ -375,7 +405,7 @@ let res = await teamManageApi().getAllDepartment(); if (res.data.code === '200') { state.departmentList = JSON.parse(JSON.stringify(res.data.data)) - // recursion(state.departmentList); + recursion(state.departmentList); } else { ElMessage({ type: 'warning', @@ -384,23 +414,21 @@ } }; - // 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 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); + const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord } }; + let res = await workApplyApi().getAllNewApplyListPage(data); if (res.data.code === '200') { state.applyData = JSON.parse(JSON.stringify(res.data.data)); state.applyData = state.applyData.map((item) => { @@ -439,7 +467,7 @@ // 关键词查询记录 const searchRecord = async () => { - if (state.searchWord == null && state.searchDep == null && state.searchDate == []) { + if (state.searchWord == '') { ElMessage({ type: 'warning', message: '请输入查询关键词' @@ -450,24 +478,22 @@ }; // 重置搜索 const clearSearch = async () => { - state.searchWord = null; - state.searchDep = null; - state.searchDate = [] + state.searchWord = ''; getListByPage(); }; // 查看进度 const viewStatus = (row) => { getStatus({ workApplyId: row.workApplyId }); + state.dialogStatus = true; }; // 查询进度方法 const getStatus = async (data: any) => { - let res = await workApplyApi().getAllStatus(data); + 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); - state.dialogStatus = true; } else { ElMessage({ type: 'warning', @@ -479,6 +505,28 @@ 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; }; // 导出图表 @@ -504,7 +552,7 @@ } else { ElMessage({ type: 'warning', - message: '导出失败' + message: res.data.msg }); } }) @@ -529,39 +577,6 @@ 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; }; @@ -596,6 +611,7 @@ viewStatus, deleteRecordBtn, downLoadBtn, + conFirmDelete, conFirmDownLoad, getListByPage, handleSizeChange1, @@ -717,8 +733,11 @@ padding-left: 10px; span { - font-weight: bolder; color: #409eff; + } + + .bold-text{ + font-weight: bolder; } &:last-of-type { @@ -873,7 +892,6 @@ } .topInfo { - width: 100%; display: flex; align-items: center; font-size: 16px; @@ -885,20 +903,8 @@ } } } -} -.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; + .el-card { + border: 0; + } } </style> -- Gitblit v1.9.2