mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-24 02:02:55 +08:00
feat(course): 添加作业组件及文件上传功能
- 新增 HomeWorkComp 组件用于作业内容配置 - 实现作业名称、内容、附件、截至日期和提交模式设置 - 集成 FileUpload 组件支持作业附件上传与管理 - 更新 createCourse.vue 引入并注册 HomeWorkComp - 修改 addHomework 方法以打开作业设置对话框 - 添加相关依赖包如 fastify 及其生态库 - 调整部分包的引用关系去除 dev 标记
This commit is contained in:
122
src/components/CreatedCourse/preview/HomeWorkComp.vue
Normal file
122
src/components/CreatedCourse/preview/HomeWorkComp.vue
Normal file
@@ -0,0 +1,122 @@
|
||||
<script setup>
|
||||
import {
|
||||
ElForm,
|
||||
ElFormItem,
|
||||
ElInput,
|
||||
ElRadio,
|
||||
ElRadioGroup,
|
||||
ElUpload,
|
||||
ElDatePicker,
|
||||
ElButton,
|
||||
} from "element-plus";
|
||||
import { Close } from "@element-plus/icons-vue";
|
||||
defineOptions({
|
||||
resType: 60,
|
||||
});
|
||||
import FileUpload from "@/components/FileUpload/index.vue";
|
||||
const props = defineProps({
|
||||
dialogVideoForm: {
|
||||
type: Object,
|
||||
default: () => ({
|
||||
name: "",
|
||||
filePath: "",
|
||||
isDrag: true,
|
||||
completeSetup: 0,
|
||||
setupTage: 0,
|
||||
openType: "",
|
||||
}),
|
||||
},
|
||||
isPreview: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
});
|
||||
|
||||
import { useMediaComponent } from "@/hooks/useMediaComponent";
|
||||
// Emit updates to parent component
|
||||
const emit = defineEmits(["update:dialogVideoForm"]);
|
||||
|
||||
// 使用hook处理公共逻辑
|
||||
const { localDialogVideoForm, updateFormValue, fileBaseUrl } =
|
||||
useMediaComponent(props, emit);
|
||||
|
||||
// 作业上传
|
||||
const uploadHomeworkFile = (res) => {
|
||||
localDialogVideoForm.value.file = res.result.filePath;
|
||||
updateFormValue("file", res.result.filePath);
|
||||
};
|
||||
const removeHomeworkFile = () => {
|
||||
localDialogVideoForm.value.file = "";
|
||||
updateFormValue("file", "");
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<el-form label-position="right" label-width="100px">
|
||||
<el-form-item label="名称">
|
||||
<el-input
|
||||
v-model="localDialogVideoForm.name"
|
||||
:disabled="isPreview"
|
||||
placeholder="作业的名称(限50字以内)"
|
||||
maxlength="50"
|
||||
show-word-limit
|
||||
@update:modelValue="(val) => updateFormValue('name', val)"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="内容">
|
||||
<el-input
|
||||
type="textarea"
|
||||
placeholder="限255字以内"
|
||||
show-word-limit
|
||||
v-model="localDialogVideoForm.content"
|
||||
:disabled="isPreview"
|
||||
maxlength="255"
|
||||
@update:modelValue="(val) => updateFormValue('content', val)"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="附件">
|
||||
<div v-if="localDialogVideoForm.file !== ''" class="flex align-center">
|
||||
<a :href="fileBaseUrl + localDialogVideoForm.file" target="_blank"
|
||||
>下载作业附件
|
||||
</a>
|
||||
<Close
|
||||
@click="removeHomeworkFile"
|
||||
v-if="!isPreview"
|
||||
class="ml10"
|
||||
style="color: red; width: 15px; cursor: pointer"
|
||||
></Close>
|
||||
</div>
|
||||
<file-upload
|
||||
v-else
|
||||
dir="files"
|
||||
:isShowTip="false"
|
||||
:disabled="isPreview"
|
||||
@success="uploadHomeworkFile"
|
||||
@remove="removeHomeworkFile"
|
||||
></file-upload>
|
||||
</el-form-item>
|
||||
<el-form-item label="截至日期">
|
||||
<el-date-picker
|
||||
v-model="localDialogVideoForm.deadTime"
|
||||
:disabled="isPreview"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
type="datetime"
|
||||
placeholder="选择日期时间"
|
||||
@update:modelValue="(val) => updateFormValue('deadTime', val)"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="提交模式">
|
||||
<el-radio-group
|
||||
:model-value="localDialogVideoForm.submitMode"
|
||||
:disabled="isPreview"
|
||||
@update:modelValue="(val) => updateFormValue('submitMode', val)"
|
||||
>
|
||||
<el-radio :label="1">附件文档</el-radio>
|
||||
<el-radio :label="2">在线填写</el-radio>
|
||||
<el-radio :label="3">前两种任选</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
Reference in New Issue
Block a user