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/main.js | 4
src/components/view/b3-classes.vue | 199 +++++++++++++++++++++++++++++++++----------------
2 files changed, 136 insertions(+), 67 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;
diff --git a/src/main.js b/src/main.js
index bfb7b42..71d2cef 100644
--- a/src/main.js
+++ b/src/main.js
@@ -21,11 +21,11 @@
// Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80";
// const javaApi = 'http://127.0.0.1:8001';
// 寮狅細192.168.45.249
-const javaApi = 'http://192.168.45.249:8001';
+// const javaApi = 'http://192.168.45.249:8001';
//浜�
// Vue.prototype.LOCATIONVUE = "http://114.132.189.42:8080";
-// const javaApi = 'http://114.132.189.42:1234';
+const javaApi = 'http://114.132.189.42:1234';
// //妫�娴嬩腑蹇冩寮忓簱
// Vue.prototype.LOCATIONVUE = "http://10.1.200.86:8080";
--
Gitblit v1.9.3