From d44b083e83ce8e17b681fa8e3f4ea3ed0f1572ec Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期六, 27 七月 2024 09:59:26 +0800
Subject: [PATCH] 修改班次分页

---
 src/components/view/b3-classes.vue |  199 +++++++++++++++++++++++++++++++++----------------
 1 files changed, 134 insertions(+), 65 deletions(-)

diff --git a/src/components/view/b3-classes.vue b/src/components/view/b3-classes.vue
index 45d37c3..3a2811d 100644
--- a/src/components/view/b3-classes.vue
+++ b/src/components/view/b3-classes.vue
@@ -50,7 +50,7 @@
     </div>
   </div>
   <div class="center" v-loading="pageLoading">
-    <scroll-pagination @load="init" :finishLoding="finishLoding" v-show="query.month&&list.length>0" style="height: 100%;" :key="'123'" :list="list">
+    <!-- <scroll-pagination @load="init" :finishLoding="finishLoding" v-show="query.month&&list.length>0" style="height: 100%;" :key="'123'" :list="list">
       <div class="clearfix">
         <div class="fixed-left">
           <div class="content-title" style="padding-left: 16px;box-sizing: border-box;">
@@ -97,10 +97,101 @@
           </div>
         </div>
       </div>
-    </scroll-pagination>
-    <scroll-pagination @load="initYear" :finishLoding="finishLoding" v-show="!query.month&&yearList.length>0" style="width: 100%;" :key="'111'" :list="yearList">
-      <div class="clearfix year-table">
+    </scroll-pagination> -->
+    <div class="clearfix" style="width: 100%;" v-show="query.month">
       <div class="fixed-left">
