From 20b0ce2db27b64a60de60aee05dedd448099e330 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期一, 08 七月 2024 10:12:16 +0800
Subject: [PATCH] xiugai

---
 src/views/specialWorkSystem/specialIndex/index.vue |  293 ++++++++++++++++++++++++++++++----------------------------
 1 files changed, 153 insertions(+), 140 deletions(-)

diff --git a/src/views/specialWorkSystem/specialIndex/index.vue b/src/views/specialWorkSystem/specialIndex/index.vue
index 9e3b2f9..fb47fb3 100644
--- a/src/views/specialWorkSystem/specialIndex/index.vue
+++ b/src/views/specialWorkSystem/specialIndex/index.vue
@@ -66,20 +66,20 @@
         <div class="chart-tit">
           <span class="tit">作业警报记录</span>
           <div class="filter-part">
-            <el-switch
-                v-model="chartSearch4.type"
-                inline-prompt
-                style="--el-switch-on-color: #13ce66; --el-switch-off-color: #13ce66"
-                active-text="作业人"
-                inactive-text="监护人"
-            />
-            <el-select :teleported="false" v-model="chartSearch4.period" size="small">
-              <el-option label="近7天" value="week"/>
-              <el-option label="近30天" value="month"/>
-              <el-option label="近90天" value="season"/>
-              <el-option label="近1年" value="year"/>
+<!--            <el-switch-->
+<!--                v-model="chartSearch4.type"-->
+<!--                inline-prompt-->
+<!--                style="&#45;&#45;el-switch-on-color: #13ce66; &#45;&#45;el-switch-off-color: #13ce66"-->
+<!--                active-text="作业人"-->
+<!--                inactive-text="监护人"-->
+<!--            />-->
+            <el-select :teleported="false" v-model="chartSearch4.days" size="small" @change="(value)=>changeTime4(value)">
+              <el-option label="近7天" :value="7"/>
+              <el-option label="近30天" :value="30"/>
+              <el-option label="近90天" :value="90"/>
+              <el-option label="近1年" :value="365"/>
             </el-select>
-            <el-select :teleported="false" v-model="chartSearch4.workType" size="small">
+            <el-select :teleported="false" v-model="chartSearch4.workType" size="small" @change="changeType4()">
               <el-option
                   v-for="item in workType1"
                   :key="item.id"
@@ -91,17 +91,17 @@
         </div>
         <div class="chart">
           <el-table ref="multipleTableRef" :data="warningData" style="width: 100%" stripe border :header-cell-style="{ background: '#fafafa' }">
-            <el-table-column property="name" label="姓名" align="center"/>
-            <el-table-column property="dep" label="所属部门" align="center"/>
-            <el-table-column property="warning" label="异常报警次数" align="center"/>
-            <el-table-column property="role" label="角色" align="center"/>
-            <el-table-column property="isCard" label="是否持证" align="center">
-              <template #default="scope">
-                <span>{{scope.row.isCard == 1?'是':'否'}}</span>
-              </template>
-            </el-table-column>
+            <el-table-column property="operatorUname" label="姓名" align="center"/>
+            <el-table-column property="deptName" label="所属部门" align="center"/>
+            <el-table-column property="warningCount" label="异常报警次数" align="center"/>
+<!--            <el-table-column property="role" label="角色" align="center"/>-->
+<!--            <el-table-column property="isCard" label="是否持证" align="center">-->
+<!--              <template #default="scope">-->
+<!--                <span>{{scope.row.isCard == 1?'是':'否'}}</span>-->
+<!--              </template>-->
+<!--            </el-table-column>-->
           </el-table>
-          <el-button type="text" size="small" style="margin-top: 10px">所有记录>></el-button>
+<!--          <el-button type="text" size="small" style="margin-top: 10px">所有记录>></el-button>-->
         </div>
         <!--            <div class="chart" :id="slfx"></div>-->
       </div>
@@ -110,7 +110,7 @@
       <div class="homeCard">
         <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10>
         <el-row>
-          <el-col :span="5" style="display:flex;align-items: center">
+          <el-col :span="4" style="display:flex;align-items: center">
             <span style="white-space: nowrap">作业类型:</span>
             <div class="grid-content topInfo">
               <el-select :teleported="false" v-model="searchParams.workType" size="small">
@@ -123,7 +123,7 @@
               </el-select>
             </div>
           </el-col>
