⾸先对课程详情部分进⾏数据绑定。
// create.vue …v-show=“activeStep === 4”>
label=“课程详情”>
type=“textarea”
v-model=“course.courseDescriptionMarkDown”
>
…
…
给保存按钮设置点击事件,点击后提交
// create.vue …由于当前为新增功能,需要将 data.course 中与 id 相关的数据去除,id 相关功能为编辑使⽤,后续再处理。
// create.vue … data () { return { … course: { // id: 0, courseName: ‘’, brief: ‘’, teacherDTO: { // id: 0, // courseId: 0, teacherName: ‘’, teacherHeadPicUrl: ‘’, position: ‘’, description: ‘’ }, courseDescriptionMarkDown: ‘’, price: 0, discounts: 0, priceTag: ‘’, discountsTag: ‘’, isNew: true, isNewDes: ‘’, courseListImg: ‘’, courseImgUrl: ‘’, sortNum: 0, previewFirstField: ‘’, previewSecondField: ‘’, status: 0, sales: 0, activityCourse: false, activityCourseDTO: { // id: 0, // courseId: 0, beginTime: ‘’, endTime: ‘’, amount: 0, stock: 0 }, autoOnlineTime: ‘’ } } }, …点击按钮时将 course 通过之前封装的 saveOrUpdateCourse ⽅法发送。
// create.vue … async handleSave () { // 发送请求 const { data } = await saveOrUpdateCourse(this.course) if (data.code === ‘000000’) { this.$message.success(‘添加课程成功’) } } … 添加成功,但⽆法直接从前台看到,因为课程默认为未上架,需要会在课程列表中上架后才能在前台看到。默认值通过 course.status 控制,默认值 0 代表默认不上架,1 为上架。
如果希望操作⽅便,可以添加⼀个 Switch 组件控制当前课程的上下架状态。
// create.vue …v-show=“activeStep === 4”>
label=“课程详情”> …
label=“是否上架”>
v-model=“course.status”
:active-value=“1”
:inactive-value=“0”
active-color=“#13ce66”
inactive-color=“#ff4949”>
…>保存
…
测试后添加成功,设置调整列表⻚。
注意⼩细节,由于后端接⼝不⽀持秒杀时间中的时分秒选择,测试时只选择⽇期即可,或设置
type=”date” 改为 DatePicker ⽇期选择器组件。(但注意实际功能中应为⽇期与时间均可选)
// create.vue … async handleSave () { … if (data.code === ‘000000’) { this.$router.push({ name: ‘course’ }) this.$message.success(‘添加课程成功’) } } …