Mooc項目開發筆記(十二):課程分類選擇表單實現、編輯課程封面實現、添加課程描述的富文本編輯器、添加課程基本信息最終測試
一、課程分類選擇表單實現
要實現的效果:
1、添加一級分類組件
<!-- 所屬分類:級聯下拉列表 -->
<!-- 一級分類 -->
<el-form-item label="課程類別">
<el-select
v-model="courseInfo.subjectParentId"
placeholder="請選擇">
<el-option
v-for="subject in subjectParentList"
:key="subject.id"
:label="subject.title"
:value="subject.id"/>
</el-select>
</el-form-item>
2、定義數據
定義在data中
subjectParentList: [],//一級分類列表
subSubjectList: []//二級分類列表
3、一級分類數據獲取
表單初始化時獲取一級分類列表
引入subject api
import subject from '@/api/edu/subject'
定義方法
created() {
...//其他方法
this.getAllSubjectrList()
},
methods: {
//獲取所有課程分類信息(樹狀)
getAllSubjectrList(){
subjectApi.getAllSubject()
.then(response =>{
this.subjectParentList = response.data.list
})
},
...//其他方法
}
4、一級分類效果
現在可以看到頁面中可以對一級分類進行選擇。接下完成二級分類的聯動顯示
5、添加二級分類組件
在<el-form-item label="課程類別">
標簽內添加如下方法
<!-- 二級分類 -->
<el-select v-model="courseInfo.subjectId" placeholder="請選擇">
<el-option
v-for="subject in subSubjectList"
:key="subject.value"
:label="subject.title"
:value="subject.id"/>
</el-select>
6、注冊一級分類組件的change事件
在一級分類的<el-select>
組件中注冊change事件
<el-form-item label="課程類別">
<el-select
v-model="courseInfo.subjectParentId"
placeholder="一級分類"
@change="subjectLevelOneChanged">
7、定義change事件方法
//一級列表改變事件
subjectLevelOneChanged(value){
for (let i = 0; i < this.subjectParentList.length; i++) {
if (this.subjectParentList[i].id === value) {
this.subSubjectList = this.subjectParentList[i].children
this.courseInfo.subjectId = ''
}
}
},
8、二級分類效果
二、編輯課程封面
1、添加組件模板
在info.vue中添加上傳組件模板
<el-form-item label="課程封面">
<el-upload
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
:action="BASE_API+'/eduoss/fileoss/upload'"
class="avatar-uploader">
<img
:width="300"
:height="300"
:src="courseInfo.cover">
</el-upload>
</el-form-item>
2、定義data數據
BASE_API: process.env.BASE_API // 接口API地址
3、定義方法
//上傳成功調用的方法
handleAvatarSuccess(res, file){
this.courseInfo.cover = res.data.url
},
//上傳之前調用的方法
beforeAvatarUpload(file){
const isJPG = file.type === 'image/jpeg'
const isLt2M = file.size / 1024 / 1024 < 2
if (!isJPG) {
this.$message.error('上傳頭像圖片只能是 JPG 格式!')
}
if (!isLt2M) {
this.$message.error('上傳頭像圖片大小不能超過 2MB!')
}
return isJPG && isLt2M
},
4、定義默認封面
向static文件夾中放入一個名為default.jpg的默認圖片
并修改courseInfo的如下信息
courseInfo: {
......,
cover: '/static/default.jpg',
......
}
5、效果
三、添加課程描述的富文本編輯器
Tinymce是一個傳統javascript插件,默認不能用于Vue.js因此需要做一些特殊的整合步驟
1、復制腳本庫和組件
- 將vue-element-admin-master的static路徑下的腳本庫復制到項目的static目錄下
- 將vue-element-admin-master的src/components路徑下的Tinymce組件復制到項目的components目錄下
2、配置html變量
在 build/webpack.dev.conf.js 中添加配置
使在html頁面中可是使用這里定義的BASE_URL變量
new HtmlWebpackPlugin({
......,
templateParameters: {
BASE_URL: config.dev.assetsPublicPath + config.dev.assetsSubDirectory
}
})
3、引入js腳本
在mooc-admin/index.html中引入下面的內容
<script src=<%= BASE_URL %>/tinymce4.7.5/tinymce.min.js></script>
<script src=<%= BASE_URL %>/tinymce4.7.5/langs/zh_CN.js></script>
4、引入組件
課程信息組件中引入 Tinymce
import Tinymce from '@/components/Tinymce' //引入組件
export default {
components: { Tinymce }, //聲明組件
......
}
5、添加組件模板
<!-- 課程簡介-->
<el-form-item label="課程簡介">
<tinymce :height="300" v-model="courseInfo.description"/>
</el-form-item>
6、添加組件樣式
在info.vue文件的最后添加如下代碼,調整上傳圖片按鈕的高度
<style scoped>
.tinymce-container {
line-height: 29px;
}
</style>
7、效果
四、添加課程基本信息最終測試
1、在導航中點擊添加課程進入頁面
2、填寫相關信息
3、點擊保存并下一步
4、查看數據庫添加成功
智能推薦
Android中Paint、Canvas的基礎方法用法
首先paint是畫筆,可以根據paint中的方法設置畫筆的顏色、大小等等屬性,canvas是畫布,用paint畫筆可以在畫布上畫東西 代碼準備: canvas中的方法:(將下面講解的代碼分別放入注釋位置即可使用) 1、繪制單點: 方法:canvas.drawPoint(float x, float y, Paint mPaint); 參數:x:點的x軸位置;y:點的y軸位置;Paint:自定義畫筆...
十,Future設計模式
場景介紹 Future模式是多線程開發中非常常見的一種設計模式,它的核心思想是異步調用。這類似我們日常生活中的在線購物流程,帶在購物網看著一件商品時可以提交表單,當訂單完成后就可以在家里等待商品送貨上門。或者說更形象的是我們發送Ajax請求的時候,頁面是異步的進行后臺處理,用戶無需等待請求的結果,可以繼續瀏覽或操作其他內容。 參與角色 Future模式的主要角色有: Main:系統啟動,調用Fut...
小程序支付系列
小程序支付,涉及一些知識。 在微信提供的接口文檔中提供了一個微信支付接口,應該是直接調用這個接口就可以發起微信支付 文檔路徑:https://developers.weixin.qq.com/miniprogram/dev/api/api-pay.html#wxrequestpaymentobject 但是,當開始信...
兩個變量相乘_無廢話學編程基礎(C++篇)3: 變量,賦值語句
【現實需求】 今天我們要做一個小的應用程序,先說一說需求: 我們日常會去水果店買水果 例如, 蘋果5元/斤 香蕉12元/斤 橘子6元/斤 買完了水果要去結賬了,現在很少看著人手敲計算器了吧。 如果有一個小的應用程序可以解決這個問題不是更好嗎? 要完成這樣一個小的應用程序,需要知道以下幾個基本概念: 順序結構 變量 語句,賦值語句 輸入和輸出 順序結構 首先我們來看一下什么是程序的順序結構。 寫程序...
wifi放大器速度_放大器的速度有多快?
wifi放大器速度 AMP has caused quite the stir from a philosophical perspective, but the technology hasn’t received as close of a look. A few weeks ago, Ferdy Christant wrote about the unfair advantage...
猜你喜歡
Java IO講解(一)
Java IO講解 一、簡介 二、Java IO類庫基本架構 三、Java IO類型劃分 四、既然有了字節流,為什么還要有字符流? 五、字節字符相互轉換 一、簡介 IO(輸入輸出)問題是Web應用所面臨的的主要問題這一,因為在當前這個海量數據時代,數據在網絡中隨處流動。在這個數據流動的過程當中都涉及IO問題,大部分應用系統的瓶頸都是IO瓶頸。 二、Java IO類庫基本架構 ①基于字節操作的抽象類...
部署HPC集群的實施方案
部署HPC集群的實施方案 濟南友泉軟件有限公司 一、系統配置 1.1 網絡拓撲 1.2 操作系統 登錄節點:CentOS Linux release 7.3.1611 管理節點:CentOS Linux release 7.3.1611 計算節點:CentOS Linux release 7.9.2009, 二、計算節點、登錄節點配置 2.1 域名設置 在登錄節點、所有計算節點上執行以下命令,完成...
docker基本介紹&docker鏡像&docker常用命令
1.docker介紹 2.docker鏡像 3.docker常用管命令 4.dockerfile編寫和應用(真實企業應用) 5.docker中網絡部分講解 1.docker介紹 1.什么是docker Docker 是應用最廣泛的開源容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中 docker實質就像虛擬機一樣,就好像是一個具有獨立操作系統的真實機器 虛擬機是有真正的linux...
oracle ORA-01033
描述: 操作系統window10 ,Oracle 11g ,電腦異常斷電,再次打開電腦,連接oracle數據庫實例,報錯 Ora-01033 重啟Oracle各項服務,還是無法連接到數據庫 在查找了相關資料后,使用sqlplus命令,用system 登錄 輸入命令 SQL> shutdown normal SQL> startup mount SQL> alter databas...
vue+vant的Indexbar索引欄的內容加載問題
vant的IndexBar使用問題 按照官方的寫法引入 前端渣渣第一次使用vant的IndexBar時遇到的問題;根據公司的業務需求,需要做一個移動端的H5demo, 技術選型使用了vue+vant 按照官方的寫法引入 出現了如下錯誤: 只有標題,沒有內容 根據這個問題想出了解決思路: 參考文檔 vant官方文檔里面沒有引入cell這個組件 解決方法: 在這兩個地方加入Cell 這樣就解決了,va...