• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • Mooc項目開發筆記(十二):課程分類選擇表單實現、編輯課程封面實現、添加課程描述的富文本編輯器、添加課程基本信息最終測試

    標簽: Mooc 項目  后端  java

    一、課程分類選擇表單實現

    要實現的效果:

    在這里插入圖片描述

    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、查看數據庫添加成功
    在這里插入圖片描述

    版權聲明:本文為han_zhuang原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/han_zhuang/article/details/106983718

    智能推薦

    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...

    精品国产乱码久久久久久蜜桃不卡