value
2024-05-16 3eadfb9665b40d2ec77bf70aebfbd7e54199efa6
src/components/view/b3-classes.vue
@@ -44,12 +44,12 @@
      <el-button size="small" type="primary" @click="refreshTable()">查 询</el-button>
    </div>
    <div class="search_thing btns" style="padding-left: 30px;">
      <el-button size="small" type="primary" v-if="downPower">导 出</el-button>
      <el-button size="small" type="primary" v-if="downPower" @click="handleDown" :loading="downLoading">导 出</el-button>
      <el-button size="small" type="primary" @click="schedulingVisible = true" v-if="addPower">排 班</el-button>
    </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;">
@@ -87,7 +87,7 @@
                  <!-- <div class="work-box-left">
                    <span>{{ getShiftByDic(m.shift) }}</span>
                  </div> -->
                  <el-dropdown trigger="click" placement="bottom" @command="e=>handleCommand(e,m)" :disabled="!downPower">
                  <el-dropdown trigger="click" placement="bottom" @command="e=>handleCommand(e,m)" :disabled="!upPower">
                    <!-- <i class="el-icon-arrow-down el-icon--right" style="font-size: 20px;color: #fff;cursor: pointer;"></i> -->
                    <span style="cursor: pointer;" :style="`opacity: ${getShiftByDic(m.shift)=='无'?0:1};`">{{ getShiftByDic(m.shift) }}</span>
                    <el-dropdown-menu slot="dropdown">
@@ -101,7 +101,7 @@
        </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;">
@@ -286,7 +286,9 @@
      pageLoading: false, // 组件loading的展示,默认为true
      finishLoding: false, // 加载完成,显示已经没有更多了
      monthList:[],
      yearList:[]
      yearList:[],
      downLoading:false,
      keyMap:{},
    }
  },
  watch: {
@@ -331,6 +333,7 @@
    refresh(){
      this.list = [];
      this.yearList = []
      this.keyMap = {};
      this.currentPage = 1
      this.query = {
        userName:'',
@@ -345,6 +348,7 @@
      }
    },
    refreshTable(){
      this.keyMap = {};
      this.currentPage = 1
      if(this.query.month){
        this.list = [];
@@ -355,6 +359,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
      }
@@ -405,6 +417,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
@@ -516,6 +536,40 @@
        this.refresh()
      })
    },
    handleDown(){
      let year = this.query.year.getFullYear()
      let time = '';
      if(this.query.month){
        let month = this.query.month>9?this.query.month:'0'+this.query.month
        time = year+'-'+month+'-01 00:00:00'
      }else{
        time = year+'-01-01 00:00:00'
      }
      this.downLoading = true
      this.$axios.get(this.$api.performanceShift.export+`?time=${time}&userName=${this.query.userName}&laboratory=${this.query.laboratory}&isMonth=${this.query.month?true:false}`,{responseType: 'blob'}).then(res => {
        this.$message.success('下载成功')
        this.downLoading = false
        const blob = new Blob([res], {
          type: 'application/force-download'
        })
        let fileName="";
        if(this.query.month){
          fileName = year +'-'+this.query.month+' 班次信息'
        }else{
          fileName = year+' 班次汇总'
        }
        const filename = decodeURI(fileName+'.xlsx')
        // 创建一个超链接,将文件流赋进去,然后实现这个超链接的单击事件
        const elink = document.createElement('a')
        elink.download = filename
        elink.style.display = 'none'
        elink.href = URL.createObjectURL(blob)
        document.body.appendChild(elink)
        elink.click()
        URL.revokeObjectURL(elink.href) // 释放URL 对象
        document.body.removeChild(elink)
      })
    },
    selectEnumByCategory() {
      this.$axios.post(this.$api.enums.selectEnumByCategory, {
        category: "班次类型"