-          <el-col :span="5" style="display:flex;align-items: center">
+          <el-col :span="4" style="display:flex;align-items: center">
             <span style="white-space: nowrap">作业状态:</span>
             <div class="grid-content topInfo">
               <el-select :teleported="false" v-model="searchParams.workAllStatus" size="small">
@@ -136,12 +136,12 @@
               </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 :teleported="false" size="small" v-model="searchParams.workDepId" :options="departmentList" :props="casProps" :show-all-levels="false"/>
-            </div>
-          </el-col>
+<!--          <el-col :span="4" style="display:flex;align-items: center">-->
+<!--            <span style="white-space: nowrap">作业部门:</span>-->
+<!--            <div class="grid-content topInfo">-->
+<!--              <el-cascader :teleported="false" size="small" v-model="searchParams.workDepId" :options="departmentList" :props="casProps" :show-all-levels="false"/>-->
+<!--            </div>-->
+<!--          </el-col>-->
           <el-col :span="6" style="display:flex;align-items: center;">
             <span style="white-space: nowrap;margin-left: 20px">申请时间:</span>
             <div class="grid-content topInfo">
@@ -155,6 +155,16 @@
                   start-placeholder="开始日期"
                   end-placeholder="结束日期"
                   format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss"
+              />
+            </div>
+          </el-col>
+          <el-col :span="4" style="display:flex;align-items: center">
+            <span style="white-space: nowrap;margin-left: 20px">作业票编号:</span>
+            <div class="grid-content topInfo">
+              <el-input
+                  v-model="searchParams.workPermitNo"
+                  placeholder="请输入作业票编号"
+                  size="small"
               />
             </div>
           </el-col>
@@ -186,7 +196,12 @@
 <!--          </el-row>-->
           <el-table ref="multipleTableRef" stripe border :data="workData" style="width: 100%" :header-cell-style="{ background: '#fafafa' }">
             <el-table-column property="workPermitNo" label="作业证编号" align="center"/>
-            <el-table-column property="workDepName" label="作业单位" align="center"/>
+            <el-table-column label="作业单位" align="center">
+              <template #default="scope">
+                <span v-if="scope.row.workDepList && scope.row.workDepList.length>0">{{scope.row.workDepList.map(i=>i.workDepName).join(',')}}</span>
+                <span v-else>{{scope.row.workDepName }}</span>
+              </template>
+            </el-table-column>
             <el-table-column property="applyUname" label="申请人" align="center"/>
             <el-table-column property="applyDepName" label="申请单位" align="center"/>
             <el-table-column property="applyTime" label="申请时间" align="center"/>
@@ -416,16 +431,16 @@
       },
       chartSearch2: {
         depId: 1,
-        startTime: '',
+        // startTime: '',
         type: null
       },
       chartSearch3: {
         depId: 1
       },
       chartSearch4: {
-        searchDep: null,
         startTime: '',
-        days: 30
+        days: 30,
+        workType: 1
       },
       searchDep2: null,
       searchDep: null,
@@ -485,29 +500,7 @@
       ],
       pieData: [],
       squareData: [],
-      warningData: [
-        {
-          name: '黄公子',
-          dep: '有机事业部',
-          warning: 69,
-          role: '作业人',
-          isCard: 1
-        },
-        {
-          name: '李飞飞',
-          dep: '有机事业部',
-          warning: 51,
-          role: '监护人',
-          isCard: 0
-        },
-        {
-          name: '黄公子',
-          dep: '有机事业部',
-          warning: 69,
-          role: '作业人',
-          isCard: 1
-        }
-      ],
+      warningData: [],
       reviewForm: {
         advice: ''
       },
@@ -523,31 +516,34 @@
       getTypePie()
       getWorkDep()
       getDepMonth()
