From 6bb8da1d317da366769d64120ee645c03f305023 Mon Sep 17 00:00:00 2001
From: Crunchy <3114200645@qq.com>
Date: 星期四, 16 五月 2024 14:55:25 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/components/view/b3-classes.vue |   64 +++++++++++++++++++++++++++++--
 1 files changed, 59 insertions(+), 5 deletions(-)

diff --git a/src/components/view/b3-classes.vue b/src/components/view/b3-classes.vue
index 0417519..e4fc53a 100644
--- a/src/components/view/b3-classes.vue
+++ b/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鐨勫睍绀�,榛樿涓簍rue
       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瀛樺湪锛岃〃绀虹紦瀛樻湁鍊硷紝閭d箞闃绘璇锋眰
+      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瀛樺湪锛岃〃绀虹紦瀛樻湁鍊硷紝閭d箞闃绘璇锋眰
+      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: "鐝绫诲瀷"

--
Gitblit v1.9.3