+        <div class="content-title" style="padding-left: 16px;box-sizing: border-box;">
+          浜哄憳鍚嶇О
+        </div>
+        <div class="content-user" :class="{hoverType:currentUserIndex==index}" v-for="(item,index) in list" :key="'e'+index" v-on:mouseenter="onMouseEnter(index)"
+        v-on:mouseleave="currentUserIndex=null">
+          <div class="user-pic">{{ item.name.charAt(0) }}</div>
+          <div class="user-info">
+            <p style="font-size: 14px;color: #3A7BFA;line-height: 24px;">{{ item.name }}</p>
+            <p style="color: #999999;font-size: 12px;transform: scale(0.8) translateX(-20px);white-space: nowrap;width: 150px;overflow-x: show;">鏃�:{{ item.day0 }},涓�:{{ item.day1 }},澶�:{{ item.day2 }},浼�:{{ item.day3 }},鍋�:{{ item.day4 }},宸�:{{ item.day6 }}</p>
+            <p style="margin-top: 4px;"><span style="color: #999999;font-size: 12px;display: inline-block;transform: scale(0.8) translateX(-10px);">鍚堣鍑哄嫟: </span><span style="font-size: 16px;
+  color: #FF4902;">{{ query.month?item.monthlyAttendance
+.totalAttendance:item.sidebarAnnualAttendance
+.totalAttendance }}澶�</span></p>
+          </div>
+        </div>
+      </div>
+      <div class="scroll-right">
+        <div class="content">
+          <div class="content-title content-title-right" style="border-bottom: 0;">
+            <div class="content-title-item" v-for="(item,index) in weeks" :key="'b'+index">
+              <span class="month" style="position: absolute;top: 4px;" v-if="item.week=='鍛ㄦ棩'">{{ item.weekNum }}鍛�</span>
+              <p style="height: 26px;position: absolute;bottom: 12px;">
+                <span class="day">{{ item.day }}</span>
+                <span class="week">{{ item.week.charAt(1) }}</span>
+              </p>
+            </div>
+          </div>
+          <div class="content-body" v-for="(item,index) in list" :key="'c'+index"
+          v-on:mouseenter="onMouseEnter(index)"
+        v-on:mouseleave="currentUserIndex=null">
+            <div class="content-body-item" v-for="(m,i) in item.list" :key="'d'+i" :class="{hoverType:currentUserIndex==index}">
+              <el-dropdown trigger="click" placement="bottom" @command="e=>handleCommand(e,m)" :disabled="!upPower" style="width: 100%;height: 100%;cursor: pointer;">
+                  <div class="work-box" :class="{type0:m.shift==='0',type1:m.shift==='1',type2:m.shift==='2',type3:m.shift==='3',type4:m.shift==='4',type5:m.shift==='5',type6:m.shift==='6'}">
+                  <span style="cursor: pointer;" :style="`opacity: ${getShiftByDic(m.shift)=='鏃�'?0:1};`">{{ getShiftByDic(m.shift) }}</span>
+                </div>
+                  <el-dropdown-menu slot="dropdown">
+                    <el-dropdown-item v-for="(n,j) in classType" :key="'h'+j" :command="n.value">{{ n.label }}</el-dropdown-item>
+                  </el-dropdown-menu>
+                </el-dropdown>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="clearfix year-table" style="width: 100%;" v-show="!query.month">
+      <div class="fixed-left">
+      <div class="content-title" style="padding-left: 16px;box-sizing: border-box;">
+          浜哄憳鍚嶇О
+      </div>
+      <div class="content-user" :class="{hoverType:currentUserIndex==index}" v-for="(item,index) in yearList" :key="'e'+index" v-on:mouseenter="onMouseEnter(index)"
+        v-on:mouseleave="currentUserIndex=null">
+          <div class="user-pic">{{ item.name.charAt(0) }}</div>
+          <div class="user-info">
+            <p style="font-size: 14px;color: #3A7BFA;line-height: 24px;">{{ item.name }}</p>
+            <p style="color: #999999;font-size: 12px;transform: scale(0.8) translateX(-20px);white-space: nowrap;width: 150px;overflow-x: show;">鏃�:{{ item.day0 }},涓�:{{ item.day1 }},澶�:{{ item.day2 }},浼�:{{ item.day3 }},鍋�:{{ item.day4 }},宸�:{{ item.day6 }}</p>
+            <p style="margin-top: 4px;"><span style="color: #999999;font-size: 12px;display: inline-block;transform: scale(0.8) translateX(-10px);">鍚堣鍑哄嫟: </span><span style="font-size: 16px;
+  color: #FF4902;">{{ item.work_time }}澶�</span></p>
+          </div>
+        </div>
+      </div>
+      <div class="scroll-right">
+          <div class="content">
+            <div>
+              <div class="content-title content-title-right" style="border-bottom: 0;height: 52px;" :style="`display: grid;
+              grid-template-columns: repeat(${monthList.length}, 1fr);`">
+                <div class="content-title-item" v-for="(item,index) in monthList" :key="'b'+index" style="height: 52px;">
+                  <span class="month">{{ item }}鏈�</span>
+              </div>
+            </div>
+            <div
+            class="content-body"
+            v-for="(item,index) in yearList"
+            :key="'c'+index"
+            v-on:mouseenter="onMouseEnter(index)"
+            v-on:mouseleave="currentUserIndex=null"
+            :style="`display: grid;
+            grid-template-columns: repeat(${monthList.length}, 1fr);`"
+            >
+              <div class="content-body-item" v-for="(m,i) in item.monthList" :key="'d'+i" :class="{hoverType:currentUserIndex==index}">
+                <p style="color:rgb(153, 153, 153);font-size: 12px;">鍚堣鍑哄嫟锛�<span style="font-size: 14px;color:#000">{{ m.totalMonthAttendance }}</span></p>
+                <p style="color:rgb(153, 153, 153);font-size: 12px;">
+                  鏃�:{{ m.day0 }},涓�:{{ m.day1 }},澶�:{{ m.day2 }},浼�:{{ m.day3 }},鍋�:{{ m.day4 }},宸�:{{ m.day6 }}
+                </p>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- <scroll-pagination @load="initYear" :finishLoding="finishLoding" v-show="!query.month&&yearList.length>0" style="width: 100%;" :key="'111'" :list="yearList">
+      <div class="clearfix year-table">
+        <div class="fixed-left">
         <div class="content-title" style="padding-left: 16px;box-sizing: border-box;">
             浜哄憳鍚嶇О
         </div>
@@ -144,9 +235,17 @@
         </div>
       </div>
     </div>
-    </scroll-pagination>
-    <span style="color:#909399;font-size:14px;position: absolute;left:50%;top: 50%;transform: translate(-59%,-50%);" v-if="(query.month&&list.length==0)||(!query.month&&yearList.length==0)">鏆傛棤鏁版嵁</span>
+    </scroll-pagination> -->
+    <!-- <span style="color:#909399;font-size:14px;position: absolute;left:50%;top: 50%;transform: translate(-59%,-50%);" v-if="(query.month&&list.length==0)||(!query.month&&yearList.length==0)">鏆傛棤鏁版嵁</span> -->
   </div>
+<el-pagination
+  background
+  @current-change="currentChange"
+  :page-size="pageSize" :current-page="currentPage"
+  layout="total, prev, pager, next, jumper"
+  :total="total" style="margin-top: 10px;text-align: right;margin-right: 30px;">
+</el-pagination>
+
   <el-dialog title="鏃堕棿閰嶇疆" :visible.sync="configTimeVisible" width="620px">
     <div v-loading="configTimeVisibleLoading" style="min-height: 200px;">
       <div v-for="(item, index) in timeQuery">
@@ -325,19 +424,18 @@
       },
       list:[],
       currentPage: 1, // 褰撳墠椤�
-      pageSize: 10, // 涓�椤�10鏉�
-      total: '',
+      pageSize: 6, // 涓�椤�10鏉�
+      total: 0,
       pageLoading: false, // 缁勪欢loading鐨勫睍绀�,榛樿涓簍rue
       finishLoding: false, // 鍔犺浇瀹屾垚锛屾樉绀哄凡缁忔病鏈夋洿澶氫簡
       monthList:[],
       yearList:[],
       downLoading:false,
-      keyMap:{},
       configTimeVisible: false, // 鏃堕棿閰嶇疆寮规
       configTimeVisibleLoading: false, // 鏃堕棿閰嶇疆寮规loading
       timeTypeList: [],
       timeQuery: [],
-      listPower:false
+      listPower:false,
     }
   },
   watch: {
@@ -382,8 +480,6 @@
     refresh(){
       this.list = [];
       this.yearList = []
-      this.keyMap = {};
-      this.finishLoding = false;
       this.currentPage = 1
       this.query = {
         userName:'',
@@ -398,14 +494,20 @@
       }
     },
     refreshTable(){
-      this.keyMap = {};
       this.currentPage = 1
-      this.finishLoding = false;
       if(this.query.month){
         this.list = [];
         this.init()
       }else{
         this.yearList = []
+        this.initYear()
+      }
+    },
+    currentChange(num){
+      this.currentPage = num
+      if(this.query.month){
+        this.init()
+      }else{
         this.initYear()
       }
     },
@@ -427,17 +529,7 @@
       return overWan ? getWan(overWan) + "涓�" + getWan(noWan) : getWan(num)
     },
     init(){
-      const key = `_${this.currentPage}`
-      const value = this.keyMap[key]
-      // 濡傛灉value瀛樺湪锛岃〃绀虹紦瀛樻湁鍊硷紝閭d箞闃绘璇锋眰
-      if(value) {
-        return
-      }
-      // value涓嶅瓨鍦紝琛ㄧず绗竴娆¤姹�,璁剧疆鍗犱綅
-      this.keyMap[key] = 'temp'
-      if(this.currentPage==1){
-        this.pageLoading = true
-      }
+      this.pageLoading = true
       let year = this.query.year.getFullYear()
       let month0 = this.query.month?this.query.month:new Date().getMonth()+1
       let month = month0>9?month0:'0'+month0
@@ -450,8 +542,8 @@
         }).then(res => {
           this.pageLoading = false
           if (res.code == 201) return
-          this.total = res.data.total
-          let list = res.data.page.records.map(item=>{
+          this.total = res.data.page.total
+          this.list = res.data.page.records.map(item=>{
             for (let key in item.monthlyAttendance) {
               let type = this.getDayByDic(key)
               if(type!=undefined||type!=null){
@@ -470,33 +562,10 @@
             }
             this.weeks.push(obj)
           })
-          if(list.length==0){
-            this.finishLoding = true;
-          }else{
-            if(list.length<this.pageSize){
-              this.finishLoding = true;
-            }
-            this.list = this.list.concat(list)
-            if(this.total==this.list.length){
-              this.finishLoding = true;
-            }
-            this.currentPage++;
-          }
         })
     },
     initYear(){
-      const key = `_${this.currentPage}`
-      const value = this.keyMap[key]
-      // 濡傛灉value瀛樺湪锛岃〃绀虹紦瀛樻湁鍊硷紝閭d箞闃绘璇锋眰
-      if(value) {
-        return
-      }
-      // value涓嶅瓨鍦紝琛ㄧず绗竴娆¤姹�,璁剧疆鍗犱綅
-      this.keyMap[key] = 'temp'
-      // pageYear
-      if(this.currentPage==1){
-        this.pageLoading = true
-      }
+      this.pageLoading = true
       let year = this.query.year.getFullYear()
       this.$axios.post(this.$api.performanceShift.pageYear, {
         size:this.pageSize,
@@ -508,7 +577,7 @@
           this.pageLoading = false
           if (res.code == 201) return
           this.total = res.data.total
-          let list = res.data.records.map(item=>{
+          this.yearList = res.data.records.map(item=>{
             for (let key in item.year) {
               let type = this.getDayByDic(key)
               if(type!=undefined||type!=null){
@@ -529,18 +598,18 @@
             }
             return item
           });
-          if(list.length==0){
-            this.finishLoding = true;
-          }else{
-            if(list.length<this.pageSize){
-              this.finishLoding = true;
-            }
-            this.yearList = this.yearList.concat(list)
-            if(this.total==this.yearList.length){
-              this.finishLoding = true;
-            }
-            this.currentPage++;
-          }
+          // if(list.length==0){
+          //   this.finishLoding = true;
+          // }else{
+          //   if(list.length<this.pageSize){
+          //     this.finishLoding = true;
+          //   }
+          //   this.yearList = this.yearList.concat(list)
+          //   if(this.total==this.yearList.length){
+          //     this.finishLoding = true;
+          //   }
+          //   this.currentPage++;
+          // }
         })
     },
     getPower() {
@@ -883,7 +952,7 @@
 }
 .center {
   width: 100%;
-  height: calc(100% - 50px );
+  height: calc(100% - 100px );
   background-color: #fff;
   overflow-y: auto;
   display: flex;

--
Gitblit v1.9.3