-      initZyfb()
-      initSlfx()
-      initZyqs()
+      getWarningList()
     });
     const initTime =()=>{
       state.chartSearch1.startTime = getPeriod(30)
       state.chartSearch2.startTime = getPeriod(30)
+      state.chartSearch4.startTime = getPeriod(30)
       state.endTime = formatDate(new Date())
     }
     const getPeriod =(num)=> {
       const currentDate = new Date();
       const startTime = new Date();
-      startTime.setDate(currentDate.getDate() - num);
+      startTime.setDate(currentDate.getDate() - num - 1);
       return formatDate(startTime)
     }
     const formatDate =(date)=> {
       const year = date.getFullYear().toString();
       const month = ('0' + (date.getMonth() + 1)).slice(-2);
       const day = ('0' + date.getDate()).slice(-2);
-      return `${year}-${month}-${day} 00:00:00`;
+      return `${year}-${month}-${day} 23:59:59`;
     }
     const changeTime1=(value:number)=>{
       state.chartSearch1.startTime = getPeriod(value)
-      console.log(state.chartSearch1.startTime,state.endTime,'结束段')
       getTypePie()
+    }
+    const changeTime4=(value:number)=>{
+      state.chartSearch4.startTime = getPeriod(value)
+      console.log(state.chartSearch4.startTime,state.endTime,'结束段')
+      getWarningList()
     }
     const changeDep1=()=>{
       getTypePie()
@@ -558,6 +554,9 @@
     }
     const changeType2=()=>{
       getWorkDep()
+    }
+    const changeType4=()=>{
+      getWarningList()
     }
     const changeDep3=()=>{
       getDepMonth()
@@ -575,10 +574,12 @@
       }else{
         state.themeColor = '#333'
       }
-      initZyfb()
-      initSlfx()
-      initZyqs()
+      initTime()
       getMydepList()
