|
|
@@ -41,21 +41,43 @@
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item v-if="formData.courseContentType === 'image'" label="课程图片集" prop="coursePath">
|
|
|
- <UploadImgs v-model="formData.courseImagePath" />
|
|
|
+ <UploadImgs v-model="formData.courseImagePath"
|
|
|
+ @upload-progress="handleUploadProgress"
|
|
|
+ @upload-start="handleUploadStart"
|
|
|
+ @upload-complete="handleUploadComplete"/>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item v-if="formData.courseContentType === 'music'" label="课程音频" prop="coursePath">
|
|
|
- <UploadMusic v-model="formData.courseMusicPath" />
|
|
|
+ <UploadMusic v-model="formData.courseMusicPath"
|
|
|
+ @upload-progress="handleUploadProgress"
|
|
|
+ @upload-start="handleUploadStart"
|
|
|
+ @upload-complete="handleUploadComplete"/>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item v-if="formData.courseContentType === 'video'" label="课程视频" prop="coursePath">
|
|
|
- <UploadVideo v-model="formData.courseVideoPath" />
|
|
|
+ <UploadVideo
|
|
|
+ v-model="formData.courseVideoPath"
|
|
|
+ @upload-progress="handleUploadProgress"
|
|
|
+ @upload-start="handleUploadStart"
|
|
|
+ @upload-complete="handleUploadComplete"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item v-if="formData.courseContentType === 'ppt'" label="课程PPT" prop="courseFilePath">
|
|
|
- <UploadFile v-model="formData.courseFilePath" :fileType="['ppt','pptx']" :fileSize="50"/>
|
|
|
+ <UploadFile v-model="formData.courseFilePath" :fileType="['ppt','pptx']" :fileSize="50"
|
|
|
+ @upload-progress="handleUploadProgress"
|
|
|
+ @upload-start="handleUploadStart"
|
|
|
+ @upload-complete="handleUploadComplete"/>
|
|
|
</el-form-item>
|
|
|
|
|
|
+ <!-- 上传进度条 -->
|
|
|
+
|
|
|
+ <el-form-item>
|
|
|
+ <div v-if="isUploading" class="uploadProgress">
|
|
|
+ <el-progress :percentage="uploadProgress" />
|
|
|
+ <div class="text-xs text-gray-500 text-right mt-1">{{ uploadProgress }}% 已上传</div>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
<!-- <el-form-item label="课程大小" prop="courseSize">-->
|
|
|
<!-- <el-input-number v-model="formData.courseSize" :min="1" :step="1" step-strictly>-->
|
|
|
<!-- <template #suffix><span>MB</span></template>-->
|
|
|
@@ -241,7 +263,7 @@
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<template #footer>
|
|
|
- <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
|
|
+ <el-button @click="submitForm" type="primary" :disabled="formLoading || isUploading">确 定</el-button>
|
|
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
|
|
</template>
|
|
|
</Dialog>
|
|
|
@@ -296,6 +318,10 @@ const formData = ref({
|
|
|
tenantId: undefined,
|
|
|
})
|
|
|
|
|
|
+// 添加上传进度相关的状态
|
|
|
+const uploadProgress = ref(0)
|
|
|
+const isUploading = ref(false)
|
|
|
+
|
|
|
const formRules = reactive({
|
|
|
courseType: [{ required: true, message: '课程类型不能为空', trigger: 'blur' }],
|
|
|
courseName: [{ required: true, message: '课程名称不能为空', trigger: 'blur' }],
|
|
|
@@ -363,6 +389,21 @@ const submitForm = async () => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// 添加处理上传进度的方法
|
|
|
+const handleUploadProgress = (progress: number) => {
|
|
|
+ uploadProgress.value = progress
|
|
|
+}
|
|
|
+
|
|
|
+const handleUploadStart = () => {
|
|
|
+ isUploading.value = true
|
|
|
+ uploadProgress.value = 0
|
|
|
+}
|
|
|
+
|
|
|
+const handleUploadComplete = () => {
|
|
|
+ isUploading.value = false
|
|
|
+ uploadProgress.value = 100
|
|
|
+}
|
|
|
+
|
|
|
/** 重置表单 */
|
|
|
const resetForm = () => {
|
|
|
formData.value = {
|
|
|
@@ -423,4 +464,7 @@ const getCourseTypeTree = async () => {
|
|
|
vertical-align: middle;
|
|
|
margin-left: 4px;
|
|
|
}
|
|
|
+.uploadProgress{
|
|
|
+ width: 50%;
|
|
|
+}
|
|
|
</style>
|