學成在線--21.課程信息修改

文章目錄

  • 一.需求分析
  • 二.課程管理導航頁面
    • 1.定義course_manage.vue為課程管理頁面
    • 2.創建各個信息管理頁面
    • 3.創建路由
  • 三.服務端
    • 1.Api接口
      • 1)根據課程ID查詢課程信息
      • 2)修改課程信息
    • 2.Dao
    • 3.Service
    • 4.Controller
  • 四.前端
    • 1. 完成course_baseinfo.vue頁面
    • 2.API方法
    • 3.course_baseinfo.vue中mounted鉤子方法
    • 4.課程修改提交

一.需求分析

課程添加成功進入課程管理頁面,通過課程管理頁面修改課程的基本信息、編輯課程圖片、編輯課程營銷信息等。本小節實現修改課程。
課程管理頁面的結構如下:
在這里插入圖片描述

二.課程管理導航頁面

1.定義course_manage.vue為課程管理頁面

導航效果使用Element-UI的NavMenu組件實現
文件位置:xc-ui-pc-teach\src\module\course\page\course_manage.vue
在這里插入圖片描述

<template><div><el-menu:default-active="activeIndex"class="el-menu-demo"mode="horizontal"background-color="#eee"text-color="#000"active-text-color="#000"><router-link class="mui-tab-item" :to="{path:'/course/manage/summary/'+this.courseid}"><el-menu-item index="1">課程首頁</el-menu-item></router-link><router-link class="mui-tab-item" :to="{path:'/course/manage/baseinfo/'+this.courseid}"><el-menu-item index="2">基本信息</el-menu-item></router-link><router-link class="mui-tab-item" :to="{path:'/course/manage/picture/'+this.courseid}"><el-menu-item index="3">課程圖片</el-menu-item></router-link><router-link class="mui-tab-item" :to="{path:'/course/manage/marketinfo/'+this.courseid}"><el-menu-item index="4">課程營銷</el-menu-item></router-link><router-link class="mui-tab-item" :to="{path:'/course/manage/plan/'+this.courseid}"><el-menu-item index="5">課程計劃</el-menu-item></router-link><router-link class="mui-tab-item" :to="{path:'/course/manage/teacher/'+this.courseid}"><el-menu-item index="6">教師信息</el-menu-item></router-link><router-link class="mui-tab-item" :to="{path:'/course/manage/pub/'+this.courseid}"><el-menu-item index="7">發布課程</el-menu-item></router-link></el-menu><router-view class="main"></router-view></div>
</template>
<script>import * as courseApi from '../api/course';import utilApi from '../../../common/utils';export default {data() {return {activeIndex:'2',courseid:''}},methods: {},mounted(){//課程idthis.courseid = this.$route.params.courseidconsole.log("courseid=" + this.courseid)//跳轉到課程基本信息this.$router.push({ path: '/course/manage/baseinfo/'+this.courseid})}}
</script>
<style scoped></style>

2.創建各個信息管理頁面

通過管理頁面的導航可以進入各各信息管理頁面,這里先創建各各信息管理頁面,頁面內容暫時為空,待開發時再完善,在本模塊的page目錄下創建course_manage目錄,此目錄存放各各信息管理頁面,頁面明細如下:

課程管理首頁:course_summary.vue
基本信息修改頁面:course_baseinfo.vue
圖片管理頁面:course_picture.vue
營銷信息頁面:course_marketinfo.vue
老師信息頁面:course_teacher.vue
課程計劃頁面:course_plan.vue
課程發布頁面:course_pub.vue

3.創建路由

文件位置:xc-ui-pc-teach\src\module\course\router\index.js


import Home from '@/module/home/page/home.vue';
import course_list from '@/module/course/page/course_list.vue';
import course_add from '@/module/course/page/course_add.vue';import course_manage from '@/module/course/page/course_manage.vue';
import course_summary from '@/module/course/page/course_manage/course_summary.vue';
import course_picture from '@/module/course/page/course_manage/course_picture.vue';
import course_baseinfo from '@/module/course/page/course_manage/course_baseinfo.vue';
import course_marketinfo from '@/module/course/page/course_manage/course_marketinfo.vue';
import course_teacher from '@/module/course/page/course_manage/course_teacher.vue';
import course_plan from '@/module/course/page/course_manage/course_plan.vue';
import course_pub from '@/module/course/page/course_manage/course_pub.vue';
export default [{path: '/course',component: Home,name: '課程管理',hidden: false,iconCls: 'el-icon-document',children: [{ path: '/course/list', name: '我的課程',component: course_list,hidden: false },{ path: '/course/add/base', name: '新增課程',component: course_add,hidden: true },{ path: '/course/manager/:courseid', name: '管理課程',component: course_manage,hidden: true ,children: [{ path: '/course/manage/plan/:courseid', name: '課程計劃',component: course_plan,hidden: false },{ path: '/course/manage/baseinfo/:courseid', name: '基本信息',component: course_baseinfo,hidden: false },{ path: '/course/manage/picture/:courseid', name: '課程圖片',component: course_picture,hidden: false },{ path: '/course/manage/marketinfo/:courseid', name: '營銷信息',component: course_marketinfo,hidden: false },{ path: '/course/manage/teacher/:courseid', name: '教師信息',component: course_teacher,hidden: false},{ path: '/course/manage/pub/:courseid', name: '發布課程',component: course_pub,hidden: false},{ path: '/course/manage/summary/:courseid', name: '課程首頁',component: course_summary,hidden: false }]}]}
]

三.服務端

1.Api接口

修改課程需要如下接口:
1、根據id查詢課程信息;
2、修改課程并提交。

文件位置:

1)根據課程ID查詢課程信息

@ApiOperation("獲取課程基礎信息")
public CourseBase getCourseBaseById(String courseId) throws RuntimeException;

2)修改課程信息

