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