+      getAllDepartment();
+      getTypePie()
+      getWorkDep()
+      getDepMonth()
     }
     const getTypePie = async ()=>{
       const data = {
@@ -590,7 +591,7 @@
       if (res.data.code === '200') {
         // console.log('饼图数据>>>', res.data.data)
         state.pieData = JSON.parse(JSON.stringify(res.data.data))
-        // initZyfb()
+        initZyfb()
       } else {
         ElMessage({
           type: 'warning',
@@ -600,16 +601,17 @@
     }
     const getWorkDep = async ()=>{
       const data = {
-        startTime: state.chartSearch2.startTime,
-        endTime: state.endTime,
+        // startTime: state.chartSearch2.startTime,
+        // endTime: state.endTime,
         depId:state.chartSearch2.depId,
         type: state.chartSearch2.type
       }
       let res = await specialIndexApi().analyseAllWork(data);
       if (res.data.code === '200') {
-        // console.log('条形图数据>>>', res.data.data)
         state.squareData = JSON.parse(JSON.stringify(res.data.data))
-        // initSlfx()
+        let names = state.squareData.map(i=>i.name)
+        let vals = state.squareData.map(i=>i.value)
+        initSlfx(names,vals)
       } else {
         ElMessage({
           type: 'warning',
@@ -620,9 +622,10 @@
     const getDepMonth = async ()=>{
       let res = await specialIndexApi().analyseDepMonth(state.chartSearch3.depId);
       if (res.data.code === '200') {
-        // console.log('折线图数据>>>', res.data.data)
         state.squareData = JSON.parse(JSON.stringify(res.data.data))
-        // initSlfx()
+        let names = state.squareData.map(i=>i.name)
+        let vals = state.squareData.map(i=>i.value)
+        initZyqs(names,vals)
       } else {
         ElMessage({
           type: 'warning',
@@ -644,6 +647,22 @@
       if (res.data.code === '200') {
         state.workData = JSON.parse(JSON.stringify(res.data.data))
         state.totalSize = res.data.total
+      } else {
+        ElMessage({
+          type: 'warning',
+          message: res.data.msg
+        });
+      }
+    }
+    const getWarningList = async()=>{
+      const data = {
+        startTime: state.chartSearch4.startTime,
+        endTime: state.endTime,
+        workType:state.chartSearch4.workType
+      }
+      let res = await specialIndexApi().getWorkWarning(data)
+      if (res.data.code === '200') {
+        state.warningData = JSON.parse(JSON.stringify(res.data.data))
       } else {
         ElMessage({
           type: 'warning',
@@ -706,16 +725,7 @@
                 shadowColor: 'rgba(0, 0, 0, 0.5)'
               },
             },
-            data: [
-              { value: 0, name: '动火作业' },
-              { value: 0, name: '受限空间作业' },
-              { value: 0, name: '吊装作业' },
-              { value: 0, name: '动土作业' },
-              { value: 0, name: '断路作业' },
-              { value: 0, name: '高处作业' },
-              { value: 0, name: '临时用电作业' },
-              { value: 0, name: '盲板抽堵作业' }
-            ]
+            data: state.pieData
           }
         ]
       }
@@ -725,7 +735,7 @@
         myChart.resize();
       });
     }
-    const initSlfx =()=>{
+    const initSlfx =(names:Array<string>,vals:Array<any>)=>{
       let dom = document.getElementById(slfx.value);
       let myChart = echarts.init(dom);
       let option: EChartsOption;
@@ -745,7 +755,7 @@
         xAxis: [
           {
             type: 'category',
-            data: ['部门一','部门二','部门三'],
+            data: names,
             axisTick: {
               alignWithLabel: true
             },
@@ -764,7 +774,7 @@
             name: 'Direct',
             type: 'bar',
             barWidth: '60%',
-            data: [0,0,0],
+            data: vals,
           }
         ]
       }
@@ -774,14 +784,14 @@
         myChart.resize();
       });
     }
-    const initZyqs =()=>{
+    const initZyqs =(names:Array<string>,vals:Array<any>)=>{
       let dom = document.getElementById(zyqs.value);
       let myChart = echarts.init(dom);
       let option: EChartsOption;
       option = {
         xAxis: {
           type: 'category',
-          data: ['四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月', '一月', '二月', '三月'],
+          data: names,
           axisLabel: {
             color: state.themeColor
           }
@@ -805,7 +815,7 @@
         },
         series: [
           {
-            data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+            data: vals,
             type: 'line',
             label:{
               show: true
@@ -885,6 +895,7 @@
             workAllStatus: null
       }
       state.searchDate = []
+      state.pageIndex = 1
       getMydepList()
     };
 
@@ -1041,9 +1052,11 @@
       slfx,
       zyqs,
       changeTime1,
+      changeTime4,
       changeDep1,
       changeDep2,
       changeType2,
+      changeType4,
       changeDep3,
       toFullscreen,
       // handleReview,
@@ -1164,57 +1177,57 @@
       .chart{
         width: 100%;
         height: 85%;
+        overflow-y: scroll;
         .el-table{
-          height: 90% !important;
-          :deep(.el-table__inner-wrapper){
-            height: 100% !important;
-            .el-table__header-wrapper {
-              height: 20% !important;
-              .el-table__header{
-                height: 100% !important;
-                th{
-                  height: 100% !important;
-                  padding: 0 0 !important;
-                  .cell{
-                    white-space: nowrap;
-                    overflow: hidden;
-                    text-overflow: ellipsis;
-                  }
-                }
-              }
-            }
-            .el-table__body-wrapper {
-              height: 80% !important;
-              .el-scrollbar__view{
-                height: 100% !important;
-                .el-table__body{
-                  height: 100% !important;
-                  tbody{
-                    height: 100% !important;
-                    .el-table__row{
-                      height: 25% !important;
-                      td{
-                        height: 25% !important;
-                        padding: 0 0 !important;
-                        .left-info{
-                          display: flex;
-                          align-items: center;
-                        }
-                        .cell{
-                          white-space: nowrap;
-                          overflow: hidden;
-                          text-overflow: ellipsis;
-                        }
-                        .el-button{
-                          padding: 0 !important;
-                        }
-                      }
-                    }
-                  }
-                }
-              }
-            }
-          }
+          //:deep(.el-table__inner-wrapper){
+          //  height: 100% !important;
+          //  .el-table__header-wrapper {
+          //    height: 20% !important;
+          //    .el-table__header{
+          //      height: 100% !important;
+          //      th{
+          //        height: 100% !important;
+          //        padding: 0 0 !important;
+          //        .cell{
+          //          white-space: nowrap;
+          //          overflow: hidden;
+          //          text-overflow: ellipsis;
+          //        }
+          //      }
+          //    }
+          //  }
+          //  .el-table__body-wrapper {
+          //    height: 80% !important;
+          //    .el-scrollbar__view{
+          //      height: 100% !important;
+          //      .el-table__body{
+          //        height: 100% !important;
+          //        tbody{
+          //          height: 100% !important;
+          //          .el-table__row{
+          //            height: 25% !important;
+          //            td{
+          //              height: 25% !important;
+          //              padding: 0 0 !important;
+          //              .left-info{
+          //                display: flex;
+          //                align-items: center;
+          //              }
+          //              .cell{
+          //                white-space: nowrap;
+          //                overflow: hidden;
+          //                text-overflow: ellipsis;
+          //              }
+          //              .el-button{
+          //                padding: 0 !important;
+          //              }
+          //            }
+          //          }
+          //        }
+          //      }
+          //    }
+          //  }
+          //}
         }
       }
       .el-radio-group{

--
Gitblit v1.9.2