Bläddra i källkod

批量删除上传图片和视频展示时间

liupeng 2 veckor sedan
förälder
incheckning
aad2d144b0
2 ändrade filer med 39 tillägg och 2 borttagningar
  1. 37 2
      src/components/ImageUpload/index.vue
  2. 2 0
      src/views/course/videoResource/index.vue

+ 37 - 2
src/components/ImageUpload/index.vue

@@ -101,6 +101,9 @@
                     <el-button size="small" type="primary">批量上传</el-button>
                   </el-upload>
                 </el-col>
+                <el-col :span="2" style="text-align: right;">
+                  <el-button size="small" type="danger" class="el-icon-delete" @click="BatchHandleDeleteMaterial">批量刪除</el-button>
+                </el-col>
               </el-row>
             </div>
             <div v-loading="materialTableLoading">
@@ -217,7 +220,8 @@ export default {
       },
       materialTableLoading: false,
       selectedMaterials: [],
-      materialUploadResultNumber: 0
+      materialUploadResultNumber: 0,
+      selectedMaterialIds: [],
     };
   },
   watch: {
@@ -244,6 +248,17 @@ export default {
       },
       deep: true,
       immediate: true
+    },
+    // 监听selectedMaterials变化,自动同步id
+    selectedMaterials: {
+      handler(newUrls) {
+        // 根据选中的url找到对应的id
+        this.selectedMaterialIds = this.materialList
+          .filter(item => newUrls.includes(item.url))
+          .map(item => item.materialId);
+      },
+      immediate: true,
+      deep: true
     }
   },
   computed: {
@@ -533,7 +548,27 @@ export default {
       this.$emit("input", this.listToString(this.fileList));
       this.materialDialogVisible = false;
       this.selectedMaterials = [];
-    }
+    },
+    BatchHandleDeleteMaterial(){
+      if (this.selectedMaterialIds.length === 0) {
+        this.$message.warning('请选择要删除的材料');
+        return;
+      }
+      this.$confirm('是否确认删除该素材?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        delMaterial(this.selectedMaterialIds).then(response => {
+          if (response.code === 200) {
+            this.$message.success("成功");
+            this.getMaterialList();
+          }
+        }).catch(error => {
+          this.$message.error('失败:' + (error.message || '未知错误'));
+        });
+      })
+    },
   }
 };
 </script>

+ 2 - 0
src/views/course/videoResource/index.vue

@@ -161,6 +161,8 @@
           <div style="padding: 4px 12px;background: linear-gradient(to right, rgb(196 219 255), #409EFF)">{{ formatDuration(scope.row.duration) }}</div>
         </template>
       </el-table-column>
+      <el-table-column label="创建时间" align="center" prop="createTime"  width="150px"/>
+      <el-table-column label="修改时间" align="center" prop="updateTime"  width="150px"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button