licp
2024-07-03 57e76b55709e8ea88a83ab6c3f665fd9ee7fd64c
src/components/view/b3-classes.vue
@@ -49,7 +49,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'">
    <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;">
@@ -83,25 +83,21 @@
            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}">
                <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'}">
                  <!-- <div class="work-box-left">
                    <span>{{ getShiftByDic(m.shift) }}</span>
                  </div> -->
                  <el-dropdown trigger="click" placement="bottom" @command="e=>handleCommand(e,m)" :disabled="!downPower">
                    <!-- <i class="el-icon-arrow-down el-icon--right" style="font-size: 20px;color: #fff;cursor: pointer;"></i> -->
                <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>
    </scroll-pagination>
    <scroll-pagination @load="initYear" :finishLoding="finishLoding" v-show="!query.month&&yearList.length>0" style="width: 100%;" :key="'111'">
    <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;">
@@ -288,6 +284,7 @@
      monthList:[],
      yearList:[],
      downLoading:false,
      keyMap:{},
    }
  },
  watch: {
@@ -332,6 +329,8 @@
    refresh(){
      this.list = [];
      this.yearList = []
      this.keyMap = {};
      this.finishLoding = false;
      this.currentPage = 1
      this.query = {
        userName:'',
@@ -346,7 +345,9 @@
      }
    },
    refreshTable(){
      this.keyMap = {};
      this.currentPage = 1
      this.finishLoding = false;
      if(this.query.month){
        this.list = [];
        this.init()
@@ -356,6 +357,14 @@
      }
    },
    init(){
      const key = `_${this.currentPage}`
      const value = this.keyMap[key]
      // 如果value存在,表示缓存有值,那么阻止请求
      if(value) {
        return
      }
      // value不存在,表示第一次请求,设置占位
      this.keyMap[key] = 'temp'
      if(this.currentPage==1){
        this.pageLoading = true
      }
@@ -406,6 +415,14 @@
        })
    },
    initYear(){
      const key = `_${this.currentPage}`
      const value = this.keyMap[key]
      // 如果value存在,表示缓存有值,那么阻止请求
      if(value) {
        return
      }
      // value不存在,表示第一次请求,设置占位
      this.keyMap[key] = 'temp'
      // pageYear
      if(this.currentPage==1){
        this.pageLoading = true
@@ -619,6 +636,33 @@
        return obj.label
      }
      return '无'
    },
    scrollInit() {
      // 获取要绑定事件的元素
      const nav = document.getElementById("nav")
      var flag; // 鼠标按下
      var downX; // 鼠标点击的x下标
      var scrollLeft; // 当前元素滚动条的偏移量
      nav.addEventListener("mousedown", function(event) {
        flag = true;
        downX = event.clientX; // 获取到点击的x下标
        scrollLeft = this.scrollLeft; // 获取当前元素滚动条的偏移量
      });
      nav.addEventListener("mousemove", function(event) {
        if (flag) { // 判断是否是鼠标按下滚动元素区域
          var moveX = event.clientX; // 获取移动的x轴
          var scrollX = moveX - downX; // 当前移动的x轴下标减去刚点击下去的x轴下标得到鼠标滑动距离
          this.scrollLeft = scrollLeft - scrollX // 鼠标按下的滚动条偏移量减去当前鼠标的滑动距离
        }
      });
      // 鼠标抬起停止拖动
      nav.addEventListener("mouseup", function() {
        flag = false;
      });
      // 鼠标离开元素停止拖动
      nav.addEventListener("mouseleave", function(event) {
        flag = false;
      });
    }
  }
}
@@ -683,6 +727,7 @@
  min-height: calc(100% - 10px); /* 视口高度 */
  margin-left: 220px;
  overflow-x: scroll;
  /* overflow-x: hidden; */
}
.content {
@@ -748,7 +793,7 @@
  display: flex;
  align-items: center;
  justify-content: space-around;
  background: #F5F7FB;
  background: #edeff2;
  border-radius: 8px 8px 8px 8px;
  color: #999;
  font-size: 14px;
@@ -850,7 +895,7 @@
  margin-left: 10px;
}
.hoverType{
  background: rgba(58,123,250,0.05);
  background: rgba(58,123,250,0.03);
}
.year-table{
  width: 100%;