@ApiOperation("更新課程基礎信息")
public ResponseResult updateCourseBase(String id,CourseBase courseBase);

2.Dao

Dao即為學成在線–20.新增課程(最后完善)中Dao層中定義的接口。
文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\dao\CourseBaseRepository.java

public interface CourseBaseRepository extends JpaRepository<CourseBase, String> {
}

3.Service

文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\service\CourseService.java

public CourseBase getCoursebaseById(String courseid) {Optional<CourseBase> optional = courseBaseRepository.findById(courseId);if(optional.isPresent()){return optional.get();} return null;
} @Transactional
public ResponseResult updateCoursebase(String id, CourseBase courseBase) {CourseBase one = this.getCoursebaseById(id);if(one == null){//拋出異常..} //修改課程信息one.setName(courseBase.getName());one.setMt(courseBase.getMt());one.setSt(courseBase.getSt());one.setGrade(courseBase.getGrade());one.setStudymodel(courseBase.getStudymodel());one.setUsers(courseBase.getUsers());one.setDescription(courseBase.getDescription());CourseBase save = courseBaseRepository.save(one);return new ResponseResult(CommonCode.SUCCESS);
}

4.Controller

文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\controller\CourseController.java

@Override
@GetMapping("/coursebase/get/{courseId}")
public CourseBase getCourseBaseById(@PathVariable("courseId") String courseId) throws RuntimeException {return courseService.getCoursebaseById(courseId);
}@Override
@PutMapping("/coursebase/update/{id}")
public ResponseResult updateCourseBase(@PathVariable("id") String id, @RequestBody CourseBase courseBase) {return courseService.updateCoursebase(id,courseBase);
}

四.前端

在這里插入圖片描述

1. 完成course_baseinfo.vue頁面

在course模塊下的course_manage目錄下創建course_baseinfo.vue頁面,本頁面實現課程修改。
文件位置:xc-ui-pc-teach\src\module\course\page\course_manage\course_baseinfo.vue

<template><div><el-form :model="courseForm" label-width="80px" :rules="courseRules" ref="courseForm"><el-form-item label="課程名稱" prop="name"><el-input v-model="courseForm.name" auto-complete="off" ></el-input></el-form-item><el-form-item label="適用人群" prop="users"><el-input type="textarea" v-model="courseForm.users" auto-complete="off" ></el-input></el-form-item><el-form-item label="課程分類" prop="categoryActive"><el-cascaderexpand-trigger="hover":options="categoryList"v-model="categoryActive":props="props"></el-cascader></el-form-item><el-form-item label="課程等級" prop="grade"><b v-for="grade in gradeList"><el-radio v-model="courseForm.grade" :label="grade.sdId" >{{grade.sdName}}</el-radio>&nbsp;&nbsp;</b></el-form-item><el-form-item label="學習模式" prop="studymodel"><b v-for="studymodel_v in studymodelList"><el-radio v-model="courseForm.studymodel" :label="studymodel_v.sdId" >{{studymodel_v.sdName}}</el-radio>&nbsp;&nbsp;</b></el-form-item><el-form-item label="課程介紹" prop="description"><el-input type="textarea" v-model="courseForm.description" ></el-input></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button type="primary"  @click.native="save" :loading="editLoading">提交</el-button></div></div>
</template>
<script>import * as courseApi from '../../api/course';import utilApi from '../../../../common/utils';import * as systemApi from '../../../../base/api/system';export default {data() {return {dotype:'',courseid:'',studymodelList:[],gradeList:[],editLoading: false,props: {value: 'id',label:'label',children:'children'},categoryList: [],categoryActive:[],courseForm: {id:'',name: '',users: '',grade:'',studymodel:'',mt:'',st:'',description: ''},courseRules: {name: [{required: true, message: '請輸入課程名稱', trigger: 'blur'}],category: [{required: true, message: '請選擇課程分類', trigger: 'blur'}],grade: [{required: true, message: '請選擇課程等級', trigger: 'blur'}],studymodel: [{required: true, message: '請選擇學習模式', trigger: 'blur'}]}}},methods: {save () {//修改課程this.$refs.courseForm.validate((valid) => {if (valid) {this.$confirm('確認提交嗎?', '提示', {}).then(() => {this.editLoading = true;let mt = this.categoryActive[0];let st = this.categoryActive[1];this.courseForm.mt = mt;this.courseForm.st = st;let id = this.courseForm.idcourseApi.updateCoursebase(id,this.courseForm).then((res) => {this.editLoading = false;if(res.success){this.$message({message: '提交成功',type: 'success'});}else{if(res.message){this.$message.error(res.message);}else{this.$message.error('提交失敗');}}});});}});}},created(){},mounted(){//查詢數據字典字典systemApi.sys_getDictionary('201').then((res) => {
//        console.log(res);this.studymodelList = res.dvalue;});systemApi.sys_getDictionary('200').then((res) => {this.gradeList = res.dvalue;});//取課程分類courseApi.category_findlist({}).then((res) => {this.categoryList = res.children;});//查詢課程信息//課程idthis.courseid = this.$route.params.courseid;courseApi.getCoursebaseById(this.courseid).then((res) => {
//          console.log(res);this.courseForm = res;//課程分類顯示,需要兩級分類this.categoryActive.push(this.courseForm.mt);this.categoryActive.push(this.courseForm.st);});}}
</script>
<style scoped></style>

2.API方法

文件位置:xc-ui-pc-teach\src\module\course\api\course.js

//獲取課程基本信息
export const getCoursebaseById = id => {
return http.requestQuickGet(apiUrl+'/course/coursebase/get/'+id)
}//更新課程基本信息
export const updateCoursebase= (id,course) => {
return http.requestPut(apiUrl+'/course/coursebase/update/'+id,course)
}

3.course_baseinfo.vue中mounted鉤子方法

在mounted鉤子方法中查詢課程信息及數據字典:
文件位置:xc-ui-pc-teach\src\module\course\page\course_manage\course_baseinfo.vue

    mounted(){//查詢數據字典字典systemApi.sys_getDictionary('201').then((res) => {
//        console.log(res);this.studymodelList = res.dvalue;});systemApi.sys_getDictionary('200').then((res) => {this.gradeList = res.dvalue;});//取課程分類courseApi.category_findlist({}).then((res) => {this.categoryList = res.children;});//查詢課程信息//課程idthis.courseid = this.$route.params.courseid;courseApi.getCoursebaseById(this.courseid).then((res) => {
//          console.log(res);this.courseForm = res;//課程分類顯示,需要兩級分類this.categoryActive.push(this.courseForm.mt);this.categoryActive.push(this.courseForm.st);});}

4.課程修改提交

文件位置:xc-ui-pc-teach\src\module\course\page\course_manage\course_baseinfo.vue
編輯課程提交方法:

    methods: {save () {//修改課程this.$refs.courseForm.validate((valid) => {if (valid) {this.$confirm('確認提交嗎?', '提示', {}).then(() => {this.editLoading = true;let mt = this.categoryActive[0];let st = this.categoryActive[1];this.courseForm.mt = mt;this.courseForm.st = st;let id = this.courseForm.idcourseApi.updateCoursebase(id,this.courseForm).then((res) => {this.editLoading = false;if(res.success){this.$message({message: '提交成功',type: 'success'});}else{if(res.message){this.$message.error(res.message);}else{this.$message.error('提交失敗');}}});});}});}},

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452157.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452157.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452157.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTTP協議特點

&#xff08;一&#xff09;HTTP協議是無狀態的。也就是說&#xff0c;同一個客戶第二次訪問同一個服務器上的頁面時&#xff0c;服務器的響應與第一次被訪問時相同。服務器不記得訪問過得這個用戶&#xff0c;也不記得為這個客戶服務過多少次。 &#xff08;二&#xff09;HT…

C#曲線分析平臺的制作(四,highcharts+ajax加載后臺數據)

在上一篇博客&#xff1a;C#曲線分析平臺的制作&#xff08;三&#xff0c;三層構架echarts顯示&#xff09;中已經完成了后臺的三層構架的簡單搭建&#xff0c;為實現后面的拓展應用開發和review 改寫提供了方便。而在曲線分析平臺中&#xff0c;往往有要求時間軸聯動功能&…

國際C語言混亂代碼大賽結果公布

國際C語言混亂代碼大賽&#xff08;IOCCC, The International Obfuscated C Code Contest&#xff09;是一項國際編程賽事&#xff0c;從1984年開始&#xff0c;每年舉辦一次&#xff08;1997年、1999年、2002年、2003年和2006年例外&#xff09;。目的是寫出最有創意的最讓人難…

JDBC連接數據庫(一)

原文地址http://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html JDBC連接數據庫 創建一個以JDBC連接數據庫的程序&#xff0c;包含7個步驟&#xff1a; 1、加載JDBC驅動程序&#xff1a; 在連接數據庫之前&#xff0c;首先要加載想要連接的數據庫的驅動到JVM…

eclipse加速之禁用 JS、jsp 等文件的語法驗證

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 去除eclipse的JS驗證&#xff1a; 將windows->preference->Java Script->Validator->Errors/Warnings-> Enable Javascr…

學成在線--22.課程營銷

文章目錄一.需求分析二.數據模型三.服務端1.Api接口1&#xff09;查詢課程營銷信息2&#xff09;更新課程營銷信息2.Dao3.Service4.Controller四.前端1.Api 方法2.編寫 course_marketinfo.vue1&#xff09;template2&#xff09;數據對象3&#xff09;保存方法4&#xff09;在m…

電子郵件系統

&#xff08;一&#xff09;電子郵件系統的構成 1.用戶代理 用戶與電子郵件系統的接口&#xff0c;用戶代理使用戶能夠通過一個很友好的接口來發送和接收郵件&#xff0c;用戶代理就是一個運行在PC上的程序。 2 郵件服務器 郵件服務器的功能是發送和接收郵件&#xff0c;同…

面向對象的接口類 以及鴨子類型

1.接口類,抽象類. 2.鴨子類型(Python多態)(Python三大特性之一)Python封裝 1.接口類和抽象類只是在工作中書寫的一種規范. class QQ: def pay(self,money): print("使用QQ支付%s"%money) class Ali: def pay(self,money): print("使用支付寶支付%s"%money…

mysql查看binlog日志內容

2019獨角獸企業重金招聘Python工程師標準>>> &#xff08;一&#xff09; binlog介紹 binlog,即二進制日志,它記錄了數據庫上的所有改變&#xff0c;并以二進制的形式保存在磁盤中&#xff1b; 它可以用來查看數據庫的變更歷史、數據庫增量備份和恢復、Mysql的復制&…

架構師:我們需要頂層設計

架構師&#xff1a;我們需要頂層設計背景&#xff1a; 某公司&#xff0c;建立的程序又被推倒&#xff0c;外人覺得很奇怪&#xff0c;這個程序的主管非常敬業&#xff0c;關注到了程序每一個細節&#xff0c;甚至包括每一個按鈕的文字和位置。這個主管很委屈&#xff0c;他說…

文件傳輸協議FTP

文件傳輸協議FTP提供交互式的訪問&#xff0c;允許客戶指明文件的類型和格式&#xff0c;并允許文件具有存取權限。它屏蔽了個計算機系統的細節&#xff0c;因而適合于在異構網絡中任意計算機之間傳輸文件。它提供不同種類主機系統之間的文件傳輸能力&#xff0c;可以提供用戶對…

Centos7安裝Docker教程

1.首先安裝必要依賴&#xff1a; sudo yum install -y yum-utils device-mapper-persistent-data lvm22.然后添加倉庫源&#xff1a; sudo sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3.最后安裝 Docker&#xff…

String.format() 方法用法解說

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 String chargeFlowUrl _AGENT_URL "?agentAccount" _AGENT_ACCOUNT "&sequence%s &phone%s &iceUrl%s &…

Choose unique values for the 'webAppRootKey' context-param in your web.xml files! 錯誤的解決

大意是Log4jConfigListener在獲取webapp.root值時&#xff0c;被后一context的值替換掉了&#xff0c;所以要在各個項目的web.xml中配置不同的webAppRootKey值&#xff0c;隨即在其中一個web.xml中添加&#xff1a; <context-param> <param-name>webAppRootKey<…

ionic3 cordova ionic-native插件

ionic-native插件 cordova安裝插件 以及 ionic-native插件使用過程以及步驟 cordova plugin add cordova-plugin-插件名稱。 //安裝插件npm install ionic-native/對應插件名稱 --save。 //寫入package.json在app.module.ts 的 providers 進行引用解釋&#xff1a;cordove plug…

Diango博客--19.使用 Docker部署項目到線上服務器

文章目錄1.克隆代碼到服務器2.創建環境變量文件用于存放項目敏感信息3.在 .production 文件寫入下面的內容并保存4.修改 Nginx 配置5.修改項目配置文件6.啟動容器7.檢查容器啟動狀況8.配置 HTTPS 證書&#xff08;沒有配置域名無法配置&#xff0c;只能通過服務器 ip 以 HTTP 協…

從一生的角度看程序員的學習和發展

很多人談學習和發展的時候&#xff0c;往往忽略人的先天自然條件&#xff0c;在這里我們從這個視角切入&#xff0c;來探討一下程序員一生的可能軌跡。 如果把程序員的人生分為三個階段&#xff0c;那么他們是&#xff1a; 畢業~30歲&#xff1a;這個時間段里&#xff0c;大多…

Jquery Datatable 數據填充報錯:requested unknown parameter ‘XXX‘ for row xx, column xx 解決方法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 報錯如圖&#xff1a; 解決方法見官網&#xff1a;https://datatables.net/manual/tech-notes/4 摘要如下&#xff1a; Parameter is an…

Tarjan-縮點

$Tarjan$縮點 Tarjan的第二個應用就是求縮點啦。縮點雖然比割點麻煩一點&#xff0c;但是用處也比割點要大不少。 本來要學另外兩個縮點算法的,但是似乎沒什么用...$MST$里確實有只能有$prim$或者只能用$kruscal$的題目&#xff0c;但是這三種縮點...在網上沒有找到介紹它們之間…

mysqldump參數詳細說明(轉)

Mysqldump參數大全&#xff08;參數來源于mysql5.5.19源碼&#xff09; 參數 參數說明 --all-databases , -A 導出全部數據庫。 mysqldump -uroot -p --all-databases --all-tablespaces , -Y 導出全部表空間。 mysqldump -uroot -p --all-databases --all-tablespaces --n…