瀏覽代碼

feat: 多任务管控

zhangjie 1 年之前
父節點
當前提交
a49b8bc6d5
共有 2 個文件被更改,包括 33 次插入7 次删除
  1. 12 4
      src/views/base/track-export/index.vue
  2. 21 3
      src/views/base/track-export/indexDetail.vue

+ 12 - 4
src/views/base/track-export/index.vue

@@ -36,13 +36,13 @@
   </div>
   </div>
   <div class="part-box">
   <div class="part-box">
     <a-space class="part-action" :size="6">
     <a-space class="part-action" :size="6">
-      <a-button type="text" @click="toBatchDownload">
+      <a-button type="text" :disabled="loading" @click="toBatchDownload">
         <template #icon>
         <template #icon>
           <svg-icon name="icon-import" />
           <svg-icon name="icon-import" />
         </template>
         </template>
         批量下载
         批量下载
       </a-button>
       </a-button>
-      <a-button type="text" @click="toSet">
+      <a-button type="text" :disabled="loading" @click="toSet">
         <template #icon>
         <template #icon>
           <svg-icon name="icon-add" />
           <svg-icon name="icon-add" />
         </template>
         </template>
@@ -61,10 +61,18 @@
         {{ courseNameCodeFilter(record) }}
         {{ courseNameCodeFilter(record) }}
       </template>
       </template>
       <template #action="{ record }">
       <template #action="{ record }">
-        <a-button type="text" class="btn-primary" @click="toDownload(record)"
+        <a-button
+          type="text"
+          class="btn-primary"
+          :disabled="loading"
+          @click="toDownload(record)"
           >下载</a-button
           >下载</a-button
         >
         >
-        <a-button type="text" class="btn-primary" @click="toDetail(record)"
+        <a-button
+          type="text"
+          class="btn-primary"
+          :disabled="loading"
+          @click="toDetail(record)"
           >查看详情</a-button
           >查看详情</a-button
         >
         >
       </template>
       </template>

+ 21 - 3
src/views/base/track-export/indexDetail.vue

@@ -135,7 +135,7 @@
       <a-space class="part-action" :size="6">
       <a-space class="part-action" :size="6">
         <a-button
         <a-button
           type="text"
           type="text"
-          :disabled="loading || !dataList?.length"
+          :disabled="downloading || loading || !dataList?.length"
           @click="toDownloadFilter"
           @click="toDownloadFilter"
         >
         >
           <template #icon>
           <template #icon>
@@ -145,7 +145,7 @@
         </a-button>
         </a-button>
         <a-button
         <a-button
           type="text"
           type="text"
-          :disabled="!multipleSelections.length"
+          :disabled="downloading || !multipleSelections.length"
           @click="toDownloadSelection"
           @click="toDownloadSelection"
         >
         >
           <template #icon>
           <template #icon>
@@ -176,7 +176,11 @@
           {{ checkTimeFilter(record) }}
           {{ checkTimeFilter(record) }}
         </template>
         </template>
         <template #action="{ record }">
         <template #action="{ record }">
-          <a-button type="text" class="btn-primary" @click="toDownload(record)"
+          <a-button
+            type="text"
+            class="btn-primary"
+            :disabled="downloading"
+            @click="toDownload(record)"
             >下载</a-button
             >下载</a-button
           >
           >
         </template>
         </template>
@@ -323,14 +327,28 @@
     );
     );
   }
   }
 
 
+  const downloading = ref(false);
+  function dounceDownloading() {
+    downloading.value = true;
+    setTimeout(() => {
+      downloading.value = false;
+    }, 5 * 1000);
+  }
+
   function toDownloadFilter() {
   function toDownloadFilter() {
+    if (downloading.value) return;
+    dounceDownloading();
     emit('downloadByFilter', props.rowData, searchedModel);
     emit('downloadByFilter', props.rowData, searchedModel);
   }
   }
   function toDownloadSelection() {
   function toDownloadSelection() {
+    if (downloading.value) return;
+    dounceDownloading();
     emit('downloadByStudents', props.rowData, multipleSelections.value);
     emit('downloadByStudents', props.rowData, multipleSelections.value);
   }
   }
 
 
   function toDownload(row: TrackExportDetailItem) {
   function toDownload(row: TrackExportDetailItem) {
+    if (downloading.value) return;
+    dounceDownloading();
     emit('downloadByStudents', props.rowData, [row]);
     emit('downloadByStudents', props.rowData, [row]);
   }
   }